Documentación
mini-SWE-agent
mini no tiene una variable de entorno para la URL base ni una opción que puedas seleccionar. El endpoint se configura en cuatro líneas de YAML que mini pasa directamente a litellm. También hace falta un registro de precios, porque el presupuesto por ejecución de mini no puede contar los tokens si no conoce sus tarifas.
mini-SWE-agent no tiene una variable de entorno para la URL base — el endpoint se configura en model.model_kwargs.api_base dentro de un archivo YAML, que mini entrega directamente a 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 — y ten en cuenta que mini no lo afirma explícitamente en una frase, así que esto es lo que aclara la cuestión. mini nunca lee el valor: su documentación dice que model_kwargs se «pasa directamente a litellm.completion» y muestra la llamada como litellm.completion(model=model_name, messages=messages, **model_kwargs). Por tanto, la regla es de litellm, y el único api_base concreto que mini muestra lleva el sufijo — http://localhost:8000/v1, en su ejemplo de vLLM —, mientras que la propia página de litellm sobre compatibilidad con OpenAI te indica que «te asegures de que tu api_base tenga el sufijo /v1» cuando una solicitud devuelve Not Found. Kilo Code y Aider utilizan el mismo formato; los clientes de estilo Anthropic y goose utilizan, en cambio, el origen sin sufijo.openai/ en el nombre del modelo y custom_llm_provider cumplen la misma función. El ejemplo de mini usa solo la segunda opción; cualquiera de las dos sirve, y también pueden usarse ambas, pero la que elijas debe coincidir con litellm_provider en el registro de precios. El prefijo identifica un protocolo de comunicación, no un proveedor: usar un ID de Claude con openai/ es la combinación prevista, porque el ID se resuelve en el endpoint, no dentro de litellm.openai/ de litellm negocia las llamadas nativas a herramientas — la opción predeterminada de mini en v2 — con el /v1/chat/completions de Kunavo, y si esa interfaz actúa según los marcadores cache_control que mini añade por su cuenta a los identificadores con nombres de Claude. El curl que aparece a continuación es la parte que puedes resolver en diez segundos; el resto depende de ti y de una breve primera ejecución.sk-kn-) y añade crédito desde $10; las llamadas se pagan con ese saldo y las llamadas fallidas no se facturan. El panel se abre entonces en la configuración de mini-SWE-agent.Paso a paso
- Cree una clave en
/app/keysy cópiela: se muestra una sola vez. - Instálalo y ejecútalo una vez para crear las rutas:
pip install mini-swe-agenty despuésmini. La primera ejecución indica dónde están.envy la configuración del agente, y ofrecemini-extra config setup. - Guarda la clave donde litellm la buscará:
export OPENAI_API_KEY=sk-kn-...o de forma persistente conmini-extra config set OPENAI_API_KEY sk-kn-.... mini señala que “Las variables de entorno tienen prioridad sobre las variables definidas en el archivo.env”. Por eso, si acabas de cambiar una clave y parece que no ha cambiado, normalmente se debe a que hay una variable de entorno definida. - Guarda el YAML anterior como
kunavo.yaml, junto a las demás configuraciones de tus agentes, y añade el registro de precios de la sección siguiente. Sin él, la ejecución se detendrá por un error de cálculo de costes, no por una respuesta incorrecta. - Inícialo con
mini -c kunavo.yamlo usamini -c kunavo.yaml -m openai/claude-haiku-4-5para cambiar el ID en una sola ejecución. mini se inicia en el modoconfirm, en el que apruebas cada comando; es una buena opción predeterminada para la primera ejecución con un endpoint nuevo. - Asígnale una tarea que realmente ejecute un comando, no un saludo. La opción predeterminada de mini v2 es el uso nativo de herramientas, y el prompt incluido exige que “Cada respuesta use la herramienta 'bash' al menos una vez para ejecutar comandos”. Por eso, un intercambio real con una herramienta es lo que confirma que la configuración funciona. Si las llamadas a herramientas devuelven resultados vacíos o mal formados, mini sigue incluyendo la ruta anterior de análisis de texto:
mini -c mini_textbased.yamlomodel_class: litellm_textbaseden tu propio archivo.
Comprobado con Guía de modelos locales de mini-SWE-agent el 21 de septiembre de 2026. La configuración de terceros puede cambiar; si el nombre de un campo ya no coincide con lo que ves, esa página es la autoridad, no esta.
Verifica antes de depurar el cliente
Una solicitud determina si el fallo está en el endpoint, la clave o el archivo de configuración. Si devuelve JSON, la misma URL base y la misma clave funcionan en 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-..."Qué ID de modelo introducir en el campo
Todos los modelos de texto están disponibles mediante un ID de modelo; la lista activa está en GET /v1/models, y el catálogo con precios está en la página de modelos. Las tarifas son USD por 1M de tokens, entrada / salida.
| ID de modelo | Entrada / salida de Kunavo | Dónde encaja en mini-SWE-agent |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | el ID predeterminado para una sesión de trabajo; mini vuelve a enviar el contexto en cada paso, así que aquí se acumula el coste |
claude-opus-5 | $3.50 / $17.50 | una ejecución en la que elegir el plan equivocado resulta caro; combínala con un cost_limit más bajo, no más alto |
claude-haiku-4-5 | $0.70 / $3.50 | ejecuciones por lotes con muchas tareas y cualquier bucle que dejes en modo yolo |
gpt-5-6-sol | $2.00 / $12.00 | una segunda familia con el mismo api_base; cambia model_name y añade una entrada al registro |
Seguimiento de costes, que aquí es obligatorio
La versión publicada de mini incluye mini.yaml, que establece cost_limit: 3. —un límite por ejecución expresado en dólares—. Ese límite se aplica mediante la calculadora de costes de litellm, que calcula el precio de una ejecución buscando el ID del modelo en su registro. Los ID de Kunavo no figuran en ese registro, así que lo primero que ve la mayoría no es una respuesta incorrecta, sino un error: la propia página de solución de problemas de mini lo muestra como Exception: This model isn't mapped yet. model=…, custom_llm_provider=….
Hay dos formas de resolverlo y no son equivalentes. El interruptor global MSWEA_COST_TRACKING="ignore_errors" (o cost_tracking: "ignore_errors" en el archivo) elimina la protección en lugar de corregir el problema; mini lo describe así: “PRECAUCIÓN: ¡Esto puede llevar a un gasto sin control!”. La otra opción es indicar las tarifas a litellm; eso es lo que señala litellm_model_registry en el bloque de configuración. Las tarifas siguientes corresponden al catálogo vigente de este sitio, convertidas al formato por token 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"
}
}- Los nombres de modelo deben coincidir exactamente, incluidas mayúsculas y minúsculas. Además, el ejemplo de mini define la entrada con el nombre sin el prefijo del proveedor; por eso, aquí se usa
claude-sonnet-5, aunque la configuración indiqueopenai/claude-sonnet-5. litellm_providerdebe coincidir con el prefijo y concustom_llm_provider. La advertencia de mini es explícita: “Si usascustom_llm_providero añades un prefijo de proveedor al nombre del modelo (p. ej.,openai/…), también debe coincidir conlitellm_provideren la configuración”.- La ruta también puede indicarse mediante
LITELLM_MODEL_REGISTRY_PATHen lugar de la clave de configuración; resulta útil para los ejecutores por lotes, por ejemplo,LITELLM_MODEL_REGISTRY_PATH=kunavo-registry.json mini-extra swebench … - Estas tarifas sirven para calcular el presupuesto, no son una factura. El importe real que se te cobra es el que registra tu saldo de Kunavo. Vuelve a copiarlas si cambia el catálogo o consúltalas en
GET /v1/models.
Preguntas frecuentes
¿Cómo configuro mini-SWE-agent para usar un endpoint de API personalizado?
Se configura en un archivo, no mediante una variable de entorno: mini no tiene ninguna variable para la URL base. En un archivo de configuración del agente, asigna tu ID a model.model_name (con el prefijo openai/ si quieres) y, en model.model_kwargs, configura custom_llm_provider: "openai" y api_base con la URL base del endpoint. La documentación de mini explica por qué funciona: model_kwargs “se pasa directamente a litellm.completion”. Selecciona el archivo con `mini -c kunavo.yaml` o establécelo como predeterminado con MSWEA_MINI_CONFIG_PATH. En Kunavo, la URL base es https://api.kunavo.com/v1.
¿De dónde obtiene mini-SWE-agent la clave de API?
De la variable de clave de litellm que corresponda al proveedor seleccionado. Con custom_llm_provider: "openai", esa variable es OPENAI_API_KEY. Puedes exportarla en la terminal o guardarla de forma persistente con `mini-extra config set OPENAI_API_KEY <key>`. El comando la escribe en el archivo .env de mini, y mini indica que las variables de entorno tienen prioridad sobre lo que contiene el archivo. La clave no es un campo de la configuración del agente. Si sigues un tutorial antiguo, ten en cuenta que la guía de migración a v2 indica que MSWEA_MODEL_API_KEY “Ya no se usa para anular las claves de API”.
¿Debe terminar en /v1 el api_base de mini-SWE-agent?
Sí, para un endpoint compatible con OpenAI; por ejemplo, https://api.kunavo.com/v1, aunque mini lo muestra con un ejemplo, no como una regla. mini pasa model_kwargs directamente a litellm.completion, así que la convención la establece litellm. El único valor concreto de api_base que aparece en la documentación de mini es http://localhost:8000/v1, en su ejemplo de vLLM. La página de litellm sobre compatibilidad con OpenAI lo aclara: si una solicitud devuelve Not Found, asegúrate de que api_base incluya el sufijo /v1. Por tanto, la falta de /v1 provoca un error 404, no un error de autenticación.
¿Por qué mini-SWE-agent falla con el mensaje «This model isn't mapped yet»?
Porque litellm no puede calcular el precio del ID del modelo, y el cost_limit por ejecución de mini —3. dólares en el archivo mini.yaml incluido— se aplica mediante la calculadora de costes de litellm. mini recomienda solucionarlo con un registro de modelos: un archivo JSON con el formato de precios de modelos de litellm, cuyas entradas usen como clave el nombre del modelo sin el prefijo del proveedor y cuyo valor de litellm_provider coincida con lo que hayas establecido en custom_llm_provider o con el prefijo del nombre. Indica la ruta de ese archivo en litellm_model_registry en la configuración o en LITELLM_MODEL_REGISTRY_PATH en el entorno. Configurar MSWEA_COST_TRACKING="ignore_errors" también silencia el error, pero elimina el control del gasto en lugar de corregir el problema.
¿Puede mini-SWE-agent usar modelos Claude a través de un endpoint compatible con OpenAI?
Sí. El prefijo openai/ y el nombre de custom_llm_provider identifican un protocolo de comunicación, no un proveedor: litellm envía al api_base configurado una solicitud de chat completions con el formato de OpenAI y pasa el ID del modelo sin modificar. Así, el ID de Claude se resuelve en ese endpoint, no en la tabla de proveedores de litellm. Conviene conocer un efecto específico de mini: añade por su cuenta ajustes de control de caché cuando el nombre resuelto del modelo contiene "anthropic", "claude", "sonnet" o "opus", lo que ocurre con un ID como openai/claude-….
¿Ha probado Kunavo mini-SWE-agent con su endpoint?
No. El 21 de septiembre de 2026 se consultó la documentación de mini, de la que se tomaron las claves, su orden y el formato de api_base. Kunavo no ha ejecutado una sesión de mini contra su endpoint y no afirma nada sobre la transmisión, los intercambios con herramientas ni la notificación de costes en este cliente. Hay dos aspectos que siguen sin determinarse: si la ruta openai/ de litellm negocia el uso nativo de herramientas —el valor predeterminado de mini desde la versión v2.0— con un endpoint de chat completions, y si ese endpoint gestiona los marcadores cache_control que mini añade a los ID con nombres de Claude. El comando curl de esta página comprueba el endpoint y la clave; una primera ejecución breve en modo confirm permite comprobar el resto.