文件

文件

OpenHands

OpenHands 會透過 LiteLLM 路由每次模型呼叫,因此端點設定必須讓兩個欄位彼此吻合:帶有 openai/ 前綴的模型 ID,以及保留 /v1 的 base URL。這組合設定正確後,Advanced 分頁就能使用同一把金鑰連接 Claude 和 GPT。

Settings → LLM → Advanced 需要三個欄位 — Custom Model、Base URL、API Key — 模型 ID 帶有 openai/ 前綴,Base URL 保留 /v1。

設定 → LLM → Advanced
# Settings → LLM → Advanced  (toggle "Advanced" on first)
Custom Model   openai/claude-sonnet-5
Base URL       https://api.kunavo.com/v1
API Key        sk-kn-...

# The "openai/" prefix is the provider, not a vendor: it tells OpenHands to
# speak the OpenAI Chat Completions protocol to the Base URL above. The model
# id after the slash is Kunavo's, and resolves at Kunavo.
#
# Keep the /v1. It belongs to the openai/ prefix — a litellm_proxy/ model
# takes the bare origin instead, which is the opposite convention.
請保留 /v1,也保留 openai/ 前綴——這是一項決定的兩個部分。 OpenHands 的設定頁面只說:「如果你的提供者有專用的 Base URL,請在此指定」,因此欄位本身無法判定格式。前綴才能說明。其「設定模型」頁面規定,OpenAI 相容伺服器使用 openai/<served-model-id>,並指出模型 ID「通常取自其 GET /v1/models 端點」;該頁面對此路徑唯一展示的 Base URL 範例 Base URL,結尾是 /v1——即 LM Studio 操作指南中的 http://host.docker.internal:1234/v1。對照之下即可看出差異:文件為 litellm_proxy/ 模型指定的 Base URL 是 https://your-litellm-proxy.com,完全不含 /v1。兩者混用——將 openai/ 指向不含路徑的來源網址,或是在 litellm_proxy/ 下使用 /v1——是導致 404 而非 401 的常見原因。
OpenHands 的兩個 openai/ 範例都是本機伺服器——LM Studio、Ollama、vLLM、SGLang。其文件沒有提供遠端 OpenAI 相容 gateway 的實際範例,因此上文引用的是前綴規則與欄位值格式,並非專為此情境撰寫的說明。若 OpenHands 日後提供相關文件,應以該頁為準。
以下設定是根據下方日期所見的 OpenHands 官方文件整理而成。Kunavo 尚未透過 OpenHands 呼叫其端點——沒有對話、串流回合、工具往返,也未固定用戶端版本。已發布的設定頁面不等於實測,本文也不應被視為實測結果。下方的 curl 可在十秒內確認;用戶端行為則取決於你和 OpenHands。
Kunavo 不提供 embedding、文字轉語音或語音轉文字模型,因此此端點只會回應聊天完成請求——請讓 LLM_EMBEDDING_MODEL 和 LLM_EMBEDDING_DEPLOYMENT_NAME 保持未設定,並繼續使用目前設定中已支援向量索引或音訊步驟的 provider。
還沒有金鑰?建立 Kunavo 帳戶,建立金鑰(以 sk-kn- 開頭),並從 $10 起新增額度——呼叫會從該餘額扣款,失敗的呼叫不會計費。之後儀表板會開啟 OpenHands 設定。

逐步操作

  1. 在 /app/keys 建立金鑰並複製——金鑰只會顯示一次。
  2. 前往 Settings → LLM,開啟 Advanced 切換鈕。接著會依序顯示三個欄位:Custom Model、Base URL、API Key。
  3. 輸入帶有前綴的模型 ID——openai/claude-sonnet-5,而不是 claude-sonnet-5。Kunavo 提供的 ID 可透過 GET /v1/models 取得,這也符合 OpenHands 官方文件指示的自訂 ID 來源。
  4. 將 https://api.kunavo.com/v1 貼到 Base URL,並將金鑰貼到 API Key,然後點選 Save Changes。OpenHands 文件指出,儲存本機設定檔時會先驗證後端設定,驗證失敗就會阻止儲存,因此此處出現的錯誤代表設定確實遭到拒絕,並非單純的介面提示。
  5. 確認後端可連線的目標,而非瀏覽器可連線的目標。base URL 必須能從執行 Agent Server 的機器解析——文件明確指出,若 Agent Canvas 在 Docker 中執行,127.0.0.1 指的是容器。Kunavo 這類公用端點是簡單情況;若前方有企業 proxy,則較複雜。
  6. 開始一段新的對話,交給它一項需要讀取並編輯檔案的任務。OpenHands 指出,已儲存的 LLM 設定會套用至新對話,舊對話則必須先重新啟動;實際執行工具的測試,比只打招呼更能驗證這組設定。

已於 2026年9月21日 根據 OpenHands 的 Language Model (LLM) Settings 頁面 進行確認。第三方設定會變動;如果這裡的欄位名稱不再與你看到的內容相符,應以該頁面為準,而不是本頁。

除錯用戶端前先驗證

一個請求就能判斷失敗原因是端點、金鑰還是設定檔。如果這裡回傳 JSON,則相同的基礎 URL 與金鑰在 OpenHands 中也能運作。

# 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 權杖的美元價格,輸入/輸出。

