OpenCode
在 opencode.json 裡把 HopBase 設定成 OpenCode 的自訂 OpenAI 相容 provider。
OpenCode 是開源的終端機程式設計助手。它透過 opencode.json 裡的自訂 provider 接入 HopBase,底層用的是 @ai-sdk/openai-compatible 套件。
| 設定項 | 值 |
|---|---|
npm | @ai-sdk/openai-compatible |
options.baseURL | https://api.hop-base.com/v1 |
options.apiKey | {env:HOPBASE_API_KEY}(控制台建立的金鑰) |
| 模型 ID | 用這把金鑰呼叫 GET /v1/models 回傳的原樣 ID,例如 deepseek-v4.1-flash-1017 |
已在生產環境用 OpenCode 1.19 實測:opencode run 經 HopBase 正常回覆,Agent 內建工具(如讀取檔案)可用。
HopBase 的金鑰只能呼叫它所含分組裡的模型。在控制台建立金鑰時,選中提供目標模型的分組——例如 deepseek-v4.1-flash-1017 選DeepSeek,deepseek-v4.1-flash-1017-sg 選DeepSeek 新加坡機房,gemini-3.8-flash 選Gemini 全系(含生圖)。金鑰不含該模型所在分組時會回傳 404 model_not_found。
設定 OpenCode
在 opencode.json 裡新增 provider
在專案目錄新建或編輯 opencode.json;想在所有專案裡使用,就寫到 ~/.config/opencode/opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"hopbase": {
"npm": "@ai-sdk/openai-compatible",
"name": "HopBase",
"options": {
"baseURL": "https://api.hop-base.com/v1",
"apiKey": "{env:HOPBASE_API_KEY}"
},
"models": {
"deepseek-v4.1-flash-1017": { "name": "DeepSeek V4.1 Flash" }
}
}
},
"model": "hopbase/deepseek-v4.1-flash-1017"
}models 下的鍵必須是 HopBase 的原樣模型 ID,只列這把金鑰能呼叫的模型;name 只是 OpenCode 顯示的名稱。model 用 <provider>/<模型 ID> 的格式設定預設模型。
確認模型列表
curl https://api.hop-base.com/v1/models \
-H "Authorization: Bearer $HOPBASE_API_KEY"models 裡列出的每個 ID 都必須出現在回傳結果中。缺了哪個,就表示這把金鑰的分組都不提供它。
發送第一個請求
opencode run "Reply with exactly one word: pong"opencode models hopbase 會列出 OpenCode 從這個 provider 載入的模型;在互動介面裡用 /models 切換。
新增更多模型
在 models 下每個模型 ID 加一條。一把金鑰可以包含多個分組,所以一個 provider 可以同時掛多個分組的模型:
"models": {
"deepseek-v4.1-flash-1017": { "name": "DeepSeek V4.1 Flash" },
"deepseek-v4.1-flash-1017-sg": { "name": "DeepSeek V4.1 Flash (Singapore)" },
"gemini-3.8-flash": { "name": "Gemini 3.8 Flash" }
}Claude 模型走 Anthropic 協議,不走 Chat Completions。要用 Claude,再加一個 "npm": "@ai-sdk/anthropic" 的 provider,baseURL 同樣填 https://api.hop-base.com/v1(這個套件會自己接上 /messages),並使用包含 Claude 分組的金鑰。
各模型價格見價格頁。
常見問題
| 現象 | 原因 |
|---|---|
每個請求都 401 | 啟動 OpenCode 的終端機裡沒有設定 HOPBASE_API_KEY |
404 model_not_found | 金鑰不含該模型所在分組,或 models 裡的 ID 寫簡了。重新查看 GET /v1/models |
route_not_found | 金鑰屬於圖片或影片分組,沒有對話入口 |
在腳本裡呼叫 opencode run 一直等待、沒有輸出 | 它還會讀取標準輸入。把標準輸入重新導向,例如 opencode run "…" < /dev/null |
下一步
- 可用模型:查看一把金鑰能用的模型 ID
- Vercel AI SDK:在自己的程式碼裡直接使用同一個 provider 套件
- 報錯速查:依錯誤訊息排查