Skip to main content

什么是 Swarm 模式?

Swarm 模式部署多个持久化的自主智能体,它们并行工作以解决复杂任务。一个由 LLM 驱动的 Lead Agent 动态协调团队——规划任务、生成智能体、重新分配工作,并基于实时事件做出决策。 与静态编排(任务预先分解且不会改变)不同,Lead Agent 持续监控进度并动态适应:创建新任务、取消冗余工作、在情况变化时重新分配空闲智能体。

工作原理

Shannon 的 Swarm 工作流由事件驱动的 Lead Agent 循环驱动:

Lead Agent 事件循环

Lead Agent 在特定事件触发时唤醒,并决定下一步操作:
每次唤醒时,Lead 接收完整的团队状态(智能体、任务、预算),并选择一个或多个行动。

生命周期概览

  1. 初始规划 — Lead 接收用户查询并创建一组初始任务,可选择性地设置依赖链
  2. 智能体生成 — Lead 生成智能体并分配任务,遵循依赖顺序
  3. 事件驱动协调 — 当智能体完成工作、报告空闲或到达检查点时,Lead 动态重新分配任务、修订计划或生成新智能体
  4. 综合 — 当所有任务完成时,Lead 可以生成专用的综合智能体或声明 done 以产出最终响应

任务依赖 (DAG)

任务可以声明对其他任务的依赖,形成有向无环图(DAG):
系统强制执行依赖顺序——task-4 在三个研究任务全部完成之前无法被分配。Lead 可以通过 revise_plan 动态创建新的依赖链。

Lead Agent 行动

每次 Lead 唤醒时,它选择一个或多个行动:

智能体行动

每次迭代,智能体选择一个行动:
智能体无法自行退出。当智能体返回 done 时,它会自动转换为 idle 状态。只有 Lead Agent 可以通过 shutdown_agent 终止智能体。这确保了 Lead 对团队组成保持完全控制。

智能体间通信

Swarm 智能体通过两种机制协作:

P2P 消息

智能体通过 Redis 支持的邮箱向特定队友发送直接消息。消息类型包括 requestofferacceptdelegationinfo 每次 LLM 调用前,智能体的邮箱会被检查是否有新消息。传入的消息会出现在智能体的提示上下文中。

共享工作区

智能体将发现发布到基于主题的工作区列表中。每次迭代前,每个智能体都会从所有主题获取最近的工作区条目,使整个团队了解集体进展。

知识去重

Shannon 通过三层去重机制防止智能体间的重复工作:
每个智能体缓存其已获取的 URL。如果在同一智能体循环中再次请求相同 URL,将返回缓存内容而无需网络调用。
URL 元数据(标题、摘要、关键事实)在团队所有智能体之间共享。当智能体 B 尝试获取智能体 A 已处理的 URL 时,它会收到缓存的元数据而非重新获取——节省时间和 Token。
追踪所有智能体发现的搜索结果 URL。当新搜索返回的 URL 中 70% 以上已被其他智能体发现时,系统注入警告提示寻找新角度。此外,搜索饱和检测器使用 Jaccard 词级相似度(阈值 0.7,窗口 3 个查询)比较近期查询,标记重复搜索。

收敛检测

三种机制防止智能体无限运行:
如果智能体连续 3 次迭代没有执行任何有意义的操作(空或无法识别的 action),则认为已收敛,转换为 idle 状态。注意 tool_callsend_messagepublish_data 都会重置此计数器。
如果连续发生 3 次永久性工具错误(非速率限制等瞬时错误),智能体中止并报告失败。
在最后一次迭代时,如果智能体尚未调用 doneidle,工作流强制完成并从最近的迭代中构建摘要。
瞬时错误(速率限制、超时、503)触发自动重试,退避时间递增(5 秒增量,最大 30 秒),不计入中止阈值。

全局预算控制

Swarm 执行受三层预算约束,防止成本失控: Lead Agent 在其上下文中接收预算信息(剩余调用次数、Token、时间),使其能够做出成本感知的决策——例如在预算紧张时关闭低优先级智能体或跳过可选任务。

何时使用 Swarm

Swarm 模式比标准工作流使用更多 Token,因为每个智能体运行多次 LLM 迭代,且 Lead Agent 的协调决策也消耗 Token。请在真正受益于持久化协作多智能体执行的任务中使用它。

配置

Swarm 行为通过 config/features.yaml 控制:

流式事件

Swarm 工作流发出 SSE 事件用于实时监控:

下一步

Swarm 教程

分步指南:运行 Swarm 工作流

工作流和模式

其他工作流类型和认知模式

流式传输

实时事件流

成本控制

多智能体任务的预算管理