OpenCode 的规划范式是什么?属于哪一类
💬 问题
opencode的规划范式是啥?属于哪一种?
🤖 回答
OpenCode 不能简单归类成纯 ReAct 或纯 Plan-and-Execute。更准确地说,它采用的是:
以 Agent Loop(ReAct 风格)为主,结合 Plan/Build 双 Agent 的“规划 + 执行”模式。
核心是 Agent Loop,而不是一个严格的独立 Planner → Executor 架构。
可以理解成:
用户任务
↓
Agent
↓
LLM 推理
↓
决定下一步
↓
Tool Call
↓
观察结果
↓
LLM 再推理
↓
Tool Call
↓
...
↓
完成
这就是典型的:
Reason → Act → Observe → Reason → Act → ...
也就是 ReAct 风格。
但 OpenCode 又加入了 Plan Agent
OpenCode 有 Primary Agent,例如 Build 和 Plan。其中:
Plan Agent
↓
分析代码
↓
理解需求
↓
制定实施计划
↓
交给用户
然后切换到:
Build Agent
↓
读取代码
↓
修改代码
↓
运行测试
↓
根据结果继续修改
所以从用户使用层面看,它可以形成:
User
↓
Plan Agent
↓
Implementation Plan
↓
Build Agent
↓
ReAct Agent Loop
↓
Tool → Observe → Tool
↓
Result
OpenCode 官方文档将 Plan 描述为用于分析和规划、默认禁止编辑的 Agent,而 Build 是用于实际开发工作的 Agent。[citation:turn1search0]
因此如果按照你前面总结的几种规划范式来分类:
| 规划范式 | OpenCode |
|---|---|
| 顺序链 | 有 |
| 条件路由 | 有 |
| ReAct | 核心 |
| Plan-and-Execute | 支持,但不是唯一核心架构 |
| 多 Agent 协作 | 有 Subagent |
| Debate | 不是核心机制 |
| Ensemble | 不是核心机制 |
为什么我认为不能简单称为 Plan-and-Execute?
严格的 Plan-and-Execute 通常是:
Planner
↓
生成完整 Plan
↓
Executor
↓
执行 T1
↓
执行 T2
↓
执行 T3
↓
完成
而 OpenCode 的 Build Agent 更像:
LLM
↓
当前决策
↓
Tool
↓
Tool Result
↓
重新判断下一步
↓
Tool
↓
Tool Result
↓
重新判断
也就是说,它不会要求一开始就把整个执行计划完整确定下来。
例如:
用户:
把这个项目的登录功能改成 OAuth2
OpenCode 可能:
① grep 查找登录代码
② 发现使用 Spring Security
③ read 配置
④ 决定修改 SecurityConfig
⑤ edit
⑥ 测试
⑦ 测试失败
⑧ 分析错误
⑨ 修改
⑩ 再测试
这里后面的步骤是根据前一步结果动态产生的。
这就是 ReAct / Agentic Loop。
所以 OpenCode 的规划层次可以这样理解
OpenCode
│
┌─────────┴─────────┐
│ │
Plan Agent Build Agent
│ │
高层规划 动态执行
│ │
└────────┬──────────┘
↓
Agent Loop
↓
Reason → Act → Observe
↓
Tool
↓
Tool Result
↓
LLM
因此一句话总结:
OpenCode 的底层执行范式是 ReAct/Agent Loop,上层提供 Plan Agent 实现显式规划,因此整体属于“规划 + ReAct 执行”的混合范式,而不是严格意义上的纯 Plan-and-Execute。
这其实也是 Coding Agent 比传统 Workflow Agent 灵活的关键:计划不是一次性确定的,而是在执行过程中根据代码、命令输出、编译错误、测试结果不断动态调整。