SuperAPI AI 工具集

team-communication-protocols

智能体与模型

查看项目

更新于 10-15 10:51

技能介绍

用途

本技能提供智能体队友之间有效通信的协议,包括消息类型选择、计划审批工作流、关闭流程以及需要避免的常见反模式。适用于以下场景:为新团队建立通信规范;在消息类型之间做出选择(message、shutdown_request;broadcast 已于 2026 年移除);处理计划审批工作流;管理团队的优雅关闭;发现队友的身份与能力。

消息类型选择

message(直接消息)——默认选择

发送给单个特定队友:

{
  "type": "message",
  "recipient": "implementer-1",
  "content": "Your API endpoint is ready. You can now build the frontend form.",
  "summary": "API endpoint ready for frontend"
}

用于:任务更新、协调、提问、集成通知。

broadcast——已于 2026 年移除

broadcast 已于 2026 年从 SendMessageTool 中移除,不再有内置的扇出功能。

要触达多个队友,需按名称逐个发送消息。对于影响所有人的关键共享资源变更(例如更新接口契约),需遍历 ~/.claude/teams/{team-name}/config.json 中的团队配置,并针对每个队友名称发送一条定向消息。

这与旧版 broadcast 的网络开销相同(broadcast 内部本就会展开为 N 条消息),但现在变为显式操作,使协调逻辑可审计。

shutdown_request——优雅终止

请求队友关闭:

{
  "type": "shutdown_request",
  "recipient": "reviewer-1",
  "content": "Review complete, shutting down team."
}

队友以 shutdown_response 回应(批准,或附带理由拒绝)。

通信反模式

反模式 问题 更好的做法
尝试使用已移除的 broadcast 2026 年起工具会返回错误 每个收件人发送一条消息
发送 JSON 状态消息 并非为结构化数据设计 使用 TaskUpdate 更新任务状态
在集成点不沟通 队友基于过时接口开发 接口就绪时发送消息
通过消息进行微观管理 使队友不堪重负,拖慢工作 在里程碑处检查,而非每一步
使用 UUID 而非名称 难以阅读,容易出错 始终使用队友名称
忽视空闲队友 浪费容量 分配新工作或将其关闭

计划审批工作流

当队友以 plan_mode_required 生成时:

  1. 队友使用只读探索工具创建计划
  2. 队友调用 ExitPlanMode,向负责人发送 plan_approval_request
  3. 负责人审查计划
  4. 负责人以 plan_approval_response 回应

批准:

{
  "type": "plan_approval_response",
  "request_id": "abc-123",
  "recipient": "implementer-1",
  "approve": true
}

附带反馈拒绝:

{
  "type": "plan_approval_response",
  "request_id": "abc-123",
  "recipient": "implementer-1",
  "approve": false,
  "content": "Please add error handling for the API calls"
}

关闭协议

优雅关闭序列

  1. 负责人向每个队友发送 shutdown_request
  2. 队友收到类型为 "shutdown_request" 的 JSON 消息
  3. 队友以 shutdown_response 回应:
    • approve: true——队友保存状态并退出
    • approve: false + 理由——队友继续工作
  4. 负责人处理拒绝——等待队友完成,然后重试
  5. 所有队友关闭后——调用 TeamDelete 移除团队资源

处理拒绝

如果队友拒绝关闭:

  • 检查其理由(通常是“仍在处理任务”)
  • 等待其当前任务完成
  • 重试关闭请求
  • 如情况紧急,用户可强制关闭

队友发现

通过读取配置文件查找团队成员:

  • 位置:~/.claude/teams/{team-name}/config.json
  • 结构:
{
  "members": [
    {
      "name": "security-reviewer",
      "agentId": "uuid-here",
      "agentType": "team-reviewer"
    },
    {
      "name": "perf-reviewer",
      "agentId": "uuid-here",
      "agentType": "team-reviewer"
    }
  ]
}

发送消息和分配任务时始终使用 name,绝不直接使用 agentId、角色名或未加后缀的别名。如果队友以 team-lead-2 生成,就发送给 team-lead-2,而不是 team-lead。

故障排查

队友不回应消息。 检查队友的任务状态。如果处于空闲,可能已完成任务,正在等待分配新工作或被关闭。如果仍处于活动状态,可能正在执行中,会在当前操作完成后处理消息。

队友说看不到 SendMessage。 检查队友 agent 的 tools: frontmatter。当 agent 使用受限工具允许列表时,必须显式列出 SendMessage、TaskList、TaskGet、TaskUpdate 等 Agent Teams 通信工具。

负责人尝试使用 broadcast 并收到工具错误。 broadcast 已于 2026 年从 SendMessageTool 中移除。更新负责人的指令,改为逐个寻址收件人。对于共享资源更新,遍历团队配置并为每个队友名称发送一条消息。

队友意外拒绝了关闭请求。 队友仍在工作。检查 shutdown_response 的 content 字段中的拒绝理由,等待工作完成,然后重试。切勿强制终止有未保存工作的队友。

收到 plan_approval_request 但缺少 request_id。 队友调用 ExitPlanMode 时缺少必需的请求上下文。让队友重新进入计划模式,完成探索,再次调用 ExitPlanMode。request_id 由计划模式系统自动生成。

两个队友互相等待,都没有进展。 这是死锁:双方都阻塞等待对方先完成。负责人应向其中一个队友发送直接消息,附上桩或部分结果,使其解除阻塞并继续。

相关技能

  • team-composition-patterns——在建立通信规范之前选择 agent 类型和团队规模
  • parallel-feature-development——使用通信协议协调并行实现者之间的集成交接