跳到正文

OpenCode

在 opencode.json 裡把 HopBase 設定成 OpenCode 的自訂 OpenAI 相容 provider。

OpenCode 是開源的終端機程式設計助手。它透過 opencode.json 裡的自訂 provider 接入 HopBase,底層用的是 @ai-sdk/openai-compatible 套件。

設定項值
npm@ai-sdk/openai-compatible
options.baseURLhttps://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

匯出金鑰

export HOPBASE_API_KEY=sk-your-key

下面設定裡的 {env:HOPBASE_API_KEY} 從這個環境變數讀取金鑰,金鑰不會寫進可能被提交的檔案。

在 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

下一步