文件
mini-SWE-agent
mini 沒有 base-URL 環境變數,也沒有可供點選的設定。端點是四行 YAML,由 mini 直接交給 litellm;另外還需要價格登錄表,因為 mini 的每次執行預算無法計算缺少費率的 token。
mini-SWE-agent 沒有基礎 URL 環境變數 — 端點放在 YAML 設定中的 model.model_kwargs.api_base 下,mini 會將其直接傳給 litellm.completion。
# 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 解析。openai/ 路徑是否會在 Kunavo 的 /v1/chat/completions 上協商 原生工具呼叫(mini v2 的預設功能),以及該介面是否會處理 mini 自動附加至 Claude 名稱 ID 的 cache_control 標記。下方的 curl 可在十秒內確認;其餘情況則需由你親自進行一次簡短的初始執行。sk-kn- 開頭),並從 $10 起新增額度——呼叫會從該餘額扣款,失敗的呼叫不會計費。之後儀表板會開啟 mini-SWE-agent 設定。逐步操作
- 在
/app/keys建立金鑰並複製——金鑰只會顯示一次。 - 先安裝並執行一次,建立所需路徑:
pip install mini-swe-agent,接著執行mini。首次執行時會顯示.env和代理程式設定檔的位置,並提供mini-extra config setup。 - 將金鑰放在 litellm 會尋找的位置:
export OPENAI_API_KEY=sk-kn-...,或使用mini-extra config set OPENAI_API_KEY sk-kn-...將其保存。mini 指出:「環境變數的優先順序高於.env檔案中的變數」,通常這就是您剛修改的金鑰看似沒有更新的原因。 - 將上方 YAML 儲存為
kunavo.yaml,放在其他代理程式設定檔旁,並加入下方章節中的價格登錄表;若缺少登錄表,執行會因成本計算錯誤而停止,而非因答案錯誤停止。 - 使用
mini -c kunavo.yaml啟動,或使用mini -c kunavo.yaml -m openai/claude-haiku-4-5為單次執行覆寫 ID。mini 會以confirm模式開啟,每個命令都需由你核准;首次使用新端點時,這是很好的預設值。 - 請交付一項確實會執行指令的任務,而非只打招呼。mini v2 預設使用原生工具呼叫,且隨附的提示詞要求「每則回覆都必須至少使用一次 'bash' 工具來執行指令」— 因此,實際完成一次工具往返才能確認兩者搭配正常。若工具呼叫回傳空內容或格式錯誤的內容,mini 仍附有舊版文字解析路徑:使用
mini -c mini_textbased.yaml,或在您自己的檔案中設定model_class: litellm_textbased。
已於 2026年9月21日 根據 mini-SWE-agent 的本機模型指南 進行確認。第三方設定會變動;如果這裡的欄位名稱不再與你看到的內容相符,應以該頁面為準,而不是本頁。
除錯用戶端前先驗證
一個請求就能判斷失敗原因是端點、金鑰還是設定檔。如果這裡回傳 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 權杖的美元價格,輸入/輸出。
| 模型 ID | Kunavo 輸入/輸出 | 它在 mini-SWE-agent 中的位置 |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | 適合工作階段的預設 ID;mini 每個步驟都會重新傳送上下文,因此費用會在此累積 |
claude-opus-5 | $3.50 / $17.50 | 選錯方案會代價高昂的一次執行;應搭配較低的 cost_ |
claude-haiku-4-5 | $0.70 / $3.50 | 適用於大量任務的批次執行,以及任何留在 yolo 模式中的迴圈 |
gpt-5-6-sol | $2.00 / $12.00 | 在相同 api_base 下使用第二個模型系列;更改 model_name 並新增一筆登錄項目即可 |
此處不可或缺的成本追蹤
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 格式:
{
"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"
}
}- 模型名稱會以完全相符且區分大小寫的方式比對,而 mini 的範例使用的登錄項目名稱不含供應商前綴,因此即使設定中寫的是
openai/claude-sonnet-5,此處仍要填claude-sonnet-5。 litellm_provider必須與前綴和custom_llm_provider一致。mini 的警告明確指出:「如果您使用custom_llm_provider,或在模型名稱前加上供應商前綴(例如openai/…),那麼此設定也必須符合組態中的litellm_provider!」- 路徑也可以透過
LITELLM_MODEL_REGISTRY_PATH指定,而非使用設定鍵;批次執行器等情境會很實用,例如LITELLM_MODEL_REGISTRY_PATH=kunavo-registry.json mini-extra swebench … - 這些費率是預算依據,不是帳單。實際收費金額以 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 模式進行一次簡短的初始執行,則可確認其餘部分。