OpenCode 實戰筆記:知識地圖與導航 (MOC)

「從敲下第一行終端指令,到建構企業級自主代理工作流。」
本書是 OpenCode 實戰落地的實務聖經。全方位收錄代理協同、LSP 語意感知、MCP 工具擴展、代碼重構與團隊防護規範,助你從一般使用者跨越為駕馭 AI 代理的工程專家。


🗺️ 全書六大核心模組導航

第一篇:核心架構與概念演進(第 1–5 章)

第二篇:環境設定與專案啟航(第 6–8 章)

第三篇:深度擴充與協議整合(第 9–13 章)

第四篇:工程開發與重構除錯(第 14–17 章)

第五篇:團隊協作與防護優化(第 18–22 章)

附錄:工程速查指南(附錄 A–D)


🧭 OpenCode 核心作業流全景決策圖

🧭 決策流程樹:OpenCode 實戰筆記:知識地圖與導航 (MOC)

新專案啟動

既有專案維護

功能開發與重構

疑難雜症修復

需要特規能力

標準檔案代碼操作

存在回退或瑕疵

驗證無誤

🎯 任務進場:收到工程需求

任務屬於哪種工程情境?

專案初始化與規範配置
(第 6-7 章)

程式碼巡航與語意探索
(第 9, 14 章)

規範驅動重構與測試閉環
(第 15-16 章)

根因定位與問題排查
(第 17, 22 章)

是否需要外部 API 或特規資料庫?

掛載 MCP 伺服器與自訂工具
(第 4, 10 章)

指派子代理與技能模組並行執行
(第 3, 5 章)

執行驗證與安全守門
(第 21 章)

代碼品質與測試是否全數通過?

會話歷史復原或重構修正
(第 11, 16 章)

Git 提交與 GitHub PR 協同發布
(第 18-19 章)

🏆 交付達成:高品質代碼合併


下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 01 章:AI 程式輔助的演進 — 從自動補全到自主代理

你是否曾有過這樣的日常體驗:把終端機噴出的落落長錯誤日誌截圖或複製,貼到瀏覽器的對話框裡問 AI「這段報錯怎麼解」;幾秒鐘後,AI 吐出了一大段修復建議與重構代碼,你再小心翼翼地把代碼複製回編輯器、對齊縮排、手動存檔、重啟測試……結果終端機又跳出另一個新錯誤。

如果你正在經歷這個循環,那麼你並不是在享受 AI 帶來的生產力革命,而是在充當 AI 與真實工程世界之間的「人肉搬運工與打字員」。

AI 輔助寫程式這條路,在短短數年間經歷了翻天覆地的三次質變:
1. 第一階段:自動補全(2021 年前後) — 以早期 GitHub Copilot 為代表。它的本質是「輸入法級的下一行預測」。你寫出函式簽名,它在游標後浮現半透明的幽靈文字。此時的主導權完全在你手上,AI 只是幫你少敲幾次鍵盤。
2. 第二階段:對話式輔助(2022 至 2024 年) — 以 ChatGPT、Claude 網頁端與各類編輯器側邊欄為代表。上下文從游標周遭擴大到了「你貼上的整段文字」。但它與實際專案是斷裂的,它看不見你的完整目錄,跑不了你的編譯指令,建議能不能用全憑你的運氣與搬運功力。
3. 第三階段:自主代理(2025 年至今) — 代理(Agent)徹底重塑了人機協同的邊界。它不再只出張嘴,而是長出了「眼睛」與「雙手」:主動巡航專案目錄、定位相依套件、規劃變更步驟、直接編輯多個檔案、執行單元測試,並在測試失敗時根據錯誤日誌自我修正,直到交付可驗收的成果。

在這個階段,你的角色正式從「敲代碼的施工工匠」升級為「指派任務、審查 Diff 與驗收品質的技術主管(Tech Lead)」。而 OpenCode 正是第三階段最具代表性且徹底開源的自主代理引擎。

為什麼工程師需要堅持開源方案?

面對琳瑯滿目的商業閉源代理工具,將核心開發流程押注在一個黑盒子背後,隱藏著四大不可逆的工程隱患:
- 擺脫供應商鎖定(Vendor Lock-in):商業產品通常將使用者深度綁定於特定模型供應商。一旦定價倍增、配額限流或服務政策異動,你的工作流瞬間面臨停擺。OpenCode 透過統一模型層支援超過 75 家供應商,架構規劃時用頂級推理模型,跑批量重構時切換高性價比模型,甚至在無網環境無縫切換本地端點。
- 捍衛企業資料主權(Data Sovereignty):代碼資產是團隊的核心命脈。OpenCode 的會話、日誌與專案歷史全數以標準 SQLite 格式儲存於本地機器(~/.local/share/opencode/),絕不強制上雲,亦可全面接入本地離線模型,做到代碼百分之百不跨出內網。
- 無限可客製的工具鏈邊界:閉源工具的能力極限由商業公司的產品經理決定,而 OpenCode 的能力極限由你的工程想像力決定。從小到終端快捷鍵、提示詞微調,大到自訂 MCP 工具與擴充外掛,每一層都開放源碼供你自由擴展。
- 經得起審視的透明安全:代理具備執行 Shell 指令與編輯檔案的高權限,任何黑箱操作都是資安未爆彈。開源讓每一次工具調用、每一筆權限請求皆攤在陽光下,經受全球資安社群的嚴格審計。

🧭 決策流程樹:第 01 章:AI 程式輔助的演進 — 從自動補全到自主代理

微小單行 / 模板樣式

概念諮詢 / 演算法思路

多檔變更 / Bug 修復 / 功能開發

機密核心代碼 / 離線內網

常規商業專案 / 複雜重構

測試全綠且邏輯嚴謹

偏離規範或代碼劣化

收到開發任務需求

評估任務複雜度與範圍

第 1 代: 自動補全
(Tab 鍵接受 / 行內幽靈文字)

第 2 代: 對話輔助
(問答對話 / 手動搬運成果)

第 3 代: 自主代理 OpenCode
(專案感知 / 實地動手驗證)

確認模型與數據敏感度

接入本地模型端點
(Ollama / vLLM / 離線 SQLite)

接入雲端主力模型
(Claude 3.7 / GPT-4o / 75+ 供應商)

代理執行閉環: 探索 -> 編輯 -> 測試 -> 自我修正

工程師最終防線: 審查 Diff

接受變更並提交 Git

下達退回修正指令或手動調優

任務高品質交付完成

步驟化 SOP 實戰詳解

1. 觸發情境:評估並建立「代理優先」的開發心智

2. 核心操作:指派受控任務的三步閉環

  1. 確立退路基準點:進入目標專案後,先在終端執行 git status 確認工作目錄乾淨,確保隨時可透過版本控制完全還原。

  2. 啟動 OpenCode 並指派清晰目標:下達指令時務必包含「目標」、「受影響範圍」與「驗收方式」:

    請為訂單模組新增取消交易功能:
    1. 涉及範圍:src/order/service.py 與 src/order/models.py
    2. 業務規則:已出貨訂單禁止取消,取消成功後應釋放庫存
    3. 驗收方式:執行 pytest tests/test_order.py 確認全數通過
  3. 終端即時審查與驗收:觀察 OpenCode 自動定位程式碼、呼叫編輯工具替換片段、在背景執行測試。透過終端呈現的 Diff 逐行檢驗,確認邏輯符合預期。

3. 踩坑避雷與防護指南

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 02 章:系統架構總覽 — 核心組件與生命週期

在日常開發中,你是否曾遭遇過這些令人困惑的疑問:
- 為什麼在終端機裡剛聊到一半的會話,切換到 VS Code 或瀏覽器介面時,能夠無縫呈現完全同步的上下文?
- 為什麼可以用輕薄的筆記型電腦,絲滑地遠端操縱公司算力強大的 Linux 工作站執行繁重的編譯與測試?
- 每次與 AI 的對話記錄、工具呼叫過程與暫存狀態,究竟被存放在硬碟的哪一個角落?

多數人使用 AI 工具時只關注眼前跳出的文字,但資深工程師懂得探究「系統的形狀」。唯有掌握 OpenCode 的底層架構,當你遇到連線逾時、多端衝突或排查歷程資料時,才能一眼看穿問題的癥結所在。

主從式架構:分離的「大腦」與「顯示器」

OpenCode 在架構設計上摒棄了傳統單體客戶端的做法,採用了現代標準的主從式架構(Client-Server Architecture):
- 伺服器核心(Server Core):系統的真正智能中心。它管理著對話狀態、上下文壓縮、模型呼叫路由、工具授權與 SQLite 資料庫讀寫。
- 前端客戶端(Frontends):純粹的互動外殼。無論是原生終端機介面(TUI)、VS Code / JetBrains 外掛,還是 Web 介面,它們都只是伺服器狀態的「投影鏡頭」。

這種設計帶來了三大直接優勢:
1. 多前端狀態一致:前端不持有任何持久化狀態。終端機關閉後重新開啟,或在 IDE 與終端機之間切換,看到的永遠是同一份最新的會話歷程。
2. 無頭遠端協同(Headless Operations):伺服器核心可以完全脫離圖形介面,以無頭模式常駐於遠端伺服器或 Docker 容器中。你只需在本地筆電執行 opencode attach,即可零延遲操縱遠端環境。
3. 自動化整合入口:同一組伺服器 API 提供了標準化的 CLI 入口。透過 opencode run 與 --format json,可以輕鬆將代理任務無縫嵌入 CI/CD 流程或自動化批次腳本中。

技術棧的四根頂樑柱

OpenCode 的底層選型精準兼顧了「執行效能」、「渲染流暢度」、「跨模型適配」與「本地持久化」:

元件名稱 核心技術 扮演角色與工程價值
執行環境 Bun 極速啟動的現代 JavaScript 執行環境與打包器,讓 OpenCode 能以零外部依賴的獨立二進位單檔迅速發布,擺脫傳統 Node.js 笨重龐大的 node_modules 包袱。
終端介面 SolidJS 以細粒度響應式更新(Fine-grained Reactivity)著稱的前端框架。它將終端機 TUI 的畫面重繪成本降至極致,即便在長篇對話與高頻串流輸出時,終端依然滑順如絲、告別惱人閃爍。
模型抽象 Vercel AI SDK 抹平超過 75 家模型供應商 API 格式差異的統一串流層。OpenCode 在其之上構建工具調用標準,確保切換底層大模型時,上層工具鏈與會話無感運作。
本地持久化 SQLite (WAL) 所有會話記錄、訊息日誌與運行狀態皆持久化於 ~/.local/share/opencode/opencode.db。採用預寫日誌模式(WAL),保證高併發讀寫下的資料完整性與零資料外洩。

「一切皆事件」的心智模型

在 OpenCode 中,任何動態——不管是工程師敲入的指令、模型的內部推理思考、各類工具的參數調用,還是檔案系統的即時變更——都會被封裝為結構化的事件(Events)。

事件順序流經系統,即時寫入本地 SQLite,並透過內部事件匯流排即時廣播給所有連線中的客戶端。這種事件驅動機制使得系統具備極佳的擴展性:會話可以隨時透過 opencode export 匯出為完整 JSON 序列,除錯時能逐幀回放,外掛系統更能精準監聽特定事件掛鉤(Hooks)插入自訂邏輯。

🧭 決策流程樹:第 02 章:系統架構總覽 — 核心組件與生命週期

日常單機本機開發

跨裝置 / 雲端工作站

CI/CD 自動化 / 腳本批次

