文件

文件

Junie CLI

Junie CLI 透過 JSON 檔案設定自訂端點,而不是使用設定畫面。只要在 $JUNIE_HOME/models/kunavo.json 建立九行設定,並執行 junie --model custom:kunavo,就能透過一把金鑰使用 Claude 和 GPT——同時將輔助流量導向較便宜的端點。

Junie CLI 將自訂端點作為 JSON 設定檔放在 $JUNIE_HOME/models/,其中 baseUrl 是完整端點 URL,fasterModel 決定輔助流量的去向。

$JUNIE_HOME/models/kunavo.json — 或 .junie/models/kunavo.json
{
  "id": "claude-sonnet-5",
  "baseUrl": "https://api.kunavo.com/v1/chat/completions",
  "displayName": "Kunavo",
  "providerName": "Kunavo",
  "apiType": "OpenAICompletion",
  "apiKey": "${KUNAVO_API_KEY}",
  "fasterModel": {
    "id": "claude-haiku-4-5"
  }
}
baseUrl 是包含路徑的完整端點。 JetBrains 清楚說明:「baseUrl 會作為完整端點 URL 使用 — Junie 不會在其後附加路徑」,並指示您「將其設為所選 apiType 的完整端點」。因此,此欄位既不是來源網址,也不是多數用戶端使用的 /v1 根網址 — 而是 https://api.kunavo.com/v1/chat/completions。只填到 https://api.kunavo.com/v1 是正確設定的設定檔最可能出現 404 的原因。
缺少環境變數會導致整個設定檔載入失敗,而非請求失敗。apiKey 和 extraHeaders 值可以使用 $${VAR_NAME} 參照;JetBrains 明確說明此錯誤狀況:「若未設定所參照的環境變數,設定檔將無法載入,且 Junie 會回報指出缺少變數的錯誤。」啟動 Junie 前,請先匯出 KUNAVO_API_KEY — 設定檔會在載入時讀取,而不是等到第一個請求才讀取,因此若 shell 遺失了匯出設定,您會看到設定檔從 /model 消失,而不是收到 401。
fasterModel 是 Junie 傳送非使用者指定工作的位置。 JetBrains 將其描述為「用於摘要整理脈絡或分類任務等內部輔助工作所使用的模型」,並指出若未明確定義 primaryModel 或 fasterModel,「就會繼承頂層屬性」。因此,若設定檔沒有 fasterModel 區塊,整理工作的費用就會按主要模型的費率計算。上方的一行覆寫設定就是完整解決方法,也是將此區塊放入最精簡設定,而非附錄中的原因。
此設定檔是根據 JetBrains 發布的結構描述製作,並於下方所列日期查閱。Kunavo 尚未使用其端點執行 Junie CLI——沒有進行工作階段、串流回合、工具往返,也沒有指定並確認任何用戶端版本。發布設定頁不等於測試,本文內容也不應被視為測試結果。以下的 curl 是你可以在十秒內自行確認的部分;Junie 如何在此基礎上運作,則取決於你和 JetBrains。
還沒有金鑰?建立 Kunavo 帳戶,建立金鑰(以 sk-kn- 開頭),並從 $10 起新增額度——呼叫會從該餘額扣款,失敗的呼叫不會計費。之後儀表板會開啟 Junie CLI 設定。

逐步操作

  1. 在 /app/keys 建立金鑰並複製 — 它只會顯示一次。請在啟動 Junie 的 shell 中將其匯出為 KUNAVO_API_KEY,或改為在檔案中直接填入金鑰;JetBrains 指出:「沒有任何 $${...} 參照的值會直接照原樣使用。」
  2. 將上方的 JSON 儲存為你帳戶中的 $JUNIE_HOME/models/kunavo.json,或儲存為 .junie/models/kunavo.json 以與儲存庫共用。移除 .json 副檔名後的檔名會成為 profile id——下方選擇器顯示 custom:kunavo,就是由此而來。
  3. 將 id 設為您實際要使用的模型 ID。其定義為「API 端點預期使用的模型識別碼」,因此可直接填入下方表格中的 Kunavo slug;ID 會由端點解析,而不是由 Junie 解析。
  4. 啟動 Junie 並選取設定檔:junie --model custom:kunavo,或在互動式工作階段中使用 /model 指令。自訂模型「會在內建供應商之後出現在模型選取清單中」。
  5. 交給它一項會編輯檔案的任務,而不是只打招呼。Junie 是代理型用戶端,幾乎所有工作都仰賴工具呼叫;因此,第一次執行時讓它讀取並寫入內容,比只收到單一回覆更能說明實際狀況。

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

這是簡短版本。完整指南——模型選擇、實際工作階段費用,以及失敗情況——請參閱 Junie CLI 與 Claude Code——端點邊界比較。

除錯用戶端前先驗證

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

# 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 輸入/輸出它在 Junie CLI 中的位置
claude-sonnet-5$1.40 / $7.00一般工作使用的 primaryModel——例如編輯檔案的任務
claude-opus-5$3.50 / $17.50可能造成高昂錯誤成本的計畫;每個工作階段固定使用
claude-haiku-4-5$0.70 / $3.50fasterModel 角色:摘要整理上下文、分類任務
gpt-5-6-sol$2.00 / $12.00來自不同家族的第二意見——使用另一個設定檔,共用同一把金鑰
計費方式是從預付餘額按權杖計費,沒有月費——請參閱 billing。在重複的上下文中——這是編輯器或聊天用戶端傳送內容的大部分——提示快取 對帳單的影響比模型選擇更大。

