OpenCode 是一套可在終端機、桌面程式與 IDE 中使用的開源 AI coding agent。它不只是聊天機器人,而是能直接閱讀專案、分析程式碼、產生修改建議、執行多步驟開發工作的工具。
對 IoT 與 Web 專題而言,OpenCode 很適合用來協助理解 Python、Flask、MQTT、GPIO、資料庫與前後端整合程式,但所有輸出都必須經過人工檢查與測試。
OpenCode 的定位是 AI 編碼代理。一般聊天式 AI 偏向回答問題;OpenCode 則更重視在程式專案中的實際工作流程,例如:
可在終端機中互動,也可使用桌面應用程式或編輯器整合,適合不同開發習慣。
可搭配不同 provider / model,不必被單一服務綁定,便於比較成本、速度與品質。
由於是開源工具,社群文件、擴充與整合方式較容易追蹤,適合教學與研究觀察。
能根據當前專案結構理解檔案關聯,比單純把片段程式碼貼到聊天視窗更完整。
OpenCode 官方提供多種安裝方法,常見方式如下:
curl -fsSL https://opencode.ai/install | bash
npm install -g opencode-ai
bun install -g opencode-ai
pnpm install -g opencode-ai
yarn global add opencode-ai
brew install anomalyco/tap/opencode
# 或
brew install opencode
opencode --version 顯示 command not found,表示若要在本機實作範例,需先完成安裝。如果想讓 OpenCode 透過 OpenRouter 使用 Claude、GPT、Gemini 或其他支援的模型,可以依照下列流程設定:
opencode 後,於 TUI 中執行 /connect。OpenRouter。/models 選擇要使用的模型。opencode
/connect
/models
/models 中挑選模型。# 先啟動 OpenCode
opencode
# 在 OpenCode 介面中輸入
/connect
# 搜尋 OpenRouter,貼上 API Key 後再輸入
/models
如果已經完成連線,也可以直接在命令列指定 provider/model:
opencode --model openrouter/anthropic/claude-sonnet-4
opencode run "請解釋目前專案的 Flask 路由結構" --model openrouter/anthropic/claude-sonnet-4
若預設列表中沒有想用的模型,可在 opencode.json 中擴充:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openrouter": {
"models": {
"somecoolnewmodel": {}
}
}
}
}
OpenCode 官方文件也示範可在 OpenRouter 模型下指定更細的 provider 選項:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openrouter": {
"models": {
"moonshotai/kimi-k2": {
"options": {
"provider": {
"order": ["baseten"],
"allow_fallbacks": false
}
}
}
}
}
}
}
opencode 後,確認 /models 中可看到 OpenRouter 模型。opencode auth list 檢查是否已有 provider 憑證。opencode auth list
opencode run "Respond with exactly: OPENROUTER_OK" --model openrouter/anthropic/claude-sonnet-4
provider/model 名稱是否寫對。如果想讓 Codex CLI 連到外部 API,而不是只使用預設 OpenAI 端點,可以在 ~/.codex/config.toml 中加入自訂 provider。依 OpenAI Codex 官方文件,這類供應商要以 [model_providers] 定義,並指定 base_url、wire_api、驗證方式與模型名稱。
model_provider、model_providers、base_url 這類 provider 設定應放在使用者層級的 ~/.codex/config.toml,不要只放在專案內的 .codex/config.toml。AZURE_OPENAI_API_KEY。~/.codex/config.toml,新增自訂 provider。model_provider 與 model。codex 後測試是否可正常回應。以下是 OpenAI Codex 官方文件中的典型寫法,適合拿來連接 Azure OpenAI 或其他 OpenAI 相容端點:
# ~/.codex/config.toml
model_provider = "azure"
model = "gpt-5"
[model_providers.azure]
name = "Azure"
base_url = "https://YOUR_PROJECT_NAME.openai.azure.com/openai"
wire_api = "responses"
query_params = { api-version = "2025-04-01-preview" }
env_key = "AZURE_OPENAI_API_KEY"
env_key_instructions = "Set AZURE_OPENAI_API_KEY in your environment"
若供應商不是 Azure,但同樣提供 OpenAI 相容 API,也可以用類似方式調整:
# ~/.codex/config.toml
model_provider = "myproxy"
model = "gpt-5"
[model_providers.myproxy]
name = "My OpenAI-Compatible Provider"
base_url = "https://api.example.com/v1"
wire_api = "responses"
env_key = "MY_LLM_API_KEY"
env_key_instructions = "Set MY_LLM_API_KEY in your shell environment"
# zsh / bash
export AZURE_OPENAI_API_KEY="YOUR_KEY_HERE"
# 若要永久生效,可加入 ~/.zshrc 後重新載入
source ~/.zshrc
config.toml。Codex 官方範例也是以 env_key 搭配環境變數管理金鑰。若外部端點其實是 OpenAI 帳號後面的代理層,官方文件建議改用 requires_openai_auth = true。這種模式下,Codex 會走 OpenAI 驗證流程,且會忽略 env_key。
[model_providers.proxy]
name = "OpenAI using LLM proxy"
base_url = "https://proxy.example.com/v1"
wire_api = "responses"
requires_openai_auth = true
codex 後,確認已使用新的 model_provider 與模型。base_url、模型名稱、API Key 環境變數與 query parameter 是否正確。codex
# 或用單次任務快速測試
codex exec "Respond with exactly: CODEX_EXTERNAL_API_OK"
cd /path/to/project
opencode
| 模式 | 指令 | 用途 |
|---|---|---|
| TUI 互動模式 | opencode |
適合逐步對話、反覆追問、邊看結果邊修正需求。 |
| CLI 單次任務 | opencode run "你的任務" |
適合快速執行單一明確工作,例如解釋函式、重構某段程式、檢查錯誤。 |
opencode
opencode run "Explain how closures work in JavaScript"
run 模式通常更容易重現與記錄;若需求會持續修正,TUI 模式更方便。| 指令 | 說明 |
|---|---|
opencode | 啟動終端機互動介面。 |
opencode [project] | 直接在指定專案路徑開啟。 |
opencode run "..." | 執行單次任務後結束。 |
opencode -c | 延續上一個 session。 |
opencode -s <session_id> | 繼續特定 session。 |
opencode --model provider/model | 指定要使用的模型。 |
opencode session list | 列出既有工作階段。 |
opencode stats | 查看使用量或成本統計。 |
opencode run "請解釋 app.py 中 MQTT callback 的執行流程"
opencode run "重構這個 Python 函式,保留功能但提升可讀性"
opencode --model openrouter/anthropic/claude-sonnet-4
opencode session list
opencode stats
請 OpenCode 解釋 Raspberry Pi GPIO、Flask route、MQTT publisher/subscriber 或 SQL 查詢流程。
可把 Traceback、伺服器 log 或錯誤輸出交給 OpenCode,請它協助定位問題來源與修正方向。
例如建立 Flask API、感測資料上傳端點、Node-RED 對接流程或資料庫 CRUD 範例。
協助把太長的函式拆分、補上註解、整理目錄與 README,使專題更容易維護。
opencode run "閱讀目前專案,說明 sensor.py、app.py 與 templates/index.html 的關係"
opencode run "幫我把這個 Flask + MQTT 專案整理成適合期末專題展示的結構"
opencode run "分析為什麼 ESP32 送到 Flask API 的 JSON 會出現 400 Bad Request"
| 面向 | 一般聊天式 AI | OpenCode |
|---|---|---|
| 主要介面 | 瀏覽器聊天視窗 | 終端機、桌面端、IDE |
| 上下文來源 | 以貼上的內容為主 | 可直接在專案目錄中工作 |
| 工作形式 | 偏向問答 | 偏向開發任務與程式流程 |
| 適合情境 | 概念說明、快速提問 | 專案理解、改碼、除錯、重構 |
| 風險 | 容易脫離實際專案上下文 | 若未審查輸出,可能直接把錯誤帶入專案 |
command not found: opencode,通常表示尚未安裝或 PATH 未設定正確。main.py、utils.py、config.py。