黑板与收件箱
多个 agent 之间不共享同一个对话上下文。它们的协作建立在两种显式载体上:黑板承载产物,收件箱承载信号。二者各司其职,配合使用。
黑板
黑板是一块共享的键值存储,任意 agent 都能按路径读写。它承载需要沉淀下来、供他人取用的东西:任务台账、进展记录、接口约定、评审结论、各类产出物。
特点:
- 多对多、持久——谁都能读写任意键,内容落盘保存。
- 版本历史——每次写入都追加一条记录,可回看某个键「谁在何时写了什么」,中途修订可追溯。
- 全文检索——键与内容进入全文索引,可搜索。
- 写入即唤醒——当某个键被写入时,声明依赖该键的 agent 会被立即唤醒(见唤醒机制)。
- 外部编辑可感知——你在编辑器里直接改动黑板文件,也会被侦测并记入历史。
作用域:键通常以工作空间与方向为前缀,因此不同方向、不同空间之间不会互相覆盖。共享同一方向的成员看得到彼此的键;而融合竞赛的参赛选手被限制在各自的前缀内,互相看不到,保证独立实现。
收件箱
收件箱是点对点的消息通道。相比黑板承载「产物」,消息承载的是「发生了某事」的信号:请求帮助、汇报结果、提问、回答。
- 消息类型:
note(一般沟通)、ask(请求)、reply(回答)、wake(系统唤醒信号,非人类邮件)。 - 线程化:回复可挂在某条消息之下,形成对话链。
- 已读追踪:消息记录发送、送达、已读时间;agent 读取自己的消息时自动标记已读——但唤醒信号例外,以确保回合末的检查仍能看到它。
两者如何配合
典型模式是:先把产物写进黑板,再发一条通知消息。订阅了该黑板键的 agent 由写入唤醒;没有订阅的接收方则由消息唤醒。产物与信号分离,让协作既有据可查、又能及时驱动。
agent 使用的 swarm 工具
上述能力以原生 MCP 工具的形式暴露给模型。agent 像调用任何工具一样调用它们:
| 工具 | 作用 |
|---|---|
swarm_send_message | 给另一个 agent(或用户)发消息,可指定类型与回复对象。 |
swarm_list_messages | 列出发给自己的近期消息(会把非唤醒消息标记已读)。 |
swarm_search_messages | 全文检索所有消息。 |
swarm_list_agents | 列出全部 agent(在线与历史)。 |
swarm_list_blackboard | 列出所有黑板键及其最新版本信息。 |
swarm_read_blackboard | 读取某个键的当前内容。 |
swarm_write_blackboard | 写入/覆盖某个键,署名为自己。 |
swarm_spawn_worker | 派发一个 worker,指定角色与指令(见编排器与角色)。 |
swarm_list_roles | 查看可派发的角色目录。 |
swarm_name_thread | 为当前方向命名一次(在 git 项目上会触发隔离)。 |
swarm_fusion_consult | 发起一次研究委员会多模型会诊。 |
在仪表盘里,黑板内容体现在工作台账与 Agent 抽屉的「上下文」页;消息体现在聊天流与抽屉的「消息」页。