跳到主要内容
版本:1.7.x

Use Job to Run Agent

这是 ROCK 两种并列的 agent 使用能力中 Job 的参考文档,核心 API 是 rock.sdk.job.JobJobConfig,用于在沙箱里跑一次 agent 评测/任务。有两种 backend:Bash JobHarbor Bench Job

另一种能力是在单个沙箱里安装并运行 agent,见 Install Agent in Sandbox。两种能力使用各自独立的配置 schema,不要互相套用

rock.sdk.job 通过同一套 Job API 支持两种模式,通过配置类型区分:

  • Bash Job:在沙箱中运行自定义 Shell 脚本,适合数据处理、外部评测工具等
  • Harbor Bench Job:通过 Harbor 框架运行 AI agent 基准评测任务(SWE-bench、Terminal Bench 等)

端到端示例

最小可跑通的 Python 用法:

import asyncio
from rock.sdk.job import Job, JobConfig

async def main():
config = JobConfig.from_yaml("swe_job_config.yaml") # 含 agents: 与 datasets:
result = await Job(config).run()

print(f"status={result.status}, score={result.score}")
for trial in result.trial_results:
print(f" {trial.task_name}: score={trial.score} ({trial.status})")

asyncio.run(main())

完整 yaml 模板参考 examples/job/harbor/swe_job_config.yaml.template


Bash Job

Bash Job 适用于在沙箱内执行任意 Shell 脚本的场景,例如运行评测工具、数据处理流程等。

完整示例参考:examples/job/bash/claw_eval/

  • run_claw_eval.py — 主入口,演示 JobConfig.from_yaml() + Job(config).run()
  • claw_eval_bashjob.yaml.template — YAML 配置模板,含 script_pathenvironmentuploadsenv 等字段
  • run_claw_eval.sh — 沙箱内实际执行的脚本,演示 DinD 启动、日志写入和评分输出

BashJobConfig 配置字段

字段类型默认值说明
scriptstr | NoneNone内联脚本内容,与 script_path 二选一
script_pathstr | NoneNone本地脚本文件路径,运行时读取并上传执行
job_namestr当前时间戳任务名称,用于日志和产物路径区分
environmentEnvironmentConfig沙箱连接及资源配置,详见下表
namespacestr | NoneNone命名空间
experiment_idstr | NoneNone实验 ID
timeoutint7200整体超时秒数(2 小时)

environment 常用字段:

字段类型说明
imagestr沙箱 Docker 镜像
base_urlstrROCK 平台地址
xrl_authorizationstr鉴权 Token
clusterstr目标集群
memorystr内存大小(如 "64g")
cpusintCPU 核数
auto_stopbool任务完成后是否自动停止沙箱
uploadslist本地文件/目录上传列表,格式:[本地路径, 沙箱目标路径]
envdict[str, str]注入沙箱会话的环境变量

Harbor Bench Job

Harbor Bench Job 适用于通过 Harbor 框架运行 AI agent 基准评测任务,如 SWE-bench、Terminal Bench 等。

注意:rock.sdk.bench.Job 已废弃,将在未来移除。请改用 rock.sdk.job.Job + HarborJobConfig

完整示例参考:examples/job/harbor/

  • harbor_demo.py — 主入口,演示 JobConfig.from_yaml() + Job(config).run() + 结果遍历
  • swe_job_config.yaml.template — SWE-bench 任务配置模板
  • swe_job_config-verifier.yaml.template — 附带 verifier.mode: native 的变体
  • tb_job_config.yaml.template — Terminal Bench 任务配置模板

HarborJobConfig 核心配置字段

基础字段:

字段类型默认值说明
experiment_idstr必填实验 ID,Harbor 中必须提供
job_namestr | None自动生成格式:{dataset}_{task}_{uuid[:8]}
namespacestr | NoneNone命名空间,从沙箱自动反填
environmentRockEnvironmentConfig沙箱连接及资源配置

执行控制字段:

字段类型默认值说明
n_attemptsint1每个 Trial 的尝试次数
timeoutint7200整体超时秒数(自动从 agent_timeout 推算)
debugboolFalse调试模式,保留更多中间产物

组件字段:

字段类型说明
agentslist[AgentConfig]Harbor 框架自身的 agent 配置(典型字段:namemodel_name),完整字段见 examples/job/harbor/swe_job_config.yaml.template
datasetslist[DatasetConfig]数据集配置列表
verifierVerifierConfigVerifier 评测配置
orchestratorOrchestratorConfig并发调度配置

结果处理

两种 Job 模式均返回 JobResult:

result = await Job(config).run()

print(f"status={result.status}, score={result.score}")
for trial in result.trial_results:
print(f" {trial.task_name}: score={trial.score} ({trial.status})")
if trial.exception_info:
print(f" {trial.exception_info.exception_type}: {trial.exception_info.exception_message}")

JobResult 字段

字段 / 属性类型说明
statusJobStatus任务整体状态
trial_resultslist[TrialResult]所有 Trial 结果列表
scorefloat(属性)所有 Trial score 的平均值
n_completedint(属性)状态为 completed 的 Trial 数
n_failedint(属性)状态为 failed 的 Trial 数

TrialResult 字段

字段 / 属性类型说明
task_namestr任务名称
exit_codeint进程退出码
raw_outputstr进程原始输出
exception_infoExceptionInfo | None若有异常则填充
statusstr(属性)"completed""failed"
duration_secfloat(属性)执行耗时(秒)
scorefloat(属性)评分(Bash Job 默认 0.0,Harbor 模式来自 verifier)