Skip to content

规范

Agent Runtime 最新草案是面向 Agent 执行层的可移植草案标准。核心契约是 execution facts 与 UI、replay、review、telemetry、workflow、remote channels 等消费者之间的边界。

Agent Runtime 拥有执行事实。它不拥有视觉表面、provider API、外部工具协议、artifact bytes、evidence verdict、memory source 或宿主账号模型。

范围

Agent Runtime 标准化这些实现问题:

  1. Runtime identity 和 correlation ids。
  2. Event classes 和 event envelope fields。
  3. Control plane actions 与必需写入边界。
  4. Durable snapshots 和 read models。
  5. Tool/context/model/policy orchestration facts。
  6. Human-in-the-loop requests 与 queue/resume semantics。
  7. Evidence、replay 和 observability export boundaries。
  8. Permission、sandbox、hooks、process execution、remote channel recovery 与 peer task mapping。
  9. Model routing、candidate set、cost、quota、rate limit 和 budget facts。
  10. Agent task lifecycle、attempts、task graphs、subagent graph、background jobs、large output storage 与 session reconstruction。

Agent Runtime 标准化 UI 组件模型、模型供应商协议、工具注册表格式、工作流语言、vector store、artifact format 或 observability backend。

从真实 runtime 反推的标准压力

Agent Runtime 不是把聊天流包装成协议。真实实现暴露出十个必须成为一级事实的压力:

  1. 工具调用有 schema、progress、partial output、permission gate、hook、result ref 和 failure category。
  2. 命令执行有 cwd、sandbox、network、stdin/stdout、exit code、output buffer 和长期进程状态。
  3. 权限决策来自 mode、rules、hooks、classifier、human 和 host policy,且 deny/ask 规则需要可覆盖自动 allow。
  4. Hook 是可插拔治理点,但必须写回 runtime facts,不能变成旁路执行链。
  5. Context compaction、rollback 和 reconstruction 需要稳定边界,否则旧 session 不能可信恢复。
  6. Subagents 需要 parent-child graph、isolation、status 和可恢复 child thread,而不是一段临时文本。
  7. Tasks 需要 objective、owner、status、attempts、dependencies、progress、output refs 和 delivery state;todo lists 不够。
  8. Jobs 需要 item 级状态、attempt、assignment 和 progress。
  9. Remote channels 需要 channel identity、native peer ids、resume cursor、permission bridge 和断线语义。
  10. Model routing 需要 task profile、candidate set、routing decision、fallback、single-candidate 和 no-candidate 事实。
  11. Cost、quota、rate limit、request telemetry 和 evidence 必须能用同一组 correlation ids join。

执行架构

Runtime 可以保留 provider-native 内部记录,但外部消费者 SHOULD 接收 normalized runtime events 和 snapshots。

必需 identity model

Identity含义必需关系
runtime_idRuntime 安装或服务实例。足够稳定,可用于 trace attribution。
session_id用户可见的 durable work container。拥有一个或多个 threads。
thread_id有序执行上下文。属于一个 session。
turn_id一次提交输入周期。属于一个 thread。
task_id带 objective、lifecycle、attempts、relationships 和 acceptance 的工作单元。属于 session、thread 或 parent task。
run_id / attempt_id某个 task 的一次执行尝试。属于一个 task,可绑定 thread、worker 或 job item。
step_id有序 runtime item,例如 status、message、tool、artifact 或 action。属于 turn、task 或 run。
tool_call_id一次工具调用。属于 step,可有 result refs。
action_id一次 pending human 或 policy decision。属于 turn、task 或 tool call。
subagent_id子代理执行上下文。有 parent session/thread/turn links。
artifact_iddurable deliverable reference。由 artifact service 拥有,runtime 引用。
evidence_idtrace、replay、verification 或 review reference。由 evidence system 拥有,runtime 引用。

兼容实现 MUST NOT 用单一 message id 表示所有 runtime work。

Event envelope

每个 event SHOULD 包含:

Field要求
type必需 event class。
event_id必需唯一 event id。
timestamp必需 producer timestamp。
sequence在同一 stream 内尽量单调递增。
schema_versionRuntime event schema version。
session_idthread_idturn_id属于 thread 或 turn 时必须出现。
task_idrun_idattempt_idstep_idtool_call_idaction_idsubagent_id适用时出现。
trace_idspan_idtelemetry 可用时出现。
payloadtyped event payload。
refs指向大 payload 或相邻 owner facts 的稳定 references。

大工具输出、artifacts、evidence packs 和原始 provider payloads SHOULD 用 ref 表示,而不是复制到每个 event。

标准 event classes

