文件
Crush
Crush 是 Charm 的終端機程式碼代理程式——不是同名的 Rust shell。它的設定檔採用 Bash,因此只要新增一個供應商並指定類型、基底網址和金鑰,就能將它指向其他端點。
Crush 的設定使用 Bash — 在 crushrc 中執行一行 `provider add kunavo --type openai-compat --base-url "https://api.kunavo.com/v1"`,即可讓 Charm 的終端代理使用 Claude 與 GPT。
# A crushrc is Bash, not a settings file. Everything here is executed.
provider add kunavo \
--type openai-compat \
--base-url "https://api.kunavo.com/v1" \
--api-key "${KUNAVO_API_KEY:?set KUNAVO_API_KEY}"
model add kunavo/claude-sonnet-5 \
--name "Claude Sonnet 5" \
--context-window 1000000 \
--default-max-tokens 32000 \
--price-input 1.4 \
--price-output 7
model add kunavo/claude-haiku-4-5 \
--name "Claude Haiku 4.5" \
--context-window 200000 \
--default-max-tokens 16000 \
--price-input 0.7 \
--price-output 3.5
model large kunavo/claude-sonnet-5
model small kunavo/claude-haiku-4-5/v1 後綴。Crush 自己的 OpenAI 相容範例採用 --base-url "https://api.deepseek.com/v1",Anthropic 相容範例也以相同後綴結尾——因此這是用戶端的慣例,不是猜測。若省略後綴,會收到 404,而非驗證錯誤。--type openai-compat,不要使用 openai。README 本身就說明了兩者的區別:openai 用於透過 OpenAI 代理或路由請求;openai-compat 則用於 API 與 OpenAI 相容的非 OpenAI 供應商。Kunavo 屬於後者。crushrc 是可使用 Crush 內建功能的 Bash 設定檔;Crush 明確警告,這是受信任的程式碼——它會在完整 shell 中執行。這同時也是它的優點:--api-key "$(op read ...)" 可讓金鑰不必寫入檔案。較舊的 crush.json 仍可載入,但 README 已將其標記為已棄用,因此請改用 crushrc。sk-kn- 開頭),並從 $10 起新增額度——呼叫會從該餘額扣款,失敗的呼叫不會計費。之後儀表板會開啟 Crush 設定。逐步操作
- 在
/app/keys建立金鑰並複製——金鑰只會顯示一次。將金鑰匯出為KUNAVO_API_KEY,或直接從密碼管理工具在設定檔中讀取。 - 將上方區塊放入
~/.config/crush/crushrc。Crush 會依序讀取./.crushrc、./crushrc,再讀取全域設定,因此專案設定可以覆寫此電腦的設定——而你複製的儲存庫也可能附帶設定檔。 - 啟動
crush,並按ctrl+l開啟模型選擇器。上方的model large和model small行已預先指定兩個欄位,因此模型選擇器用來切換模型,而非進行初始設定。 - 如果不想手動登記 id:當
openai-compat供應商的模型清單為空,或你傳入--discover-models true時,就會執行自動探索。Kunavo 會回應GET /v1/models,因此模型清單會自動填入;若設定衝突,則以你自行設定的model add欄位為準。 - 執行一項範圍明確的任務,然後查看帳戶在
/app/billing記錄的費用。終端機顯示的數字是根據你輸入的--price-*數值計算得出;實際帳單則以帳務記錄為準。
已於 2026年9月21日 根據 Crush 的自訂供應商章節 進行確認。第三方設定會變動;如果這裡的欄位名稱不再與你看到的內容相符,應以該頁面為準,而不是本頁。
除錯用戶端前先驗證
一個請求就能判斷失敗原因是端點、金鑰還是設定檔。如果這裡回傳 JSON,則相同的基礎 URL 與金鑰在 Crush 中也能運作。
# 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 輸入/輸出 | 它在 Crush 中的位置 |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | model large 欄位——日常程式設計和編輯模型 |
claude-haiku-4-5 | $0.70 / $3.50 | model small 欄位;Crush 會持續用它產生標題和摘要 |
claude-opus-5 | $3.50 / $17.50 | 進行重構且錯誤規劃代價高昂時,切換為 model large |
gpt-5-6-terra | $0.70 / $4.20 | 使用同一把金鑰增加另一個模型項目,即可改用不同系列 |
常見問題
如何在 Crush CLI 新增自訂 API 供應商?
將設定寫入 crushrc——這是一種可使用 Crush 內建功能的 Bash 設定檔。執行一行指令即可登記端點——provider add kunavo --type openai-compat --base-url "https://api.kunavo.com/v1" --api-key "$KUNAVO_API_KEY"——每個 id 再執行一個 model add,以登記你要呼叫的模型,並設定 Crush 用於螢幕估算的顯示名稱、上下文視窗和每百萬 token 價格。Crush 會依序讀取 ./.crushrc、./crushrc,再讀取 ~/.config/crush/crushrc,因此同一個區塊可用於個別專案或整台電腦。
Crush 的基底網址需要以 /v1 結尾嗎?
需要。Crush 的自訂供應商範例中,兩種類型都包含後綴:OpenAI 相容案例使用 https://api.deepseek.com/v1,Anthropic 相容案例使用 https://api.anthropic.com/v1。Kunavo 金鑰對應的網址是 https://api.kunavo.com/v1。這和 Claude Code 的做法相反;該用戶端的 ANTHROPIC_BASE_URL 使用不含路徑的來源網址,因為用戶端會自行附加路徑——相同閘道有兩種寫法;漏掉 /v1 會收到 404,而非 401。
應使用 --type openai 還是 --type openai-compat?
任何第三方閘道都應使用 openai-compat。Crush 的 README 將 openai 保留給透過 OpenAI 本身代理或路由請求的情況,並指示 API 與 OpenAI 相容的非 OpenAI 供應商使用 openai-compat。此類型也會決定線路格式以外的行為:若 openai-compat 供應商的模型清單為空,就會自動探索模型。Crush 另外也支援用於 Anthropic 相容端點的 --type anthropic,此類型需要搭配 --extra-header anthropic-version 2023-06-01。
crush.json 還是這項設定的正確位置嗎?
不是。crush.json 是舊格式,Crush 的官方文件目前已將其標示為已棄用,也不會再為它新增功能;現行格式是 crushrc。請注意,兩種格式都會執行,而非解析:crushrc 會在完整 shell 中執行,crush.json 中的任何 $(...) 則會在載入時展開。因此文件才會警告,切勿在尚未讀取設定內容的目錄中啟動 Crush;也正因為如此,才能直接在設定中從密碼管理工具取得金鑰。
為什麼 Crush 顯示的費用與實際扣款不同?
因為這是兩個不同來源的數字。對手動登記的供應商,螢幕上的估算是根據你在 model add 中輸入的 --price-input 和 --price-output 數值計算;對內建供應商,估算則來自 Crush 的外部供應商目錄 Catwalk。兩者都不會讀取你的帳戶。--price-* 旗標若輸入錯誤,只會造成顯示數字不正確,不會影響實際扣款。請改至 /app/billing 對帳。
Crush 能透過自訂供應商使用 Claude 或 GPT 模型嗎?
可以,Crush 沒有任何限制。Charm Hyper 是導覽流程引導您使用的官方供應商,但自訂供應商是文件明確支援的一級途徑,不受方案限制;模型 ID 會在端點解析,而不是在用戶端解析。因此,在 openai-compat 供應商上使用 Claude ID 正是預期的組合:類型代表線上傳輸協定,不代表廠商。