規劃 OpenCode 運行拓撲

選擇執行場景

啟動本機整合模式: opencode
(伺服器與 TUI 於同一行程就緒)

伺服器端: opencode serve --port 4096
本地端: opencode attach http://主機:4096

腳本呼叫: opencode run --format json
(接收結構化事件流並自動退出)

伺服器核心處理架構

四根技術支柱運作

Bun: 毫秒級冷啟動

SolidJS: 細粒度響應式 TUI

Vercel AI SDK: 75+ 供應商統一協定

SQLite: 本地會話日誌 (~/.local/share/opencode)

事件匯流排廣播與持久化

系統狀態保持一致,隨時可復原檢驗

步驟化 SOP 實戰詳解

1. 觸發情境:部署並切換 OpenCode 的運行模式

2. 核心操作:遠端無頭伺服器架設與客戶端附加

  1. 工作站啟動無頭伺服器:在具備強大算力或依賴環境的工作站上,指定主機位址與連接埠啟動服務:

    opencode serve --port 4096 --hostname 0.0.0.0
  2. 本機客戶端掛載連接:在你的輕量筆電或工作機上,直接發起遠端附加:

    opencode attach http://workstation.local:4096
  3. 本機會話歷程查閱與匯出:即便連線中斷,所有狀態都完整留存在資料庫中。可隨時在終端檢視或備份:

    # 列出本機所有歷史會話
    opencode session list
    
    # 將特定會話匯出為結構化 JSON 檔案
    opencode export <sessionID> > session_backup.json

3. 踩坑避雷與防護指南

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 03 章:代理系統 — 主代理與子代理協同架構

你是否經歷過這樣的災難性場景:
你對著 AI 輕描淡寫地說了一句:「幫我重構一下購物車的折價券邏輯。」結果下一秒,AI 像脫韁野馬般瘋狂修改了十幾個核心檔案,直接把現有模組改得面目全非,甚至在遇到相依性報錯時自作主張安裝一堆奇怪套件,最後整個專案連編譯都通不過。

或者,你與 AI 進行了一場長達兩小時的深度對話,起初它精明過人,但到了後半段,它開始頻繁忘記先前的約定、出現幻覺,連最基本的檔名都搞錯——這就是典型的「上下文污染與滾雪球崩潰」。

在 OpenCode 中,「代理(Agent)」並不是泛指所有的 AI 功能,而是一個擁有精確定義的架構概念:將特定的系統提示詞(System Prompt)、可用工具集、權限規則與底層模型,封裝成一個可隨時切換的身分。同一顆 AI 核心引擎,穿戴上不同的代理配置,就化身為承擔不同專職的工程夥伴。

四大內建代理與「先 plan 後 build」黃金律

OpenCode 預設提供四個專職代理,各司其職:

代理名稱 核心定位 檔案寫入權限 經典適用場景
build 主力開發者 ✅ 可寫入 / 修改 實作新功能、修復 Bug、執行重構等一切需要「動手修改」的工程實作。
plan 架構顧問 ❌ 嚴格唯讀 需求前期調研、技術選型評估、多方案利弊權衡與逐步實作計畫擬定。
explore 程式碼偵察兵 ❌ 嚴格唯讀 快速回答「某個邏輯寫在何處」、「某個類別如何運作」等專案結構探索。
general 通用研究員 ✅ 獨立子會話可寫 被主代理委託執行獨立的多步驟深度調查或專項執行任務。

此外,系統底層還配備了 compaction(自動壓縮上下文)與 title(自動總結會話標題)等內部隱藏代理,由系統背景觸發,無需手動干預。

初學者最常犯的重大失誤,就是把所有需求直接丟給 build 代理。正確的工程協作節奏永遠是「先 plan 後 build」:
1. 構思階段切至 plan:由於 plan 代理被刻意剝奪了寫入工具,它「只能思考,不能動手」。這不是功能閹割,而是對工作區的強力保護——無論 AI 如何大膽試探,絕不會在草案階段意外弄髒你的 Git 工作目錄。
2. 審核確認方案:架構顧問給出詳細的實作步驟、影響範圍評估與潛在風險預警。
3. 實作階段切至 build:拿著已確認的具體步驟清單,讓 build 代理依序精準動刀。

代理委託機制:守護上下文的防火牆

優秀的技術主管絕不事必躬親。主代理透過內建的 task 工具,可以隨時將繁瑣的子任務委託給其他代理,在完全獨立的子會話中執行,完成後僅將提煉後的結論回收至主對話。

這種「委託機制」的核心價值在於上下文隔離(Context Isolation):
當你需要盤點整個專案中 30 個 API 端點的授權驗證方式時,若主代理親自搜尋,這 30 個檔案的大量無關代碼將瞬間塞爆主會話的 Context Window;而透過委託給 explore 代理,子代理翻山越嶺的探索雜訊全部被鎖定在子會話中,最終只回傳一份精簡的摘要表格給主代理。主會話始終保持清爽高智能,杜絕長對話智能劣化。

權限安全防禦:allow、ask、deny 三層防線

AI 的行動必須始終處於受控圍欄之中。OpenCode 在 opencode.json 的 permission 區塊提供嚴格的三層權限控管:
- allow:完全信任,直接放行,無需人工確認。
- ask:審慎放行,每次執行前彈出終端提示,由工程師按下確認後方可執行。
- deny:絕對禁止,直接阻斷,連詢問視窗都不跳出。

權限設定支援萬用字元(Glob),實戰配置範例:

{
  "$schema": "https://opencode.ai/config.json",
  "permission": {
    "edit": "allow",
    "bash": {
      "git status": "allow",
      "git log*": "allow",
      "git push*": "ask",
      "rm -rf *": "deny",
      "npm test*": "allow",
      "*": "ask"
    },
    "webfetch": "allow"
  }
}
🧭 決策流程樹:第 03 章:代理系統 — 主代理與子代理協同架構

程式碼位置查詢 / 架構梳理

大型架構設計 / 方案評估

明確且單一之具體實作

方案不滿意 / 風險過高

確認實作方案與步驟

是

否

符合 allow

符合 ask

符合 deny

用戶授權

用戶拒絕

接收開發需求

評估需求性質

調用 explore 代理
(唯讀偵察,杜絕污染工作區)

切換至 plan 代理
(架構顧問,產出多方案與步驟清單)

直接由 build 代理接手實作

工程師審查方案清單

切換至 build 代理執行

是否需要繁重搜尋或子調查?

調用 task 工具指派子代理
(上下文隔離,雜訊留於子會話)

子任務提煉結論回傳主會話

主代理直接動刀修改

檢查 permission 權限規則

自動執行工具操作

終端彈出確認提示

安全阻斷,中止違規操作

中止操作並回報代理

驗證測試結果並交付成果

步驟化 SOP 實戰詳解

1. 觸發情境:啟動非平凡(Non-trivial)需求開發

2. 核心操作:「先 plan 後 build」標準協同程序

  1. 下達架構諮詢指引:在 plan 模式下要求評估:

    我想為使用者模組加入 OAuth2 Google 登入功能:
    1. 請盤點既有 auth 模組的進入點與相依性
    2. 提出兩種實作架構並分析對現有 session 機制的影響
    3. 列出具體可驗收的 4 個實作步驟清單
  2. 審查步驟與驗收指標:確認架構顧問輸出的步驟邏輯嚴密,無架構缺陷。

  3. 切換 build 逐步動工:切換為開發代理,並嚴格依據清單指派:

    /agent build
    請依照剛才產出的步驟 1,建立 Google OAuth 的資料表遷移檔與 Model 定義。
  4. 善用 task 工具分流繁瑣調查:當需要比對外部文件或專案多處殘留調用時,主動指示代理派工:「請委託 explore 子任務盤點所有呼叫了 legacy_login 的檔案」。

3. 踩坑避雷與防護指南

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 04 章:工具系統 — 內建工具與權限防護

如果把代理系統比喻為大腦,那麼工具系統就是它伸向真實數位世界的雙手與手術刀。無論底層的大語言模型推理能力多麼登峰造極,若缺乏與作業系統、檔案體系與編譯環境互動的工具,它充其量只是一個善於言辭的聊天機器人。

然而,在日常使用中,你是否曾遇過這些痛苦的現象:
- AI 明明只要修改一個函式中的三行邏輯,卻偏偏把一個 2,000 行的檔案全部重寫一遍,導致所有格式與無關註解被破壞殆盡?
- AI 嘗試替換代碼時,常常因為縮排多了一個空格或引號是雙引號還是單引號,不斷跳出「找不到目標字串」的死循環?
- 讓 AI 去專案裡找某個函式,它直接把沿途所有的檔案全部讀進對話中,導致 Token 額度瞬間枯竭、反應變得極度遲緩?

OpenCode 深刻洞悉了這些工程痛點。它的內建工具家族經過極為克制的收斂,數量精煉卻具備極高的工程殺傷力,並在底層引入了優雅的「多層回退比對」與「供應商適配」黑科技。

內建工具五大分類

OpenCode 將工具體系嚴格劃分為五大維度,各具鮮明的權限屬性與防護要求:

工具維度 代表工具名稱 核心工程功能 權限屬性與安全管控
讀取類 read、glob、grep 檢視檔案內容、依檔名模式探索檔案路徑、以正規表示式搜尋內容。 唯讀安全操作,通常預設直接 allow 放行。
寫入類 edit、write edit 負責局部精準片段替換;write 負責全檔建立或覆寫。 具變更副作用,受 permission.edit 規則嚴密約束。
執行類 bash 執行 Shell 指令:編譯測試、Git 操作、套件安裝與腳本運行。 唯一的任意副作用入口,受 permission.bash 最嚴格管控。
網路類 webfetch 抓取指定 URL 網頁或 API 內容,自動轉成純文字供代理分析。 外部通訊操作,受 permission.webfetch 控管防範資料外流。
委託類 task 派發獨立子任務給其他專職代理執行(如委託給 explore)。 權限動態繼承自被調用代理本身的權限矩陣。

高效探索的黃金組合:glob、grep 與 read 的分工

許多工程師誤以為 read 可以包辦一切。事實上,大檔案整檔讀入既浪費昂貴的 Context Window,又會大幅增加模型產生幻覺的機率。OpenCode 遵循精準打擊原則:
- glob 探尋路徑:依照檔名模式比對(如 src/**/*.service.ts),用於摸清架構版圖。
- grep 定位行號:依照正規表示式在全文搜尋關鍵字(如 class PaymentGateway),精準標記出所在檔案與行號範圍。
- read 切片讀取:拿到具體行號後,僅讀取關鍵片段前後 50 行,以最小的 Token 成本獲取最充份的上下文。

edit 工具的多層回退比對(Fallback Matching)

傳統代碼替換工具最大的盲點在於「剛性匹配」:模型的複製貼上往往存在縮排落差、行尾空白(Trailing spaces)或引號跳脫差異。如果堅持逐字元完全比對,大量合理的修改將無謂報錯;但若使用模糊匹配,又極易改錯相似區塊。

OpenCode 採用了一套多層回退比對機制:
1. 第一層:精確匹配(Exact Match) — 嚴格逐字元比對,保證最高精度。若失敗則自動降級重試:
2. 第二層:忽略縮排差異(Indentation-agnostic) — 只要相對縮排與代碼結構一致,忽略前綴空格差異。若仍失敗則降級:
3. 第三層:忽略跳脫序列與引號風格 — 容忍換行符號(CRLF vs LF)與引號格式的微差。
4. 第四層:報錯並請求人工確認 — 若三層皆無法唯一命中,立即拋出錯誤阻斷,絕不盲目猜測。

