V1 提供一套与具体业务无关的显式任务闭环:主 Agent 负责规划和决策,Worker 只执行,Validator 只评估。Worker 或 Validator 的 Trace 结束都不等于 Task 完成。
Planner -> Root Task -> Child Task -> Worker Attempt -> Artifact Snapshot
-> independent Validator -> Planner Decision -> Root replan
-> Root Attempt -> Root Validation -> Planner accepts Root
legacy_auto:默认值。保留原有 agent、evaluate、goal 和 Goal 父节点级联语义。explicit_validation:启用 V1。只能配合带 planner、worker、validator role 的 preset 使用,且必须先装配 TaskCoordinator。显式模式的状态由 TaskLedger 决定。GoalTree 只用于兼容展示;Ledger 提交后的自动 Goal 投影全部是 best-effort,投影失败只记录警告,不会把已经成功的命令表现成失败。二者不一致时可调用 TaskCoordinator.reconcile_goal_tree() 显式修复,修复本身失败时仍会向调用方报错。
from agent import (
AgentRunner,
FileSystemTraceStore,
FileSystemTaskStore,
FileSystemArtifactStore,
OrchestrationConfig,
wire_orchestration,
)
trace_store = FileSystemTraceStore(".trace")
runner = AgentRunner(trace_store=trace_store, llm_call=my_llm_call)
coordinator = wire_orchestration(
runner,
FileSystemTaskStore(".trace"),
FileSystemArtifactStore(".trace"),
OrchestrationConfig(max_parallel_tasks=4),
)
主 Agent 使用:
from agent import CompletionPolicy, RunConfig
config = RunConfig(
agent_type="planner",
completion_policy=CompletionPolicy.EXPLICIT_VALIDATION,
tool_groups=None,
root_task_spec={
"objective": "完成调用方定义的任务",
"acceptance_criteria": [
{
"criterion_id": "mission-complete",
"description": "任务整体结果满足调用方定义的验收要求",
"hard": True,
}
],
},
)
result = await runner.run_result(
[{"role": "user", "content": "根据目标制定任务树并执行;每个任务必须独立验证。"}],
config,
)
通过 invoke_agent() 启动本地项目时,如果项目 RUN_CONFIG 使用 explicit_validation,SDK 会用项目的 TRACE_STORE_PATH 自动装配文件 Store。项目可以在 config.py 暴露 ORCHESTRATION_CONFIG 覆盖并行度和 preset 名称。
Planner:
task_plan:检查 Ledger、创建 Root 的子 Task、插入同级 Task、切换焦点。dispatch_tasks:运行一个或多个互相隔离的 Worker→Validator 闭环。task_decide:执行 accept、repair、retry、revise、split、block、unblock、cancel、supersede。validate_attempt:仅在 Validator error、stopped、expired 后,对未变化的 Snapshot 发起新 Validator Trace。Worker 只能使用 submit_attempt 正式交付。Validator 只能使用 submit_validation 正式提交结构化报告。二者都是 terminal tool:结果会先写入 Trace,然后结束当前 Agent Loop。
needs_replan,不会自动完成。display_path 冻结 ACCEPT Decision ID;父 Worker 只解析这组不可变绑定,不扫描后续“最新状态”。旧 RUNNING Attempt 没有该绑定时按协议失败并重新规划。agent、evaluate、goal 或 Planner/Validator 工具。read + validation_submit,Worker 不允许 agent_spawn 和 task_control。submit_attempt,Attempt 失败,Task 进入 needs_replan。submit_validation,Validation 状态为 error,不是业务 failed。passed 只让 Task 进入 awaiting_decision;只有 Planner 对当前版本、当前 Attempt、当前 Snapshot 执行 accept 才完成。failed、inconclusive 没有 override 接受入口。incomplete。默认目录:
.trace/{root_trace_id}/orchestration/
├── ledger.json
└── artifacts/{snapshot_id}.json
Orchestration Event v2 的 durable journal 位于 ledger.json,是默认唯一真源;只保存变化通知与实体 ID。wire_orchestration(..., event_sink=...) 可以显式注入外部 Sink;TraceEventSink 仅作为兼容镜像适配器,不再默认创建 orchestration/events.jsonl。Trace 自身的消息事件文件不受影响。
GET /api/v2/roots/{root_trace_id}/snapshot:单次 Ledger load 得到同一 revision 的 Mission 原子视图。GET /api/v2/roots/{root_trace_id}/completion:Root objective、状态、阻塞原因与结果摘要。GET /api/v2/roots/{root_trace_id}/snapshots/{snapshot_id}:Artifact 摘要哈希与不可变引用,不重复返回正文。GET /api/v2/roots/{root_trace_id}/events:支持 v1/v2 混读的稳定 cursor。GET /api/v2/capabilities:API、Mission Snapshot、Event schema 版本与能力发现。OrchestrationClient 提供对应的 Mission、Completion、Artifact、Event 读取方法,并可按 role、Root、Task、Attempt、Validation、Operation 或父 Trace 查询关联 Trace。TaskStore、ArtifactStore、AgentExecutor、ToolPolicy、EventSink 都是端口,可增加远程执行器或分布式 Store,而不改变 Task 状态机和 Coordinator 决策语义。
legacy_auto。