Agent/子代理
多代理协调与 KAIROS 自主规划
Agent 系统支持 Claude Code 创建子代理来并行处理复杂任务。AgentTool 是核心组件,支持内置代理、自定义代理和异步代理。KAIROS 系统则提供自主多步规划能力。
核心要点
设计亮点
子代理继承父亲的记忆而非复印
创建子代理时,系统消息直接传递父代理已渲染好的字节(bytes),而不是重新生成。为什么?因为 Anthropic API 有 prompt cache 机制——如果发送的字节序列完全一致,API 可以跳过重复的处理。重新生成即使内容相同,时间戳等细节可能不同,就会导致 cache miss。这个优化让子代理的启动速度大幅提升。
代理不能无限分裂
Claude Code 如何防止子代理创建子子代理,无限递归下去?答案很巧妙:子代理通过检查自己的历史消息中是否包含特定标记来判断'我是不是子代理'。如果是,就拒绝创建下一级。这不需要额外的计数器或配置——利用已有的消息结构就实现了递归保护。
Buddy 宠物用哈希决定命运
Buddy 宠物的物种不是随机生成然后存起来的——它是用用户 ID 的哈希值通过确定性伪随机数生成器(mulberry32)计算出来的。同一个用户永远得到同一种宠物,但分布在统计上是均匀的。不需要数据库,不需要网络,离线也能工作。
模块架构图
tools/AgentTool/AgentTool.ts600 LOCAgent 工具主实现
tools/AgentTool/forkSubagent.ts400 LOC子代理分叉逻辑
tools/AgentTool/agentMemory.ts300 LOC代理内存管理
tools/AgentTool/agentColorManager.ts200 LOC颜色编码显示
utils/coordinator/1,000 LOCKAIROS 协调器
utils/swarm/800 LOCSwarm 多代理框架
commands/agents/500 LOCAgent 管理命令
关键代码
深入解析
子代理是 Claude Code 处理复杂任务的关键机制——将大任务分解为可并行的小任务,每个子代理独立运行。
Explore 类型代理专门用于快速搜索代码库(只有读取工具),Plan 类型用于设计实现方案(同样只读),general 类型拥有完整工具集。
KAIROS (coordinator) 是高级自主规划系统,支持多步规划和自我反思循环——AI 会评估自己的计划质量并迭代改进。
Swarm 框架支持多个代理之间的消息传递和协调,可以让多个子代理同时处理同一个大型重构任务的不同部分。
子代理创建时,系统消息(system prompt)不是重新生成的,而是直接传递父代理已渲染好的字节。这样做是为了命中 Anthropic API 的 prompt cache——相同的字节序列可以被缓存,避免重复计算。
子代理通过检查历史消息中的标记来判断自己是否是子代理。如果发现自己已经是子代理,就不会再创建下一级子代理——防止无限递归导致资源耗尽。
每个子代理有独立的颜色编码(agentColorManager),在终端 UI 中用不同颜色区分,用户可以直观看到哪个代理在做什么。
Worktree 隔离让每个子代理在独立的 git worktree 中工作,修改互不干扰。任务完成后,变更可以合并回主分支。