這套機制的哲學是:容忍無關緊要的格式噪音,但對「唯一命中目標區塊」絕不妥協!

供應商適配層:抹平模型的手感差異

不同大模型在生態中有各自偏好的編輯習慣。例如 OpenAI GPT 系列擅長以 apply_patch 補丁語法提出改動;Anthropic Claude 系列則習慣整塊替換的 edit 結構。

OpenCode 的供應商適配層(Provider Adaptation Layer)在內部抹平了這些差異。對外,使用者與上層代理面對的是統一的工具協定;而在底層,系統會依當前選用的模型自動轉換為最適配的調用語法,讓你在切換模型時毫無撕裂感,且所有日誌事件維持標準化格式。

🧭 決策流程樹:第 04 章:工具系統 — 內建工具與權限防護

搜尋檔案結構 / 檔名

搜尋函式名稱 / 代碼片段

變更現有檔案代碼

建立全新檔案 / 規格書

執行建置 / 跑測試

成功命中

失敗

成功命中

失敗

成功命中

失敗

確認正確

有誤

接收代碼探索或修改任務

判斷任務動機

調用 glob 工具
(例: src/**/*.ts 摸清檔案拓撲)

調用 grep 工具
(精準定位檔案與目標行號)

調用 edit 局部替換工具

調用 write 完整建立工具

調用 bash 執行指令

取得路徑清單

調用 read 工具精準讀取前後區段
(嚴禁全檔盲讀,節省 Token)

第一層: 逐字元精確匹配

替換代碼並生成 Diff

第二層: 忽略縮排差異匹配

第三層: 忽略跳脫與引號差異

阻斷執行: 提示模型重新定位內容

工程師 Diff 終端審閱

變更生效,進入測試階段

觸發 /undo 撤銷變更

步驟化 SOP 實戰詳解

1. 觸發情境:在大型既有專案中進行定位與修改

2. 核心操作:標準搜尋與手術刀替換流程

  1. 結構探索與精準鎖定:

    請先用 glob 找出所有包含 config 的檔案,接著用 grep 搜尋 MAX_RETRY_COUNT 的宣告位置。
  2. 切片檢視與邊界確認:

    請僅 read 目標檔案該行號的前後 20 行,確認依賴模組與上下文關聯。
  3. 發起 edit 替換:
    代理自動呼叫 edit 工具,提供唯一的目標舊文字區塊與新邏輯。若因微小縮排差異未命中,底層回退機制將自動平滑補正。

  4. 終端審查變更 Diff:
    在 TUI 終端檢視即時 Diff,確認無多餘的行尾空白或不小心破壞的括號結構。

3. 踩坑避雷與防護指南

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 05 章:技能系統 — 按需載入與知識封裝

每個成熟的工程團隊內部,都流傳著一些「不會寫死在代碼邏輯中,但每個新人都必須遵守」的隱性知識:
- 提交代碼時,Git Commit Message 必須符合 Conventional Commits 格式,且末尾要附帶 Jira 票號。
- 每次修改完 Python 代碼,在提交前必須依序執行 linter、格式化工具與單元測試。
- 呼叫內部金流服務時,必須遵循特定的加簽防重送演算法與超時重試機制。

傳統的做法通常是將這些規則寫進冗長厚重的內部 Wiki,或者靠資深工程師在 Code Review 時一次次心累地抓抓抓。而在使用 AI 時,許多開發者不得不每一次開新會話,就手動貼上一大段 Prompt 來「教育」AI,既麻煩又極易遺漏。

OpenCode 給出的工程級答案是技能系統(Skill System):透過一份份標準化的 Markdown 文件,將團隊的工程知識封裝為「按需載入的作業指導卡」,讓 AI 在需要時自動觸發並嚴格落實。

SKILL.md 規範剖析

在 OpenCode 中,一支技能就是一個專屬資料夾加上一份 SKILL.md。其標準結構如下:

---
name: commit-helper
description: 產生符合團隊規範的 git 提交訊息。涉及 commit、提交訊息時使用。
---

# 提交訊息規範

1. 格式為 `<type>: <主旨>`,type 僅限 feat / fix / refactor / docs / test / chore
2. 主旨使用繁體中文,不超過 30 字,句尾不加句號
3. 內文說明「為什麼」而非「做了什麼」,空一行後撰寫
4. 有對應 Issue 時,內文末行加上 `Refs: #編號`

## 範例

feat: 支援報表匯出 CSV

訂單組需要原始資料做月結對帳,網頁列印無法滿足,
故新增後端直出 CSV 的匯出端點。

Refs: #482

YAML Frontmatter 中的兩個欄位是技能的靈魂:
- name:技能的唯一識別碼,必須採用小寫連字號命名(kebab-case),且必須與所屬的資料夾名稱完全一致。
- description:最重要的核心欄位。它是 AI 判斷「當前會話是否該載入本技能」的唯一依據。撰寫訣竅是「做什麼+何時用+自然嵌入觸發關鍵詞」。

正文部分則是標準 Markdown。編寫給 AI 執行的作業指導書,切忌空泛的形容詞,而應使用編號清單、明確的可執行指令與真實範例。

漸進揭露(Progressive Disclosure):零上下文負擔的奧秘

如果系統在啟動時,將專案中的幾十支技能內容全部塞進 System Prompt,會話的 Context Window 將瞬間被撐爆,成本暴增且智能迅速劣化。

OpenCode 採用了精巧的漸進揭露架構:
1. 輕量索引註冊:系統啟動或對話開啟時,僅向大模型註冊所有技能的 name 與 description(每支技能僅消耗微薄的數十個 Token)。
2. 語意特徵偵測:當使用者的提問或當前任務語意精確命中了某支技能的描述情境時,模型才會動態發起調用,將該技能的完整正文即時讀入上下文照章執行。

這意味著你可以在專案中沉澱上百支專業技能,而在日常普通問答中,完全無需付出額外的上下文與計費成本!

雙層配置架構:專案共用與個人全域

OpenCode 支援專案級與全域級兩層技能存放路徑:

層級名稱 物理路徑位置 生效範圍與團隊版控策略
專案級技能 .opencode/skill/<名稱>/SKILL.md 僅在當前專案目錄生效。應一併提交至 Git 倉庫,作為全團隊統一共享的工程規範與落地標準。
全域級技能 ~/.config/opencode/skills/<名稱>/SKILL.md 跨所有專案全局生效。適合放置個人偏好的程式習慣、日常輔助指令或私人專用工作流。
🧭 決策流程樹:第 05 章:技能系統 — 按需載入與知識封裝

個人開發偏好 / 個人工具

團隊代碼規範 / 專案 CI 流程

語意未命中任何技能

對話關鍵字命中 description

團隊工程知識沈澱

評估知識性質

存入全域技能目錄:
~/.config/opencode/skills/<名稱>/SKILL.md

存入專案技能目錄:
.opencode/skill/<名稱>/SKILL.md

提交至 Git 倉庫共享全隊

啟動 OpenCode 引擎

漸進揭露第 1 階段:
僅註冊 name 與 description 輕量索引

接收使用者指令與任務

常規對話與工具執行 (零多餘 Token 消耗)

漸進揭露第 2 階段:
動態載入完整 SKILL.md 作業指引

AI 嚴格遵循編號步驟與指令執行

高標準完成符合團隊規範之成果

步驟化 SOP 實戰詳解

1. 觸發情境:建立「Python 代碼修改後強制檢查」專案技能

2. 核心操作:五分鐘上線第一支自訂技能

  1. 建立專屬目錄:在專案根目錄下建立對應的結構:

    mkdir -p .opencode/skill/python-checklist
  2. 撰寫標準化 SKILL.md:建立 .opencode/skill/python-checklist/SKILL.md 並填入內容:

    ---
    name: python-checklist
    description: 修改任何 .py 檔案後的品質檢查程序。涉及編輯 Python 程式碼、跑測試、檢查語法時使用。
    ---
    
    # Python 修改後檢查程序
    
    每次完成 .py 檔案修改後,依序執行下列防護指令:
    
    1. `uv run ruff check --fix <修改的檔案>`:修正所有可自動修復的語法問題
    2. `uv run ruff format <修改的檔案>`:統一格式化代碼
    3. `uv run pytest tests/ -x -q`:快速執行測試,任何失敗必須立即修復
    4. 三步全綠才算完成;若測試無法通過,必須立即停止並回報,嚴禁略過測試
  3. 驗證觸發行為:
    重啟 OpenCode 或開新會話,給它一個微小任務(例如:「請為 utils.py 新增一個加法函式」)。觀察 AI 改完代碼後,是否主動調用 bash 工具依序執行 ruff 與 pytest。

3. 踩坑避雷與防護指南

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 06 章:安裝與環境設定 — 跨平台部署與依賴

為什麼同一行指令在同事的機器上跑得行雲流水,到了你的 Windows 或 CI 容器裡卻頻頻噴出相依性錯誤?為什麼好不容易把 OpenCode 叫起來,終端機畫面卻滿地亂碼、圖示全變成問號方塊?

把安裝 OpenCode 比喻成「為一級方程式賽車搭建 Pit Lane 整備維修站」。再強勁的 AI 引擎,如果跑在一條充滿油漬與碎石的跑道上(缺少 Nerd Font 字型、終端未開啟真彩支援)、或者維修團隊給錯了混亂的油料規格(版本未釘死、個人與團隊設定打架)、甚至是把無人賽車丟進一個管線沒接好的密封貨櫃(Docker 遺漏工作目錄掛載或 API 金鑰),你的自主代理就只會在起跑線上打滑空轉。

本章補齊工程落地時的進階必備技術:四種跨平台安裝途徑的選型標準、版本鎖定與升級防護、容器化無狀態部署,以及用十分鐘打造低疲勞、高解析的現代終端環境。

🧭 決策流程樹:第 06 章:安裝與環境設定 — 跨平台部署與依賴

個人開發機 (macOS / Linux)

獨立二進位檔 / 無依賴

慣用 Homebrew

個人開發機 (Windows)

CI / CD 自動化流程

內核開發者 / 追新版

圖示破裂 / 問號方框

高對比刺眼 / 色彩失真

🚀 部署起點:選擇 OpenCode 安裝情境

當前目標執行環境為何?

是否已有套件管理偏好?

官方腳本安裝
curl -fsSL https://opencode.ai/install | bash

Homebrew 安裝
brew install opencode

Windows 首選途徑
npm install -g opencode-ai

無狀態 Docker 部署
掛載工作目錄與環境變數金鑰

原始碼構建
Git clone + Bun build

團隊協作防線:釘住基準版本
npm install -g opencode-ai@x.y.z

執行容器任務並於結束後銷毀

終端機渲染防護檢測

安裝配置 Nerd Font
(JetBrainsMono / FiraCode)

執行 /themes 即時預覽
選用低刺激深色主題

🏁 開發站點就緒:進入專案初始化

🏆 CI 檢查完成並安全釋放

步驟化 SOP 實戰詳解

1. 觸發情境

2. 核心操作

3. 踩坑避雷與防護指南

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 07 章:專案初始化 — 專案配置與自訂指令集

同一個 AI 模型、同一套運算架構,為什麼在專案 A 能精準調用內部封裝模組、產出符合架構哲學的高品質代碼,但在專案 B 卻會胡亂覆寫已上線的資料庫遷移檔、拿浮點數計算金額,甚至擅自修改底層核心共用庫?差別從來不是運氣或隨機抽樣,而在於專案有沒有在進入點把「這裡的規矩與邊界」交待得清清楚楚。

