Recipes 负责什么
Image selection
读取 public Docker image metadata 或 provider snapshot,并设置 provider params。
Workspace layout
对齐
/testbed、/workspace、/root 等 benchmark workspace。Resource hints
合并 task CPU、memory、disk、GPU 或 provider resources,并保留用户显式 override。
Compatibility failure
当缺少必须的 image、snapshot 或 task metadata 时,在 sandbox 启动前失败。
核心接口
Recipe 通过 id 注册。runtime 可以自动应用默认 recipe,也可以通过
--recipe 限定使用的 recipe。
外部 Recipe Package
受信任的私有 recipe 可以只对当前 run 注入,不需要放进src/agentcompass:
BaseRecipe 子类。外部类不能使用全局 @RECIPES.register();AgentCompass 会把它们加入当前 run 的局部 registry,避免后续 SDK run 意外看到这些 recipe。
--recipe-dir 可以重复传入。Python SDK 使用 recipe_dirs=["./company_recipes"],配置文件使用 runtime.recipe_dirs。目录相对启动工作目录解析。执行顺序为内置 recipe、外部目录参数顺序、各目录的 RECIPE_CLASSES 声明顺序;重复 recipe id 会在创建 run 输出目录前报错。
外部 package 会作为受信任 Python 代码在 AgentCompass 进程内执行。同一规范化路径在进程生命周期内缓存,不支持热重载,并且每个 worker 都必须能访问该路径。读取已有 run 的 summary 或离线 analysis 不会加载其中记录的外部 package。
示例:Modal SWE-bench Verified
swebench_verified_modal_prebaked recipe 可以从 SWE-bench metadata 或 instance id 推导 image,并把 workspace root 设置为 /testbed。
示例:Daytona Terminal-Bench
task.environment.docker_image,设置 environment image,并使用 /root 作为 default workspace root。
用户 Override
不要仅仅因为 benchmark 是 remote 就手动传
image。如果 recipe 可以推导 task image,短命令更可复现。
