Agent.Space 博客

Codex、Claude Code 与 OpenCode 的实用多 Agent 编程工作流

用任务拆分、明确所有权、并行执行、交叉审查与合并检查组织多个 Coding Agent,避免它们互相修改同一处。

一套真正有用的多 Agent 编程工作流,并不是先尽可能多开几个 Agent Session,而是先定义一个明确结果,再沿着清楚的所有权边界拆分任务,最后判断哪些工作可以安全并行。

最实用的原则是:互不依赖的调查和编辑可以并行;涉及同一份合同、文件或唯一事实来源的决定与修改应该串行。每一项产出都要能被检查,并在最终接受结果前保留一个人工 Review Gate(审查关口)。

Agent.Space 可以把多个 Agent Session、已保存文件、Queue 与 Preview 放进同一个云端 Workspace。共同环境让协调过程更容易看清,但不会自动分配任务、为每个 Session 创建私有分支,也不会自动合并冲突;整个工作流仍然需要一位明确负责人。

什么时候值得使用多个 Coding Agent?

当一项工作确实包含可以分开的子任务时,多个 Agent 才会带来价值。例如:

  • 分别梳理代码库中两个互不依赖的区域;
  • 一个 Session 实现边界明确的改动,另一个准备测试用例;
  • 先完成实现,再交给独立 Session 做 Review;
  • 分别产出不同材料,最后在一个已经约定的接口处汇合;
  • 在不同时修改同一文件的前提下,并行调查几种可能原因。

如果下一步仍取决于一个尚未决定的问题,多项任务都必须改同一组文件,或者根本没人能审查合并后的结果,那么增加并发只会把一项不确定工作变成多项不确定工作。

目标不是追求最大并行度,而是在不失去范围、证据和当前项目状态控制权的前提下,更快得到可以被接受的结果。

一套五阶段多 Agent 编程工作流

无论参与者是 Codex、Claude Code、OpenCode、其他受支持的 harness,还是人与 Agent 的组合,都可以按下面的顺序推进。

1. 定义结果与验收关口

先把结果写成 Reviewer 能检查的形式。“优化登录”过于宽泛;“拒绝过期重置 Token,保留有效 Token 的现有行为,并通过指定回归测试”才有清楚的终点。

分配任务前,先记录四件事:

  1. 预期结果;
  2. 哪些内容明确不在本次范围内;
  3. 用哪条命令、哪个 Preview、哪份 Diff 或产物证明完成;
  4. 最终由谁决定是否接受结果。

这份共享 Brief 能防止不同 Session 各自发明一套任务定义。

2. 按产出和写入边界拆分工作

每个工作项都应该产出一个可以识别的材料,例如代码改动、测试、调查记录、Review 报告或选型对比。除了主题,还要为它规定写入边界。

例如:

工作项产出写入边界
追踪失败原因复现步骤与受影响路径只读调查
实现修复最小可用 Patch认证模块
增加回归测试一个先失败、修复后通过的测试认证测试文件
审查安全影响带文件定位的发现只读检查合并后的 Diff

“负责后端”不是有效边界。一个明确模块、一组具体文件或只读职责,会更容易协调。

3. 分配所有权并决定执行顺序

每个工作项只能有一位 Owner。其他 Agent 可以提供建议或 Review,但当前编辑边界必须由一位参与者负责。

然后标记依赖关系:

  • **并行:**产出彼此独立,不会修改同一份事实来源。
  • **串行:**前一项结果必须先被接受,下一项才能开始。
  • **并行调查、串行决策:**多个 Session 可以同时研究,但实现前由一个人统一选定方向。

如果两项任务都可能改变同一个接口或共享文件,就默认串行;除非你确实准备了隔离分支和明确的合并方案。

4. 执行任务并留下证据

Agent 的解释不等于项目状态。应要求每位 Owner 把可检查的证据与文件一起留下:

  • 实际修改或检查了哪些文件;
  • 运行了哪些命令和测试,包括失败结果;
  • 如果是视觉产出,留下可用的 Preview;
  • 哪些假设影响了实现;
  • 已知风险与建议的下一步。

在 Agent.Space 中,同一 Workspace 的不同 Session 可以并行运行;忙碌 Session 收到的后续输入会显示在 Queue 中。但这些 Session 面对的是一份当前文件状态。一个 Session 不会悄悄继承另一个 Session 的对话或私有推理,所以关键决定必须写进共享材料,不能只留在隐含上下文里。

5. Review、对齐并验收