把 AGENTS.md 與 .opencode/ 比喻成「新進工程師的入職作戰手冊與工牌門禁卡」。AI 代理不是通靈師,沒有入職指引,它就只能依靠從全網開源代碼學來的統計平均值來盲猜你的業務慣例;但如果你在門口發給它一份明確的專案作戰手冊與安全權限卡,它從敲下第一行代碼開始,就是完全熟悉你團隊技術棧的資深工程師。

這是全書投資報酬率最高的一章:AGENTS.md 解決代理的「長期認知」,.opencode/ 解決代理的「行動邊界與工具裝備」。

🧭 決策流程樹:第 07 章:專案初始化 — 專案配置與自訂指令集

全新專案 / 尚未建立

既有專案維護

擴充領域技能

自訂捷徑指令

維持標準能力

🚀 專案啟動:進入儲存庫根目錄

專案是否已有 AI 規範文件?

建立根目錄 AGENTS.md
定義專案核心作戰手冊

審視既有規則是否過期或有重複錯誤

填寫五大黃金骨架區塊
概要、指令、導覽、紅線、驗收標準

每次 AI 踩雷即時補充對應防線
(活文件增量迭代)

建立專案層 .opencode/ 目錄資產

配置 opencode.json 安全權限門禁
(限制危險指令 rm -rf / 敏感操作 ask)

是否需要專案特化擴充?

.opencode/skill/ 注入自訂業務技能

.opencode/command/ 封裝高頻工作流

納入 Git 版本控制追蹤
(隨 Code Review 共同審查)

🏁 專案初始化完成:新人與 AI 全員同步

步驟化 SOP 實戰詳解

1. 觸發情境

2. 核心操作

3. 踩坑避雷與防護指南

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 08 章:基本互動精修 — 提問模式與高效提示

為什麼當你隨口丟出一句「幫我修好這個 Bug」,AI 代理卻大動干戈改了十幾個完全不相干的模組,甚至擅自重構了整個狀態管理機制?為什麼在同一個對話框聊了十幾輪後,AI 開始變遲鈍、遺忘先前的設定,甚至給出前後矛盾的幻覺代碼?

把與自主代理的互動比喻成「在手術室為外科主刀醫師傳遞手術器械」。如果實習助手只在門口大喊一聲「快救人!」,主刀醫師只能依照本能狂亂翻找托盤;但如果你清晰指示「出血點在右腹第三肋下動脈側、預期止血壓力為 80 mmHg、請先遞上 4 號止血鉗,在我確認止血前絕對禁止動刀縫合」,整場手術就能在精準可控的節奏中完成。

與 AI 的互動品質直接決定了交付成果的上限。把 AI 當成一位極度聰明、程式功底深厚,但「對你目前專案架構完全陌生」的新同事——你怎麼在日常中帶新人,就該怎麼在終端中下指令。

🧭 決策流程樹:第 08 章:基本互動精修 — 提問模式與高效提示

單行微調 / 直覺修復

複雜除錯 / 跨檔案功能

涉及架構與多檔

存在技術選型爭議

重視成果交付可靠度

UI 跑版 / 設計稿比對

純程式碼與日誌

大方向對但細節有偏差

任務完成,開啟全新主題

💬 任務派發:收到工程需求或 Bug 反饋

任務影響規模評估

直接下達精確指示
(指定檔案與單點行為)

組裝高價值四要素結構
(現象 + 重現 + 線索 + 完成定義)

選擇核心工程控制句型

「先說方案再動手,確認後再改」

「列出 2-3 種解法與利弊讓我選」

「修改完畢後跑 make test 證明是好的」

是否包含非文字素材?

貼入圖片並劃定邊界
「只調 CSS 樣式,不動邏輯」

發送提示詞至代理執行

執行結果是否符合預期?

增量修正 (保留對話記憶)
「方向正確,第 3 點改用快取」

果斷開闢新會話 (熔斷換線)
杜絕 Context 滾雪球雜訊

🏆 心流延續:乾淨上下文迎接新任務

步驟化 SOP 實戰詳解

1. 觸發情境

2. 核心操作

3. 踩坑避雷與防護指南

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 09 章:LSP 整合 — 語言伺服器協議與型別感應

為什麼 AI 在網頁聊天室產出的程式碼看似邏輯嚴密、結構工整,但一貼進專案終端機,編譯器卻立即噴出幾十行型別不符或符號未定義的刺眼紅字?當你需要重構一個關鍵函式的參數型別時,代理如何保證散落在十幾個不同模組的調用點沒有被靜默改壞?

把傳統的檔案文字搜尋(Grep / Regex)比喻成「盲人摸象」,摸到了粗糙表面只知道它是一根圓柱,卻分不清那是大象的腿、羅馬柱還是枯木樹幹;而 LSP(Language Server Protocol,語言伺服器協定)則是「全身 3D 電腦斷層掃描(CT)」,它精確穿透表面文字,徹底掌握每一條型別定義、符號作用域與跨模組調用的深層神經網絡。

OpenCode 透過深度的內建 LSP 整合,讓自主代理在寫下代碼的當下,背後就站著一位嚴苛的編譯器專家。這一章拆解 LSP 的語意架構、零設定自動代管機制,以及如何利用「診斷回饋迴圈」讓低級語法錯誤在送達你面前之前就被自主消滅。

🧭 決策流程樹:第 09 章:LSP 整合 — 語言伺服器協議與型別感應

尚未安裝

已就緒

索引建立中 / 尚未完成

LSP 顯示 Ready

存在錯誤 (紅字報警)

零錯誤 (Diagnostics Clean)

🚀 專案啟動:進入多語言代碼庫

OpenCode 自動探測語言特徵
(TypeScript, Python, Go, Rust 等)

本地是否已安裝對應 LSP?

提示使用者確認授權安裝
(記錄至 lsp-install-decisions.json)

在後台啟動獨立語言伺服器進程

建立 AST 抽象語法樹與符號索引庫

在 TUI 執行 /status 檢查

短暫等待大型專案背景索引完成

代理進入程式碼探索與重構流程

語意級操作:定義跳轉與引用查找
(精準分析影響半徑,勝過 grep)

代理實施代碼編輯與檔案寫入

🔄 觸發即時診斷回饋迴圈 (Feedback Loop)
主動向 LSP 查詢編譯錯誤與警告

LSP 是否回報型別或語意錯誤?

代理即刻自我吞噬修復 (Self-Healing)
調整參數、匯入缺失或修正型別

移交第二道動態測試防線
(make test / pytest 驗收)

🏆 高品質交付:編譯與邏輯雙保證

步驟化 SOP 實戰詳解

1. 觸發情境

2. 核心操作

3. 踩坑避雷與防護指南

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 10 章:MCP 伺服器 — 模型上下文協議擴充

如果你的 AI 代理只能讀取本地磁碟上的純文字原始碼,那麼當工程需求涉及「查詢生產環境資料庫的真實 Schema 與索引」、「讀取 GitHub Issue 的驗收標準並直接在 PR 提交審查評論」、或是「驅動無頭瀏覽器抓取渲染後的網頁 DOM」時,難道你還要像人肉搬運工一樣,在資料庫管理軟體、瀏覽器與終端機之間來回手動複製貼上?

把 MCP(Model Context Protocol,模型上下文協議)比喻成「電腦主機的標準化 USB Type-C 擴充介面卡」。在過去,AI 工具要連接 N 個外部系統(GitHub、Notion、PostgreSQL、Figma),開發者必須編寫 M × N 次破碎且難以維護的特規 API 膠水代碼;而 MCP 帶來了即插即用的全球開放標準,將複雜度化簡為 M + N。OpenCode 作為 Host 主機,只要插上任何支援 MCP 的伺服器,對方的查詢能力與外部動作便能瞬間無縫納入代理的工具箱。

然而,擴充外部能力意味著系統副作用半徑的幾何級放大。本章拆解 MCP 的核心架構、本地與遠端傳輸模式、精確到萬用字元的權限防禦網,以及避免「工具過載稀釋」的選型法則。

🧭 決策流程樹:第 10 章:MCP 伺服器 — 模型上下文協議擴充

本地資源 (SQLite / 特規目錄 / 本機腳本)

雲端 SaaS (GitHub / Linear / Notion)

需要認證 (如 GitHub 帳號)

本機免認證

唯讀查詢 (如 github_list*)

寫入修改 (如 database_exec*)

高危破壞 (如 *_delete*)

🔌 擴充需求:工程任務需串接外部系統

外部服務的實體部署型態為何?

選用 local 傳輸模式
(stdio 標準輸入輸出子進程)

選用 remote 傳輸模式
(HTTP / Server-Sent Events 端點)

在 opencode.json 宣告 mcp 伺服器配置

該服務是否需要 OAuth 授權?

執行 opencode mcp auth 綁定憑證
(金鑰遵循最小權限原則)

重啟會話並在 TUI 執行 /status 驗證

🛡️ 構建 permission.mcp 權限門禁
(精確匹配 伺服器名稱_工具名稱)

設定動作防護策略

設定為 allow 自動放行

設定為 ask 強制逐筆人工授權

設定為 deny 堅決阻斷執行

代理在受控安全網內調用外部能力

🏆 安全達成:外部資源無縫驅動任務

步驟化 SOP 實戰詳解

1. 觸發情境

2. 核心操作

3. 踩坑避雷與防護指南

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 11 章:會話管理 — 上下文控制與歷史復原

你是否曾經歷過這種挫折:一早開啟終端機與 AI 協同,從「修復登入逾時 Bug」一路聊到「重構購物車折抵」,到了下午,AI 開始語無倫次、丟三落四,甚至把早上剛寫好的函式當作垃圾刪除?或者當一條重構思路走到死胡同,你想退回兩小時前的狀態,卻發現對話歷史已被幾十層除錯雜訊淹沒,進退兩難?

新手把會話(Session)當成「無限延長的草稿紙」,把所有大小任務塞進同一個上下文;而頂尖工程師則把會話當成「精密的組裝產線」——一條產線只交付一個明確目標。會話不僅是聊天視窗,更是包含對話歷史、工具呼叫、檔案快照與權限狀態的獨立執行單元。

掌握會話管理的核心,在於上下文隔離、分岔回溯(Forking)與資產化攜帶。當你學會像分支管理程式碼一樣管理對話,AI 代理就能隨時保持在最高專注度,不再受歷史雜訊污染。

🧭 決策流程樹:第 11 章:會話管理 — 上下文控制與歷史復原

接續先前未完進度

嘗試高風險/實驗性架構

啟動全新獨立任務

團隊求援或除錯歸檔

是 (多任務並行)

否 (單一主幹)

死胡同或劣化

符合預期

進入任務作業

當前作業情境為何?

執行 opencode --continue
或指定 opencode run --session ses_xxx

執行 --fork 分岔當前會話
開啟平行宇宙探索

開新會話:按 Tab 或下達
opencode run --title '清晰任務名稱'

輸出資產:/share 產出網址
或 opencode export 匯出 JSON

是否需要與其他任務並行?

建立 git worktree 獨立工作目錄
嚴禁多代理共用同目錄寫碼

在當前工作區執行任務

執行結果是否達到預期?

捨棄該會話/分支
切回原會話重置思路

檢查 opencode stats
核對 Token 消耗並提交成果

安全交付閉環

步驟化 SOP 實戰詳解

1. 觸發情境:啟動多會話並行與 Worktree 隔離

