什么是 Swarm 模式?
Swarm 模式部署多个持久化的自主智能体,它们并行工作以解决复杂任务。一个由 LLM 驱动的 Lead Agent 动态协调团队——规划任务、生成智能体、重新分配工作,并基于实时事件做出决策。 与静态编排(任务预先分解且不会改变)不同,Lead Agent 持续监控进度并动态适应:创建新任务、取消冗余工作、在情况变化时重新分配空闲智能体。工作原理
Shannon 的 Swarm 工作流由事件驱动的 Lead Agent 循环驱动:Lead Agent 事件循环
Lead Agent 在特定事件触发时唤醒,并决定下一步操作:生命周期概览
- 初始规划 — Lead 接收用户查询并创建一组初始任务,可选择性地设置依赖链
- 智能体生成 — Lead 生成智能体并分配任务,遵循依赖顺序
- 事件驱动协调 — 当智能体完成工作、报告空闲或到达检查点时,Lead 动态重新分配任务、修订计划或生成新智能体
- 综合 — 当所有任务完成时,Lead 可以生成专用的综合智能体或声明
done以产出最终响应
任务依赖 (DAG)
任务可以声明对其他任务的依赖,形成有向无环图(DAG):task-4 在三个研究任务全部完成之前无法被分配。Lead 可以通过 revise_plan 动态创建新的依赖链。
Lead Agent 行动
每次 Lead 唤醒时,它选择一个或多个行动:智能体行动
每次迭代,智能体选择一个行动:智能体无法自行退出。当智能体返回
done 时,它会自动转换为 idle 状态。只有 Lead Agent 可以通过 shutdown_agent 终止智能体。这确保了 Lead 对团队组成保持完全控制。智能体间通信
Swarm 智能体通过两种机制协作:P2P 消息
智能体通过 Redis 支持的邮箱向特定队友发送直接消息。消息类型包括request、offer、accept、delegation 和 info。
每次 LLM 调用前,智能体的邮箱会被检查是否有新消息。传入的消息会出现在智能体的提示上下文中。
共享工作区
智能体将发现发布到基于主题的工作区列表中。每次迭代前,每个智能体都会从所有主题获取最近的工作区条目,使整个团队了解集体进展。知识去重
Shannon 通过三层去重机制防止智能体间的重复工作:L1: 单智能体 URL 缓存
L1: 单智能体 URL 缓存
每个智能体缓存其已获取的 URL。如果在同一智能体循环中再次请求相同 URL,将返回缓存内容而无需网络调用。
L2: 跨智能体共享 URL 元数据
L2: 跨智能体共享 URL 元数据
URL 元数据(标题、摘要、关键事实)在团队所有智能体之间共享。当智能体 B 尝试获取智能体 A 已处理的 URL 时,它会收到缓存的元数据而非重新获取——节省时间和 Token。
L3: 搜索重叠检测
L3: 搜索重叠检测
追踪所有智能体发现的搜索结果 URL。当新搜索返回的 URL 中 70% 以上已被其他智能体发现时,系统注入警告提示寻找新角度。此外,搜索饱和检测器使用 Jaccard 词级相似度(阈值 0.7,窗口 3 个查询)比较近期查询,标记重复搜索。
收敛检测
三种机制防止智能体无限运行:无进展检测
无进展检测
如果智能体连续 3 次迭代没有执行任何有意义的操作(空或无法识别的 action),则认为已收敛,转换为 idle 状态。注意
tool_call、send_message 和 publish_data 都会重置此计数器。连续错误中止
连续错误中止
如果连续发生 3 次永久性工具错误(非速率限制等瞬时错误),智能体中止并报告失败。
最大迭代强制完成
最大迭代强制完成
在最后一次迭代时,如果智能体尚未调用
done 或 idle,工作流强制完成并从最近的迭代中构建摘要。全局预算控制
Swarm 执行受三层预算约束,防止成本失控:
Lead Agent 在其上下文中接收预算信息(剩余调用次数、Token、时间),使其能够做出成本感知的决策——例如在预算紧张时关闭低优先级智能体或跳过可选任务。
何时使用 Swarm
Swarm 模式比标准工作流使用更多 Token,因为每个智能体运行多次 LLM 迭代,且 Lead Agent 的协调决策也消耗 Token。请在真正受益于持久化协作多智能体执行的任务中使用它。
配置
Swarm 行为通过config/features.yaml 控制:
流式事件
Swarm 工作流发出 SSE 事件用于实时监控:下一步
Swarm 教程
分步指南:运行 Swarm 工作流
工作流和模式
其他工作流类型和认知模式
流式传输
实时事件流
成本控制
多智能体任务的预算管理