Class目的
session.created / session.updatedSession metadata 变更。
thread.started / thread.updatedThread lifecycle 或 read-model 相关状态变更。
turn.submitted / turn.started / turn.completed / turn.failed用户或系统 turn 生命周期。
task.created / task.accepted / task.queued / task.started / task.updated / task.progress / task.waiting / task.blocked / task.paused / task.resumed / task.retrying / task.cancel_requested / task.cancelled / task.timed_out / task.failed / task.lost / task.completed / task.archivedAgent task lifecycle、progress、waiting、retry、cancellation、loss 与终态。
run.status带 phase、title、detail、checkpoints 和 metadata 的 runtime 状态。
model.requested / model.delta / model.completed / model.failedProvider adapter 生命周期与 text/structured output stream。
reasoning.delta / reasoning.summary最终文本之外的 reasoning 或 planning stream。
tool.catalog.resolved本 turn 选择了 tool inventory 或 capability surface。
tool.started / tool.args / tool.progress / tool.result / tool.failedTool invocation lifecycle。
action.required / action.resolvedRuntime 为用户、policy 或 structured input decision 暂停。
queue.changedQueued turns 的顺序、状态或策略变更。
context.resolved为 turn 选择了 context、memory、knowledge、source 或 policy refs。
context.compaction.started / context.compaction.completed / context.compaction.failedContext compaction boundary 生命周期。
artifact.changedRuntime 观察到或产生 artifact reference。
evidence.changedRuntime 观察到或导出 evidence/replay/review reference。
subagent.spawned / subagent.status / subagent.input / subagent.completed / subagent.failed / subagent.closedChild agent coordination。
limit.changedCost、quota、rate limit、budget 或 policy limit 变更。
snapshot.updatedDurable snapshot 或 read model 变更。
runtime.warning / runtime.error非致命 warning 或致命 runtime error。

实现可以增加 vendor-specific event types,但必须保留 normalized classes 供可移植消费者使用。

扩展 event families

真实 coding、desktop 和 remote runtime 还 SHOULD 暴露这些 event families:

FamilyEvents目的
Permissionpermission.evaluated / permission.requested / permission.resolved记录规则、mode、hook、classifier、human 或 host policy 如何裁决。
Sandboxsandbox.applied / sandbox.violation记录实际执行边界和越界事实。
Hook / policyhook.started / hook.completed / hook.failed / policy.changed记录可插拔治理点的输入、输出、耗时和失败策略。
Processprocess.started / process.output / process.input / process.completed / process.failed / process.terminated记录命令、PTY、长期进程和 output refs。
Routingtask.profile.resolved / routing.candidates.resolved / routing.decided / routing.fallback.applied / routing.not_possible / routing.single_candidate解释模型候选、选择、回退、阻断和单候选。
Task orchestrationtask.delegated / task.dependency.updated / task.attempt.started / task.attempt.completed / task.attempt.failed记录 task graph edges、delegation、dependencies 和 per-attempt execution history。
Cost / limitscost.estimated / cost.recorded / rate_limit.hit / quota.low / quota.blocked让成本、限额和配额成为 runtime facts。
Channelchannel.connected / channel.disconnected / channel.resumed / channel.message / channel.permission_forwarded / channel.permission_returned记录远程通道、断线恢复和跨端审批。
Jobsjob.created / job.started / job.progress / job.item.started / job.item.completed / job.item.failed / job.completed / job.failed / job.cancelled记录批处理和后台目标。
Outputoutput.spilled / output.truncated / output.redacted / output.expired管理大输出和可审计引用。
Historyhistory.window.loaded / history.reconstructed / history.rollback.started / history.rollback.completed / snapshot.repaired恢复旧 session、压缩和回滚。

Control plane

兼容 runtime SHOULD 暴露这些命令,无论传输层是什么:

Command必需输入结果
submit_turnsession_idthread_id 或创建策略、input parts、options、metadata。Accepted turn 或 queued turn。
interrupt_turnsession_id,可选 thread_id / turn_id,reason。Interrupt accepted 或 no-op。
resume_threadsession_idthread_id,可选 resume token。Resume attempt result。
create_task / update_task / start_task / append_task_progressTask objective、scope、profile、constraints、assignee 或 progress refs。Task lifecycle 和 progress events。
pause_task / resume_task / cancel_task / retry_tasktask_id、reason、可选 propagation policy。Task pause、resume、cancellation 或 new attempt facts。
complete_task / fail_task / list_tasks / get_taskTask scope 或 terminal facts。Durable task read model 或 terminal reconciliation events。
link_tasks / unlink_tasksParent、child、dependency、source、artifact、evidence 或 subagent edge。Task graph update event。
respond_actionaction_id、decision、可选 structured payload。Action resolved event。
remove_queued_turn / promote_queued_turnqueued_turn_id、目标 session/thread。Queue changed event。
get_sessionsession_id、history window 或 cursor。Durable session snapshot。
get_thread_readsession_idthread_idThread read model。
get_tool_inventoryScope、caller、policy、runtime mode。Tool inventory snapshot。
spawn_subagent / send_subagent_input / wait_subagents / resume_subagent / close_subagentParent ids 和 child control payload。Subagent lifecycle facts。
export_evidence / export_replaySession/thread/turn/task scope。Stable evidence 或 replay refs。
evaluate_permission / resolve_permissionTool/process/action scope、decision payload。Permission evaluated/resolved event。
get_execution_environmentSession/thread/turn scope。Environment snapshot。
write_process_stdin / terminate_processprocess_id、input 或 reason。Process input / terminated event。
list_subagents / list_jobs / get_job / cancel_jobSession/thread/job scope。Subagent graph 或 job snapshot。
reconnect_channel / ack_eventsChannel id、cursor、resume token。Channel resumed 或 snapshot repair。
export_reviewSession/thread/turn/task scope。Review refs。