2. 觸發情境:平行宇宙探索 — --fork 分岔實驗

3. 觸發情境:會話協同共享與成本資產化

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 12 章:設定系統 — 優先順序與分層配置

許多開發者在調校 AI 工具時常會遇到令人費解的幽靈現象:明明在全域設定裡指定了輕量便宜的模型,為何一進專案又被切換成高資費模型?為什麼辛辛苦苦寫好的自訂工具,隊友 pull 下來後卻完全沒有生效?當多個設定來源交織在一起時,到底由誰來拍板定案?

OpenCode 的設定系統哲學是「開箱即用,但允許深度雕琢」。它就像一套「軍事指揮體系」——越靠近當前執行現場的指令,權限層級越高。從最底層的內建預設,到最高層的終端 CLI 旗標,共有七層覆蓋順序。

理解這七層架構,不僅能讓團隊共識(如程式碼審查規範、權限白名單)透過版控自然落地,更能讓你隨心所欲地將重複性流程封裝為「自訂斜線命令(/command)」,打造完全符合個人工程手感的終端作業中樞。

🧭 決策流程樹:第 12 章:設定系統 — 優先順序與分層配置

個人全局偏好 (外觀/個人習慣)

團隊規範/專案專用 (工具/權限)

高頻複合提示詞流程

單次臨時實驗或覆寫

未如預期生效

正確生效

發起設定配置或衝突排查

該設定的適用範疇為何?

配置全域檔 ~/.config/opencode/
• opencode.json (模型/參數)
• tui.json (快捷鍵/主題)

配置專案檔 .opencode/opencode.json
宣告 $schema 並提交進 Git 版控

撰寫自訂斜線指令
.opencode/command/xxx.md
定義 description 與執行約束

直接在 CLI 傳遞旗標
如 --model 或 --config 臨時覆寫

七層優先序由下而上疊加生效

檢查預期設定是否生效?

啟動自頂向下 (第7層往第1層) 排查:
確認是否遭 CLI 旗標或專案檔覆蓋

設定就緒,穩定投入生產

步驟化 SOP 實戰詳解

1. 觸發情境:專案級規格化配置與 Schema 宣告

2. 觸發情境:將繁複流程固化為「自訂斜線命令」

3. 觸發情境:設定衝突排查與快捷鍵改造

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 13 章:IDE 整合 — VS Code 外掛與介面聯動

終端機是工程師最純粹的高速公路,但當面臨跨檔案複雜重構、逐行比對幾十處 diff,或是需要與圖形化偵錯面板協同作業時,純終端介面有時難以提供直觀的視覺張力。反之,如果每換一套編輯器就得重新配置 AI 助手、重載上下文,開發心流勢必支離破碎。

OpenCode 的核心優勢在於其主從式解耦架構(Client-Server Architecture)。終端 TUI、VS Code 外掛、JetBrains 面板或 Neovim 插件,本質上都只是同一顆後端引擎的「不同外殼」。你在終端機開啟的任務會話,下午切換進 VS Code 可以無縫接續,所有的記憶、修改紀錄與工具狀態完全互通。

本章將剖析三大主流編輯環境的整合方案,並介紹標準化代理協議 ACP(Agent Client Protocol),助你在圖形化審閱與終端機極速生產力之間取得完美平衡。

🧭 決策流程樹:第 13 章:IDE 整合 — VS Code 外掛與介面聯動

VS Code / Cursor

JetBrains 系列 (IDEA/PyCharm)

Neovim / Emacs

純終端派 / 遠端伺服器

細緻重構 / 逐行 Diff 審查

長耗時測試 / 批次腳本跑動

選擇 IDE 整合與開發介面

你當前主力使用的編輯環境?

安裝 OpenCode 官方擴充套件
啟用分割視圖 (Split View)

安裝 JetBrains 官方外掛
整合原生 VCS 比對工具視窗

啟動 ACP 標準伺服器
執行 opencode acp 協定通訊

直接使用 TUI / CLI 本尊
無須安裝任何編輯器外掛

當前執行的任務性質?

切換至 IDE 分割視圖
視覺化行級對比、精準 Accept/Reject

切換回終端機 TUI/CLI
釋放編輯器資源,後台專注推進

開發心流無縫串聯

步驟化 SOP 實戰詳解

1. 觸發情境:VS Code 與 Cursor 的分割視圖視覺審查

2. 觸發情境:JetBrains 家族原生工具鏈無縫嫁接

3. 觸發情境:Neovim 與 Emacs — 走開放標準 ACP 協議

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 14 章:程式碼探索與理解 — 陌生專案巡航策略

在軟體工程現場,最考驗工程師功力的場景往往不是「從零寫全新功能」,而是「接手一個數萬行、沒有文檔的前人遺產代碼庫」。如果你試圖從第一行逐檔翻閱,不出半天就會陷入資訊過載的泥淖;若完全依賴直覺修改,更可能觸發隱蔽的副作用與架構災難。

面對陌生專案,正確的做法是將 AI 當成「全天候待命的資深引路人」。OpenCode 提供了專屬的唯讀子代理 explore,它能像無人偵察機一樣在專案上空盤旋,為你繪製全景地形圖,並沿著具體業務脈絡抽絲剝繭。

本章將提供一套標準化、高重現性的「四步巡航法」與「三項依賴健檢」,助你在半小時內建立足夠動手修改的精確心智模型,同時恪守「信任但要驗證」的工程防線。

🧭 決策流程樹:第 14 章:程式碼探索與理解 — 陌生專案巡航策略

需要修改架構

日常功能維護

接手陌生或遺產代碼庫

第 1 步:環境跑通
閱讀 README 與配置,在本地跑起核心服務

第 2 步:調派 explore 唯讀代理畫全景圖
盤點技術棧、頂層目錄職責與程式入口

第 3 步:端到端鏈路追蹤
挑選一條核心業務路徑 (如建立訂單)
要求輸出包含【檔名與行號】的精確清單

是否需要進行深層架構重構?

三項深度架構健檢:
1. 依賴方向健檢 (底層不可反向依賴上層)
2. 循環依賴偵測 (模組環狀引用圖解)
3. LSP 引用影響評估 (改動前測受害面)

第 4 步:知識沉澱
將架構心得與調用鏈寫入 AGENTS.md
並於 docs/ 沉澱 Mermaid 流程圖

巡航完成,胸有成竹進入開發

步驟化 SOP 實戰詳解

1. 觸發情境:初次 Clone 專案之四步快速巡航

2. 觸發情境:架構腐化排查與循環依賴健檢

3. 觸發情境:實踐「信任但要驗證」的審查原則

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 15 章:功能開發 — 規範驅動與循序漸進

功能開發是 AI 程式輔助最耀眼的舞台,卻也是實務上最容易引發翻車災難的重災區。翻車的根本原因往往不是模型智商不足,而是「工程流程失控」——直接對 build 代理下達「做個 CSV 匯出功能」,等於將「架構選型」、「改動邊界」、「異常防護」與「驗收標準」全部讓渡給 AI 的隨機直覺。其結果通常是:AI 興奮地順手重構了周邊五個模組、引進不必要的肥大依賴,最後留下一地無法通過編譯的爛攤子。

合格的工程開發就像一場嚴謹的外科手術:動刀之前必須先做詳細的術前會診。在 OpenCode 中,這條鋼鐵紀律體現為「Plan 模式先行」與「小步快跑迭代」。

本章將傳授如何運用三層提示詞結構引導唯讀的 plan 代理輸出高品質工程藍圖,並透過四道審查防線與收尾三部曲,確保每一次功能交付都精準、可控且具備百分之百的測試防護。

🧭 決策流程樹:第 15 章:功能開發 — 規範驅動與循序漸進

發現缺陷或範疇膨脹

審查核准通過

發現偏差

正常推進

尚有後續步驟

全部步驟完工

收到全新功能開發需求

第 1 步:切換至 plan 唯讀代理
下達具備【需求+背景+限制】三層提示詞

plan 代理輸出結構化實作藍圖
(改動檔案、邏輯摘要、測試方案、潛在風險)

進行計畫四道防線審查:
1.範圍合理? 2.測試具體?
3.風險誠實? 4.有無偷渡重構?

第 2 步:切換至 build 代理執行
前置驗收指令,拆解為最小可驗證單元

單步執行修改代碼

實作過程中是否發現意外分支或偏離計畫?

立即暫停!向人類回報並重擬確認
嚴禁 AI 自作主張擅自繞路

執行單步驗收指令 (pytest / tsc / curl)
全綠後即刻建立 Git 快照提交

所有拆解步驟是否全數完工?

第 3 步:收尾三部曲
1. 跑全量測試 2. 人類端到端操作 3. 規範化 Commit

功能零回退交付上線

步驟化 SOP 實戰詳解

1. 觸發情境:Plan 模式需求結構化提煉(三層結構法)

2. 觸發情境:工程實作計畫之四道審查防線

3. 觸發情境:迭代小步快跑與收尾三部曲

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 16 章:程式碼重構 — 安全重構流程與防護

你是否曾遇到過這種驚悚場面:請 AI 幫忙「把這個兩千行的控制器整理乾淨」,它在三十秒內重構了模組、抽出了七個類別,還貼心地回報「所有測試均通過」;直到系統上線,訂單金額全部變成零,你才驚覺它不僅修改了邏輯,甚至順手把斷言失敗的測試代碼也改了?

在軟體工程中,重構的定義始終是「在不改變外部可觀察行為的前提下,改善程式碼內部結構」。這聽起來簡單,但在自主代理的時代,重構卻是翻車率最高的深水區。

AI 代理就像一位手腳快如閃電但缺乏痛覺神經的外科醫生。只要你沒有架設好連續心電圖(行為特徵測試)並釘死安全防線(Git 快照與測試凍結令),它很容易在整理血管時順手切斷動脈。要駕馭 AI 完成高品質重構,關鍵不在於祈求模型變聰明,而在於建立鋼鐵般的工程紀律:精準分級重構策略、測試裁判絕對凍結、小步遷移與嚴禁行為夾帶。

🧭 決策流程樹:第 16 章:程式碼重構 — 安全重構流程與防護

低風險:命名/搬檔/抽函式

中風險:分層調整/拆模組/換模式

高風險:資料格式異動/介面契約修改

測試通過

尚未完結

全部就緒

測試轉紅

第 1 次

>= 2 次

🎯 啟動重構任務

評估重構風險光譜等級?

【機械式重構】
委派 AI + 啟用 LSP 引用查找
自動更新全域調用鏈

【結構性重構】
拆解為單一模組遷移序列
禁止一口氣全盤大爆炸重構

【行為邊界重構】
強制實施特徵測試釘住現狀
全綠前嚴禁動工修改代碼

