AI agent Handoff Contract 设计:多 agent、人工与外部系统之间怎么移交任务

HTMLPAGE 团队
20 分钟阅读

多 agent 协作和人工接管最容易烂在 handoff。本文讲清 handoff envelope、authority transfer、上下文裁剪和责任边界,让移交不是复制聊天记录。

#AI agent #handoff #context transfer #工程实践

很多团队谈多 agent 协作时,最先想到的是“一个 agent 规划,另一个 agent 执行”。真正到了工程现场,问题往往不在分工,而在移交。前一个执行者到底要交什么?是完整聊天记录,还是摘要?权限要不要一起转?外部副作用的责任算谁的?

如果这些问题没有被写成 contract,多 agent 协作和人工接管最后都会退化成“把一坨上下文丢给下一个执行者”。这不叫 handoff,只叫复制粘贴。

建议先结合 多 Agent 协作架构设计AI agent Prompt Contract 设计AI agent Artifact 设计AI agent 人工审批控制台设计 一起看。

先给结论:handoff 最少要移交 4 类东西

类别为什么必须移交
目标与当前状态下一个执行者要知道任务停在哪里
可复用上下文避免重新读全部历史
权限与可执行动作避免接手后越权或失能
未完成风险与副作用避免重复写入或误继续

如果缺任意一类,handoff 之后的执行者都只能靠猜。

一、Handoff 不是历史 transcript,而是一份可执行 envelope

更稳的做法是把 handoff 写成结构化 envelope:

{
  "runId": "run_123",
  "handoffFrom": "planner_agent",
  "handoffTo": "review_agent",
  "currentState": "waiting_review",
  "goal": "validate external send draft",
  "artifactRefs": ["draft_004", "evidence_011"],
  "allowedActions": ["approve", "reject", "edit_and_resume"],
  "openRisks": ["external_send_high_impact"]
}

这份 envelope 的意义是让下一个执行者立刻知道:现在是什么任务、能做什么、不能做什么。

如果要让 handoff 真正跨系统稳定工作,这份 packet 最好还带上版本和接手语义:

{
  "handoffVersion": "v3",
  "authoritySnapshot": "policy_bundle_12",
  "resumePolicy": "resume_from_checkpoint_only",
  "ackRequiredBefore": "2026-05-10T10:05:00Z"
}

这样接手方看到的就不只是内容摘要,而是一份带权限快照、恢复边界和接手时限的正式合同。

二、上下文转移要先裁剪,不要把整段历史全量塞过去

真实系统里,handoff 最大的问题之一就是上下文臃肿。更健康的转移通常会把上下文拆成三类:

  • 必须带:目标、当前状态、关键 artifact、开放风险
  • 可选带:相关历史摘要、最近几步决策理由
  • 不应该带:无关对话、过期草稿、冗余 trace

这不仅是节省 token,更是在控制下一个执行者的注意力。

三、authority transfer 必须显式,不要默认“接手者全都能做”

handoff 之后最危险的情况,是新执行者看到了信息,却不知道自己是否真的有权继续某些动作。更稳的设计是把 authority 也写进 contract:

权限类型示例
只读权限查看 artifact、查看 evidence
决策权限approve / reject
执行权限允许触发写入或外发
复用权限允许修改已有 draft

如果 authority 不显式存在,多 agent 协作很容易在边界处越权。

除此之外,handoff 最好还要求接手方显式 ack,而不是默认“收到了就算接手”。一个最小接手检查表通常包括:

检查项为什么重要
context complete防止关键 artifact 没带上
authority still valid防止权限快照已过期
side effects frozen防止旧执行链还在继续写入
resume policy understood防止接手后从错误位置恢复

这一步看起来多了一层确认,但它能显著减少“handoff 已经发出,实际上没人真正接住”的空转。

四、人工 handoff 和 agent handoff 的差异要提前定义

看起来都是“移交任务”,但两者需求不同:

  • agent -> agent 更强调结构化上下文与 machine-readable contract
  • agent -> human 更强调证据摘要、风险解释和可选动作
  • human -> agent 更强调修改结果和恢复点

所以 handoff contract 可以共用底层字段,但呈现形式通常不能完全一样。

五、handoff 后的责任边界也要记账

一旦接手者做了继续执行、修改或批准动作,系统应该能回答:

  • 这是哪次 handoff 之后发生的
  • 当前结果属于哪位执行者的责任范围
  • 中间是否发生过人工覆盖或权限升级

这也是为什么 AI agent Run Ledger 审计模型 里最好保留 handoff 事实,而不只是最终结果。

六、上线后要看 handoff 质量,而不是只看 handoff 次数

建议至少记录:

指标用途
handoff completion rate看移交后能否顺利继续
post-handoff clarification ratio看接手者是否还要频繁追问
handoff accept latency看 packet 发出后多久被真正接手
handoff packet size vs acceptance看上下文裁剪是否合理
resume packet completeness rate看 handoff 信息是否经常缺字段
authority mismatch incidents看权限边界是否清楚

如果 handoff 次数很多,但 clarification ratio 也很高,说明系统只是在频繁移交,不是在有效协作。

七、失败案例:Planner 把整段历史丢给 Reviewer,人工仍然看不懂该审什么

某个采购审批 agent 把 40 多轮历史记录原样交给 review agent,再由 review agent 把相同文本显示给人工。结果人工审批者仍然要花很长时间判断“到底要我做什么”。

修复后,团队把 handoff 改成“目标 + 当前状态 + 关键 evidence + 可选动作 + 风险摘要”的 packet,人工审批时间明显缩短,误操作也下降。

八、Handoff Contract Checklist

  • handoff 是否被定义为结构化 envelope,而不是转发聊天记录
  • 是否区分必须带、可选带和不该带的上下文
  • authority transfer 是否显式记录可执行动作
  • handoffVersion、authoritySnapshot 和 resumePolicy 是否进入 packet
  • 是否区分 agent -> agent、agent -> human、human -> agent 三类 handoff
  • 是否要求接手方显式 ack,而不是默认接手成功
  • handoff 事实是否进入 ledger 和 trace
  • 是否监控 clarification ratio 和 authority mismatch
  • 接手者是否能从 contract 直接开始下一步,而不是重新猜任务

结语

AI agent 的 handoff 不该是“把上下文往后传”,而是把目标、状态、权限、风险和可复用产物一起封装成可执行 contract。只有这样,多 agent 协作和人工接管才不会把系统复杂度转嫁给下一个执行者。

延伸阅读: