模型: openai/gpt-5.4
生成日期: 2026-04-01
书名: Claude Code VS OpenCode:架构、设计与未来
章节: 第15章 — 智能体编排对比
Token用量: 约 4,850 input + 1,220 output
15.4 背景任务与并行执行
并行执行对 agent 系统的影响,远不只是“跑得更快”。它同时改变两件事:一是任务完成方式,二是开发者的使用体验。一个只能前台串行回答问题的系统,本质上仍然更接近聊天工具;一个能稳定派发后台任务、跟踪状态、回收结果的系统,才开始接近真正的工作执行系统。
OMO 在这方面的设计非常明确。它支持 每个 model/provider 最多 5 个并发后台智能体。这个限制本身就说明 OMO 不是把“并发”当成无脑越多越好,而是把它当成一种需要治理的系统资源。如果没有并发上限,所谓多智能体很容易变成“高成本失控风暴”——请求爆炸、token 爆炸、上下文重复爆炸。
更关键的是,OMO 不只是支持后台执行,还把后台执行做成了可追踪、可继续、可通知的会话对象。子智能体不是“扔出去跑一下”的匿名线程,而是有 session、有 task id、有结果取回路径的工作单元。这种设计很重要,因为真正的并行不是把异步代码接上去就结束了,而是要让人和父智能体都能知道:谁在跑、跑到哪一步、出了什么结果、能不能接着跑。
Claude Code 的 DreamTask 路线,本质上也在做同一件事:把工作从前台聊天线程中解耦出来。用户不必一直坐在一个同步对话框里等模型“想完”。你可以把任务交出去,让它继续在后台工作,再回来取结果。这会明显改变产品感受:从“你现在回答我”,变成“你去做这件事,稍后汇报”。
OpenCode 则明显更同步、更朴素。它可以被扩展成更复杂的并行系统,OMO 就是最好的证明;但 OpenCode 自身并没有把后台编排作为核心体验前景化。它的优势是简洁、少状态、少生命周期复杂性。缺点则是,如果你想获得成熟的后台协作体验,需要在它之上继续搭建。
为什么并行这么重要?因为真实的软件工程任务,本来就很少是纯串行的。你完全可以一边搜索文件,一边查外部文档;一边跑测试,一边让另一个 agent 规划修复路径;甚至让多个候选方案并行探索。人类开发者本来就是这么工作的:多终端、多标签页、多线程切换。严肃的 coding agent 迟早也会走向这一点。
但并行也带来几个典型难题。
第一是重复劳动。两个子智能体可能在搜同一批文件,做同样的判断,最后把相似结论返回给父会话。OMO 的纪律里专门强调这一点:一旦委派了探索,就不要在主线程里重新做同样的搜索。否则所谓并行只是更昂贵的串行重复。
第二是结果整合成本。并行本身不创造价值,只有“并行结果能被低成本整合”时才有价值。如果每个子智能体返回的都是冗长、模糊、缺重点的报告,父智能体还得花很多 token 再做一次清洗,那并行收益就被吃掉了。
第三是上下文偏斜。这里的“偏斜”可以理解为不同工作线程看到的状态不一致。一个子智能体看到的是旧仓库状态,另一个看到的是新状态,最后结果就可能互相打架。所以后台并行尤其适合只读搜索、资料收集、候选方案探索,而不太适合多个角色同时无约束地编辑同一片代码。
第四是用户体验透明度。如果用户不知道现在有哪些任务正在跑、哪些完成了、哪些还阻塞着,那么后台执行会从“高效”变成“神秘而不可信”。所以通知机制、状态可见性、任务标识,是后台系统的必需品,不是锦上添花。
OMO 的优势在于,它把这些问题放进了编排层统一处理:并发限制、session 管理、后台通知、续跑能力、角色边界,彼此是配合设计的。Claude Code 的优势在于,它把这种能力包装成更顺滑的产品体验。OpenCode 的优势则在于,它保留了作为底座的清爽与可扩展性。
还有一个经常被忽略的点:并行执行会改变开发者的心理模型。在同步 agent 里,用户像是坐在模型脑子里陪它一步步思考;在后台型 agent 里,用户更像一个任务管理者,给它派工、追踪、回收结果。这是一个很重要的转变。它意味着 agent 不再只是回答器,而越来越像一个可以管理的执行体。
所以,背景任务和并行执行绝不是一个“高级小功能”。它们是 agent 从聊天助手走向工作系统的关键门槛。OMO 展示了它的架构版答案,Claude Code 展示了它的产品版答案,而 OpenCode 则证明了一个简洁宿主如何为这一切提供基础。