文件

文件

mini-SWE-agent

mini 沒有 base-URL 環境變數,也沒有可供點選的設定。端點是四行 YAML,由 mini 直接交給 litellm;另外還需要價格登錄表,因為 mini 的每次執行預算無法計算缺少費率的 token。

mini-SWE-agent 沒有基礎 URL 環境變數 — 端點放在 YAML 設定中的 model.model_kwargs.api_base 下,mini 會將其直接傳給 litellm.completion。

kunavo.yaml · mini -c kunavo.yaml
# mini has no base-URL environment variable and no settings UI. The endpoint
# goes in an agent config file, under model.model_kwargs — which mini's docs
# describe as "directly passed to litellm.completion".
model:
  model_name: "openai/claude-sonnet-5"
  model_kwargs:
    custom_llm_provider: "openai"
    api_base: "https://api.kunavo.com/v1"   # keep the /v1
  litellm_model_registry: "kunavo-registry.json"   # see "Cost tracking" below

# The key does not live in this file. With custom_llm_provider: "openai",
# litellm reads OPENAI_API_KEY, and mini documents two ways to set it:
#
#   export OPENAI_API_KEY=sk-kn-...          # environment, wins over .env
#   mini-extra config set OPENAI_API_KEY sk-kn-...   # mini's own .env
#
# Then run it:  mini -c kunavo.yaml
# Or make it the default:  mini-extra config set MSWEA_MINI_CONFIG_PATH kunavo.yaml
保留 /v1 — mini 並未用一句話說明這點,因此以下說明依據的是能釐清規則的資訊。mini 不會讀取此值:文件指出 model_kwargs「會直接傳遞給 litellm.completion」,並將呼叫方式列為 litellm.completion(model=model_name, messages=messages, **model_kwargs)。因此應遵循 litellm 的規則;mini 唯一提供的具體 api_base 範例帶有後綴 — 其 vLLM 範例中的 http://localhost:8000/v1;而 litellm 自己的 OpenAI 相容頁面指出,若請求回傳 Not Found,請「確認您的 api_base 帶有 /v1 後綴」。Kilo Code 和 Aider 使用相同格式;Anthropic 風格的用戶端和 goose 則使用裸來源網址。
模型名稱中的 openai/ 前綴和 custom_llm_provider 功能相同,而 mini 自己的範例只使用後者;兩者擇一即可,也可以同時使用,但無論使用哪一種,都必須與價格登錄表中的 litellm_provider 相符。此前綴代表的是線上通訊協定,而非供應商:Claude ID 搭配 openai/ 正是預期的組合,因為 ID 是由端點解析,而非由 litellm 解析。
以下設定是於下方所列日期,根據 mini 自己的文件整理而成。Kunavo 尚未使用 mini-SWE-agent 呼叫其端點,沒有執行工作階段、串流回合或工具往返;此系列的其他用戶端也都一樣。發布設定頁面不等於相容性測試。目前有兩項事尚未確認:litellm 的 openai/ 路徑是否會在 Kunavo 的 /v1/chat/completions 上協商 原生工具呼叫(mini v2 的預設功能),以及該介面是否會處理 mini 自動附加至 Claude 名稱 ID 的 cache_control 標記。下方的 curl 可在十秒內確認;其餘情況則需由你親自進行一次簡短的初始執行。
Kunavo 不提供 embedding、文字轉語音或語音轉文字模型,因此此端點只回應聊天完成請求。mini 只會呼叫一項服務,即其唯一的工具 bash;但若周邊指令碼會為儲存庫建立索引或轉錄內容,這些呼叫仍會使用原本的供應商金鑰。
還沒有金鑰?建立 Kunavo 帳戶,建立金鑰(以 sk-kn- 開頭),並從 $10 起新增額度——呼叫會從該餘額扣款,失敗的呼叫不會計費。之後儀表板會開啟 mini-SWE-agent 設定。

