跳转至

OpenCode 源码分析

状态:官方 MIT 开源;研究快照:2026-09-26。

它是什么

OpenCode 是开源 coding agent,同时提供终端 TUI、桌面应用和 IDE 集成。官方仓库已从早期 sst/opencode 迁移为 anomalyco/opencode,官方文档入口为 opencode.ai/docs。

源码观察点

仓库规模较大,本页不虚构不存在的固定目录;以当前仓库的实际目录和文档链接为准,重点观察:

入口/能力 研究问题
packages/ provider、agent、tool、server、TUI 的边界是否清楚
sdks/vscode IDE 是否复用同一 server/session,而不是复制 Agent loop
.opencode/ 与项目 AGENTS.md 项目规则如何加载、覆盖和版本化
agents 配置 build、plan、general 如何分权限和模型
permissions / policies bash、edit、网络和 MCP 何时允许、询问或拒绝
MCP / plugins / custom tools 扩展是否通过公共 contract 接入
server / web TUI、桌面、IDE 和远程调用的会话边界

从用户可见的官方行为可以确认:内置 build 是完整权限开发 Agent;plan 默认只读,编辑被拒绝,运行 bash 需询问;general 用于复杂搜索和多步任务。

运行时模型

Project + AGENTS.md + config
  -> provider/model resolver
  -> agent (build / plan / custom)
  -> permission / policy
  -> read / edit / write / bash / MCP
  -> session + server / TUI / IDE

OpenCode 的关键不是“支持多少模型”,而是把 provider、agent、permission、MCP 和规则都作为配置层暴露。它适合作为多供应商 coding 工作台,但生产集成仍应 pin 具体模型 ID 和 OpenCode 版本。

Build 与 Plan 的分工

Agent 默认能力 适用条件 代价 验证方式
build 读、写、编辑、bash,面向实现 已明确范围,需要改代码并运行检查 副作用面大 给临时 repo,检查 diff、命令、测试和退出码
plan 读为主,写入受限,bash 需批准 陌生代码库、架构分析、变更计划 不能直接完成修改 检查是否没有写操作,计划是否可执行
general/subagent 复杂搜索、多步子任务 把调查或局部探索交给专门 worker 上下文、成本和并发管理更复杂 固定任务、记录调用轨迹和合并结果

项目指令与 Harness

官方文档建议运行 /init 生成项目 AGENTS.md,并将其提交到 Git。对 FDE 来说,AGENTS.md 是 harness 的一部分:

  • 定义测试、构建和禁止操作。
  • 让同一套规则跨模型和跨会话复用。
  • 作为评测条件的一部分,而不是临时提示词。
  • 需要审查提示注入、敏感数据和过时规则。

不要把 secrets、生产写命令或只在某台机器成立的路径写进共享规则。

多模型 provider 的边界

OpenCode 能配置不同供应商,但模型能力不等价:tool call、reasoning、上下文、输出限制和错误码可能不同。统一 provider 接口只解决调用形状,不解决质量和安全语义。

在本 Wiki 中建议用:

OpenCode agent config
  -> stable model alias
  -> provider adapter
  -> workload-specific eval gate
  -> permission policy

FDE 结论

OpenCode 最适合作为 多模型、强交互、团队项目级 coding 工作台。它比极简 Agent 更适合日常协作,比长任务 orchestrator 更容易控制。企业落地时优先研究 permission/policy、server/session、MCP 和 AGENTS.md;不要只研究 TUI 或模型选择器。

追踪字段

project: opencode
snapshot: 2026-09-26
source: https://github.com/anomalyco/opencode
docs: https://opencode.ai/docs/
license: MIT
watch: [agent-schema, permission-schema, provider-api, server-session, mcp-acp]