建立防護網:確保 Git 工作區乾淨
建立專屬分支 refactor/*

下達最高禁令:tests/ 目錄絕對凍結
測試失敗視同代碼錯誤,禁改測試

執行單一步驟遷移

自動化測試是否維持全綠?

小步原子提交
git commit -m 'refactor: ...'

全部遷移序列是否完成?

發起獨立 Refactor PR
嚴格禁止夾帶任何新功能

連續失敗次數?

要求 AI 修正代碼
聚焦因果邏輯,嚴禁碰測試

立即觸發熔斷回退
git checkout / bisect 回退至上一快照

重新審視重構粒度與架構假設

步驟化 SOP 實戰詳解

1. 依風險光譜劃分重構策略

2. 架設雙層防護安全網

3. 推進遷移序列與故障熔斷機制

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 17 章:除錯與問題修復 — 根因定位與驗證閉環

當線上系統突然噴出 500 錯誤時,工程師最常見的反射動作是什麼?把整段 Stack Trace 複製貼進 AI 對話框,然後敲下一句:「幫我修好它」。

結果往往是一場災難:第一輪對話,AI 自作主張加了個全域 try-except 吞掉例外;第二輪對話,它把資料庫連線逾時改大十倍;到了第三輪,它開始胡亂修改業務邏輯,整個系統被改得面目全非,而真正的 Bug 卻依然安好無恙。

除錯是衡量工程師駕馭 AI 功力的終極試金石。

面對同一個 Bug,頂尖高手只需三個精確回合就能直搗核心;新手卻會帶著 AI 在迷宮裡兜圈子、越陷越深。這個巨大落差的根本原因不在於背後的大模型有多聰明,而在於你有沒有逼迫 AI 遵循嚴謹的「科學方法」。

一流的名醫絕不會在病人剛喊胃痛的瞬間就立刻開止痛藥,因為壓制症狀往往會掩蓋真正致命的病灶;名醫會先觀察體徵、提出多種可能病因、安排成本最低的檢驗,確認根因後才精準下刀。在 OpenCode 的除錯實戰中,第一條也是最重要的一條鋼鐵律法是:診斷與治療必須徹底分離。

🧭 決策流程樹:第 17 章:除錯與問題修復 — 根因定位與驗證閉環

資訊不足/無法判斷

定位完成

否,不完全符合

是,完全符合

修復成功

仍未解決

第 1 次

>= 2 次

🐛 遭遇 Bug 與異常報錯

組裝症狀最小完備集(五件套)
預期/實際/重現步驟/環境/已知變化

下達科學診斷指令(嚴禁直接改碼)
1. 提出 3 個最可能假設
2. 設計最小成本驗證實驗
3. 依成本由低到高排序

執行驗證實驗(指令/日誌檢驗)

是否定位出疑似根因?

強化可觀測性
注入結構化日誌/時間戳/Trace ID
嚴禁無依據瞎猜

是否通過根因三重檢驗?
1. 完整解釋所有症狀?
2. 能穩定實驗重現?
3. 修復後無衍生副作用?

退回假設清單,排除偽因

擬定最小侵入性修復方案
由人類確認核准後動工

執行修復代碼寫入

回歸測試與重現步驟是否全綠?

補齊防退化單元測試
建立提交並記錄閉環

🏆 閉環達成:根因根除

連續修正失敗次數?

分析新症狀與失敗原因

觸發防瞎槍熔斷機制!
全面停止修改代碼
復原工作區,重新檢討假設列表

步驟化 SOP 實戰詳解

1. 組裝症狀最小完備集(五件套)

2. 下達科學診斷指令(禁止直接開藥)

3. 根因確認的三重黃金標準

4. 啟動防瞎槍條款與可觀測性強化

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 18 章:Git 與 GitHub 整合 — 版本控制與 PR 自動化

在漫長的開發日常中,許多工程師把最寶貴的專注力消耗在最枯燥的瑣事上:下班前看著暫存區混雜的數十個檔案,為了寫出體面的 Commit Message 想破頭,最後草草打了句「update code」;或者在 GitHub 審查同仁動輒上千行的 PR 時,花了大半天挑出拼字錯誤、邊界遺漏與缺少單元測試,累得精疲力竭,反而沒精力審視最關鍵的系統架構與業務取捨。

如果 Git 是保護程式碼的安全網,那麼 OpenCode 與 GitHub 的深度整合,就是將這個安全網升級為「全天候自動化巡邏隊」。

OpenCode 絕不僅是一個本地編輯輔助工具,它能化身為高效率的審查員、工單處理員與提交文案大師。這就像機場安檢系統的完美分工:AI 擔任 X 光快速透視機,在第一線過濾掉語法瑕疵、遺漏測試與潛在安全破洞;人類資深工程師則擔任海關專家,專注於全局戰略、業務契合度與系統演進方向。雙方各展所長,才能打造堅不可摧的工程護城河。

🧭 決策流程樹:第 18 章:Git 與 GitHub 整合 — 版本控制與 PR 自動化

是,混雜多項修改

否,單一原子變更

是

否

存在漏測或風格違規

初審全數合規

📥 收到需求或 Bug 工單

一鍵領單:opencode pr <編號>
自動拉取 Issue 上下文並建立分支

執行開發與測試驗證

工作區是否存在多類混雜變更?

分批語意暫存(Selective Staging)
委派代理按 feat/fix/docs/refactor 拆分
產出標準 Conventional Commits 訊息

產生規範化 Commit Message
type: 說明為什麼修改

執行 Push 推送前安全檢查

是否觸及高危險操作?
(git push / git reset --hard)

觸發權限防線:維持 ask 互動授權
嚴格禁止 AI 靜默自動推送

發起 GitHub Pull Request

第一道防線:AI 結構化初審
PR 留言觸發 /opencode 帶具體視角
(安全風險 / 效能極限 / 邊界測試)

AI 初審是否揪出明顯瑕疵?

作者依建議就地修復並補推

第二道防線:人類工程師終審
專注於架構設計、業務邏輯與整體權衡

🏆 合併交付:Merge Pull Request

步驟化 SOP 實戰詳解

1. 建立「AI 初審 + 人類終審」雙軌流水線

2. 工單領取與分支環境一鍵切換

3. 混雜暫存分批語意化提交

4. 高危操作防護與權限邊界

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 19 章:團隊協作 — 共享規範與團隊最佳實踐

一個工程師使用 OpenCode,就像獨行劍客快意恩仇;但當十個人、甚至上百人的研發團隊同時引進 AI 代理時,若缺乏統一的協作架構,往往會演變成一場災難。

有人習慣用函數式風格,有人偏好物件導向;每個人的 AI 代理產出南轅北轍的代碼風格;更可怕的是,有資淺成員在排查問題時,順手使用 /share 將包含公司商業機密與內部 IP 的會話發布至公開網路,引發嚴重的資安合規危機。

獨奏講求個性,交響樂團則依賴總譜。

要在團隊中發揮 OpenCode 的十倍威力,關鍵在於「放大正確做法、封死外流漏洞」。本章的核心準則只有一句話:「能版控的都進版控,不能外流的絕對不出門」。透過分層設定架構、嚴謹的文件治理機制,以及靈活的本機推論分級,讓整個團隊用出同一個頂尖大腦的穩定水準。

🧭 決策流程樹:第 19 章:團隊協作 — 共享規範與團隊最佳實踐

團隊規範/指令/共用技能

個人主題/快捷鍵偏好

API Token/私鑰憑證

高度敏感/禁止外流

一般商務專案

👥 團隊協作與資產治理

評估配置資產屬於何種類型?

【專案層版控】存入 .opencode/
opencode.json, skills/, commands/
納入 Git 版控並強制走 PR 審查

【個人層隔離】存入 ~/.config/opencode/
本機獨立保留,嚴禁提交進儲存庫

【敏感憑證】存入 auth.json 或 .env
永久列入 .gitignore,禁止進入版控

AGENTS.md 與技能庫治理
1. 變更一律走 PR 審查
2. 指定專責 Owner 每季巡檢
3. 技能命名規範:'領域-動作'

專案是否涉及敏感機密或資安法規?
(如金融/醫療/內部專有代碼)

防外流硬性配置:
1. 'share': 'disabled' 封死公開會話
2. 敏感核心切換本地模型 (Ollama/vLLM)

維持雲端旗艦模型
精準配置權限白名單

執行新成員 Onboarding 流程

1. 釘選 OpenCode 團隊基準版本
2. Git Clone 自動就位配置與規範
3. 由代理導讀 AGENTS.md 總結慣例
4. 離職即時撤銷 PAT 與授權

🏆 團隊就緒:一致水準與資安防線

步驟化 SOP 實戰詳解

1. 三層資產分流與版控策略

2. AGENTS.md 與共用技能庫長效治理

3. 敏感專案分享禁令與本地模型切換

4. 新人快速 Onboarding 與憑證衛生守則

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 20 章:效能優化 — Token 節流與響應加速

在長時間使用 AI 代理的過程中,許多工程師都經歷過這種令人崩潰的轉折:在對話剛開始的前十輪,AI 聰明敏捷、心領神會;但當對話累積到四、五十個回合後,它卻開始頻繁「失憶」——重複詢問十幾分鐘前已經確認過的架構、忘記剛剛定下的命名規則,甚至連修改單行代碼都頻頻報錯。更糟糕的是,到了月底打開雲端供應商帳單,那串龐大的費用數字更是讓人倒吸一口涼氣。

這不是什麼靈異現象,而是「資訊密度崩塌」與「注意力稀釋」的必然結果。

大語言模型的注意力視窗就像一張辦公桌。如果桌面上堆滿了數百條未經篩選的終端輸出、冗長的日誌碎片與歷史雜訊,要從中精確翻出一張便利貼上的關鍵約束,模型自然會捉襟見肘。在自主代理的實戰中,「效能」包含兩個不可分割的面向:一是上下文的純淨度(維持高智商),二是成本與速度的結構(守住預算與敏捷度)。優化效能,就是學會聰明地管理上下文,並建立嚴格的任務選型矩陣。

🧭 決策流程樹:第 20 章:效能優化 — Token 節流與響應加速

架構設計 / 核心疑難根因分析

常規功能開發 / 結構性重構

批次改名 / 格式清洗 / 樣板產生

會話命名 / 內部摘要提取

是,出現失焦跡象

否,運作正常

逼近上限

健康綠燈

⚡ 任務進場:效能與成本評估

評估任務類型與出錯代價?

【旗艦模型】(高階推理)
出錯代價極大,嚴禁在此省錢
以高智力杜絕生產事故

【中高階模型】(標準主力)
兼顧代碼穩定性與合理成本

【輕量快速模型】(邊緣/高速)
模式固定,秒級響應,省時節流

【超平價模型】(系統微型)
海量低階任務,成本趨近於零

會話運行監控:注意力健康度檢查

是否觸發上下文過載三大警訊?
1. AI 開始重複犯剛剛糾正過的錯?
2. 回應速度急遽下降?
3. 人工已難以追溯歷史結論?

主動換線:優雅轉移會話
1. 提煉結論存入 Markdown 計畫檔
2. /sessions 歸檔並開啟全新乾淨對話
3. 外部化記憶體:讀檔恢復極簡脈絡

是否逼近 95% 自動壓縮線?

系統觸發自動壓縮 (Compaction)
(警惕:保底機制,部分細節不可逆)

維持乾淨會話推進任務

定期財務與用量對帳
執行 opencode stats 分析 Token 分布

🏆 效能最佳化:高智能、零浪費、極速響應

步驟化 SOP 實戰詳解

1. 落地「任務 × 成本」模型選型矩陣

2. 主動上下文管理「四神技」

3. 識別上下文過載「三大警訊」

4. 執行 opencode stats 定期財務對帳

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 21 章:安全與隱私 — 金鑰防護與敏感資料隔離

當我們將 AI 代理引入專案開發時,我們實質上交出了一部分的系統主控權。一個具備代碼修改、檔案寫入與終端機執行能力的代理,究竟是我們專屬的資深外腦,還是一個隨時可能因為幻覺而抹掉資料庫、推爆 Production 環境的隱形實習生?

這不是危言聳聽。給予 AI 代理的權限,本質上就是擴大了系統的攻擊面。如果缺乏嚴謹的權限設計與隔離機制,一次疏忽的授權就可能導致金鑰外洩或災難性的資料覆寫。反之,若過度恐懼而全面開啟確認提示,開發者又會迅速陷入「確認疲勞」(Confirmation Fatigue),最終習慣性地對所有請求按同意,讓安全防線形同虛設。

真正的工程智慧,在於建立一套「縱深防禦」(Defense in Depth)體系。權限控制如同保鑣門禁:唯讀檢查與單元測試自由放行、具備對外副作用的操作逐項詢問、毀滅性破壞指令一律永久焊死;在資料隱私層面,落實「敏感代碼走本地、通用邏輯走雲端」的分級路由;在架構層面,嚴密防範本機 HTTP 伺服器的跨來源未授權調用。本章將為你梳理經實戰校準的安全基線與部署架構。

🧭 決策流程樹:第 21 章:安全與隱私 — 金鑰防護與敏感資料隔離

唯讀操作 (read / grep / glob)

檔案修改 (edit / write)

命令執行 (bash)

外部網路 (webfetch / MCP)

涉及 .env / 憑證 / 密鑰

一般原始碼檔

高危指令 (rm -rf / drop table / git reset --hard)

唯讀與測試 (git status / git diff / npm test)

對外推送或部署 (git push / deploy / kubectl)

不可信來源

白名單 API

批准

駁回

📥 收到代理工具調用請求

調用工具類型判定

🟢 allow: 自動放行,確保探索流暢

修改範圍是否涉及敏感設定?

檢查命令特徵與破壞性

是否存取未授權網域或服務?

🔴 deny: 嚴禁寫入金鑰檔案

🟢 allow / ask: 依專案權限規則套用

🔴 deny: 徹底焊死,絕對拒絕

🟢 allow: 自動放行無副作用命令

🟡 ask: 必須人工二次確認

🔴 deny: 攔截潛在提示詞注入

🟢 allow: 放行網路抓取

⚡ 執行工具操作

開發者是否手動批准?

🛑 終止操作並記錄審計軌跡

步驟化 SOP 實戰詳解

1. 建立經過實戰校準的基準權限設定檔

2. 本地端點部署與資料不出門分級路由

3. 服務繫結與縱深防禦防範 CVE 攻擊

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

第 22 章:問題排除 — 常見故障診斷排查手冊

無論多麼精密的開發工具,在面對紛繁複雜的作業系統環境、多變的網路條件與多元的依賴生態時,總會有鬧脾氣或意外罷工的一天。當終端機突然吐出一段刺眼的紅字報錯,或是按下 Enter 後代理陷入無止盡的載入旋轉,甚至滿心期待產出的代碼改動莫名消失在虛空中,你的第一反應是什麼?是盲目重開機、隨意重裝套件,還是擁有一套條理分明、直搗病灶的系統化除錯思維?

問題排除不是玄學,而是如同急診室醫師的分診作業:面對病患,絕不能一看到發燒就盲目下重藥,而必須先監測基本生命徵象(檢查 PATH 與系統進程)、調閱病歷與儀器數據(查閱 DEBUG 級別日誌)、並逐一隔離各個子系統的健康狀態(透過 /status 檢視 LSP 與 MCP 連線)。

本章是你在使用 OpenCode 征戰工程現場時的隨身急救包。我們將高頻出現的典型故障歸納為速查矩陣,剖析日誌挖掘與內部體檢工具的調用手法,並給出高效求助與會話脫敏分享的最佳實踐,助你在面對任何突發異常時,都能臨危不亂、迅速重返高效節奏。

🧭 決策流程樹:第 22 章:問題排除 — 常見故障診斷排查手冊

命令列無法啟動

啟動後介面停滯 / 連線中斷

畫面文字或圖示異常

擴充能力無法運作

代碼行為不符預期

是

是

是

是

是

已解決

仍無法定位

🚨 遭遇 OpenCode 異常狀態

故障發生在哪個階段?

終端回報 command not found?

卡在載入畫面或回覆中途斷線?

TUI 出現亂碼或圖示變方框?

LSP 沒反應或 MCP 工具未出現?

設定沒生效或改動改錯地方?

🔧 排查環境變數 PATH 與全域 npm bin 目錄

🌐 執行 opencode providers 檢查金鑰與 API 網路配額

🔤 終端機設定改用 Nerd Font(如 MesloLGS NF)

🩺 輸入 /status 檢查各子系統就緒與索引狀態

階層比對: 查照七層設定優先序與 /sessions 上下文

執行診斷與驗證

問題是否順利排除?

🏆 恢復正常開發流程

開啟 DEBUG 日誌: opencode --print-logs --log-level DEBUG

執行 opencode doctor 進行全系統體檢

使用 /share 生成脫敏會話並提交 GitHub Issue

步驟化 SOP 實戰詳解

1. 高頻常見故障速查與快速處置

異常症狀 最可能成因 標準處置程序
command not found 執行檔目錄未加入系統 PATH 重啟終端機視窗;若為 npm 安裝,檢查 npm config get prefix 之 bin 路徑是否納入 PATH。
啟動卡在載入畫面 模型供應商連線失敗或憑證無效 檢查網路連線與代理伺服器;執行 opencode providers 確認 API Key 授權狀態。
回覆中途斷線 上游 API 波動或會話上下文過長 輸入重試;若會話過於冗長導致 Token 溢出,以 /new 開啟新會話接續。
TUI 圖示變方框/亂碼 終端機未啟用支援圖示的 Nerd Font 安裝並在終端機字型中切換為 Nerd Font(如 FiraCode NF 或 JetBrainsMono NF)。
改動沒套用或改錯檔案 串連到舊歷史脈絡或不同檔案版本 輸入 /sessions 確認當前會話歷史,透過 git diff 重新檢視差異變更。
MCP 工具未出現 外部 MCP 伺服器啟動崩潰或未啟用 執行 opencode mcp list 與 /status;必要時執行 mcp debug 觀察啟動標準輸出。
LSP 語意感應沒反應 語言伺服器未安裝或大型專案索引中 輸入 /status 查看 LSP 就緒狀態;若為超大型專案,耐心等待背景符號索引完畢。
設定檔改動沒生效 設定值被更高優先順序的階層覆蓋 依循七層覆蓋順序(CLI 旗標 > 代理 > 指定檔 > 專案 > 全域)逐級比對。

2. 日誌挖掘與系統結構化深度診斷

3. 社群求助與會話脫敏分享規範

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

附錄 A:快速鍵完整對照 — 終端快捷操作全覽

終端機開發者追求的最高境界,是思維與代碼之間的「零阻力傳遞」。你是否依然在鍵盤與滑鼠之間頻繁擺盪?為了引用一個檔案路徑,不得不在終端機與檔案總管之間來回切換;或者在代理滔滔不絕產生無效代碼時,手忙腳亂找不到緊急煞車鍵?

熟練掌握 OpenCode 的快捷鍵體系,就像樂器演奏者將音階刻入指尖肌肉記憶。當你不必停下來思考「該按哪裡」,而是憑藉直覺在 Plan 與 Build 模式之間秒級切換(Tab)、敲下 @ 瞬間定位專案深處的目標檔案、按下 Esc 果斷勒住代理韁繩時,AI 代理才真正從一個「外部命令工具」昇華為你大腦思維的自然延伸。

本附錄收錄 OpenCode 終端介面(TUI)的完整快捷鍵矩陣,並詳解如何透過 tui.json 的 Leader Key 前導鍵機制量身打造極速盲打鍵位,助你徹底釋放鍵盤黑客的雙手極限。

🧭 決策流程樹:附錄 A:快速鍵完整對照 — 終端快捷操作全覽

輸入與檔案引用

模式與角色調度

流程煞車與生命週期

會話分支與歷史探索

⌨️ 終端互動情境

當前想要執行的操作情境?

輸入技巧快捷操作

模式與代理即時切換

全域控制與中斷離開

會話導航與並行分岔

引用檔案: 輸入 @ 觸發模糊搜尋

調用指令: 輸入 / 呼出命令清單

多行輸入: 行末加反斜線 或進入編輯器

切換 Build / Plan 模式: 按 Tab 鍵

切換底層大模型: 輸入 /models 選單

調度子代理: 選單切換或 Leader 快捷鍵

即時勒馬: 按 Esc 終止代理當前生成

清空輸入列: 按一次 Ctrl+C

退出程式: 連續按兩次 Ctrl+C

開闢新會話: 輸入 /new

檢視歷史軌跡: 輸入 /sessions

CLI 平行分岔: opencode --session ID --fork

⚡ 肌肉記憶達成,工作流流暢運轉

步驟化 SOP 實戰詳解

1. 全域操作與核心控制鍵位速查

快捷鍵 核心作用 實戰情境與注意事項
Enter 送出目前輸入 提交當前指令或確認對話框選項。
Esc 中斷執行 / 關閉浮層 代理生成偏離方向時一秒急煞;或快速退出浮動彈窗。
Ctrl+C(按一次) 清空當前輸入內容 撤銷未發送的長篇文字草稿,避免手動退格。
Ctrl+C(按兩次) 徹底離開 OpenCode 安全終止 TUI 服務進程並返回系統 Shell。
Tab 切換 Build / Plan 模式 在「動手寫代碼(Build)」與「架構分析規劃(Plan)」間無縫切換。

2. 輸入技巧與高效檔案上下文掛載

3. 會話管理與歷史分岔快捷指令

4. 客製化鍵位綁定與 Leader Key 配置

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

附錄 B:設定選項速查 — 設定檔欄位與參數字典

「為什麼我明明在全域設定裡開啟了這個外掛,在專案裡卻依然被阻擋?」
「為什麼修改了 Bash 權限規則,代理執行時依然跳出確認提示?」

如果你在使用 OpenCode 時產生過上述困惑,那麼九成以上的機率,是你遭遇了設定檔的「分層繼承與覆蓋衝突」。OpenCode 的設定架構採用嚴謹的 JSONC 規格(支援行內註解),並依循清晰的權限階層與語意優先序。它就像一套具備地方自治權的法規體系:中央(全域層)奠定個人基本偏好,而駐紮於程式碼庫根目錄的專案層,則擁有維護團隊安全邊界的最終裁判權。

理解設定檔的欄位字典與覆蓋邏輯,是從「單純使用者」躍升為「工程配置專家」的必修課。本附錄全面收錄 OpenCode 核心設定區塊(permission、mcp、provider、share、tui)的語法典範與欄位字典,並提供一套精確的「七層優先序排查口訣」,讓你的每一行配置都能精準生效。

🧭 決策流程樹:附錄 B:設定選項速查 — 設定檔欄位與參數字典

生效正常

未生效 / 被覆蓋

是:被高層覆蓋

否:語法或拼寫錯誤

⚙️ 檢查設定生效狀態

修改的設定項是否如預期生效?

✅ 運作無誤

開始沿七層優先序由高至低排查

1. CLI 指令列旗標 (如 --model, --share)

2. 代理專屬定義 (Agent frontmatter 定義)

3. 額外指定設定檔 (CLI --config 注入)

4. 專案級設定檔 (.opencode/opencode.json)

5. 系統 XDG 目錄設定 (~/.config/opencode/...)

6. 全域使用者設定 (~/.opencode.json)

7. 系統底層內建預設值 (Default fallback)

是否在更高層發現衝突欄位?

修正或移除高層覆蓋參數,確保權限與行為一致

校驗 JSONC 鍵名、萬用字元與資料型態

🔄 重新載入並驗證設定生效

步驟化 SOP 實戰詳解

1. 核心設定區塊與功能速查總覽

設定區塊 核心職責 語法結構型態 預設覆蓋原則
permission 宣告各工具與命令的 allow / ask / deny 權限 鍵值對(字串或物件,支援萬用字元) 專案層嚴於全域層;Deny 具備最高絕對優先級
mcp 註冊本機或遠端 Model Context Protocol 伺服器 物件陣列(宣告 type、command、url 等) 專案層註冊之 MCP 伺服器僅對該專案生效
provider 定義自訂模型供應商與本地推論端點(如 Ollama) 供應商字典(包含 npm 套件、baseURL、憑證) 專案層可釘選專屬模型,覆蓋全域預設值
share 管控會話分享功能與隱私政策 字串(設為 "disabled" 可全面封鎖雲端分享) 企業與涉密專案應在專案層設為 "disabled"
tui 終端介面配色、主題、動畫與前導鍵(Leader Key) 物件(定義 theme、keybinds 等) 個人全域偏好,不建議納入專案版本庫

2. 精細粒度 Permission 權限設定範例

3. MCP 擴展與本地 Provider 配置範例

4. 排查口訣:七層優先序排查大法

當發現設定參數未按預期生效時,請依以下「由高到低」的七層優先序進行排查:
1. CLI 指令列旗標(最高權重,如 --model, --share=disabled)
2. 代理定義 Frontmatter(自訂 Agent Markdown 內宣告的設定)
3. 額外指定設定檔(透過 CLI --config /path/to/custom.json 注入)
4. 專案層設定(專案根目錄 .opencode/opencode.json)
5. XDG 規範路徑(~/.config/opencode/opencode.json)
6. 全域使用者設定(~/.opencode.json)
7. 系統底層內建預設值(最低優先級,程式碼內建 Fallback)

排查原則:只要在較高層級存在同名鍵值,底層的任何設定皆會被無情覆蓋。

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

附錄 C:內建工具列表 — 工具簽章與權限要求

AI 代理究竟如何感知專案程式碼?它真的能像人類工程師一樣「看見」整個程式碼庫嗎?在你的硬碟上,它的一舉一動究竟透過什麼途徑產生實質影響?

答案就在於代理的「手與眼」——內建工具系統(Built-in Tools)。大型語言模型本質上只能輸出文字 Token,但當它被賦予結構化的工具呼叫協議時,它便具備了探索檔案系統、精確修改代碼、執行編譯測試與發起網路請求的實體行動力。理解各類工具的運作機制與權限邊界,就像外科主刀醫師熟悉手術室內的器械清單:read 是精準的內視鏡,grep 是高速定位的超音波探頭,edit 是毫釐不差的顯微手術刀,而 bash 則是唯一的全身麻醉劑兼任意副作用入口。

濫用工具(例如動輒全量讀取大檔案或盲目覆寫整檔)會迅速耗盡上下文視窗並破壞代碼結構;唯有掌握三段式探索與最小特權操作,才能讓代理在安全受控的軌道上發揮最大威力。本附錄全面解析 OpenCode 內建工具的簽章規範、職責分工與對應的權限管制鍵。

🧭 決策流程樹:附錄 C:內建工具列表 — 工具簽章與權限要求

探索與檢索程式碼

修改或建立檔案

執行編譯與指令

抓取外部文件

複雜子任務分流

修改既有檔案

全新檔案建立

匹配 allow

匹配 ask

匹配 deny

🤖 代理接收到工程子任務

任務目標的實體操作類別?

🔍 讀取與檢索工具鏈

✏️ 寫入與編輯工具鏈

⚡ 終端執行工具 (bash)

🌐 網路檢索工具 (webfetch)

👥 委託與規劃 (task / todo)

先用 glob: 模式匹配檔案樹與路徑

再用 grep: 正則搜尋符號與關鍵字

最後用 read: 鎖定特定行號精準讀取

目標檔案是否已存在?

使用 edit: 舊字串替換為新字串 (防覆蓋衝突)

使用 write: 建立新檔 (覆寫前強制 read)

檢查 permission.bash 權限

自動執行 shell 命令並回收輸出

暫停並要求開發者終端確認

底層即時熔斷,拒絕執行

webfetch: 讀取線上文件並轉化純文字

task: 開闢獨立上下文子代理循序處理

🔄 結合 LSP 語意診斷,完成閉環反饋

步驟化 SOP 實戰詳解

1. 內建工具分類字典與權限對照

工具名稱 工具類別 核心功能說明 關聯 Permission 權限鍵 實戰調用最佳實踐
glob 檢索類 依據萬用字元(如 src/**/*.ts)搜尋匹配路徑 內建唯讀(預設放行) 初入陌生專案時,先探查模組結構與目錄樹。
grep 檢索類 透過正規表示式全文搜尋程式碼內容 內建唯讀(預設放行) 快速定位類別定義、函式調用或錯誤字串出現處。
read 檢索類 讀取指定檔案內容,支援特定行號區間切片 內建唯讀(預設放行) 嚴禁整檔傾印大檔案;搭配 grep 鎖定行數後局部切片。
edit 寫入類 以「精確舊字串 → 新字串」進行局部替換 permission.edit 首選代碼修改工具;支援多層比對與失敗復原。
write 寫入類 建立全新檔案或進行整檔完整覆寫 permission.edit 僅用於新建檔案;若覆寫既有檔案,前置必須先調用 read。
bash 執行類 在專案環境執行 Shell 指令並捕獲輸出 permission.bash 唯一的任意副作用入口;必須在設定檔嚴格分級限制。
webfetch 網路類 下載指定 URL 網頁內容並轉為乾淨 Markdown permission.webfetch 查閱官方第三方文件;受網域白名單與權限管控。
task 委託類 開闢全新子會話,將耗時子任務委託子代理 內建架構調度 實現上下文隔離(Context Isolation),避免主會話污染。
todowrite 任務類 寫入並更新多步驟工程任務的待辦事項清單 內建狀態管理 長篇架構重構時,外顯任務進度,防止任務中途遺忘。
todoread 任務類 讀取當前待辦清單,確認剩餘工程項目的進度 內建狀態管理 子代理交接與回報時同步任務驗收狀態。

