01 · OpenCode 是什麼
理解 OpenCode 的定位:開源、終端優先、多模型可換、配置開放的 AI Coding Agent。
你已經聽過 Claude Code,也可能用過 Codex。現在又來了一個 OpenCode,第一反應很自然:是不是又一個"能在終端裡寫程式碼的 AI"?
這個判斷只對了一半。OpenCode 確實是 AI coding agent(AI 程式設計代理),但它最重要的不是"又能寫程式碼",而是把開源實現、終端 TUI(Terminal UI 文本介面)、多模型供應商、專案級配置和執行時擴充套件放在同一個體系裡。理解了這個定位,你才知道它該放在工作流的哪個位置。
這一篇解決什麼問題:把 OpenCode 從“另一個 AI 程式設計工具”重新理解成“開放配置的 coding agent 執行時”。讀完你應該能說清:它和 Claude Code / Codex 差在哪,適合什麼專案,不適合什麼期待,以及後面 7 篇為什麼按現在這個順序講。
1. 一個真實選擇題
假設你現在維護一個 Next.js 專案,想引入 AI agent 幫你做三件事:
- 平時解釋程式碼、改小 bug、跑測試。
- 給不同任務配不同模型,避免所有事情都用最貴模型。
- 把專案規則、review 流程、專用 agent 和工具配置一起放進儲存庫。
Claude Code 可以很順手,Codex 也可以很強。但如果你特別在意“配置能不能版本化、模型供應商能不能替換、執行時能不能擴充套件、原始碼能不能審計”,OpenCode 就開始變得有意義。
這不是“誰替代誰”的問題,而是“你要哪一種控制面”的問題。
先把問題問對:選 OpenCode 不是因為它一定比 Claude Code 或 Codex 更聰明,而是因為你想要更開放的 provider、config、agent、skill、plugin 和 tool 組合空間。
2. OpenCode 的一句話定位
OpenCode 官方把它定義為 open source AI coding agent。它可以透過終端介面使用,也提供桌面應用和 IDE 擴充套件;官方文件還覆蓋 CLI、Web、SDK、server(HTTP 服務模式)、GitHub/GitLab 整合、ACP(Agent Client Protocol,讓編輯器和 AI agent 用統一協議通訊,配 Zed/JetBrains/Neovim 等編輯器)、MCP(Model Context Protocol,把外部系統/工具變成 agent 可呼叫工具的標準協議)、LSP(Language Server Protocol,編輯器拿程式碼診斷、跳定義、找引用的協議)、permissions、skills 和 plugins。
這一段術語很多,不必現在全懂——下面 7 篇會按入口、上下文、執行、角色、模型、治理 6 層分別展開,每個術語都會在它真正起作用的篇裡講清"為什麼需要它"。
用中文開發者更容易理解的話說:
OpenCode 是一個開源、終端優先、多模型可換、配置開放的 AI 程式設計 agent 執行時。
這句話裡有四個關鍵詞。
| 關鍵詞 | 不是在說什麼 | 真正在說什麼 |
|---|---|---|
| 開源 | 不是“免費所以更好” | 你能看原始碼、審計行為、理解執行邊界 |
| 終端優先 | 不是“只能在終端用” | TUI、shell、檔案系統、測試命令是一等工作流 |
| 多模型可換 | 不是“隨便切模型玩” | provider/model 是配置項,可以按任務和成本分層 |
| 配置開放 | 不是“配置越多越高階” | 專案規則、agent、command、skill、plugin 可以沉澱和版本化 |
3. 先看它長在哪個位置
很多 AI 程式設計工具的差異,不在模型,而在“AI 住在哪裡、能碰到什麼、由誰控制”。
OpenCode 的基本形狀可以這樣看:
flowchart TD
User["開發者"] --> Entry["入口層:TUI / CLI / IDE / Desktop / Web"]
Entry --> Context["上下文層:AGENTS.md / rules / @file / session"]
Context --> Agent["Agent 層:commands / agents / skills"]
Agent --> Tools["執行層:read / edit / bash / LSP / MCP / formatter"]
Agent --> Model["模型層:provider / model / small_model / Zen"]
Tools --> Project["真實專案:檔案 / 測試 / Git / 本地工具"]
Model --> Provider["模型供應商"]
Agent --> Policy["治理層:permissions / network / share / team config"]
style Entry fill:#dbeafe,stroke:#3b82f6
style Agent fill:#fef3c7,stroke:#f59e0b,stroke-width:2px
style Policy fill:#fee2e2,stroke:#ef4444,stroke-width:2px
這個圖裡有一個關鍵點:OpenCode 不只是“聊天框 + 改程式碼”。它把入口、上下文、角色、工具、模型和許可權都暴露成可配置層。
所以 OpenCode 的學習順序不能只按功能選單來。你要先理解它的層次,再決定哪一層該由個人配置,哪一層該寫進專案,哪一層必須收緊許可權。
4. 四個核心特徵
4.1 模型不是繫結死的
OpenCode 可以接不同 provider,也可以在配置裡宣告預設模型和 lightweight task 使用的小模型。官方也提供 OpenCode Zen 這類經過 OpenCode 團隊測試的模型和供應商組合。
這意味著你可以把模型選擇當成工程策略:
- 輕量解釋和文件整理,用低成本模型。
- 跨檔案 bug 和重構,用更強模型。
- 安全、釋出、資料處理,用強模型加人工確認。
- 主 provider 限流時,有備用 provider。
通俗講:多模型能力不是“開模型超市”,而是讓不同風險等級的任務走不同成本結構。
4.2 終端 TUI 是主戰場
OpenCode 的 TUI 不是把網頁聊天搬進終端。它圍繞開發者已經在用的專案目錄、shell、檔案引用、slash command(斜槓命令)、session(會話)、compact(上下文壓縮)和工具詳情來組織互動。
你可以在對話裡 @file 引用檔案讓它讀專案;可以讓它執行命令把測試輸出帶回上下文;也可以把常用動作做成 command(命令),減少每次重新解釋任務邊界。
最值得理解的是 OpenCode 的 Plan mode(計劃模式)vs Build mode(構建模式)雙模式——按 Tab 鍵切換:
| 模式 | 行為 | 何時用 |
|---|---|---|
| Plan mode | 停用檔案修改,只輸出"打算怎麼做" | 任務複雜、範圍不清、第一次接觸陌生模組 |
| Build mode | 允許執行修改和命令 | 計劃已確認、改動範圍明確 |
跨模組改動、上線前重構、不熟悉的程式碼庫——先 Tab 切到 Plan mode 看 OpenCode 的方案,確認後再切回 Build mode 讓它真改。這是 OpenCode 最有標誌性的安全互動。
終端優先的好處是:OpenCode 不需要假裝替代你的開發環境,它直接進入你本來就在用的環境。
4.3 專案規則可以沉澱
OpenCode 的配置不是單一檔案。你會遇到 opencode.json、.opencode/、AGENTS.md、rules、commands、agents、skills、plugins、tools、themes 等入口。
新手最容易犯的錯,是把所有內容都塞進一個長提示詞。更穩的分法是:
| 內容 | 更適合放哪裡 | 原因 |
|---|---|---|
| 預設模型、許可權、MCP、formatter | opencode.json | 執行引數需要機器可讀 |
| 專案長期約定 | rules / AGENTS.md | 每次任務都應該被讀取 |
| 重複任務流程 | commands | 用 slash command 固定入口 |
| 特定角色和許可權 | agents | 把 review、docs、test、plan 分開 |
| 跨專案能力包 | skills | 複用流程和檢查清單 |
| 執行時擴充套件 | plugins | 需要程式碼接入和維護 |
4.4 擴充套件能力進入執行時
OpenCode 不只呼叫模型。它能接 MCP server、LSP、formatter、custom tools、SDK、server、GitHub/GitLab 整合,也能透過 plugin 擴充套件執行時能力。
這讓它可以從“個人終端助手”向“團隊自動化元件”延伸。但代價也很清楚:工具越多,許可權越複雜,排障和安全成本越高。
5. 和 Claude Code / Codex 的差異
先給推薦判斷:
| 工具 | 更像什麼 | 你應該優先考慮它的情況 |
|---|---|---|
| Claude Code | Anthropic 官方深度打磨的 coding agent | 你想要預設體驗統一,少配置,許可權、記憶、subagent、hook、command 體系清晰 |
| Codex | OpenAI 生態裡的多形態 coding agent | 你已經重度使用 OpenAI / ChatGPT / Codex CLI / IDE / cloud task,希望產品聯動更強 |
| OpenCode | 開源、終端優先、provider 可換的 agent 執行時 | 你要開放配置、多模型策略、專案級規則、可審計原始碼和可擴充套件執行時 |
不要用“哪個更強”做唯一判斷。更現實的問題是:
- 你的團隊是否願意維護配置?
- 你是否需要 provider 可替換?
- 你是否需要把規則和 agent 檔案納入版本控制?
- 你是否能接受開放體系帶來的配置成本?
- 你是否有能力治理 permissions、network、share 和工具呼叫邊界?
如果這些問題的答案偏“是”,OpenCode 才能發揮它的優勢。
6. 適合和不適合
OpenCode 適合這些場景:
- 你想把 coding agent 能力放進終端工作流,而不是隻在 IDE 側邊欄裡聊天。
- 你需要按任務切換 provider/model,控制成本和限流風險。
- 你希望把專案規則、commands、agents、skills 放進儲存庫,讓團隊共享。
- 你想接 MCP、LSP、formatter、custom tools 或內部系統。
- 你需要開源實現,方便審計、二次擴充套件或接入自動化。
OpenCode 不適合這些期待:
- 希望“開啟就完美”,不想理解配置、許可權和 provider。
- 希望 AI 自動接管整個專案,不願意先從只讀和單檔案任務開始。
- 不打算維護 rules、commands、agents,卻期待輸出長期穩定。
- 不願意管理 API key、許可權、分享和網路訪問邊界。
- 把開源等同於“沒有治理成本”。
新手坑:OpenCode 的配置面越開放,越不能把它當成“省心一鍵替代品”。開放給了你控制權,也把治理責任交給了你。
7. 最小心智模型
後面 7 篇可以先按這 6 層理解:
| 層 | 包含什麼 | 第一天必動 | 不做會怎樣 |
|---|---|---|---|
| 入口層 | CLI / TUI / IDE 擴充套件 / Desktop / Web / ACP | ✓ | 不知道任務從哪發起 |
| 上下文層 | @file 引用 / AGENTS.md 專案規則檔案 / rules / session(會話)/ compact(壓縮) | ✓ | 模型每次重新認識專案,token 浪費 |
| 執行層 | read / edit / bash 終端 / LSP(語言伺服器,型別提示)/ formatter / MCP | ✓ | 模型只會聊天不會動手 |
| 角色層 | commands(斜槓命令)/ agents(專用代理)/ skills(技能包)/ plugins(執行時外掛) | — | 重複任務每次都從零講 |
| 模型層 | provider(供應商)/ model / small_model 小模型 / OpenCode Zen 精選組合 / API key | — | 所有任務用同一個最貴模型 |
| 治理層 | permissions(許可權)/ network(網路)/ share(分享)/ team config(團隊配置) | — | 團隊場景安全風險無法收斂 |
第一天只跑前 3 層(入口 / 上下文 / 執行)。沉澱經驗後進角色層;準備長期使用再設計模型層和治理層。
8. 怎麼驗證你真的理解了
| # | 問題 | 自檢 |
|---|---|---|
| 1 | OpenCode 為什麼不是 Claude Code / Codex 的簡單替代品? | ☐ |
| 2 | “多模型可換”的價值是什麼,不是什麼? | ☐ |
| 3 | 哪些內容應該放 rules,哪些內容應該放 commands 或 agents? | ☐ |
過關標準:能用一句話說清——OpenCode 的核心價值不是預設體驗最省心,而是把 coding agent 的入口、模型、規則、工具和許可權開放成可配置體系。
接下來去哪
安裝、連線模型與第一次執行
先驗證 OpenCode 能在真實專案裡啟動、連線 provider、讀取上下文並完成低風險任務。
OpenCode 從原理到實戰
回到理解篇路線圖,按 8 篇文章建立完整學習路徑。
入門官方整理
如果你要直接查安裝、CLI、TUI、IDE 和分享入口,看官方教程中文版。
模型與供應商策略
理解 OpenCode 的 provider 可換之後,再看模型策略怎麼落地。
官方資料
- OpenCode 官方入門:https://opencode.ai/docs
- OpenCode 配置:https://opencode.ai/docs/config
- OpenCode 許可權:https://opencode.ai/docs/permissions
- OpenCode GitHub 儲存庫:https://github.com/anomalyco/opencode