模型 IDKunavo 輸入/輸出它在 OpenHands 中的位置
claude-sonnet-5$1.40 / $7.00日常工作的模型——輸入為 openai/claude-sonnet-5
claude-opus-4-8$3.50 / $17.50OpenHands 官方索引表中列於 Claude 系列最前面的模型
claude-haiku-4-5$0.70 / $3.50用於日常編輯的低成本設定檔,可在對話中途切換回來
gpt-5-6-sol$2.00 / $12.00使用相同金鑰和 Base URL 的另一個模型系列
gpt-6-astra$4.00 / $20.00計畫一再偏離方向時,用來提供另一個觀點
計費方式是從預付餘額按權杖計費,沒有月費——請參閱 billing。在重複的上下文中——這是編輯器或聊天用戶端傳送內容的大部分——提示快取 對帳單的影響比模型選擇更大。

除錯前值得了解的三個界線

OpenHands 比單一程序的 CLI 涉及更多元件,其中兩項看起來像 LLM 端點,實際上卻不是。以下內容整理自上述日期查閱的官方文件:

  1. 沙箱不是模型。 OpenHands 會在 agent-server 沙箱中執行工作,並透過網路呼叫模型;兩者是各自獨立的介面,也使用不同憑證。在此設定金鑰,只能用於模型呼叫。它與沙箱可連線的對象無關,而沙箱網路問題也不會呈現為驗證錯誤。
  2. ACP 代理完全獨立於此設定。 Agent Canvas 可以委派工作給 Claude Code、Codex 或 Gemini CLI,將它們作為 ACP 代理執行;「設定模型」頁面指出,這些代理「會自行管理模型存取權」,因此 LLM 設定檔不會重新導向該子程序。如果你預期金鑰應有流量,卻看不到任何流量,請確認實際執行的是哪個代理。OpenHands 與 Claude Code 的比較會說明這種差異,包括決定優先使用哪組憑證的規則。
  3. 設定檔與 10 個的上限。 儲存的設定會成為 LLM 設定檔,最近儲存的設定檔會在新對話中啟用;你也可以在對話中途切換設定檔,而不會遺失 context——因此能在同一把金鑰下使用低價和高價模型。文件規定每個帳戶最多可有 10 個設定檔。Provider Connection 可為多個設定檔儲存一次 provider、API 金鑰和選填的 base URL;同一頁也指出,這個面板只會出現在本機 agent-server 後端,在 OpenHands Cloud 後端中則會隱藏。

常見問題

如何讓 OpenHands 使用自訂 API 端點?

前往 Settings → LLM,開啟 Advanced 切換鈕。OpenHands 文件說明,此設定可用來「設定自訂模型,以及其他 LLM 設定」。畫面會依序顯示三個欄位:Custom Model、Base URL、API Key。輸入帶有 provider 前綴的模型 ID——OpenAI 相容端點請使用 openai/<model-id>——將端點填入 Base URL、貼上金鑰,然後點選 Save Changes。已儲存的設定會成為 LLM 設定檔,並套用至新對話;舊對話必須重新啟動才能套用。

OpenHands 的 Base URL 需要以 /v1 結尾嗎?

若模型 ID 帶有 openai/ 前綴,答案是需要。設定頁本身只說,若 provider 有專用 base URL 就應填入,因此無法單靠該頁判定格式——前綴才是判斷依據。OpenHands 的 Configure a Model 頁面規定,OpenAI 相容伺服器應使用 openai/<served-model-id>,並從其 GET /v1/models 端點取得 ID;該頁在 LM Studio 操作指南中展示的唯一 Base URL 範例為 http://host.docker.internal:1234/v1。litellm_proxy/ 模型則相反:文件所示的 base URL 是不含 /v1 的 proxy 根網址。因此 Kunavo 應填入 https://api.kunavo.com/v1。

為什麼 OpenHands 不讓我儲存 LLM 設定檔?

OpenHands 會在儲存本機設定檔前,先對後端進行驗證;文件指出,若驗證失敗,例如 API key 無效或模型無法使用,就會阻止儲存並顯示錯誤。因此,無法儲存代表設定確實遭到拒絕。請先在用戶端以外確認是哪一部分有誤:使用相同金鑰向端點的 /v1/models 發出一次 curl 請求,若設定正確就會收到 JSON;金鑰錯誤會收到 401,URL 錯誤則會收到 404。不支援驗證的舊版後端會略過檢查並正常儲存。

OpenHands 能透過 OpenAI 相容端點使用 Claude 模型嗎?

可以。`openai/` 前綴標示的是線路協定,而不是供應商:OpenHands 會將 OpenAI 格式的聊天完成請求傳送至您設定的 base URL,並將斜線後的 ID 原樣傳遞,因此 Claude ID 會在該端點解析,而不是在 OpenHands 內解析。請記得,OpenHands 很倚重工具呼叫,其文件也指出它需要功能強大的模型才能正常運作,因此這裡不適合選用您找得到的最便宜 ID。

Kunavo 測試過這套設定在 OpenHands 中的使用情況嗎?

沒有。2026 年 9 月 21 日查核的是 OpenHands 自己的文件——欄位名稱、順序、前綴規則和 base URL 格式均引自該文件。Kunavo 並未讓 OpenHands 對其端點執行對話,因此不對特定固定版本用戶端中的驗證、串流、工具往返或模型路由作出任何聲明。您可以單獨確認的事項是端點和金鑰是否可用,本頁的 curl 指令即可檢查。