ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Claude code 设计哲学——multi-agent

Claude code 设计哲学——multi-agent //文章为题主学习Claude code 设计架构时所写接着上一篇文章这次开始学习Claude code 的多智能体协同架构。实际上我自己也尝试过写多智能体系统最开始的想法特别天真不就是起几个角色产品经理、程序员、测试员然后让它们建个群互发消息吗直到我自己学习了 Claude code才意识到我以前写的群聊式 Agent 是多么的玩具。我们先思考这几个问题问题1多个 Agent 如果都在一个大群里聊天互发消息上下文瞬间被刷屏爆炸、Token费用失控怎么办问题2面对一个复杂大工程总指挥Leader怎么把活拆得条理分明万一执行到一半发现意外 Bug怎么动态给计划“加塞”而不是全盘推倒问题3任务之间环环相扣如果 Agent A 等 Agent BAgent B 又依赖 Agent A死锁了怎么办卡片调度怎么知道谁能开工问题4多个 Worker 同时抢活或者 Leader 手滑重复派单了怎么保证绝对不会有两个 Agent 抢同一个任务把代码改废幂等性等等各种问题我在自己写小玩具时压根想不到这么多并发与系统工程层面的细节。这篇文章就结合我的源码学习心得带大家彻底搞懂 Claude code 是怎么设计这套工业级多智能体系统的。一.信箱解耦 协议双轨像问题1所说很多开源多智能体框架喜欢搞“群聊模式”所有 Agent 共享聊天记录。结果前端小弟改代码报了 20 行报错总指挥的上下文全被垃圾报错灌满了没聊两句上下文就撑爆了。Claude code 的解决方案是给每个 Agent 分配独立的轻量文件信箱 协议双轨分流每个 Agent 只看自己的信箱发消息也是点对点投递到对方信箱里平时各自独立运行根本不会互相污染上下文。信箱里的信件并不是全都要喂给大模型 如果是业务汇报或派工单系统会洗干净打包成结构化的 XML 挂件在下一轮大模型推理时注入 如果是底层系统控制比如子 Agent 申请读写权限、或者申请关机内存调度器直接在底层拦截截胡大模型完全看不见系统直接分发给内部的权限弹窗或直接触发进程销毁。这保证了上下文的极致纯净。二.动态看板 增量拓扑回看问题2很多玩具 Agent 的任务规划是“死板瀑布流”开局定 5 个任务然后从 1 做到 5。但写代码总有意外改到一半发现底层库坏了死板的任务清单直接就卡死了。Claude code 的任务拆解是动态 DAG有向无环图看板勘察先行总指挥在拆卡前必须先调用搜索工具扫一遍代码库摸清涉及的文件和架构绝不凭空臆想。动态加塞创建卡片的工具是常驻在工具箱里的执行到中途遇到未预料的依赖问题Agent 原地新建一张卡片比如卡片 6并把当前卡片标记为等待卡片 6。原计划不用推倒新卡片自然插队到测试卡片之前。强制验收暗桩很多 Agent 写完业务代码就偷懒宣布完工Claude code 底层有一个防偷懒门禁——如果拆了 3 张以上业务卡关单时如果一张测试/验证卡都没有底层工具直接弹警告打回逼大模型必须补卡跑测试三.局部验环 惰性调度关于问题3任务之间有依赖关系怎么防止死锁怎么知道下一个任务该做哪个很多人以为系统要预先算好一个复杂的全量时间表但 Claude code 采用了 调度中心平时根本不排固定时间表只有当打工人空闲来要活时系统在毫秒级内跑一次极简过滤只要该任务是未完成且它依赖的前置卡片全部打勾了它就自动亮绿灯进入就绪池。那如果动态插入了一条新依赖呢会不会全局重新计算 完全不用系统只做两件微秒级的局部操作局部 DFS 验环只针对新连的依赖线做一次轻量深度优先搜索如果发现连线会绕回自己形成 A - B - A 环路死锁底层工具当场抛错打回逼大模型自己纠偏红绿灯就地翻转只要新依赖一加上原本亮绿灯的卡片瞬间由于条件不满足变成红灯继续等待。其他无关的任务完全不受任何影响。四.状态差量 排他抢单回看问题4多 Agent 并发最怕“撞车”和“重复执行”Claude code 在推模式和拉模式下分别实现了严密的幂等性保障推模式Leader 指派 基于任务唯一 ID 的状态覆盖。更巧妙的是只有当卡片的负责人owner真正发生变化时才会往信箱发派单信。如果 Leader 重试重复调用该工具系统发现负责人本来就是他直接静默空转从根源杜绝重复发信拉模式Worker 抢活 采用了操作系统级的跨进程文件排他锁 锁内双重检查 Worker 伸手抢单的瞬间给卡片加独占锁把并发压平为单行道排队 拿到锁后在临界区内二次核验如果已被别人抢走或已完工直接礼貌驳回如果发现是自己之前抢过发生重试系统幂等放行但不重置任务状态两个 Worker 绝不可能抢到同一个活。事实上上面所讲的依然只是 Claude code 多智能体体系的冰山一角。比如它的“分身克隆Forking”机制派发子任务时完全不需要冷启动全新环境而是直接继承主会话前缀在 API 层白嫖 Prompt Cache既省钱又能秒级拉起专家分身。这些设计都非常值得我们在写 Agent 时深入借鉴。//文章仅供参考全部为题主学习源码时自己总结的。
返回列表