多智能体团队协作与任务交接工作流。多个 AI 助手/代理(跨工具、跨会话)共同推进项目时,用「共享交接单」协调分工:先读再动、接续不重做、进展留痕、单写入者边界、完成必须附验收证据。内置多 Agent 协同调度防翻车指南:上下文爆炸、协作死锁、状态不一致、幻觉传染、通信风暴、Agent 蔓延、意图漂移、无验收聚合等八大问题的工程化解法。当用户提到 agent 协作、多开接力、任务交接、团队代理、协同调度、多Agent编排、换助手继续干活时使用。
npx skills add https://github.com/3338902669-ops/agent-orchestra --skill agent-team-handoff
把一群 AI 助手变成一支有纪律的团队:谁在干什么、干到哪了、下一步是什么,全部落在文件里,任何成员随时接续。
在项目外建一个共享目录(示例名 .team-shared/),固定放四份文件:
| 文件 | 内容 | 更新时机 |
|---|---|---|
| CURRENT-TASK.md | 当前任务交接单(状态/负责人/进度/下一步/证据) | 每次实质进展 |
| HANDOFF-RULES.md | 团队协作规则全文(本技能的本地化版本) | 规则变更时 |
| MEMORY-SNAPSHOT.md | 共享记忆快照(决策、偏好、踩坑) | 定期/重大决策 |
| AGENT-ROLES.md | 成员角色表与能力分工 | 编制变化时 |
> 规则:所有成员只认这份目录,聊天记录不算数。
待办(queued) → 进行中(in-progress) → 等待接续(handoff-wait) → 进行中 … → 已完成(done)
↘ 受阻(blocked):写明具体阻塞条件,连续 3 轮未解决才允许标记
| 角色 | 职责 | 回退条件 |
|---|---|---|
| 总控 | 需求拆解、派发、验收、记忆与交接管理 | — |
| 调度员 | 任务路由、负载均衡、状态监控、超时熔断(优先用脚本/看板等确定性手段,不用 LLM 临场发挥) | 调度延迟高或误派发率上升 |
| 主开发 | 写代码、实现、修复、部署 | 连续失败 2 次切备用通道 |
| 审查员 | 只读评审代码/视觉/安全,不给主线改文件 | — |
| 专项通道 | 处理棘手故障与能力缺口,不与主开发并发改同一文件 | 问题关闭即退出 |
成本优先路由:日常任务走默认主力模型/订阅 → 失败重试一次 → 再失败切备用通道 → 疑难杂症才动用专项通道。不要因为一次小报错就切换主力。
> 适用场景:多个 AI 助手并行推进时的典型翻车点。每次组建多 Agent 团队前,逐条对照检查。
| # | 坑 | 症状 | 工程化解法 |
|---|---|---|---|
| 1 | 上下文爆炸 | 共享对话越滚越长,早期任务约束和验收标准被挤出窗口 | 交接单只存结论与状态(≤200行);过程性讨论留在各自本地;每批次开始由总控重发「最小必要上下文」 |
| 2 | 幻觉传染 | 一个成员输出错误信息,经共享记忆被全员当作事实扩散 | 共享记忆分区:写入需总控标记「已验证」才可见;未验证内容放隔离区并标注来源与置信度 |
| 3 | 协作死锁 | A 等 B 的产出、B 等 C、C 又等 A,系统永久挂起 | 资源/产出申请按全局固定顺序排队;每个等待必须带超时(默认15分钟),超时自动升级总控裁决 |
| 4 | 状态不一致 | 两人手里的任务状态对不上,重复做或漏做 | 唯一事实源=交接单状态机;改状态即写文件;口头/会话内状态不作数 |
| 5 | 通信风暴 | 成员互相直聊,消息链路数随人数平方膨胀,延迟指数涨 | 星型拓扑:只允许「成员↔总控」通信,禁止成员互发;确需协作由总控转交 |
| 6 | Agent 蔓延 | 按功能细分拆出一堆角色,边界重叠、没人负全责 | 减法原则:新角色上线前先回答「能否并入现有角色的完整闭环」;每个角色必须端到端负责一段可交付物 |
| 7 | 调度靠 LLM 临场发挥 | 路由派发交给大模型自由决定,同一输入两次派发结果不同 | 调度确定性化:看板扫描+固定规则(按标签/负载/顺序)派发;LLM 只做需要理解力的规划,不做机械分发 |
| 8 | 无验收聚合 | 各自交付后没人拼装校验,缺陷在集成时才爆 | 总控设独立验收门禁:对照交接单验收标准逐条核验+运行证据;不合格整批退回,不带病合并 |
Take 3338902669-ops/agent-team-handoff from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.