只有每项独立产出与证据都准备好后,才把它们汇总。Review Gate 应检查:

  • 每项结果是否符合最初的验收条件;
  • 合并后的改动是否互相矛盾;
  • 并行期间是否有关键假设发生变化;
  • 最终测试是否覆盖整合后的当前状态,而不只是各自的局部结果;
  • Diff 中是否混入无关改动或不必要的复杂度。

完成对齐后,再运行一次相关验证。另一个 Session 修改项目之前通过的测试,不能证明现在的状态仍然通过。

示例:Codex 实现、Claude Code Review、OpenCode 修复

假设团队需要修复一个结算金额错误,并增加回归测试。

  1. 一位成员先写清失败场景、预期金额、不做哪些重构,以及必须通过的测试命令。
  2. 一个 Codex Session 负责边界明确的实现与测试文件。
  3. Patch 和测试证据保存后,再启动独立 Claude Code Session,根据原始需求和当前 Diff 做以读取为主的 Review。
  4. 如果 Review 找到一处具体问题,就把该发现、当前文件和窄范围修复边界交给 OpenCode Session。
  5. 最后由人检查完整 Diff,并运行全部验收项,再决定是否合并或发布。

这套流程使用了三个 Agent harness,但在状态相互依赖的地方仍然是串行的。第二和第三个 Session 可以检查已保存项目文件和明确交接材料,却不会继承实现者的隐藏推理。换一个 harness 的价值在于让 Reviewer 拿到证据和一个全新职责,而不是预设某个 harness 永远更好。

如果还没决定由哪个 harness 负责实现或 Review,可以用 Codex 与 Claude Code 工作流对比做判断框架,而不是把它理解成永久排名。

判断哪些工作应该并行

只有后续对齐成本较低时,才适合并行执行。

场景更稳妥的默认方式原因
两项只读调查并行可以分别产出证据,不会产生文件冲突。
UI 文案与无关的后端测试并行写入边界不重叠。
Schema 设计与依赖该 Schema 的代码串行实现前必须先接受接口合同。
同一个共享模块里的两项修复串行双方都可能让对方的假设或 Diff 失效。
实现完成后再做独立 Review串行Review 应检查一个稳定候选版本。
并行研究多个架构方案后作出决定先并行、后串行探索可以分开,实现方向必须统一。

当协调说明比它能避免的冲突更短时,并行才真正划算。

把文件所有权与版本控制当作两层控制

Workspace 为团队提供一个看得见的共同工作位置;版本控制负责历史、对比、回退与合并边界。两者解决的问题不同。

在一份共享文件树中:

  • 给每位正在写入的参与者划分不重叠范围;
  • 不要假设每个 Session 都有私有副本;
  • 共享合同变化时先暂停相关工作;
  • 接受下一项写入任务前,先检查当前 Diff;
  • 两种方案必须独立修改同一批文件时,使用仓库分支或相互隔离的副本。

Agent.Space 不会把多 Session 协作包装成自动 Commit、Merge 或 Rebase。如果项目需要这些保证,仍要主动使用自己的版本控制流程。

Agent 工作完成后若要由另一位成员继续,可以采用一套围绕共享文件、证据和角色的团队交接流程。高风险仓库在扩大并发前,还应先建立清楚的 Workspace 隔离、权限与密钥边界

预算的不只是 Agent 额度,还有 Review 注意力

每增加一个 Agent,就会增加一批需要有人理解的材料。Review 成本也属于工作流成本。

开始前先定义停止条件:

  • 调查能够指出相关路径并支持决策时就停止;
  • 验收条件通过时停止实现,不要顺手“优化”所有相邻文件;
  • 两个 Session 开始碰同一份合同时,停止并行;
  • 需求、数据边界、安全假设或架构方向发生变化时,停止并请求人类决定。

边界清楚的多 Agent 工作流,可能比一个无限扩张的单 Agent 任务消耗更少,因为每位参与者只做一件明确的事。糟糕的工作流则会复制大量猜测性改动,再花更多时间对齐。

从最小可复现工作流开始

第一次运行时,先选一个边界明确的真实任务,并且最多安排两项活跃职责:

  1. 写清结果、排除项与验收检查;
  2. 分配一项实现边界;
  3. 候选结果稳定后,再分配一次独立 Review;
  4. 保存 Diff、测试输出、Preview、决定与未解决风险;
  5. 由一位成员接受或拒绝整套结果。

这套串行流程稳定后,再增加并行实现。成功的标准不是同时开了多少 Agent,而是另一位成员能否检查当前状态、理解它为什么可以接受,并且不用重建项目就能继续。

如果你希望把受支持的 Agent Session、已保存文件、Preview 和团队上下文放在同一个 Workspace,可以使用 Agent.Space。从一个真实任务开始,明确每项所有权,只在边界仍然清楚时增加并行度。