现在的 AI 编程工具越来越重视 Subagent。原因不是功能跟风,而是单个 Agent 处理真实工程任务时,很快会撞到边界。
一个 Agent 如果同时负责读代码、查日志、改实现、跑测试、分析报错、总结结果,主上下文会很快变脏。搜索结果、命令输出、测试日志和中间推理混在一起,后续判断就会被噪声干扰。任务也很难并行:探索、实现、验证和审查都塞在一条主线上,系统越做越重。
Subagent 的本质,是给 Agent 减压。主会话不再把所有事情从头做到尾,而是更像协调者:判断目标、安排任务、接收结果,再把结果合成最终答案。子 Agent 处理某一段局部工作,例如探索、实现、验证或审查,并只把压缩后的结论带回来。
所以 Subagent 不是“再开一个同款自己”,而是把原来糊成一团的工程工作拆成几个边界更清楚的角色。
成熟 Subagent 系统的底层共识
无论具体产品怎么设计,成熟的 Subagent 系统通常都绕不开四件事:
- 上下文隔离。
- 角色专用化。
- 项目和用户级配置。
- 工具与权限边界。
上下文隔离是前提。真实仓库里的中间结果很多:搜索结果可能几十条,测试日志可能几百行,命令输出里还混着大量无关信息。这些内容如果直接塞进主会话,主线很快会变乱。Subagent 的价值之一,就是让局部过程先在局部被消化,主会话只看到真正有决策价值的结论。
角色专用化也很关键。多 Agent 不是多开几个一样的模型一起干活。探索型任务要擅长搜索、阅读、总结;实现型任务要专注改代码和处理局部细节;验证型任务要跑检查、识别风险,并把结果清楚汇报。它们的任务边界、工具权限和输出形式都应该不同。
工具和权限边界决定了系统能不能安全落地。子 Agent 不应该默认拥有主会话的全部能力。探索型角色未必需要写文件,验证型角色未必需要改实现,后台任务也不该随意越过工作区边界。权限越清楚,协作越可控。
在这些共识之上,Codex 和 Claude Code 走出了两种不同路线。
Codex:显式派工,主会话始终在场
Codex 的 Subagent 设计气质更克制。
它更像是在说:我给你一套受控、轻量、围绕当前主会话展开的分工机制。什么时候派活、派给谁、什么时候收结果,都由主会话明确决定。控制流始终握在当前任务里。
这种设计的特点是“显式”:
- 需要子任务时,主会话明确发起委托。
- 子任务角色数量保持克制。
- 主会话知道哪个 Agent 在做什么。
- 结果回到主线后再统一判断。
- 协作边界比较透明。
公开可见的角色思路也偏简洁:通用角色、探索角色、工作角色这类基础分工已经能覆盖很多工程场景。自定义 Agent 更像配置层上的补充,而不是一套非常重的运行时对象系统。
Codex 这套方式的好处是可预期。它适合需要手动编排、强调确定性、希望主会话始终掌控节奏的团队。比如你正在做一个代码修改任务,可以先派一个探索角色查清调用链,再派一个工作角色做改动,最后由主会话整合并决定是否继续测试。
它的缺点也很清楚:如果任务越来越复杂,所有编排压力仍然落在主会话身上。主会话要判断何时拆分、如何拆分、派给谁、怎么合并结果。对轻量协作来说这很舒服,对长期复杂工程流来说,可能不如平台化系统省心。
Claude Code:把 Agent 做成正式工位
Claude Code 的取向更平台化。
它不是只提供几个临时帮手,而是把 Agent 做成可描述、可选择、可配置、可记忆、可隔离、可后台运行的正式对象。子 Agent 不只是会话里的一个工具,而更像工程系统里的一个工位。
这套思路会把 Agent 列表、适用场景、描述信息、工具边界等内容放进选择逻辑里,让模型判断本轮应该调用哪个角色。这类“模型驱动的委托”会带来更强的自动化:用户不一定每次都显式指定角色,系统可以根据任务类型自己选择。
从机制上看,Claude Code 更强调几类能力。
第一是角色体系。探索、规划、通用处理、验证等角色不是随手加几个名字,而是可以带着用途说明、工具限制、默认模型和运行条件存在。探索型角色可以被限制为只读,规划型角色负责设计方案,验证型角色可以专注检查和汇报。
第二是继承和覆盖。子 Agent 并不是完全自由的,它默认继承主会话的大边界;但在规则允许范围内,也可以通过局部配置调整权限、模式或行为。正确理解不是“全部继承”或“全部覆盖”,而是主会话定义大边界,Agent 在边界内做局部装配。
第三是记忆。记忆不只是“记住一点内容”,而是可以有作用域。用户级记忆更像长期偏好,项目级记忆更像仓库背景知识,本地级记忆更像只留在当前环境里的私人状态。这样某些 Agent 不必每次从零理解项目。
第四是后台和工作区隔离。某些验证任务可以在后台持续跑,主线不用停在原地等待。需要强隔离时,Agent 可以进入独立 worktree,像在主工位旁边分出一张独立桌子:仍然在同一个项目里,但操作空间被明确隔开。
第五是插件生态。只有当 Agent 被视为正式对象时,才会认真考虑它如何被分发、安装、覆盖、排序和接入生态。插件 Agent 可以进入系统,但高风险字段仍应被收口,例如权限模式、hooks、MCP server 等不应该由插件随意声明。
这让 Claude Code 更像一套 Agent 运行时,而不是单次会话里的协作工具。
两种路线的差异
可以把两者理解成两种产品哲学。
Codex 更像受控分工工具:
- 主会话显式派工。
- 角色集保持轻量。
- 控制流清晰。
- 子任务围绕当前会话展开。
- 适合强调确定性和人工编排的工作方式。
Claude Code 更像工程工位系统:
- Agent 被正式建模。
- 角色更体系化。
- 支持记忆、后台、隔离和插件生态。
- 模型可以参与选择角色。
- 适合长期项目、复杂工作流和平台化扩展。
这不是谁功能更多谁就更好。真正的差别在于:你希望 Subagent 是“我显式叫来的助手”,还是“系统里长期存在的工位”。
怎么选择
如果你更看重显式控制、轻量分工、当前会话内的安全并行,Codex 的思路更顺手。它让你清楚知道任务什么时候被拆出去,谁在处理,结果什么时候回来。对代码审查、小型改动、明确的实现任务和需要人工节奏控制的场景,这种方式很稳。
如果你更看重体系化角色、长期记忆、后台执行、worktree 隔离、插件扩展和更完整的 Agent 运行时,Claude Code 的路线更合适。它适合把 Agent 当成长期参与项目的成员,而不是临时搬一把的助手。
可以用两个问题判断:
- 你能不能接受模型自己选择该派谁干活?
- 你是否需要一套更完整的 Agent 运行时?
如果第一个问题让你不舒服,说明你更适合显式派工。
如果第二个问题答案是肯定的,说明你可能需要平台化的 Agent 工位系统。
使用建议
无论选哪种,都不要把 Subagent 当作“多开几个模型就更强”。
更有效的做法是:
- 给每个角色明确任务边界。
- 控制每个角色能用的工具。
- 让子 Agent 输出结论,而不是搬回全部原始日志。
- 主会话保留最终决策权。
- 对后台任务和工作区隔离保持可见性。
- 对插件 Agent 设置明确安全边界。
工程任务里,Subagent 的价值不在数量,而在分工质量。角色越清楚,上下文越干净,主线判断越稳定。
小结
Codex 和 Claude Code 都在解决同一个问题:单个 Agent 很难独自承载真实工程任务。它们都承认上下文隔离、角色专用、权限边界和局部汇总的重要性。
差异在于实现取向。Codex 更克制,强调显式派工和主会话控制;Claude Code 更体系化,把 Agent 做成可配置、可记忆、可隔离、可后台运行、可进入插件生态的正式工位。
选择哪一个,不是看哪个品牌赢,而是看你的工作方式需要什么:是受控协作工具,还是完整 Agent 运行时。