会修改状态的命令 MUST 通过 runtime 或相邻 owner 系统写入。UI-only state 不能修改 runtime truth。

Durable snapshots 与 read models

Event stream 必要但不充分。兼容 runtime SHOULD 维护:

  • session_snapshot:shell、title、timestamps、threads、recent messages 或 steps、history cursor。
  • thread_read_model:current status、active turn、pending requests、last outcome、incidents、queued turns、diagnostics。
  • tool_inventory_snapshot:当前 caller、policy、context、mode 下可用的 tools。
  • queue_snapshot:queued turn ids、order、source、policy 和 resume state。
  • task_snapshot:active、waiting、failed、lost、recent terminal tasks、task graph、current attempts 和 delivery state。
  • context_boundary_snapshot:selected refs、compaction summaries、context warnings、missing facts。
  • artifact_checkpoint_summary:artifact refs、versions、previews、validation issue counts、diff refs。
  • evidence_summary:trace ids、verification outcomes、replay refs、review refs、audit notes。
  • permission_sandbox_summary:permission state、pending approvals、sandbox profile 和 violation refs。
  • execution_environment_snapshot:cwd、workspace roots、env refs、process limits 和 active processes。
  • routing_limit_summary:task profile、candidate count、routing decision、cost state、quota/rate-limit state。
  • subagent_job_summary:child graph、job progress、assigned threads 和 recoverability。
  • channel_summary:remote peers、resume cursors、last acknowledged sequence 和 permission bridge state。

Read model 可以紧凑,但必须诚实:unknownunavailablestaleblocked 优于从正文推断成功。

Completion 与 failure semantics

Runtime SHOULD 区分:

  • accepted:runtime 收到请求。
  • queued:工作在另一个 turn 或 policy gate 后等待。
  • preparing:正在解析 context、model、tools 或 policy。
  • running:execution loop 活跃。
  • waiting_input:需要用户或外部结构化输入。
  • waiting_permission:需要 human、policy 或 host approval。
  • waiting_resource:credential、quota、file、network、worker 或 external system 不可用。
  • blocked:缺少 action、credential、policy、context、dependency、tool 或 quota。
  • streaming:model 或 tool output 正在发出。
  • retrying:retry 或 fallback 活跃。
  • lost:runtime 无法证明 worker 是否还活着。
  • timed_out:time 或 inactivity budget 终止了工作。
  • completed:owner 声明完成且 durable facts 已 reconcile。
  • failed:没有新请求或修复时无法继续。
  • cancelled:user、policy 或 runtime 中断了工作。
  • stale:已知 snapshot 可能不是当前执行状态。

Provider 或 tool 的 success 不等于 Agent 工作 completed。Completion 必须绑定 runtime state;必要时还要绑定 artifact 或 evidence facts。

校验

Validator SHOULD 校验行为,而不只是检查文件存在:

  • Events 包含稳定 ids,并可 replay 成 read model。
  • Provider streams 能映射到 normalized model/text/reasoning events。
  • Tool calls 保留 input refs、result refs、errors 和 policy decisions。
  • Human actions 会暂停执行,并且只通过 respond_action 恢复。
  • Queue mutations 能跨重启保存并发出 queue.changed
  • Task lifecycle 能跨重启保存,保留 prior attempts,并可恢复 parent/child 与 dependency edges。
  • 旧 sessions 通过 snapshots 和 cursor windows 恢复。
  • Permission、sandbox、hook 和 process facts 可以解释每一次工具或命令为什么被允许、阻断或失败。
  • Model routing、cost、quota 和 rate-limit facts 可以解释 selected / fallback / no-candidate / single-candidate。
  • Evidence/replay exports 来自与 UI 和 diagnostics 相同的 runtime facts。
  • Missing facts 标为 unknownunavailablestaleblocked,而不是从正文推断。

Draft standard for portable agent execution runtimes.