逐步操作

  1. 在 /app/keys 建立金鑰並複製——金鑰只會顯示一次。
  2. 先安裝並執行一次,建立所需路徑:pip install mini-swe-agent,接著執行 mini。首次執行時會顯示 .env 和代理程式設定檔的位置,並提供 mini-extra config setup。
  3. 將金鑰放在 litellm 會尋找的位置:export OPENAI_API_KEY=sk-kn-...,或使用 mini-extra config set OPENAI_API_KEY sk-kn-... 將其保存。mini 指出:「環境變數的優先順序高於 .env 檔案中的變數」,通常這就是您剛修改的金鑰看似沒有更新的原因。
  4. 將上方 YAML 儲存為 kunavo.yaml,放在其他代理程式設定檔旁,並加入下方章節中的價格登錄表;若缺少登錄表,執行會因成本計算錯誤而停止,而非因答案錯誤停止。
  5. 使用 mini -c kunavo.yaml 啟動,或使用 mini -c kunavo.yaml -m openai/claude-haiku-4-5 為單次執行覆寫 ID。mini 會以 confirm 模式開啟,每個命令都需由你核准;首次使用新端點時,這是很好的預設值。
  6. 請交付一項確實會執行指令的任務,而非只打招呼。mini v2 預設使用原生工具呼叫,且隨附的提示詞要求「每則回覆都必須至少使用一次 'bash' 工具來執行指令」— 因此,實際完成一次工具往返才能確認兩者搭配正常。若工具呼叫回傳空內容或格式錯誤的內容,mini 仍附有舊版文字解析路徑:使用 mini -c mini_textbased.yaml,或在您自己的檔案中設定 model_class: litellm_textbased。

已於 2026年9月21日 根據 mini-SWE-agent 的本機模型指南 進行確認。第三方設定會變動;如果這裡的欄位名稱不再與你看到的內容相符,應以該頁面為準,而不是本頁。

這是簡短版本。完整指南——模型選擇、實際工作階段費用,以及失敗情況——請參閱 mini-SWE-agent 與 Claude Code 的比較。

除錯用戶端前先驗證

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

# 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 輸入/輸出它在 mini-SWE-agent 中的位置
claude-sonnet-5$1.40 / $7.00適合工作階段的預設 ID;mini 每個步驟都會重新傳送上下文,因此費用會在此累積
claude-opus-5$3.50 / $17.50選錯方案會代價高昂的一次執行;應搭配較低的 cost_limit,而非較高的值
claude-haiku-4-5$0.70 / $3.50適用於大量任務的批次執行,以及任何留在 yolo 模式中的迴圈
gpt-5-6-sol$2.00 / $12.00在相同 api_base 下使用第二個模型系列;更改 model_name 並新增一筆登錄項目即可
計費方式是從預付餘額按權杖計費,沒有月費——請參閱 billing。在重複的上下文中——這是編輯器或聊天用戶端傳送內容的大部分——提示快取 對帳單的影響比模型選擇更大。

此處不可或缺的成本追蹤

mini 隨附的 mini.yaml 帶有 cost_limit: 3.,也就是每次執行以美元計算的上限;此上限由 litellm 的成本計算器強制執行,計算器會透過模型 ID 查詢其登錄表來為每次執行計價。該登錄表沒有 Kunavo 的 ID,因此多數人首先看到的不是錯誤答案,而是錯誤:mini 自己的疑難排解頁面將其顯示為 Exception: This model isn't mapped yet. model=…, custom_llm_provider=…。

有兩種解決方式,且兩者並不等同。全域設定 MSWEA_COST_TRACKING="ignore_errors"(或檔案中的 cost_tracking: "ignore_errors")會移除限制,而非修正問題;mini 將其標示為「注意:這可能導致支出失去管理!」另一種方式是提供費率給 litellm,也就是設定區塊中的 litellm_model_registry 所指定的做法。下列費率是此網站目錄中的即時費率,已轉換為 litellm 使用的每 token 格式:

kunavo-registry.json
{
  "claude-sonnet-5": {
    "input_cost_per_token": 0.0000014,
    "output_cost_per_token": 0.000007,
    "litellm_provider": "openai",
    "mode": "chat"
  },
  "claude-opus-5": {
    "input_cost_per_token": 0.0000035,
    "output_cost_per_token": 0.0000175,
    "litellm_provider": "openai",
    "mode": "chat"
  },
  "claude-haiku-4-5": {
    "input_cost_per_token": 0.0000007,
    "output_cost_per_token": 0.0000035,
    "litellm_provider": "openai",
    "mode": "chat"
  }
}
  1. 模型名稱會以完全相符且區分大小寫的方式比對,而 mini 的範例使用的登錄項目名稱不含供應商前綴,因此即使設定中寫的是 openai/claude-sonnet-5,此處仍要填 claude-sonnet-5。
  2. litellm_provider 必須與前綴和 custom_llm_provider 一致。mini 的警告明確指出:「如果您使用 custom_llm_provider,或在模型名稱前加上供應商前綴(例如 openai/…),那麼此設定也必須符合組態中的 litellm_provider!」
  3. 路徑也可以透過 LITELLM_MODEL_REGISTRY_PATH 指定,而非使用設定鍵;批次執行器等情境會很實用,例如 LITELLM_MODEL_REGISTRY_PATH=kunavo-registry.json mini-extra swebench …
  4. 這些費率是預算依據,不是帳單。實際收費金額以 Kunavo 餘額記錄為準;若目錄費率有變動,請重新複製費率,或直接從 GET /v1/models 查閱。

