文件
opencode
opencode 透過 Vercel AI SDK 建立 provider,因此要指向新的端點,只需設定一個區塊並指定 npm 套件和 baseURL。指定的套件會決定它使用兩種 wire 格式中的哪一種。
在 opencode.json 中設定一個供應商區塊 — 聊天完成使用 @ai-sdk/openai-compatible,需要 /v1/responses 介面時使用 @ai-sdk/openai。
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"kunavo": {
"npm": "@ai-sdk/openai-compatible",
"name": "Kunavo",
"options": {
"baseURL": "https://api.kunavo.com/v1",
"apiKey": "{env:KUNAVO_API_KEY}"
},
"models": {
"claude-sonnet-5": {
"name": "Claude Sonnet 5",
"limit": { "context": 200000, "output": 64000 }
},
"claude-haiku-4-5": { "name": "Claude Haiku 4.5" }
}
}
}
}npm 欄位用來選擇 wire 格式。@ai-sdk/openai-compatible 使用 /v1/chat/completions;@ai-sdk/openai 使用 /v1/responses。Kunavo 同時支援兩者,因此任一種都可使用——若要在 GPT 系列模型中保留 reasoning items,請使用 Responses 套件;其他情況則使用 chat-completions 套件。"apiKey": "{env:KUNAVO_API_KEY}" 會在載入時從環境讀取金鑰。opencode.json 是會進入儲存庫的檔案;若在其中填入明文金鑰,就無法保密。limit.context 和 limit.output。opencode 會根據這些數字追蹤剩餘 context,因此未設定這些值的模型會依據並非自身限制的預設值計算。sk-kn- 開頭),並從 $10 起新增額度——呼叫會從該餘額扣款,失敗的呼叫不會計費。之後儀表板會開啟 opencode 設定。逐步操作
- 在
/app/keys建立金鑰並複製——金鑰只會顯示一次。 - 將它匯出:
export KUNAVO_API_KEY=sk-kn-... - 將 provider 區塊新增至
opencode.json——若要套用到所有專案,請使用位於~/.config/opencode/opencode.json的全域設定檔;若只套用於此儲存庫,請使用專案根目錄中的設定檔。 - 啟動
opencode並從模型清單中選取模型;provider 會顯示在你為它設定的name名稱之下。 - 之後若要新增模型,請在
models下新增另一個 key——ID 是實際傳送的值,name只是標籤。
已於 2026年9月6日 根據 opencode 的 providers 文件 進行確認。第三方設定會變動;如果這裡的欄位名稱不再與你看到的內容相符,應以該頁面為準,而不是本頁。
除錯用戶端前先驗證
一個請求就能判斷失敗原因是端點、金鑰還是設定檔。如果這裡回傳 JSON,則相同的基礎 URL 與金鑰在 opencode 中也能運作。
# Settles whether a failure is the endpoint, the key, or the client.
curl -sS https://api.kunavo.com/v1/models \
-H "Authorization: Bearer sk-kn-..."欄位中應填入哪個模型 ID
每個文字模型都能以模型 ID 存取——即時清單位於 GET /v1/models,帶有價格的目錄位於模型頁面。費率是每 1M 權杖的美元價格,輸入/輸出。
| 模型 ID | Kunavo 輸入/輸出 | 它在 opencode 中的位置 |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | 預設建置模型 |
claude-opus-5 | $3.50 / $17.50 | 計畫模式;計畫會主導後續所有工作 |
claude-haiku-4-5 | $0.70 / $3.50 | 子代理和搜尋工作;請求數量很多 |
gpt-5-6-sol | $2.00 / $12.00 | 搭配 @ai-sdk/openai 使用,讓 reasoning items 在往返過程中保留下來 |
常見問題
如何在 opencode 中新增自訂 provider?
在 opencode.json 的 "provider" 下新增一個區塊,指定 npm 套件、顯示名稱、options.baseURL、options.apiKey 和 models map。若端點提供 /v1/chat/completions,請使用 @ai-sdk/openai-compatible;若提供 /v1/responses,請使用 @ai-sdk/openai。接著,provider 會以你設定的名稱出現在 opencode 的模型清單中。
如何避免 API 金鑰寫進 opencode.json?
在 options.apiKey 中使用 {env:VAR_NAME} 插值語法,例如 "apiKey": "{env:KUNAVO_API_KEY}",並在 shell 中匯出該變數。opencode 會在載入設定時解析變數,因此設定檔可以安全地與其設定的專案一併提交至儲存庫。
opencode 中的 @ai-sdk/openai 與 @ai-sdk/openai-compatible 有何不同?
兩者會在相同的 base URL 上選用不同端點。@ai-sdk/openai-compatible 會呼叫 /chat/completions,幾乎所有 gateway 都有實作;@ai-sdk/openai 會呼叫較新的 OpenAI 介面 /responses。請依照端點實際提供的介面選擇——使用錯誤的套件會從其他設定正確的 base URL 收到 404。
為什麼 opencode 比預期更早用完 context?
因為模型項目沒有 limit 區塊,所以 opencode 會根據預設值計算用量,而非使用模型的實際 context window。請在 opencode.json 的該模型項目中新增 "limit": { "context": <window>, "output": <max output> },並使用 provider 目錄中的數值,讓 context 顯示和壓縮時機符合實際情況。