深色模式
17 · 移交与通信
Agent 之间怎么把活交接明白
📚 系列导航:这是《Agent 开发进阶》的第 17 篇(共 24 篇)。上一篇的编排者-工人是"外包关系"——派活收活、控制权不动;这一篇讲另一种关系:移交(handoff),控制权整个交出去,以及 agent 之间怎么把话说明白。下一篇:18 · Agent 团队实战。
多 agent 系统里最容易被低估的不是架构,是"交接"这个动作本身。人类版你肯定体验过:打客服电话,转接三次,每次都得把事情从头讲一遍。agent 一模一样——我见过"退款诉求"被转述三手后变形成"咨询物流"。交接质量决定多 agent 系统的体验下限。这一篇只干一件事:把移交和通信这两件工程做扎实——移交时带什么、共享状态怎么不打架、消息用什么格式传。
看完这一篇,你会拿到:
- handoff vs 编排的判断标准:控制权转移 vs 任务外包
- 可直接套用的移交上下文包 JSON 模板(四要素)
- 共享状态的并发纪律:锁或分区二选一
- 跑通的"客服→专家"无缝移交流程
01 handoff 和编排,是两种关系
编排者-工人里,工人干完活,控制权回到编排者。但有些场景不是派活,是"这事从此归你管"。就像医院:主治给你开检查单是外包——检查科出报告,决策权还在主治手里;转诊到专科是移交——专科从此接管你这个病人,主治退出。工程区别很实在:编排要收结果做汇总;移交后原 agent 退出,新 agent 直接面对用户。选错会很别扭:该移交的硬用编排,客服就得当传声筒,每轮转述都在丢信息。
💡 一句话总结:外包看结果、移交换主人——先分清是哪种关系,再选工程方案。
02 移交上下文包:四要素一个不能少
移交最大的罪是让用户重讲一遍。防住它靠设计好的上下文包,四要素:用户原始诉求、已确认的事实、已尝试的方案、当前状态。
json
{
"intent": "退款:商品质量问题",
"facts": ["签收 3 天", "质量问题照片 2 张"],
"tried": ["自助退款:失败,超时限"],
"state": "待专家判断特殊审批"
}四件里"已尝试的方案"最常被省却最值钱——它让专家不重走失败路径。检验标准:专家拿到包后的第一句话应该在推进问题,而不是"请问您遇到了什么问题?"
💡 一句话总结:诉求、事实、已试、现状四件打包——让接手者第一句话就在推进,而不是从头问。
03 共享状态:黑板好用,但要防打架
多个 agent 读写同一份文件或存储,叫黑板模式,适合多方长任务。但并发是真问题:两个 agent 同时读旧状态、各自改完写回,后写覆盖前写——单机照样发生,不是分布式的专利。解法二选一:加锁(写前取锁,牺牲并行度)或分区(每个 agent 只写自己的区,汇总方只读)。我默认选分区:"谁写哪里"一目了然,天然无冲突,追责容易。
💡 一句话总结:要么锁、要么分区——放任两个 agent 裸写同一文件,覆盖事故只是时间问题。
04 结构化消息,别玩传话游戏
agent 之间用自然语言"转述"任务,就像小时候玩传话游戏:一句话传五个人,最后面目全非——只不过 agent 传丢的是订单号、时限、意图。纪律:机器间通信定 schema——类型、发送方、内容、时间戳;硬字段结构化传,自然语言只放不影响执行的补充。
json
{"type": "handoff", "from": "客服", "ts": "…", "payload": "上下文包四要素"}预期效果:接收方按字段取值,不做阅读理解。
💡 一句话总结:硬信息走字段、软描述走文本——schema 是给未来调试的你留的活路。
05 动手:客服→专家的无缝移交
任务:搭两个 agent——客服(收集诉求、处理常规问题)和专家(处理退款审批)。给客服加移交判断:命中"需专家"时组装四要素上下文包,用结构化消息移交,之后用户直接与专家对话。
验收标准:跑通"用户提退款→客服收集→移交→专家续接"全流程,专家第一句话直接推进、用户全程零复述;打印移交消息,核对四要素齐全。
两种结果都正常:专家无缝续接——把上下文包模板固化成移交规范;专家还在重复提问——对照打印的消息查缺失要素,多数是"已尝试方案"没传或事实太含糊,补上再跑。
06 小结
你现在应该能:分清移交和编排、设计四要素上下文包、用锁或分区管住共享状态、用 schema 替代自然语言传话。
下一篇 18 · Agent 团队实战:把 16、17 的零件装成整机——调研、写 PRD、评审三角色真实协作。
📎 实战案例
一个客服系统用自然语言在 agent 间转述任务,传三手后「退款诉求」变形成「咨询物流」,用户被迫复述三遍。团队改用结构化移交(四要素上下文包 + schema 消息)、共享状态按 agent 分区后,专家接手首句即推进问题,平均会话轮数少了约三分之一。
踩坑
- 我用自然语言在 agent 间传话,三手后"退款诉求"变成"咨询物流",用户复述了 3 遍才被接住——结构化是底线。
- 两个 agent 同写一个共享文件,后写覆盖前写,半天的调研结果凭空消失——并发控制不是分布式专利,单机照样翻车。
- 我的移交包早期漏了"已尝试方案",专家把失败路径重走一遍,token 多烧一倍还惹恼了用户——四要素一个都不能省。