DeepDojo.AI发布 2026-11-12English
多个子代理同时改代码时的分工方法
你让两个子代理同时动手:一个改调用方,一个改接口定义。两边都很快报告完成,各自的测试也都通过了。可把改动合到一起,调用方传了三个参数,接口只收两个,整个模块编译不过。
并行看起来能省时间,前提是任务真的互相独立。几个子代理默认在同一个项目目录里工作,同时写一个文件会互相覆盖;就算文件分开了,测试也可能抢同一个端口、同一个数据库;就算开了 worktree 把文件副本隔开,接口约定没先定下来,各自通过的代码照样拼不到一起。
安全的并行有三种分法,按优先顺序是:
- 多个代理只做只读研究,结论汇总后由主会话统一修改;
- 写入任务按目录或文件划分,每个文件只有一个负责的代理;
- 确实要在同一区域各自修改时,用 Git worktree 隔离文件副本。
不管选哪种,共享的决定都要先串行确定,集成后再跑一遍跨模块验证。下面逐个说明,再讲前台和后台怎么选。
01 先判断能不能并行
彼此独立的研究适合并行,例如分别检查认证、数据库和测试。存在前后依赖的任务仍要串行。
适合并行:
认证调用链研究 ─┐
数据模型影响分析 ├─> 主会话汇总
测试失败归类 ─┘
不适合直接并行:
先确定接口设计 -> 再实现服务 -> 最后补测试子代理默认共享项目工作目录。并行写同一文件可能覆盖彼此的改动,测试也可能争用端口和数据库。即使只读研究,也要确认资源和前提相互独立。Claude Code 的子代理文档写明,子代理从主会话当前的工作目录开始工作;要给它一份隔离的仓库副本,需要另外设置 worktree。
一个任务值不值得交给子代理,要先过“自包含、高输出、能独立完成”这三问,见Claude Code 什么时候该用子代理。
02 三种分法,按顺序选
安全的并行方式优先级如下:
- 多个代理只做只读研究,结论汇总后由主会话统一修改。
- 写入任务按目录或文件划分修改区域,每个文件有且仅有一个所有者。
- 需要独立修改同一区域时,为代理启用 Git worktree 隔离:
isolation: worktree第一种最稳:研究可以并行,写入只发生在主会话一处,不会有覆盖问题。研究结论怎样核对后再采用,见怎样给子代理交代任务、核对结论。
第二种要把“谁负责哪个文件”说清楚,写进每个子代理的委派消息里。
03 worktree 隔开的只有文件
开了 worktree,文件副本分开了,很容易以为任务也完全隔开。数据库、端口、外部账号却可能仍是同一个,默认基线也未必等于主会话当前 HEAD。
子代理文档对 isolation: worktree 的说明是:子代理在一个临时的 git worktree 里运行,得到一份隔离的仓库副本,默认从你的默认分支切出,而不是从主会话的 HEAD 切出。如果你在一个功能分支上做了一半,子代理拿到的可能是主分支上的旧代码。先确认它们,再开工。
收到实现结果后,还得审查和整合,隔离文件没有替你证明两份代码兼容。
04 共享接口先串行定下来
不同文件也可能共享接口,例如调用者和接口定义采用不同参数。先串行确定接口,再分开实现,结束后检查整合结果。
开头那个编译失败的例子,就是把“定接口”也并行了。正确的顺序是:主会话先确定接口签名,再让两个子代理分别实现调用方和接口内部。
放到一个完整的修复任务里也一样:认证调用链、数据模型和测试失败可以分别调查;撤销协议和共享数据结构应汇总后统一确定。输入和写入独立,再按所有权与 worktree 方法分工。集成后重跑跨模块验证,不能用各子任务分别通过代替整体验收。
05 前台还是后台
主流程要等这个结论,就用前台;想同时继续其他独立工作,就用后台,适合搜索、测试或核对资料。
Claude Code 最佳实践说明,Claude 启动的子代理默认在后台运行,主会话可以继续往前走。子代理文档补充了控制方法:交互会话里 fork 模式默认开启,子代理在后台跑;想让 Claude 等某个子代理的结果,可以关闭 fork 模式;关闭后 Claude 等待期间,按 Ctrl+B 可以把它转到后台。
几点要记住:
- 下一步依赖它的结论,主会话仍要等结果。后台意味着同时运行,是否完成还要另查。
- 后台子代理能用的内置工具比前台少,官方文档列出了后台保留的工具范围。
- 后台任务仍受权限控制。批准某次工具调用只允许该操作,不代表接受子代理的整个方案。
不建议在普通项目代理中使用 bypassPermissions。如果确实需要无人值守执行,应先用容器或虚拟机限制文件系统和网络,再采用明确的允许规则或 dontAsk 模式,让未批准操作直接失败。
并行能快,是因为任务本来就互不依赖。先把共享的决定串行定好,再按文件分工;子任务各自通过只是起点,整体验收要在集成后重跑一遍。