Documentation
mini-SWE-agent
mini n’a pas de variable d’environnement pour l’URL de base ni d’option à sélectionner. Le point de terminaison se configure dans quatre lignes YAML que mini transmet directement à litellm — auxquelles s’ajoute un registre de tarifs, car le budget par exécution de mini ne peut pas comptabiliser les jetons sans connaître leurs tarifs.
mini-SWE-agent ne possède aucune variable d’environnement pour l’URL de base — l’endpoint va sous model.model_kwargs.api_base dans une configuration YAML, que mini transmet directement à 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 — et sachez que mini ne l’énonce pas explicitement dans une phrase ; voici donc ce qui permet de trancher. mini ne lit jamais la valeur : sa documentation indique que model_kwargs est « directement transmis à litellm.completion », et présente l’appel sous la forme litellm.completion(model=model_name, messages=messages, **model_kwargs). La règle est donc celle de litellm, et le seul api_base concret que mini affiche comporte le suffixe — http://localhost:8000/v1, dans son exemple vLLM — tandis que la page de litellm consacrée à la compatibilité avec OpenAI vous demande de vous « assurer que votre api_base comporte le suffixe /v1 » lorsqu’une requête renvoie Not Found. Kilo Code et Aider utilisent la même forme ; les clients de type Anthropic et goose utilisent quant à eux l’origine seule.openai/ dans le nom du modèle et custom_llm_provider remplissent la même fonction. L’exemple de mini n’utilise que le second : l’un ou l’autre convient, les deux ensemble aussi, mais celui que vous choisissez doit correspondre à litellm_provider dans le registre des tarifs. Le préfixe indique un protocole de communication, et non un fournisseur : associer un identifiant Claude à openai/ est prévu, car l’identifiant est résolu par le point de terminaison, et non par litellm.openai/ de litellm de l’appel natif d’outils — activé par défaut dans mini v2 — avec le /v1/chat/completions de Kunavo, et le traitement par cette interface des marqueurs cache_control que mini ajoute de lui-même aux identifiants Claude. Le curl ci-dessous est le point que vous pouvez vérifier en dix secondes ; pour le reste, il vous suffit de faire un premier essai rapide.sk-kn-) et ajoutez un crédit à partir de 10 $ — les appels sont payés sur ce solde et les appels échoués ne sont pas facturés. Le tableau de bord s’ouvre ensuite sur la configuration mini-SWE-agent.Étape par étape
- Créez une clé sur
/app/keyset copiez-la — elle n’est affichée qu’une seule fois. - Installez et exécutez le programme une fois pour créer les chemins nécessaires :
pip install mini-swe-agent, puismini. Au premier lancement, les emplacements de son.envet de sa configuration d’agent s’affichent, et l’optionmini-extra config setupest proposée. - Placez la clé à l’endroit où litellm la cherchera :
export OPENAI_API_KEY=sk-kn-..., ou conservez-la avecmini-extra config set OPENAI_API_KEY sk-kn-.... mini précise que « les variables d’environnement ont priorité sur celles définies dans le fichier.env», ce qui explique généralement pourquoi une clé que vous venez de modifier semble ne pas avoir changé. - Enregistrez le YAML ci-dessus sous le nom
kunavo.yamlà côté de vos autres configurations d’agent, puis ajoutez le registre de tarifs de la section ci-dessous. Sans cela, l’exécution s’arrêtera sur une erreur de calcul des coûts, et non à cause d’une mauvaise réponse. - Lancez le programme avec
mini -c kunavo.yaml, ou utilisezmini -c kunavo.yaml -m openai/claude-haiku-4-5pour remplacer l’identifiant le temps d’une exécution. mini démarre en modeconfirm, où vous approuvez chaque commande — un bon réglage par défaut pour un premier essai avec un nouveau point de terminaison. - Donnez-lui une tâche qui exécute réellement une commande, pas une salutation. L’appel natif d’outils est le réglage par défaut de mini v2, et son prompt fourni impose que « chaque réponse utilise l’outil 'bash' au moins une fois pour exécuter des commandes ». Un véritable aller-retour d’appel d’outil permet donc de vérifier que l’association fonctionne. Si les appels d’outils sont vides ou mal formés, mini inclut toujours l’ancienne méthode d’analyse du texte :
mini -c mini_textbased.yaml, oumodel_class: litellm_textbaseddans votre propre fichier.
Vérifié avec Guide des modèles locaux de mini-SWE-agent le 21 septembre 2026. Les paramètres tiers évoluent ; si le nom d’un champ ne correspond plus à ce que vous voyez ici, cette page fait autorité, pas celle-ci.
Vérifiez avant de déboguer le client
Une requête suffit à déterminer si l’échec vient de l’endpoint, de la clé ou du fichier de configuration. Si cette requête renvoie du JSON, la même URL de base et la même clé fonctionnent dans 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-..."Quel identifiant de modèle saisir dans le champ
Tous les modèles textuels sont accessibles sous forme d’identifiant de modèle — la liste à jour se trouve sur GET /v1/models, et le catalogue avec les prix sur la page des modèles. Les tarifs sont en USD par million de tokens, entrée / sortie.
| Identifiant du modèle | Entrée / sortie sur Kunavo | Où cela s’intègre dans mini-SWE-agent |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | l’identifiant par défaut pour une session de travail — mini renvoie le contexte à chaque étape, c’est donc là que la facture s’accumule |
claude-opus-5 | $3.50 / $17.50 | une exécution où un mauvais plan coûterait cher ; associez-la à une limite de coût inférieure, et non supérieure |
claude-haiku-4-5 | $0.70 / $3.50 | les exécutions par lots portant sur de nombreuses tâches et toute boucle laissée en mode yolo |
gpt-5-6-sol | $2.00 / $12.00 | une deuxième famille derrière la même api_base — modifiez model_name et ajoutez une entrée au registre |
Suivi des coûts, indispensable dans ce cas
La configuration livrée avec mini inclut mini.yaml, qui porte cost_limit: 3. — un plafond en dollars par exécution. Ce plafond est appliqué par le calculateur de coûts de litellm, qui évalue le coût d’une exécution en recherchant l’identifiant du modèle dans son registre. Les identifiants de Kunavo ne figurent pas dans ce registre ; la plupart des utilisateurs voient donc d’abord une erreur, et non une mauvaise réponse : la page de dépannage de mini l’affiche sous la forme Exception: This model isn't mapped yet. model=…, custom_llm_provider=….
Il existe deux solutions, qui ne sont pas équivalentes. Le commutateur global MSWEA_COST_TRACKING="ignore_errors" (ou cost_tracking: "ignore_errors" dans le fichier) supprime la protection au lieu de la corriger, et mini le qualifie ainsi : « ATTENTION : cela peut entraîner des dépenses non maîtrisées ! » L’autre solution consiste à communiquer les tarifs à litellm, ce à quoi renvoie litellm_model_registry dans le bloc de configuration. Les tarifs ci-dessous sont ceux du catalogue en direct de ce site, convertis au format par jeton de litellm :
{
"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"
}
}- Les noms de modèles sont comparés exactement, en respectant la casse. Dans l’exemple de mini, la clé de l’entrée est le nom sans son préfixe fournisseur — donc
claude-sonnet-5ici, même si la configuration indiqueopenai/claude-sonnet-5. litellm_providerdoit correspondre au préfixe et àcustom_llm_provider. L’avertissement de mini est explicite : « Si vous utilisezcustom_llm_providerou si le nom du modèle est précédé d’un fournisseur (par exempleopenai/…), cela doit également correspondre àlitellm_providerdans la configuration ! »- Le chemin peut également être défini par
LITELLM_MODEL_REGISTRY_PATHplutôt que par la clé de configuration — pratique pour les exécutants de lots, par exempleLITELLM_MODEL_REGISTRY_PATH=kunavo-registry.json mini-extra swebench … - Ces tarifs servent à établir un budget, ce ne sont pas une facture. Le montant réellement facturé est celui enregistré sur votre solde Kunavo. Recopiez-les si le catalogue évolue, ou consultez-les dans
GET /v1/models.
Questions fréquentes
Comment configurer mini-SWE-agent pour utiliser un point de terminaison d’API personnalisé ?
Au moyen d’un fichier de configuration, et non d’une variable d’environnement : mini ne possède aucune variable pour l’URL de base. Dans un fichier de configuration d’agent, définissez model.model_name sur votre identifiant, avec éventuellement le préfixe openai/, puis définissez custom_llm_provider: "openai" et api_base sur l’URL de base du point de terminaison sous model.model_kwargs. La documentation de mini explique pourquoi cela fonctionne : model_kwargs « est transmis directement à litellm.completion ». Sélectionnez le fichier avec `mini -c kunavo.yaml`, ou définissez-le par défaut avec MSWEA_MINI_CONFIG_PATH. Pour Kunavo, l’URL de base est https://api.kunavo.com/v1.
Où mini-SWE-agent récupère-t-il la clé API ?
Dans la variable de clé litellm correspondant au fournisseur sélectionné. Avec custom_llm_provider: "openai", il s’agit de OPENAI_API_KEY. Vous pouvez l’exporter dans le shell ou la conserver avec `mini-extra config set OPENAI_API_KEY <key>` — cette commande écrit dans le fichier .env de mini, et mini précise que les variables d’environnement ont priorité sur le contenu du fichier. La clé ne figure pas dans le fichier de configuration de l’agent. Si vous suivez un ancien tutoriel, sachez que le guide de migration vers v2 indique que MSWEA_MODEL_API_KEY « n’est plus utilisé pour remplacer les clés API ».
Faut-il ajouter /v1 à la fin de api_base dans mini-SWE-agent ?
Oui, pour un point de terminaison compatible avec OpenAI — par exemple https://api.kunavo.com/v1 — même si mini l’illustre par un exemple plutôt que de l’énoncer comme une règle. mini transmet directement model_kwargs à litellm.completion ; la convention relève donc de litellm. Le seul exemple concret d’api_base dans la documentation de mini est http://localhost:8000/v1, dans son exemple vLLM. La page de litellm sur la compatibilité OpenAI tranche la question : si une requête renvoie Not Found, vérifiez que api_base comporte le suffixe /v1. Sans /v1, vous obtiendrez donc une erreur 404, et non une erreur d’authentification.
Pourquoi mini-SWE-agent échoue-t-il avec le message « This model isn't mapped yet » ?
Parce que litellm ne peut pas calculer le prix de l’identifiant du modèle, et que la limite de coût par exécution de mini — 3. dollars dans le fichier mini.yaml fourni — est appliquée au moyen du calculateur de coûts de litellm. mini recommande d’ajouter un registre de modèles : un fichier JSON au format des tarifs de modèles de litellm, indexé par le nom du modèle sans son préfixe fournisseur, avec un litellm_provider correspondant à la valeur définie pour custom_llm_provider ou comme préfixe du nom. Dans la configuration, dirigez litellm_model_registry vers ce fichier, ou définissez LITELLM_MODEL_REGISTRY_PATH dans l’environnement. Définir MSWEA_COST_TRACKING="ignore_errors" masque également l’erreur, mais supprime la protection contre les dépenses au lieu de la corriger.
mini-SWE-agent peut-il utiliser des modèles Claude via un point de terminaison compatible avec OpenAI ?
Oui. Le préfixe openai/ et le nom custom_llm_provider désignent un protocole de communication, pas un fournisseur : litellm envoie une complétion de chat au format OpenAI à l’api_base configurée et transmet l’identifiant du modèle. Un identifiant Claude est donc résolu par ce point de terminaison, et non dans la table des fournisseurs de litellm. Un effet particulier à mini mérite d’être connu : mini ajoute lui-même des paramètres de contrôle du cache lorsque le nom de modèle résolu contient "anthropic", "claude", "sonnet" ou "opus", ce qui est le cas d’un identifiant openai/claude-… préfixé.
Kunavo a-t-il testé mini-SWE-agent avec son point de terminaison ?
Non. Ce qui a été vérifié, le 21 septembre 2026, c’est la documentation de mini : les clés, leur ordre et le format api_base en sont tirés. Kunavo n’a pas exécuté de session mini sur son point de terminaison et ne formule aucune affirmation sur le flux continu, les allers-retours d’appels d’outils ou le suivi des coûts avec ce client. Deux points restent précisément à vérifier : la prise en charge, par la route openai/ de litellm, de l’appel natif d’outils de mini — activé par défaut depuis la v2.0 — avec un point de terminaison de complétion de chat, et le traitement par ce point de terminaison des marqueurs cache_control que mini ajoute aux identifiants Claude. La commande curl sur cette page vérifie le point de terminaison et la clé ; un premier essai rapide en mode confirm permet de vérifier le reste.