Documentação
mini-SWE-agent
O mini não tem uma variável de ambiente para a URL base nem uma opção para clicar. O endpoint é configurado em quatro linhas de YAML que o mini passa diretamente ao litellm — além de um registro de preços, pois o orçamento por execução do mini não consegue contabilizar tokens para os quais não há tarifas.
O mini-SWE-agent não tem variável de ambiente para URL base — o endpoint fica em model.model_kwargs.api_base em uma configuração YAML, que o mini encaminha diretamente para 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 e tenha em mente que o mini não afirma isso em uma frase. Veja o que esclarece a questão: o mini nunca lê o valor. A documentação diz que model_kwargs é “passado diretamente para litellm.completion” e mostra a chamada como litellm.completion(model=model_name, messages=messages, **model_kwargs). Portanto, a regra é do litellm. O único exemplo concreto de api_base que o mini apresenta inclui o sufixo: http://localhost:8000/v1, no exemplo com vLLM. A página do litellm sobre compatibilidade com OpenAI também orienta a “garantir que seu api_base tenha o /v1sufixo” quando uma solicitação retorna Not Found. Kilo Code e Aider usam o mesmo formato; os clientes no estilo Anthropic e o goose usam apenas a origem.openai/ no nome do modelo e custom_llm_provider têm a mesma função. O exemplo do próprio mini usa apenas a segunda opção: qualquer uma funciona, e usar as duas também funciona, mas a opção escolhida precisa corresponder a litellm_provider no registro de preços. O prefixo identifica um protocolo de comunicação, não um fornecedor: um ID Claude com openai/ é a combinação esperada, pois o ID é resolvido no endpoint, não dentro do litellm.openai/ do litellm negocia chamadas nativas de ferramentas — o padrão do mini v2 — com o /v1/chat/completions do Kunavo, e se essa interface processa os marcadores cache_control que o mini adiciona automaticamente aos IDs Claude. O curl abaixo é algo que você pode verificar em dez segundos; o restante depende de uma primeira execução rápida.sk-kn-) e adicione crédito a partir de $10 — as chamadas são pagas com esse saldo, e chamadas malsucedidas não são cobradas. O painel então abre na configuração de mini-SWE-agent.Passo a passo
- Crie uma chave em
/app/keyse copie-a — ela é exibida uma única vez. - Instale e execute uma vez para que os caminhos sejam criados:
pip install mini-swe-agente, em seguida,mini. Na primeira execução, o mini mostra onde ficam seu.enve a configuração do agente, além de oferecermini-extra config setup. - Coloque a chave onde o litellm irá procurá-la:
export OPENAI_API_KEY=sk-kn-...ou salve-a commini-extra config set OPENAI_API_KEY sk-kn-.... O mini observa que “As variáveis de ambiente têm precedência sobre as variáveis definidas no arquivo.env”, razão comum para uma chave recém-alterada parecer não ter mudado. - Salve o YAML acima como
kunavo.yamlao lado dos outros arquivos de configuração do agente e adicione o registro de preços da seção abaixo. Sem ele, a execução para com um erro de cálculo de custo, não por causa de uma resposta ruim. - Inicie com
mini -c kunavo.yamlou usemini -c kunavo.yaml -m openai/claude-haiku-4-5para substituir o ID em uma única execução. O mini abre no modoconfirm, no qual você aprova cada comando — uma boa opção padrão para a primeira execução em um endpoint novo. - Dê ao agente uma tarefa que realmente execute um comando, não uma saudação. A configuração padrão do mini v2 usa chamadas nativas de ferramentas e o prompt distribuído insiste que “Cada resposta precisa usar a ferramenta 'bash' pelo menos uma vez para executar comandos”. Portanto, uma interação real de ida e volta com uma ferramenta é o que confirma que a integração funciona. Se as chamadas de ferramenta retornarem vazias ou malformadas, o mini ainda inclui o caminho antigo de análise de texto:
mini -c mini_textbased.yamloumodel_class: litellm_textbasedno seu próprio arquivo.
Verificado em Guia de modelos locais do mini-SWE-agent em 21 de setembro de 2026. As configurações de terceiros podem mudar; se o nome de um campo aqui já não corresponder ao que você vê, aquela página é a autoridade, não esta.
Verifique antes de depurar o cliente
Uma solicitação determina se a falha está no endpoint, na chave ou no arquivo de configuração. Se isto retornar JSON, a mesma URL base e a mesma chave funcionarão em 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-..."Qual ID de modelo inserir no campo
Todo modelo de texto pode ser acessado como um ID de modelo — a lista atual está em GET /v1/models, e o catálogo com preços está na página de modelos. As tarifas são em USD por 1 milhão de tokens, entrada / saída.
| ID do modelo | Entrada / saída da Kunavo | Onde se encaixa em mini-SWE-agent |
|---|---|---|
claude-sonnet-5 | $1.40 / $7.00 | o ID padrão para uma sessão de trabalho — o mini reenvia o contexto a cada etapa, então é aqui que a cobrança se concentra |
claude-opus-5 | $3.50 / $17.50 | uma execução em que escolher o plano errado sai caro; combine-a com um cost_limit menor, não maior |
claude-haiku-4-5 | $0.70 / $3.50 | execuções em lote para muitas tarefas e qualquer loop deixado no modo yolo |
gpt-5-6-sol | $2.00 / $12.00 | uma segunda família usando o mesmo api_base — altere model_name e adicione uma entrada ao registro |
Acompanhamento de custos, que é obrigatório neste caso
A configuração distribuída do mini inclui mini.yaml com cost_limit: 3. — um limite por execução, expresso em dólares. Esse limite é aplicado pela calculadora de custos do litellm, que calcula o preço de uma execução consultando o ID do modelo no registro. Como os IDs do Kunavo não constam nesse registro, o primeiro resultado que a maioria vê não é uma resposta ruim, mas um erro: a página de solução de problemas do próprio mini o mostra como Exception: This model isn't mapped yet. model=…, custom_llm_provider=….
Há duas soluções, e elas não são equivalentes. A opção global MSWEA_COST_TRACKING="ignore_errors" (ou cost_tracking: "ignore_errors" no arquivo) remove a proteção em vez de corrigi-la. O mini a descreve como “CUIDADO: isso pode levar a gastos sem controle!”. A outra solução é informar as tarifas ao litellm, como indica litellm_model_registry no bloco de configuração. As tarifas abaixo são as tarifas atuais do catálogo deste site, convertidas para o formato por token do 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"
}
}- Os nomes dos modelos são comparados exatamente, incluindo maiúsculas e minúsculas. O exemplo do mini define a entrada usando o nome sem o prefixo do provedor — portanto,
claude-sonnet-5neste caso, embora a configuração indiqueopenai/claude-sonnet-5. litellm_providerprecisa corresponder ao prefixo e acustom_llm_provider. O aviso do mini é explícito: “Se você usarcustom_llm_providerou tiver um provedor como prefixo do nome do modelo (por exemplo,openai/…), isso também precisa corresponder alitellm_providerna configuração!”- O caminho também pode ser definido em
LITELLM_MODEL_REGISTRY_PATHem vez de na chave de configuração — útil para executores em lote, por exemplo,LITELLM_MODEL_REGISTRY_PATH=kunavo-registry.json mini-extra swebench … - Essas tarifas servem como referência para o orçamento, não como fatura. O valor cobrado é o que consta no seu saldo do Kunavo. Se o catálogo mudar, copie as tarifas novamente ou consulte
GET /v1/models.
Perguntas frequentes
Como configuro o mini-SWE-agent para usar um endpoint de API personalizado?
Por meio de um arquivo de configuração, não de uma variável de ambiente: o mini não tem nenhuma variável para a URL base. Em um arquivo de configuração do agente, defina model.model_name com seu ID (opcionalmente precedido por openai/) e, em model.model_kwargs, defina custom_llm_provider: "openai" e api_base com a URL base do endpoint. A documentação do mini explica por que isso funciona: model_kwargs “é passado diretamente para litellm.completion”. Selecione o arquivo com `mini -c kunavo.yaml` ou defina-o como padrão usando MSWEA_MINI_CONFIG_PATH. Para o Kunavo, a URL base é https://api.kunavo.com/v1.
De onde o mini-SWE-agent obtém a chave de API?
Da variável de chave do litellm correspondente ao provedor selecionado. Com custom_llm_provider: "openai", a variável é OPENAI_API_KEY. Você pode exportá-la no shell ou salvá-la com `mini-extra config set OPENAI_API_KEY <key>` — isso grava a chave no arquivo .env do mini. O mini observa que as variáveis de ambiente têm precedência sobre o conteúdo do arquivo. A chave não é um campo da configuração do agente. Se estiver seguindo um tutorial antigo, observe que o guia de migração v2 lista MSWEA_MODEL_API_KEY como “Não é mais usada para substituir chaves de API”.
O api_base do mini-SWE-agent precisa terminar com /v1?
Sim, para um endpoint compatível com OpenAI — por exemplo, https://api.kunavo.com/v1 — embora o mini apresente isso como exemplo, não como regra. O mini passa model_kwargs diretamente para litellm.completion, então a convenção é do litellm. O único valor concreto de api_base exibido na documentação do mini é http://localhost:8000/v1, no exemplo com vLLM. A própria página do litellm sobre compatibilidade com OpenAI esclarece: se uma solicitação retornar Not Found, confira se api_base tem o sufixo /v1. Portanto, a ausência de /v1 resulta em um erro 404, não em um erro de autenticação.
Por que o mini-SWE-agent falha com "This model isn't mapped yet"?
Porque o litellm não consegue calcular o preço do ID do modelo, e o limite de custo por execução do mini — 3. dólares no mini.yaml distribuído — é aplicado pela calculadora de custos do litellm. A solução recomendada pelo mini é criar um registro de modelos: um arquivo JSON no formato de preços de modelos do litellm, indexado pelo nome do modelo sem o prefixo do provedor, com litellm_provider correspondendo ao valor definido em custom_llm_provider ou ao prefixo do nome. Aponte litellm_model_registry na configuração ou LITELLM_MODEL_REGISTRY_PATH no ambiente para esse arquivo. Definir MSWEA_COST_TRACKING="ignore_errors" também silencia o erro, mas remove o controle de gastos em vez de corrigi-lo.
O mini-SWE-agent pode usar modelos Claude por meio de um endpoint compatível com OpenAI?
Sim. O prefixo openai/ e custom_llm_provider identificam um protocolo de comunicação, não um fornecedor: o litellm envia uma conclusão de chat no formato OpenAI para o api_base configurado e repassa o ID do modelo. Assim, o ID Claude é resolvido nesse endpoint, e não na tabela de provedores do litellm. Há um efeito específico do mini que convém conhecer: ele adiciona configurações de controle de cache automaticamente quando o nome do modelo resolvido contém "anthropic", "claude", "sonnet" ou "opus", o que ocorre com um ID openai/claude-….
O Kunavo testou o mini-SWE-agent em seu endpoint?
Não. O que foi verificado em 21 de setembro de 2026 foi a documentação do próprio mini — as chaves, sua ordem e o formato de api_base foram extraídos dela. O Kunavo não executou uma sessão do mini em seu endpoint e não faz afirmações sobre transmissão em fluxo, interações de ida e volta com ferramentas ou relatórios de custo neste cliente. Dois pontos ainda estão em aberto: se o caminho openai/ do litellm negocia chamadas nativas de ferramentas — padrão do mini desde a versão v2.0 — com um endpoint de conclusão de chat, e se esse endpoint processa os marcadores cache_control que o mini adiciona aos IDs Claude. O comando curl nesta página confirma o endpoint e a chave; uma primeira execução breve no modo confirm permite verificar o restante.