常見問題

如何將 mini-SWE-agent 指向自訂 API 端點?

透過設定檔,而非環境變數;mini 完全沒有 base-URL 變數。在代理程式設定檔中,將 model.model_name 設為你的 ID(可選擇加上 openai/ 前綴),然後在 model.model_kwargs 下設定 custom_llm_provider: "openai",並將 api_base 設為端點的基礎 URL。mini 的文件解釋了此設定為何有效:model_kwargs「會直接傳遞給 litellm.completion」。使用 `mini -c kunavo.yaml` 選取檔案,或透過 MSWEA_MINI_CONFIG_PATH 將其設為預設值。Kunavo 的基礎 URL 為 https://api.kunavo.com/v1。

mini-SWE-agent 從哪裡讀取 API 金鑰?

從與所選供應商相符的 litellm 金鑰變數讀取。若 custom_llm_provider: "openai",則變數為 OPENAI_API_KEY;你可以在 shell 中匯出此變數,或使用 `mini-extra config set OPENAI_API_KEY <key>` 將其保存。該指令會寫入 mini 的 .env,而 mini 說明環境變數的優先順序高於檔案中的設定。金鑰不是代理程式設定檔中的欄位。若參考較舊的教學,請注意 v2 遷移指南指出 MSWEA_MODEL_API_KEY「不再用於覆寫 API 金鑰」。

mini-SWE-agent 的 api_base 結尾需要加上 /v1 嗎?

若為 OpenAI 相容端點,則需要,例如 https://api.kunavo.com/v1,不過 mini 是透過範例說明,而非列出規則。mini 會將 model_kwargs 直接傳遞給 litellm.completion,因此此慣例由 litellm 決定;mini 文件中唯一列出的具體 api_base,是其 vLLM 範例中的 http://localhost:8000/v1。litellm 自己的 OpenAI 相容頁面明確指出:若請求回傳 Not Found,請確認 api_base 帶有 /v1 後綴。因此,若缺少 /v1,會出現 404,而非驗證錯誤。

為什麼 mini-SWE-agent 會出現「此模型尚未對應」錯誤?

因為 litellm 無法為該模型 ID 計價,而 mini 隨附的 mini.yaml 將每次執行的 cost_limit 設為 3. 美元,此限制透過 litellm 的成本計算器強制執行。mini 建議的解法是建立模型登錄表:使用 litellm 的模型價格格式建立 JSON 檔案,以不含供應商前綴的模型名稱作為鍵,並讓 litellm_provider 與 custom_llm_provider 設定或名稱前綴相符。將設定中的 litellm_model_registry,或環境變數中的 LITELLM_MODEL_REGISTRY_PATH,指向該檔案。設定 MSWEA_COST_TRACKING="ignore_errors" 也會讓錯誤訊息不再顯示,但這會移除支出防護機制,而非修復問題。

mini-SWE-agent 可以透過 OpenAI 相容端點使用 Claude 模型嗎?

可以。openai/ 前綴和 custom_llm_provider 指定的是線上通訊協定,而非供應商:litellm 會將 OpenAI 格式的聊天完成請求傳送至你設定的 api_base,並原樣傳遞模型 ID,因此 Claude ID 會由該端點解析,而非由 litellm 的供應商表解析。另有一項與 mini 相關的行為值得了解:只要解析後的模型名稱包含 "anthropic"、"claude"、"sonnet" 或 "opus",mini 就會自動加入快取控制設定;帶有 openai/claude-… 前綴的 ID 也符合此條件。

Kunavo 是否已使用 mini-SWE-agent 測試其端點?

沒有。於 2026 年 9 月 21 日確認的是 mini 自己的文件,鍵、這些鍵的順序及 api_base 格式皆引自該文件。Kunavo 尚未使用 mini 工作階段呼叫其端點,也未對此用戶端的串流、工具往返或成本回報作出任何聲明。目前有兩項事尚待確認:litellm 的 openai/ 路徑是否會在聊天完成端點上協商原生工具呼叫(mini 自 v2.0 起的預設功能),以及該端點是否會處理 mini 附加至以 Claude 命名的 ID 上的 cache_control 標記。本頁的 curl 指令可確認端點和金鑰;以 confirm 模式進行一次簡短的初始執行,則可確認其餘部分。