多智能体协作
群体多智能体协调
相关源文件
本章引用的主要源码文件:
docs/SWARM_ARCHITECTURE.mdsrc/protocol_tests.rssrc/server/client_actions.rssrc/server/client_comm.rssrc/server/client_lifecycle.rssrc/server/client_session.rssrc/server/client_state.rssrc/server/comm_control.rssrc/server/comm_session.rssrc/server/comm_sync.rssrc/server/swarm.rssrc/tool/communicate.rssrc/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 实体。
| 概念角色 | 代码实体 | 文件 |
|---|---|---|
| 成员状态 | SwarmMember | src/server/client_lifecycle.rs:41 |
| 共享上下文 | SharedContext | src/server/client_lifecycle.rs:41 |
| 全局计划 | VersionedPlan | src/server/client_lifecycle.rs:41 |
| 计划项 | PlanItem | src/tool/communicate.rs:4 |
来源: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。系统支持以下几种主要模式:
- 私信:两个会话之间的点对点通信
docs/SWARM_ARCHITECTURE.md:158。 - 主题频道:通过
handle_comm_subscribe_channel实现的基于组的通信src/server/client_lifecycle.rs:9-10。 - 群体广播:发送给当前群体每个成员的通知
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。
关于路由和"唤醒"功能的详细信息,请参见智能体间通信。
自然语言到代码实体的映射:通信流程
此图将通信意图映射到服务器的请求处理器。
来源: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_progress和swarm_task_heartbeat_interval来检测已停滞或崩溃的工作者src/server/swarm.rs:87-92,src/server/swarm.rs:112-122。
相关页面
- 群体角色与会话生成 — 详细查看
SwarmMember生命周期状态(spawned、ready、running、blocked等)以及有头会话与无头会话的生成逻辑。 - 智能体间通信 — 深入探讨
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