OpenCode中的规划范式

2 阅读2分钟

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,例如 BuildPlan。其中:

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 灵活的关键:计划不是一次性确定的,而是在执行过程中根据代码、命令输出、编译错误、测试结果不断动态调整。