2. 最佳實踐:高效「三段式」程式碼探索流

3. 精準改寫:edit 與 write 的安全邊界

4. LSP 語意能力的加成閉環

LSP(Language Server Protocol)並非單純的獨立工具,而是貫穿於代理工作流中的底層守護機制。每當代理透過 edit 寫入代碼後,LSP 會自動在背景執行型別檢查與語意診斷。若代理產生的代碼破壞了 TypeScript 型別或引入了未定義變數,LSP 診斷錯誤會立即作為環境反饋(Environment Feedback)送回大模型,驅動代理發起自我修正迴圈。

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️
***

附錄 D:模型供應商比較表 — 選型評估與性價比矩陣

在當前 AI 大模型百家爭鳴的時代,OpenCode 支援了超過 75 家主流與開源模型供應商。從每百萬 Token 數十美金的頂級推理旗艦,到速度驚人、幾美分甚至完全免費的本機推論端點,面對眼花繚亂的型態與價位,工程師最常面臨的決策困惑是:

「我到底該選哪一個模型?」
「是一味追求最貴的最強旗艦,還是為了省錢全盤採用平價模型或本地部署?」

把模型選型比作「工程車隊調度」:建造跨海大橋的核心地基,你必須出動百噸級的重型吊車與深水打樁機(旗艦檔推理模型),若為求省錢派輕型小貨車,只會造成坍塌重來的災難;但在市區穿梭遞送文件、做格式排版或簡單測試,電動機車(輕量檔模型)不僅成本近乎為零,響應速度更遠超笨拙的大吊車;而當運送的是涉及國家安全或最高商業機密的藍圖時,則必須啟用完全隔離在內網基地的武裝裝甲車(本地私有端點)。

