Documentação

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.

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
Use o /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.
O prefixo 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.
Esta configuração foi consultada na documentação do próprio mini na data indicada abaixo. O Kunavo não executou o mini-SWE-agent em seu endpoint: não houve sessão, turno transmitido em fluxo nem interação de ida e volta com ferramentas. O fato de haver uma página de configuração publicada não comprova a compatibilidade. Dois pontos ainda precisam ser verificados: se o caminho 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.
O Kunavo não oferece modelos de embeddings, conversão de texto em fala ou conversão de fala em texto. Portanto, esse endpoint responde apenas a solicitações de conclusão de chat. O mini usa somente um recurso de ferramenta — bash —, mas, se os scripts ao redor indexarem um repositório ou transcreverem algo, essas chamadas continuarão usando a chave do provedor que já tiverem configurada.
Ainda não tem uma chave? Crie uma conta na Kunavo, gere uma chave (ela começa com 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

  1. Crie uma chave em /app/keys e copie-a — ela é exibida uma única vez.
  2. Instale e execute uma vez para que os caminhos sejam criados: pip install mini-swe-agent e, em seguida, mini. Na primeira execução, o mini mostra onde ficam seu .env e a configuração do agente, além de oferecer mini-extra config setup.
  3. Coloque a chave onde o litellm irá procurá-la: export OPENAI_API_KEY=sk-kn-... ou salve-a com mini-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.
  4. Salve o YAML acima como kunavo.yaml ao 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.
  5. Inicie com mini -c kunavo.yaml ou use mini -c kunavo.yaml -m openai/claude-haiku-4-5 para substituir o ID em uma única execução. O mini abre no modo confirm, no qual você aprova cada comando — uma boa opção padrão para a primeira execução em um endpoint novo.
  6. 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.yaml ou model_class: litellm_textbased no 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.

Esta é a versão resumida. O guia completo — escolha do modelo, custo de uma sessão real e modos de falha — está em mini-SWE-agent vs Claude Code.

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 modeloEntrada / saída da KunavoOnde se encaixa em mini-SWE-agent
claude-sonnet-5$1.40 / $7.00o 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.50uma 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.50execuções em lote para muitas tarefas e qualquer loop deixado no modo yolo
gpt-5-6-sol$2.00 / $12.00uma segunda família usando o mesmo api_base — altere model_name e adicione uma entrada ao registro
A cobrança é por token, usando um saldo pré-pago e sem tarifa mensal — consulte billing. Em contextos repetidos — que representam a maior parte do que um editor ou cliente de chat envia — o cache de prompt altera a conta mais do que a escolha do modelo.

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:

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. 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-5 neste caso, embora a configuração indique openai/claude-sonnet-5.
  2. litellm_provider precisa corresponder ao prefixo e a custom_llm_provider. O aviso do mini é explícito: “Se você usar custom_llm_provider ou tiver um provedor como prefixo do nome do modelo (por exemplo, openai/…), isso também precisa corresponder a litellm_provider na configuração!”
  3. O caminho também pode ser definido em LITELLM_MODEL_REGISTRY_PATH em vez de na chave de configuração — útil para executores em lote, por exemplo, LITELLM_MODEL_REGISTRY_PATH=kunavo-registry.json mini-extra swebench …
  4. 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.