agentic_huge_data_base / wiki
页面 jcode · 7 多智能体协作·DeepWiki 中文全文译文

7 · 多智能体协作(Swarm Multi-Agent Coordination)

代理式研究运行时 · 聚焦本章的模块关系、源码依据与实现要点。

项目jcode 章节7 状态全文译文 模块智能体运行时、接口与服务契约、界面与交互、文档对象与元数据
源码线索
  • docs/SWARM_ARCHITECTURE.md
  • src/protocol_tests.rs
  • src/server/client_actions.rs
  • src/server/client_comm.rs
  • src/server/client_lifecycle.rs
  • src/server/client_session.rs
  • src/server/client_state.rs
  • src/server/comm_control.rs
  • src/server/comm_session.rs
  • src/server/comm_sync.rs
模块标签
  • 智能体运行时
  • 接口与服务契约
  • 界面与交互
  • 文档对象与元数据
  • 系统架构

章节正文

多智能体协作

群体多智能体协调

相关源文件

本章引用的主要源码文件:

  • docs/SWARM_ARCHITECTURE.md
  • src/protocol_tests.rs
  • src/server/client_actions.rs
  • src/server/client_comm.rs
  • src/server/client_lifecycle.rs
  • src/server/client_session.rs
  • src/server/client_state.rs
  • src/server/comm_control.rs
  • src/server/comm_session.rs
  • src/server/comm_sync.rs
  • src/server/swarm.rs
  • src/tool/communicate.rs
  • src/tui/backend.rs

jcode 中的群体系统使多个自主智能体能够协作完成复杂的工程任务。它从单智能体的"副驾驶"模式转变为分布式"群体"模式,在这种模式下,工作被并行化到多个会话中,通过中央计划和实时通信进行协调。

系统架构

群体架构建立在服务器-客户端模型之上,服务器管理群体的全局状态,包括成员关系、共享上下文和计划版本管理 src/server/client_lifecycle.rs:38-41。智能体可以并行运行,可能跨越不同的 Git 工作树,执行限定范围的任务,而无需传统的文件锁 docs/SWARM_ARCHITECTURE.md:9-16

协调者与智能体角色

群体区分两种主要角色以维持秩序:

  • 协调者:创建初始 VersionedPlan、生成子智能体、分配任务范围并审查提议的计划更新的主要智能体 docs/SWARM_ARCHITECTURE.md:20-29
  • 智能体:执行特定任务的工作会话,在遇到障碍时提议计划优化,并通过私信或频道与同伴协调 docs/SWARM_ARCHITECTURE.md:38-46

关于角色分配和会话初始化的详细信息,请参见群体角色与会话生成

自然语言到代码实体的映射:群体控制

下图将概念性的"群体控制"映射到服务器中的具体 Rust 实体。

概念角色代码实体文件
成员状态SwarmMembersrc/server/client_lifecycle.rs:41
共享上下文SharedContextsrc/server/client_lifecycle.rs:41
全局计划VersionedPlansrc/server/client_lifecycle.rs:41
计划项PlanItemsrc/tool/communicate.rs:4
jcode · 自然语言到代码实体的映射:群体控制 · 图 1
jcode · 自然语言到代码实体的映射:群体控制 · 图 1

来源:src/server/client_lifecycle.rs:38-41, src/server/comm_session.rs:185-202, docs/SWARM_ARCHITECTURE.md:21-46

智能体间通信

通信是代码库之外的带外通信,这意味着智能体通过服务器相互通信,而不是在文件中留下注释 docs/SWARM_ARCHITECTURE.md:13-14。系统支持以下几种主要模式:

  1. 私信:两个会话之间的点对点通信 docs/SWARM_ARCHITECTURE.md:158
  2. 主题频道:通过 handle_comm_subscribe_channel 实现的基于组的通信 src/server/client_lifecycle.rs:9-10
  3. 群体广播:发送给当前群体每个成员的通知 docs/SWARM_ARCHITECTURE.md:159
共享上下文黑板

智能体可以使用 handle_comm_share 将特定的键值对"共享"到群体范围的黑板上 src/server/client_lifecycle.rs:7-9。这使得智能体可以发布发现结果(例如,API 端点发现),其他智能体随后可以通过 handle_comm_read 检索这些结果 src/server/client_lifecycle.rs:7-9

关于路由和"唤醒"功能的详细信息,请参见智能体间通信

自然语言到代码实体的映射:通信流程

此图将通信意图映射到服务器的请求处理器。

jcode · 自然语言到代码实体的映射:通信流程 · 图 2
jcode · 自然语言到代码实体的映射:通信流程 · 图 2

来源:src/server/client_lifecycle.rs:7-11, src/protocol.rs:15

冲突检测与安全性

由于多个智能体并行运行,jcode 会跟踪"文件触碰"以检测潜在冲突。

  • 触碰跟踪:服务器维护一个 files_touched_by_session 映射,用于监控哪些智能体正在修改哪些路径 src/server/client_session.rs:138
  • 清理:当会话被清除或关闭时,服务器会调用 remove_session_file_touches 以保持冲突注册表的准确性 src/server/client_session.rs:8-9
  • 优雅关闭:在服务器重新加载或会话清除期间,服务器使用 InterruptSignal 确保智能体在退出前检查其工作状态 src/server/client_session.rs:20, src/server/client_session.rs:107-120
  • 心跳:对于长时间运行的群体任务,系统使用 touch_swarm_task_progressswarm_task_heartbeat_interval 来检测已停滞或崩溃的工作者 src/server/swarm.rs:87-92, src/server/swarm.rs:112-122

相关页面

  • 群体角色与会话生成 — 详细查看 SwarmMember 生命周期状态(spawnedreadyrunningblocked 等)以及有头会话与无头会话的生成逻辑。
  • 智能体间通信 — 深入探讨 handle_comm_message 路由、频道订阅以及 CommShare/CommRead 共享上下文实现。

来源:src/server/client_lifecycle.rs:38-41, src/server/client_session.rs:8-25, src/server/swarm.rs:87-122, docs/SWARM_ARCHITECTURE.md:48-58