真正的架構師,絕不陷入單一模型的宗教崇拜,而是透過「雙軌分流」與「代理層釘選」,讓不同任務在精確的 ROI 甜區運行。本附錄全面盤點主流供應商的實力矩陣,並提供一套經過實戰驗證的選型決策樹與每月對帳 SOP。

🧭 決策流程樹:附錄 D:模型供應商比較表 — 選型評估與性價比矩陣

是:錯誤代價極大

否:可承受探索或具備測試保護

是:資料絕對不出門

否:常規業務或開源代碼

是:高頻固定雜活

否:一般複雜度開發

🎯 收到工程任務需求

任務的錯誤代價是否極高?
(例如核心架構設計 / 動到 Production / 難以回退)

🏆 雲端頂級旗艦檔
(Claude 3.5 Sonnet / GPT-4o / Gemini 1.5 Pro)

代碼是否涉及最高商業機密或法規監管?

🔒 本地私有化推論
(Ollama / vLLM / LM Studio)

任務是否高頻且模式高度固定?
(例如批次上型別 / 單元測試樣板 / 代碼解釋)

⚡ 輕量快速檔
(Gemini Flash / Claude Haiku / GPT-4o-mini)

⚖️ 平衡檔起步
(中高階模型觀察一週,依實測校準)

📌 代理層模型釘選 (Subagent Pinning)

📊 每月執行 opencode stats 成本與 Token 對帳

🏆 達成效率與成本最佳化閉環

步驟化 SOP 實戰詳解

1. 主流模型供應商分類比較矩陣

注意:大模型版本迭代與定價調整極為頻繁,下單前請以各供應商官方控制台現價為準。

類別一:雲端旗艦檔(低頻高難度任務首選)
供應商 / 系列 代表型號 相對成本 核心技術強項與適用場景
Anthropic Claude 3.5 Sonnet / Opus 高 程式碼綜合能力天花板。超強長上下文理解、複雜多檔協調重構、精準遵循架構規範。
OpenAI GPT-4o / o1 系列 高 深層邏輯推理。演算法推導、邊界條件攻防、完善成熟的生態工具鏈支援。
Google Gemini 1.5 Pro 中高 百萬超長上下文視窗。支援將整個大型 Codebase 或厚重架構規格書一次性載入分析。
類別二:性價比與快速檔(高頻日常與大量批次任務)
供應商 / 系列 代表型號 相對成本 核心技術強項與適用場景
Google Gemini 1.5 Flash 極低 速度與成本的極致平衡。每秒生成速度極快,極度適合代碼探索、註解產生、大量測試樣板生成。
Anthropic Claude 3.5 Haiku 低 精悍迅捷。具備出色的輕量級推理與上下文感知,適合日常快速對話與微小修復。
OpenAI GPT-4o-mini 低 平價穩定。響應延遲極低,廣泛適用於日誌清洗、正則產生與語意分類。
類別三:本地私有推論(資料不出門與離線開發)
部署方案 運作形態 部署難易度 核心特點與定位
Ollama 本機背景服務 極簡(一鍵安裝) 個人與小團隊首選;模型庫生態完善,OpenCode 以 OpenAI 相容介面即插即用。
vLLM 企業級推論伺服器 中高(需 Linux/GPU) 高併發高吞吐推論;支援 PagedAttention,企業內網私有雲集權部署首選。
LM Studio 桌面圖形化軟體 極簡(GUI 介面) 本地視覺化測試各類開源權重(如 Qwen2.5-Coder、DeepSeek-Coder)的最佳沙盒。

2. 代理層模型釘選(Subagent Pinning)

3. 數據化對帳:每月 opencode stats 審計

行動檢核清單(Checklist)


⏮️ 上一章 | 🏠 返回目錄 | 下一章 ⏭️