文件

文件

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。

~/.config/crush/crushrc
# 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。
Kunavo 尚未在執行階段測試 Crush——此頁中的這個用戶端和其他用戶端都沒有測試過。此處核對的是 Crush 官方文件記載的設定方式與 Kunavo 公布的端點是否相符;設定指南不是測試結果。將它設為日常使用的主要工具前,請先執行一項範圍明確的任務。
還沒有金鑰?建立 Kunavo 帳戶,建立金鑰(以 sk-kn- 開頭),並從 $10 起新增額度——呼叫會從該餘額扣款,失敗的呼叫不會計費。之後儀表板會開啟 Crush 設定。

逐步操作

  1. 在 /app/keys 建立金鑰並複製——金鑰只會顯示一次。將金鑰匯出為 KUNAVO_API_KEY,或直接從密碼管理工具在設定檔中讀取。
  2. 將上方區塊放入 ~/.config/crush/crushrc。Crush 會依序讀取 ./.crushrc、./crushrc,再讀取全域設定,因此專案設定可以覆寫此電腦的設定——而你複製的儲存庫也可能附帶設定檔。
  3. 啟動 crush,並按 ctrl+l 開啟模型選擇器。上方的 model large 和 model small 行已預先指定兩個欄位,因此模型選擇器用來切換模型,而非進行初始設定。
  4. 如果不想手動登記 id:當 openai-compat 供應商的模型清單為空,或你傳入 --discover-models true 時,就會執行自動探索。Kunavo 會回應 GET /v1/models,因此模型清單會自動填入;若設定衝突,則以你自行設定的 model add 欄位為準。
  5. 執行一項範圍明確的任務,然後查看帳戶在 /app/billing 記錄的費用。終端機顯示的數字是根據你輸入的 --price-* 數值計算得出;實際帳單則以帳務記錄為準。

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

這是簡短版本。完整指南——模型選擇、實際工作階段費用,以及失敗情況——請參閱 Crush 與 OpenCode。

除錯用戶端前先驗證

一個請求就能判斷失敗原因是端點、金鑰還是設定檔。如果這裡回傳 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 權杖的美元價格,輸入/輸出。

模型 IDKunavo 輸入/輸出它在 Crush 中的位置
claude-sonnet-5$1.40 / $7.00model large 欄位——日常程式設計和編輯模型
claude-haiku-4-5$0.70 / $3.50model small 欄位;Crush 會持續用它產生標題和摘要
claude-opus-5$3.50 / $17.50進行重構且錯誤規劃代價高昂時,切換為 model large
gpt-5-6-terra$0.70 / $4.20使用同一把金鑰增加另一個模型項目,即可改用不同系列
計費方式是從預付餘額按權杖計費,沒有月費——請參閱 billing。在重複的上下文中——這是編輯器或聊天用戶端傳送內容的大部分——提示快取 對帳單的影響比模型選擇更大。

常見問題

如何在 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 正是預期的組合:類型代表線上傳輸協定,不代表廠商。