ドキュメント

ドキュメント

mini-SWE-agent

mini にはベース URL 用の環境変数も、クリックして設定する項目もありません。エンドポイントは mini から litellm に直接渡される 4 行の YAML で指定します。さらに料金レジストリも必要です。mini の実行ごとの予算では、料金が設定されていないトークンの費用を計算できないためです。

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と一致させる必要があります。プレフィックスが示すのはベンダーではなくワイヤープロトコルです。ID は litellm 内部ではなくエンドポイントで解決されるため、Claude ID にopenai/を組み合わせるのは意図された使い方です。
以下の構成は、下記の日付時点の mini 公式ドキュメントを参照したものです。Kunavo は mini-SWE-agent を自社エンドポイントで実行していません。セッション、ストリーミングのターン、ツールの往復はいずれも未実施で、このファミリーの他のクライアントについても同様です。セットアップ手順の公開は、互換性テストを実施したことを意味しません。具体的に未確認の点は 2 つあります。litellm のopenai/パスが Kunavo の/v1/chat/completionsに対してネイティブなツール呼び出し(mini v2 のデフォルト)をネゴシエートするかどうか、そしてこのインターフェースが Claude 名の ID に対して mini 自身が付加するcache_controlマーカーを処理するかどうかです。以下のcurlの部分は 10 秒で確認できます。それ以外は、実際に短い初回実行をして確認してください。
Kunavo は埋め込み、テキスト読み上げ、音声認識モデルを提供していないため、このエンドポイントが応答するのはチャット補完だけです。mini は常にその 1 種類だけを要求します(ツールは 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で起動します。1 回の実行だけ ID を上書きするにはmini -c kunavo.yaml -m openai/claude-haiku-4-5を使います。mini はconfirmモードで開き、各コマンドの実行前に承認を求めます。新しいエンドポイントで初回実行する際の適切なデフォルトです。
  6. あいさつではなく、実際にコマンドを実行するタスクを与えてください。miniのv2ではネイティブのツール呼び出しがデフォルトで、付属のプロンプトも「すべての応答で、コマンドを実行するために少なくとも1度は'bash'ツールを使用する必要がある」と求めています。そのため、実際のツール呼び出しが1回往復して初めて、この組み合わせが動作するとわかります。ツール呼び出しが空、または不正な形式で返る場合も、miniには従来のテキスト解析方式が引き続き付属しています。mini -c mini_textbased.yaml、またはご自身のファイル内のmodel_class: litellm_textbasedを使用してください。

mini-SWE-agent のローカルモデルガイドで2026年9月21日に確認しました。サードパーティの設定は変更されます。ここに記載されたフィールド名が表示内容と一致しなくなった場合は、このページではなく、そのページを正しい情報源としてください。

これが短い概要です。完全な手順 — モデルの選択、実際のセッション費用、失敗するケース — はmini-SWE-agent と Claude Code の比較にあります。

クライアントをデバッグする前に確認すること

1回のリクエストで、失敗の原因がエンドポイント、キー、設定ファイルのどれかを特定できます。これが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、価格付きのカタログはモデルページにあります。料金は100万トークンあたりのUSDで、入力 / 出力の順です。

モデル 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 の背後にある 2 つ目のファミリー — model_name を変更し、レジストリエントリを 1 つ追加
請求は月額料金なしの前払い残高からトークン単位で行われます — 請求を参照してください。繰り返し送られるコンテキスト(エディターやチャットクライアントが送る内容の大半)では、プロンプトキャッシュのほうがモデル選択より請求額を大きく左右します。

ここでは省略できないコスト追跡

mini の同梱mini.yamlにはcost_limit: 3.(ドル建ての、1 回の実行あたりの上限額)が設定されており、この上限は litellm のコスト計算機によって適用されます。コスト計算機は、レジストリでモデル ID を照合して実行コストを算出します。Kunavo の ID はそのレジストリに登録されていないため、多くの人が最初に目にするのは不適切な回答ではなくエラーです。mini のトラブルシューティングページでは、これをException: This model isn't mapped yet. model=…, custom_llm_provider=…として示しています。

対処方法は2つありますが、同等ではありません。グローバルスイッチのMSWEA_COST_TRACKING="ignore_errors"(ファイルではcost_tracking: "ignore_errors")は、ガードを修復するのではなく取り除くもので、miniは「注意:支出を管理できなくなる可能性があります!」と警告しています。もう一方はlitellmに料金を伝える方法で、設定ブロックのlitellm_model_registryが指しているのはこちらです。以下の料金は、このサイトの現行カタログ料金をlitellmのトークン単位の形式に変換したものです。

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 にはベース URL 用の環境変数がありません。エージェント設定ファイルの model.model_name に使用する ID(必要なら openai/ をプレフィックスとして付加)を設定し、model.model_kwargs の下に custom_llm_provider: "openai" とエンドポイントのベース URL を示す api_base を設定してください。この方法が機能する理由について、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 です。シェルで export するか、`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 で「This model isn't mapped yet」と表示されて失敗するのはなぜですか?

litellm がモデル ID の料金を特定できず、mini の実行ごとの cost_limit(同梱の mini.yaml では 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 のセッションを実行しておらず、このクライアントでのストリーミング、ツールの往復、コスト報告について何も主張していません。具体的に未確認の点は 2 つあります。litellm の openai/ パスが、チャット補完エンドポイントに対してネイティブなツール呼び出し(v2.0 以降の mini のデフォルト)をネゴシエートするかどうか、そしてそのエンドポイントが Claude 名の ID に対して mini が付加する cache_control マーカーを処理するかどうかです。このページの curl でエンドポイントとキーを確認でき、残りは confirm モードで短い初回実行をすれば確認できます。