Dokumentation

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.

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
Behalten Sie das /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.
Das Präfix 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.
Diese Konfiguration wurde am unten angegebenen Datum der eigenen Dokumentation von mini entnommen. Kunavo hat mini-SWE-agent nicht gegen seinen Endpunkt ausgeführt — keine Sitzung, kein gestreamter Turn, kein Tool-Roundtrip, und dasselbe gilt für jeden anderen Client dieser Familie. Eine veröffentlichte Einrichtungsseite ist kein Kompatibilitätstest. Zwei Fragen sind ausdrücklich noch ungeklärt: ob der 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.
Kunavo bietet keine Embedding-, Text-to-Speech- oder Speech-to-Text-Modelle an. Dieser Endpunkt verarbeitet daher ausschließlich Chat-Completions. mini fragt nur eines davon ab, da es nur ein Tool gibt: bash. Falls umgebende Skripte jedoch ein Repository indizieren oder etwas transkribieren, verwenden diese Aufrufe weiterhin den bereits hinterlegten Provider-Schlüssel.
Noch kein Schlüssel? Erstelle ein Kunavo-Konto, erstelle einen Schlüssel (er beginnt mit 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

  1. Erstellen Sie unter /app/keys einen Schlüssel und kopieren Sie ihn — er wird nur einmal angezeigt.
  2. Installieren Sie mini und führen Sie es einmal aus, damit die Pfade angelegt werden: zuerst pip install mini-swe-agent, dann mini. Beim ersten Start wird angezeigt, wo sich die Dateien .env und die Agentenkonfiguration befinden; außerdem wird mini-extra config setup angeboten.
  3. Legen Sie den Schlüssel dort ab, wo litellm danach sucht: unter export OPENAI_API_KEY=sk-kn-... oder dauerhaft mit mini-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.
  4. Speichern Sie das obige YAML unter kunavo.yaml neben 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.
  5. Starten Sie mini mit mini -c kunavo.yaml oder verwenden Sie mini -c kunavo.yaml -m openai/claude-haiku-4-5, um die ID für einen einzelnen Lauf zu überschreiben. mini startet standardmäßig im Modus confirm, in dem Sie jeden Befehl bestätigen müssen – eine gute Standardeinstellung für den ersten Lauf über einen neuen Endpunkt.
  6. 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.yaml oder model_class: litellm_textbased in 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.

Dies ist die Kurzfassung. Die vollständige Anleitung – Modellauswahl, Kosten einer tatsächlichen Sitzung und Fehlerszenarien – findest du in mini-SWE-agent im Vergleich zu Claude Code.

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-IDKunavo: Ein- und AusgabeWo es in mini-SWE-agent hineinpasst
claude-sonnet-5$1.40 / $7.00die 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.50ein 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.50Batch-Läufe mit vielen Aufgaben und jede Schleife, die Sie im Yolo-Modus laufen lassen
gpt-5-6-sol$2.00 / $12.00eine zweite Modellfamilie hinter derselben api_base – ändern Sie model_name und fügen Sie einen Registereintrag hinzu
Die Abrechnung erfolgt pro Token aus einem vorausbezahlten Guthaben ohne Monatsgebühr – siehe Abrechnung. Bei wiederholtem Kontext – dem Großteil dessen, was ein Editor oder Chat-Client sendet – verändert Prompt-Caching die Rechnung stärker als die Modellwahl.

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:

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. 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 Konfiguration openai/claude-sonnet-5 angegeben ist.
  2. litellm_provider muss mit dem Präfix und mit custom_llm_provider übereinstimmen. mini warnt ausdrücklich: „Wenn Sie custom_llm_provider verwenden oder dem Modellnamen ein Provider-Präfix voranstellen (z. B. openai/…), muss dies auch mit litellm_provider in der Konfiguration übereinstimmen!“
  3. Der Pfad kann statt über den Konfigurationsschlüssel auch über LITELLM_MODEL_REGISTRY_PATH festgelegt werden – nützlich für Batch-Ausführungen, zum Beispiel LITELLM_MODEL_REGISTRY_PATH=kunavo-registry.json mini-extra swebench …
  4. 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/models ab.

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.