Kunavo 支援的另外兩種 apiType 值

apiType 指的是請求格式,而非供應商;Junie 接受四種值:OpenAICompletion、OpenAIResponses、Google 和 Anthropic。Kunavo 提供三種路由,因此其他三種值中有兩種在此處有對應的 baseUrl;而且由於 Junie 不會附加路徑,變更格式時也必須在同一次編輯中更改 URL:

  1. "apiType": "OpenAICompletion" 搭配 https://api.kunavo.com/v1/chat/completions——也就是上方的設定檔。本文推薦這種組合,因為在三種路由中,這條路由的實際使用最廣泛。
  2. "apiType": "Anthropic" 搭配 https://api.kunavo.com/v1/messages——Kunavo 會在該路徑提供 Messages 格式。
  3. "apiType": "OpenAIResponses" 搭配 https://api.kunavo.com/v1/responses。

三種 Junie 驅動方式中,哪一種最適合特定模型,必須透過執行階段測試才能解答,光看文件無法判斷,因此本頁不會在首行之外為它們排名。選擇一種方式,讓 URL 與 apiType 保持一致;如果使用已設定金鑰的設定檔時收到 401,請明確指定憑證,不要臆測 Junie 使用的標頭格式:JetBrains 對 apiKey 的說明只有否定情況 —「若省略,請求將不包含 Authorization 標頭」— 並未說明填入時會使用哪種格式。文件將 extraHeaders 定義為「要加入每個請求的額外 HTTP 標頭」,且支援相同的 $${VAR} 參照,因此使用 "extraHeaders": {"Authorization": "Bearer $${KUNAVO_API_KEY}"} 是最明確的方式。

常見問題

如何在 Junie CLI 新增自訂供應商?

Junie CLI 會從 JSON 設定檔讀取自訂供應商,而不是透過設定畫面新增。請在帳戶的 $JUNIE_HOME/models/ 或專案中的 .junie/models/ 建立檔案;移除 .json 副檔名後的檔名會成為 profile id。必要欄位為 id、baseUrl 和 apiType;apiKey、displayName、providerName、extraHeaders、extraBody、temperature、maxContextLength、primaryModel 和 fasterModel 則為選填。接著使用 `junie --model custom:<id>` 或 /model 指令選擇它——自訂模型會出現在內建供應商之後的清單中。

Junie CLI 的 baseUrl 需要加上 /v1,還是完整路徑?

需要填入完整路徑。JetBrains 指出,baseUrl 會作為完整端點 URL 使用,Junie 不會在其後附加路徑,並要求將其設為所選 apiType 的完整端點。若使用 OpenAICompletion 設定檔連接 Kunavo,網址應為 https://api.kunavo.com/v1/chat/completions——不是來源站點,也不是 Kilo Code 等用戶端需要的 /v1 根路徑。JetBrains 自己文件中的兩個範例設定檔都帶有完整路徑,原因相同。

為什麼 Junie 說設定檔因缺少環境變數而無法載入?

因為 apiKey 和 extraHeaders 的值支援 ${VAR_NAME} 參照;JetBrains 指出,若未設定參照的環境變數,設定檔便無法載入,且 Junie 會回報缺少變數的名稱。解析會在載入設定檔時進行,因此症狀會是設定檔從模型清單中消失,而不是請求失敗。請在啟動 Junie 前匯出該變數,或將參照改成純文字值。

Junie CLI 能否使用自己的 BYOK 金鑰,透過 Kunavo 之類的閘道?

BYOK 畫面和自訂設定檔是兩種不同途徑。JetBrains 的 BYOK 頁面說明如何透過 /account 或歡迎畫面上的「Use your own API key」連接指定供應商——OpenAI、Anthropic、Google、xAI、OpenRouter 或 GitHub Copilot——並指出所有使用費都由供應商收取,不需要 JetBrains AI 訂閱。未列在其中的端點,包括 Kunavo,則應以自訂 LLM 設定檔的方式加入,也就是本頁所述的 JSON 檔案。自帶金鑰是 Junie CLI 的功能;JetBrains 的外掛文件指出,Junie 外掛不支援此功能。

為什麼 Junie 呼叫的模型不是我選的那個?

Junie 會將設定檔分成兩種角色;文件指出,fasterModel 是用於摘要整理上下文或分類任務等內部輔助工作的模型。若未定義該區塊,JetBrains 指出這些角色會繼承頂層屬性,因此輔助工作會使用你的主要模型,並按其費率計費。如本頁設定檔所示,將 fasterModel.id 設為較便宜的 id,即可解決問題;頂層的 baseUrl、apiType 和 apiKey 會由兩種角色繼承,因此只需變更 id。

Kunavo 測試過 Junie CLI 嗎?

沒有。2026 年 9 月 21 日查閱的是 JetBrains 自己的自訂 LLM 文件——欄位名稱、順序、可接受的 apiType 值及完整端點規則皆引用自該文件。Kunavo 未安裝 Junie CLI、未指定版本,也未透過它傳送請求,因此不會對用戶端內的串流、工具往返或模型路由做出任何宣稱。你可以單獨確認的只有端點與金鑰是否有效,本頁提供的 curl 指令即可確認。