AI 程式設計教程中文版
從原理到實戰

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 幫你做三件事:

  1. 平時解釋程式碼、改小 bug、跑測試。
  2. 給不同任務配不同模型,避免所有事情都用最貴模型。
  3. 把專案規則、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、formatteropencode.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 CodeAnthropic 官方深度打磨的 coding agent你想要預設體驗統一,少配置,許可權、記憶、subagent、hook、command 體系清晰
CodexOpenAI 生態裡的多形態 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. 怎麼驗證你真的理解了

#問題自檢
1OpenCode 為什麼不是 Claude Code / Codex 的簡單替代品?
2“多模型可換”的價值是什麼,不是什麼?
3哪些內容應該放 rules,哪些內容應該放 commands 或 agents?

過關標準:能用一句話說清——OpenCode 的核心價值不是預設體驗最省心,而是把 coding agent 的入口、模型、規則、工具和許可權開放成可配置體系。

接下來去哪

官方資料

本頁目錄