3.1 設定檔概覽
OpenCode 的設定集中於 opencode.json 這個檔案。它採用標準 JSON 格式,包含一個 $schema 欄位以提供編輯器自動補全與驗證支援。
多層級設定優先順序
OpenCode 的設定採用三層級結構,從高到低依次為:
opencode.json,僅作用於當前專案。適合每個專案獨有的設定。
~/.config/opencode/opencode.json,作為所有專案的基礎設定。
當多個層級同時存在時,專案層級會覆蓋遠端層級,遠端層級會覆蓋全域層級。這種設計讓你可以將通用設定放在全域,而為每個專案保留彈性調整的空間。
opencode config show 可以查看當前生效的完整設定。
3.2 opencode.json 完整範例
以下是一個完整的 opencode.json 設定檔,展示了常用的設定項目:
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4",
"permission": {
"*": "ask",
"bash": "allow",
"read": "allow",
"write": "ask"
},
"theme": "dark",
"keybind": {
"toggleTheme": "ctrl+t",
"openPanel": "ctrl+p",
"newSession": "ctrl+n"
},
"editor": {
"default": "code",
"wrap": 80
},
"variables": {
"API_KEY": "$ENV_API_KEY",
"PROJECT_ROOT": ".project-root"
}
}
各欄位說明
| 欄位 | 型別 | 說明 | 範例值 |
|---|---|---|---|
$schema |
string | JSON Schema 位址,提供編輯器驗證與自動補全 | "https://opencode.ai/config.json" |
model |
string | 預設使用的 LLM 模型 | "anthropic/claude-sonnet-4" |
permission |
object | 工具執行權限策略 | {"*": "ask", "bash": "allow"} |
theme |
string | UI 主題(light / dark) | "dark" |
keybind |
object | 自訂快捷鍵綁定 | {"toggleTheme": "ctrl+t"} |
editor |
object | 外部編輯器設定 | {"default": "code"} |
variables |
object | 自訂變數(支援環境變數參考) | {"KEY": "$ENV_MY_KEY"} |
3.3 權限系統
OpenCode 的權限系統讓你可以精細控制 AI 代理能夠執行的操作。每個工具可以設定三種權限等級:
| 權限值 | 行為 | 適用場景 |
|---|---|---|
allow |
自動允許,不詢問 | 你完全信任的操作(如讀取檔案) |
ask |
執行前詢問使用者 | 需要謹慎的操作(如寫入檔案、安裝套件) |
deny |
直接拒絕執行 | 你想禁止的操作(如網路請求) |
在設定中使用萬用字元 * 來設定全域預設值:
{
"permission": {
"*": "ask", // 所有工具預設為詢問
"read": "allow", // 讀取檔案自動允許
"bash": "allow", // Shell 命令自動允許
"write": "ask" // 寫入檔案需要確認
}
}
bash 或 write 設為 allow。保持「詢問」模式可以讓你在 AI 執行可能造成影響的操作前有機會審查。
3.4 變數系統
OpenCode 支援在設定檔中使用變數,讓你可以動態參考環境變數或檔案內容:
{
"variables": {
"OPENAI_KEY": "$ENV_OPENAI_API_KEY",
"PROJECT_NAME": ".project-name"
}
}
變數參考有兩種形式:
$ENV_前綴 — 參考環境變數,例如$ENV_OPENAI_API_KEY會讀取OPENAI_API_KEY環境變數的值- 一般文字 — 參考檔案路徑(相對於專案根目錄),OpenCode 會讀取該檔案的內容作為值
變數可以在 opencode.json 的任何欄位中使用 ${變數名稱} 語法來引用:
{
"variables": {
"MY_KEY": "$ENV_MY_SECRET_KEY"
},
"model": "openai/gpt-5.2",
// 在其他欄位中引用變數(語法範例)
"custom_header": "${MY_KEY}"
}
3.5 AGENTS.md:專案自訂指令
如果說 opencode.json 是 OpenCode 的「系統設定」,那麼 AGENTS.md 就是它的「行為指南」。這個 Markdown 檔案位於專案根目錄,用來告訴 OpenCode 你的專案慣例、技術選擇與開發偏好。
你可以透過 /init 指令快速產生 AGENTS.md:
產生的 AGENTS.md 內容範例如下:
# my-api-service
## 技術棧
- 語言:TypeScript
- 執行環境:Node.js 22
- 測試:Vitest
- 程式碼風格:Prettier + ESLint + Biome
## 開發慣例
- 使用 pnpm 管理相依套件
- 所有新增功能需附單元測試
- API 路由集中在 src/routes/ 目錄下
- 錯誤處理統一使用 AppError 類別
## 注意事項
- 不要修改 src/types/ 下的自動產生檔案
- 資料庫遷移檔案位於 migrations/ 目錄
3.6 設定管理實用指令
OpenCode 提供了幾個方便管理設定的指令:
| 指令 | 說明 |
|---|---|
opencode config show |
顯示當前生效的完整設定(合併所有層級) |
opencode config set <key> <value> |
設定特定欄位的值 |
opencode config get <key> |
查詢特定欄位的值 |
opencode config edit |
用編輯器直接開啟 opencode.json |
opencode config validate |
驗證 opencode.json 的語法正確性 |
opencode config validate 確認語法正確。你也可以使用支援 JSON Schema 的編輯器(如 VS Code)來獲得即時驗證。
章節測驗
測試你對本章內容的理解程度:
常見問題
opencode.json 是機器設定——它告訴 OpenCode「用哪個模型」、「檔案讀寫權限如何」、「主題是什麼」等技術性參數。AGENTS.md 是行為指南——它以自然語言告訴 AI「這個專案用什麼框架」、「程式碼風格是什麼」、「不要碰哪些檔案」。兩者相輔相成,前者控制能力,後者控制行為。
大部分設定(如 theme、permission)會在 OpenCode 下次讀取時自動生效,無需重啟。部分設定(如 model)可能需要重新載入——但最快的方式是在 TUI 中直接使用 /models 切換,而不需要手動編輯設定檔。
在 TUI 中按下 Ctrl+P 開啟設定面板,即可即時調整主題、模型與權限策略。這些變更僅對當前會話有效,不會寫入 opencode.json。如果你想要永久保留變更,可以使用 opencode config set 指令或直接編輯設定檔。