Dokumentation
mini-SWE-agent
mini hat weder eine Umgebungsvariable für die Basis-URL noch eine Einstellung, die per Klick geändert werden kann. Der Endpunkt wird in vier YAML-Zeilen konfiguriert, die mini direkt an litellm übergibt – dazu kommt ein Preisregister, denn das Ausgabenlimit pro Ausführung kann in mini keine Tokens zählen, für die keine Preise hinterlegt sind.
mini-SWE-agent hat keine Umgebungsvariable für die Basis-URL — der Endpunkt steht unter model.model_kwargs.api_base in einer YAML-Konfiguration, die mini direkt an litellm.completion übergibt.
# 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 bei und beachten Sie, dass mini dies nicht in einem Satz ausdrücklich festhält. Folgendes klärt die Frage: mini liest den Wert nie ein. In der Dokumentation steht, dass model_kwargs „direkt an litellm.completion“ übergeben wird; der Aufruf ist als litellm.completion(model=model_name, messages=messages, **model_kwargs) dargestellt. Die Regel stammt also von litellm. Und das einzige konkrete Beispiel für api_base, das mini jemals ausgibt, enthält das Suffix: http://localhost:8000/v1 in seinem vLLM-Beispiel. Auf der OpenAI-kompatiblen Seite von litellm heißt es außerdem: „Achten Sie darauf, dass Ihr api_base das Suffix /v1 hat“, wenn eine Anfrage mit Not Found zurückkommt. Kilo Code und Aider verwenden dieselbe Form; Clients im Anthropic-Stil und goose verwenden stattdessen den reinen Ursprung.openai/ im Modellnamen und custom_llm_provider erfüllen dieselbe Aufgabe. Im eigenen Beispiel von mini wird nur die zweite Variante verwendet. Beides ist möglich, auch zusammen; die verwendete Variante muss jedoch mit litellm_provider im Preisregister übereinstimmen. Das Präfix bezeichnet ein Wire-Protokoll, keinen Anbieter: Eine Claude-ID unter openai/ ist die vorgesehene Kombination, da die ID am Endpunkt und nicht innerhalb von litellm aufgelöst wird.openai/-Pfad von litellm native Tool-Aufrufe — der Standard in minis v2 — mit Kunavos /v1/chat/completions aushandelt und ob diese Schnittstelle die cache_control-Marker berücksichtigt, die mini selbstständig an IDs mit Claude im Namen anhängt. Das unten stehende curl ist der Teil, den Sie in zehn Sekunden klären können; für den Rest müssen Sie einen kurzen ersten Testlauf durchführen.sk-kn-) und füge ab $10 Guthaben hinzu – Aufrufe werden aus diesem Guthaben bezahlt, fehlgeschlagene Aufrufe werden nicht berechnet. Das Dashboard öffnet anschließend die mini-SWE-agent-Einrichtung.Schritt für Schritt
- Erstellen Sie unter
/app/keyseinen Schlüssel und kopieren Sie ihn — er wird nur einmal angezeigt. - Installieren Sie mini und führen Sie es einmal aus, damit die Pfade angelegt werden: zuerst
pip install mini-swe-agent, dannmini. Beim ersten Start wird angezeigt, wo sich die Dateien.envund die Agentenkonfiguration befinden; außerdem wirdmini-extra config setupangeboten. - Legen Sie den Schlüssel dort ab, wo litellm danach sucht: unter
export OPENAI_API_KEY=sk-kn-...oder dauerhaft mitmini-extra config set OPENAI_API_KEY sk-kn-.... mini weist darauf hin: „Umgebungsvariablen haben Vorrang vor Variablen in der Datei.env“. Deshalb scheint ein gerade geänderter Schlüssel häufig unverändert zu sein. - Speichern Sie das obige YAML unter
kunavo.yamlneben Ihren anderen Agentenkonfigurationen und fügen Sie das Preisregister aus dem folgenden Abschnitt hinzu. Ohne dieses Register bricht die Ausführung wegen eines Fehlers bei der Kostenberechnung ab, nicht wegen einer schlechten Antwort. - Starten Sie mini mit
mini -c kunavo.yamloder verwenden Siemini -c kunavo.yaml -m openai/claude-haiku-4-5, um die ID für einen einzelnen Lauf zu überschreiben. mini startet standardmäßig im Modusconfirm, in dem Sie jeden Befehl bestätigen müssen – eine gute Standardeinstellung für den ersten Lauf über einen neuen Endpunkt. - Geben Sie mini eine Aufgabe, bei der tatsächlich ein Befehl ausgeführt wird, keinen Gruß. Die Standardeinstellung in mini v2 ist native Tool-Aufruffunktionalität, und die mitgelieferte Prompt-Vorlage besteht darauf: „Jede Antwort muss mindestens einmal das Tool 'bash' verwenden, um Befehle auszuführen.“ Ein tatsächlicher Tool-Aufruf mit anschließender Antwort zeigt daher, ob die Kombination funktioniert. Falls Tool-Aufrufe leer oder fehlerhaft zurückkommen, bietet mini weiterhin den älteren Pfad zur Textauswertung:
mini -c mini_textbased.yamlodermodel_class: litellm_textbasedin Ihrer eigenen Datei.
Abgeglichen mit Leitfaden für lokale Modelle von mini-SWE-agent am 21. September 2026. Einstellungen von Drittanbietern können sich ändern; wenn ein Feldname hier nicht mehr mit deiner Ansicht übereinstimmt, ist diese Seite maßgeblich, nicht diese hier.
Vor dem Debugging des Clients prüfen
Eine Anfrage klärt, ob der Fehler am Endpunkt, am Schlüssel oder an der Konfigurationsdatei liegt. Wenn diese Anfrage JSON zurückgibt, funktionieren dieselbe Basis-URL und derselbe Schlüssel in 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-..."Welche Modell-ID in das Feld gehört
Jedes Textmodell ist über eine Modell-ID erreichbar – die aktuelle Liste findest du unter GET /v1/models, den Katalog mit Preisen auf der Modellseite. Die Tarife sind USD pro 1 Mio. Token, Eingabe / Ausgabe.
| Modell-ID | Kunavo: Ein- und Ausgabe | Wo es in mini-SWE-agent hineinpasst |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | die Standard-ID für eine Arbeitssitzung – mini sendet den Kontext bei jedem Schritt erneut, daher fallen hier die Kosten an |
claude-opus-5 | $3.50 / $17.50 | ein Lauf, bei dem der falsche Plan teuer wäre; kombinieren Sie ihn mit einem niedrigeren cost_limit, nicht mit einem höheren |
claude-haiku-4-5 | $0.70 / $3.50 | Batch-Läufe mit vielen Aufgaben und jede Schleife, die Sie im Yolo-Modus laufen lassen |
gpt-5-6-sol | $2.00 / $12.00 | eine zweite Modellfamilie hinter derselben api_base – ändern Sie model_name und fügen Sie einen Registereintrag hinzu |
Kostenverfolgung, die hier unverzichtbar ist
Die ausgelieferte Version von mini enthält mini.yaml mit cost_limit: 3. – einer Obergrenze pro Ausführung in Dollar. Diese Grenze wird vom Kostenrechner von litellm durchgesetzt, der die Kosten einer Ausführung anhand der Modell-ID im eigenen Register berechnet. Kunavo-IDs sind dort nicht enthalten. Deshalb sehen die meisten zuerst keinen schlechten Antworten, sondern eine Fehlermeldung: Auf der mini-eigenen Seite zur Fehlerbehebung wird sie als Exception: This model isn't mapped yet. model=…, custom_llm_provider=… angezeigt.
Es gibt zwei Möglichkeiten, das Problem zu beheben, und sie sind nicht gleichwertig. Der globale Schalter MSWEA_COST_TRACKING="ignore_errors" (oder cost_tracking: "ignore_errors" in der Datei) entfernt die Schutzvorkehrung, statt sie zu reparieren. mini bezeichnet dies als „VORSICHT: Dies kann zu unkontrollierten Ausgaben führen!“ Die andere Möglichkeit ist, litellm die Preise mitzuteilen. Darauf verweist litellm_model_registry im Konfigurationsblock. Die folgenden Preise stammen aus dem aktuellen Live-Katalog dieser Website und wurden in das Format von litellm pro Token umgerechnet:
{
"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"
}
}- Modellnamen werden exakt und unter Beachtung der Groß- und Kleinschreibung abgeglichen. Im Beispiel von mini wird der Eintrag unter dem Namen ohne Provider-Präfix angelegt. Deshalb steht hier
claude-sonnet-5, obwohl in der Konfigurationopenai/claude-sonnet-5angegeben ist. litellm_providermuss mit dem Präfix und mitcustom_llm_providerübereinstimmen. mini warnt ausdrücklich: „Wenn Siecustom_llm_providerverwenden oder dem Modellnamen ein Provider-Präfix voranstellen (z. B.openai/…), muss dies auch mitlitellm_providerin der Konfiguration übereinstimmen!“- Der Pfad kann statt über den Konfigurationsschlüssel auch über
LITELLM_MODEL_REGISTRY_PATHfestgelegt werden – nützlich für Batch-Ausführungen, zum BeispielLITELLM_MODEL_REGISTRY_PATH=kunavo-registry.json mini-extra swebench … - Diese Preise dienen als Budgeteingabe, nicht als Abrechnung. Tatsächlich berechnet wird der Betrag, den Ihr Kunavo-Guthaben ausweist. Übernehmen Sie die Preise erneut, wenn sich der Katalog ändert, oder lesen Sie sie unter
GET /v1/modelsab.
Häufig gestellte Fragen
Wie richte ich mini-SWE-agent auf einen benutzerdefinierten API-Endpunkt aus?
Über eine Konfigurationsdatei, nicht über eine Umgebungsvariable – mini hat überhaupt keine Variable für die Basis-URL. Legen Sie in einer Agentenkonfigurationsdatei model.model_name auf Ihre ID fest, optional mit dem Präfix openai/. Legen Sie dann unter model.model_kwargs custom_llm_provider: "openai" und api_base auf die Basis-URL des Endpunkts fest. In der Dokumentation von mini wird erklärt, warum das funktioniert: model_kwargs „wird direkt an litellm.completion übergeben“. Wählen Sie die Datei mit `mini -c kunavo.yaml` aus oder legen Sie sie mit MSWEA_MINI_CONFIG_PATH als Standard fest. Die Basis-URL für Kunavo lautet https://api.kunavo.com/v1.
Woher bezieht mini-SWE-agent den API-Schlüssel?
Aus der litellm-Schlüsselvariable, die zum ausgewählten Provider passt. Bei custom_llm_provider: "openai" ist dies OPENAI_API_KEY. Sie können die Variable in der Shell exportieren oder mit `mini-extra config set OPENAI_API_KEY <key>` dauerhaft speichern. Dadurch wird die .env-Datei von mini geschrieben. mini weist darauf hin, dass Umgebungsvariablen Vorrang vor den Einträgen in der Datei haben. Der Schlüssel ist kein Feld in der Agentenkonfiguration. Falls Sie einer älteren Anleitung folgen: Im Migrationsleitfaden zu v2 wird MSWEA_MODEL_API_KEY als „wird nicht mehr zum Überschreiben von API-Schlüsseln verwendet“ aufgeführt.
Muss mini-SWE-agents api_base mit /v1 enden?
Ja, bei einem OpenAI-kompatiblen Endpunkt, zum Beispiel https://api.kunavo.com/v1. mini stellt dies jedoch anhand eines Beispiels und nicht als Regel dar. mini übergibt model_kwargs direkt an litellm.completion, daher gilt die Konvention von litellm. Der einzige konkrete api_base-Wert in der Dokumentation von mini ist http://localhost:8000/v1 aus dem vLLM-Beispiel. Auf der OpenAI-kompatiblen Seite von litellm steht der entscheidende Hinweis: Kommt eine Anfrage mit Not Found zurück, muss api_base das Suffix /v1 enthalten. Fehlt /v1, äußert sich das daher als 404 und nicht als Authentifizierungsfehler.
Warum schlägt mini-SWE-agent mit „This model isn't mapped yet“ fehl?
Weil litellm die Modell-ID nicht mit einem Preis versehen kann und das Ausgabenlimit pro Ausführung von mini – in der ausgelieferten mini.yaml sind es 3. Dollar – mithilfe des Kostenrechners von litellm durchgesetzt wird. mini empfiehlt als Lösung ein Modellregister: eine JSON-Datei im Modellpreisformat von litellm, deren Schlüssel der Modellname ohne Provider-Präfix ist. litellm_provider muss mit dem Wert übereinstimmen, den Sie für custom_llm_provider oder als Namenspräfix festgelegt haben. Verweisen Sie in der Konfiguration über litellm_model_registry oder in der Umgebung über LITELLM_MODEL_REGISTRY_PATH auf diese Datei. Mit MSWEA_COST_TRACKING="ignore_errors" wird die Fehlermeldung ebenfalls unterdrückt, aber die Ausgabenschutzgrenze entfernt, statt das Problem zu beheben.
Kann mini-SWE-agent Claude-Modelle über einen OpenAI-kompatiblen Endpunkt verwenden?
Ja. Das Präfix openai/ und custom_llm_provider bezeichnen ein Wire-Protokoll, keinen Anbieter: litellm sendet eine OpenAI-kompatible Chat-Completions-Anfrage an die konfigurierte api_base und übermittelt die Modell-ID unverändert. Eine Claude-ID wird daher an diesem Endpunkt aufgelöst, nicht in der Provider-Tabelle von litellm. Ein spezifischer Nebeneffekt von mini ist wissenswert: mini fügt automatisch Einstellungen für Cache-Control hinzu, wenn der aufgelöste Modellname „anthropic“, „claude“, „sonnet“ oder „opus“ enthält. Das trifft auf eine vorangestellte ID wie openai/claude-… zu.
Hat Kunavo mini-SWE-agent mit seinem Endpunkt getestet?
Nein. Am 21. September 2026 wurde die Dokumentation von mini geprüft; die Schlüssel, ihre Reihenfolge und die Form von api_base sind daraus übernommen. Kunavo hat keine mini-Sitzung über seinen Endpunkt ausgeführt und macht für diesen Client keine Aussagen zu Streaming, Tool-Aufrufen mit anschließender Antwort oder Kostenberichten. Zwei Punkte sind ausdrücklich ungeklärt: ob der openai/-Pfad von litellm native Tool-Aufrufe – seit v2.0 die Standardeinstellung von mini – mit einem Chat-Completions-Endpunkt aushandelt und ob dieser Endpunkt die cache_control-Marker verarbeitet, die mini an Claude-IDs anhängt. Der curl-Aufruf auf dieser Seite prüft Endpunkt und Schlüssel; ein kurzer erster Lauf im Bestätigungsmodus klärt den Rest.