Pular para conteúdo

Multi-model routing no OpenClaw: como usar vários modelos via OpenRouter

Categoria Tutorial

Você configurou o OpenClaw com Claude Opus 4.6, está funcionando bem — mas cada heartbeat (verificação automática periódica), cada sub-agent (tarefa rodando em segundo plano), cada classificação trivial queima tokens (as unidades de texto que o modelo processa — cada palavra gasta alguns) do Opus a $15 por milhão. É como pagar Uber Black para ir na padaria.

O problema não é usar o Opus. É usar o Opus para tudo, sem distinção.


TL;DR

TarefaModeloCusto (input/M)Por que
Planejamento, arquiteturaanthropic/claude-opus-4-6$15.00Raciocínio complexo
Codificação, sub-agentsopenrouter/moonshotai/kimi-k2.5$0.45Top em coding benchmarks, 262k contexto
Heartbeat, classificaçãoopenrouter/stepfun/step-3.5-flash:free$0.00Modelo otimizado que usa só parte do cérebro por vez, grátis

O que é multi-model routing

Em vez de um único modelo para tudo, o OpenClaw deixa você atribuir modelos diferentes por função. Há três pontos de configuração independentes: o modelo principal (o que você conversa diretamente), o modelo do heartbeat (checagens periódicas automáticas), e o modelo dos sub-agents (tarefas paralelas em segundo plano).

sua conversa

    ├── modelo principal ──→ anthropic/claude-opus-4-6

    ├── heartbeat ──────────→ openrouter/stepfun/step-3.5-flash:free

    └── sub-agents ─────────→ openrouter/moonshotai/kimi-k2.5

O OpenRouter funciona como uma porta de entrada única para mais de 200 modelos de provedores diferentes. Você configura uma chave de API (a ponte que conecta o OpenClaw ao modelo de IA) do OpenRouter e usa qualquer modelo com o prefixo openrouter/provider/modelo. Não precisa criar conta em cada provedor separadamente.

Modelos gratuitos usam o sufixo :free. Modelos pagos não têm sufixo.


Configurar o OpenRouter

Crie uma conta em openrouter.ai e gere uma API key em Keys. A key começa com sk-or-.

Para autenticar via onboard, abra o terminal (a tela preta onde você digita comandos) e rode:

# Configura a chave do OpenRouter no OpenClaw
openclaw onboard --auth-choice apiKey --token-provider openrouter --token "$OPENROUTER_API_KEY"

Ou adicione diretamente no openclaw.json (um arquivo de configuração — como uma lista de instruções que o OpenClaw lê):

{
  env: {
    // Substitua pelo valor real da sua chave
    OPENROUTER_API_KEY: "sk-or-v1-...",
  },
}

A partir daí, qualquer modelo no catálogo do OpenRouter fica disponível com o formato openrouter/provider/modelo. O provider é o prefixo do provedor no OpenRouter (ex: anthropic, moonshotai, stepfun), seguido do nome do modelo.


Modelo principal: o que realmente precisa de Opus

O modelo principal é onde você interage diretamente. É onde você descreve um problema, pede uma arquitetura, revisa um plano. Aqui a qualidade do raciocínio importa, e Opus justifica o preço.

{
  defaults: {
    // Modelo padrão para suas conversas diretas
    model: "anthropic/claude-opus-4-6",
    // fallback: plano B — se o principal falhar, usa outro
    fallbacks: [
      "openrouter/anthropic/claude-sonnet-4-6",
    ],
  },
}

O campo fallbacks define a cadeia de fallback. Se o Opus estiver com latência alta ou indisponível, o OpenClaw tenta o próximo da lista automaticamente. Não precisa de nenhuma intervenção manual.

Guarde o Opus para quando você está de fato no loop: revisando código, planejando uma sprint, depurando algo difícil. Para o resto, os outros dois tiers resolvem com fração do custo.


Heartbeat: o modelo grátis que funciona

O heartbeat (verificação automática periódica) faz rondas periódicas — lê o HEARTBEAT.md, verifica condições, decide se precisa avisar você. A tarefa é simples por design: checklist curto, sem geração criativa, sem raciocínio encadeado.

O step-3.5-flash:free é suficiente para isso. É um modelo otimizado que usa só parte do cérebro por vez, com contexto de 256 mil tokens (palavras), limite de 50 requisições por minuto, e custo zero — tanto na entrada quanto na saída.

{
  agents: {
    defaults: {
      heartbeat: {
        every: "30m",         // roda a cada 30 minutos
        model: "openrouter/stepfun/step-3.5-flash:free",
        target: "last",
        activeHours: {
          start: "08:00",     // começa às 8h
          end: "22:00",       // para às 22h
          timezone: "America/Sao_Paulo",
        },
      },
    },
  },
}

A matemática é direta. 48 heartbeats por dia com Opus a $15/M custam alguma coisa, dependendo do tamanho do HEARTBEAT.md e do contexto carregado. Com o Step Flash, custam zero. O comportamento é idêntico para essa tarefa.

Se precisar de mais detalhes sobre como o heartbeat funciona internamente, veja o post dedicado: Heartbeat no OpenClaw: monitoramento automático com custo zero.


Sub-agents: Kimi K2.5 para codificar

Sub-agents são tarefas que o OpenClaw delega para rodar em paralelo — pesquisa, geração de código, análise de logs, revisão de arquivos. Eles não precisam de raciocínio tão profundo quanto o agente principal, mas precisam ser bons em código.

O Kimi K2.5 da Moonshot AI tem janela de contexto de 262 mil tokens e é competitivo nos benchmarks de resolução de código. O preço é $0.45 por milhão de tokens de entrada — 33x mais barato que Opus.

{
  subagents: {
    // Modelo padrão para todas as tarefas em segundo plano
    model: "openrouter/moonshotai/kimi-k2.5",
    fallbacks: [
      "openrouter/anthropic/claude-sonnet-4-6",
    ],
  },
}

Para criar um sub-agent especificando o modelo diretamente:

# Cria um sub-agent do tipo "researcher" com o Kimi K2.5
openclaw subagents spawn researcher "Analise os endpoints da API" --model openrouter/moonshotai/kimi-k2.5

O subagents.model na configuração define o padrão para todos os sub-agents. O --model no comando sobrescreve para aquele sub-agent específico, sem alterar o padrão global.


Config completo

Tudo junto em um único openclaw.json:

{
  // Chave do OpenRouter (acessa todos os modelos abaixo)
  env: {
    OPENROUTER_API_KEY: "sk-or-v1-...",
  },

  // Modelo principal: Opus para conversas diretas
  defaults: {
    model: "anthropic/claude-opus-4-6",
    fallbacks: [
      "openrouter/anthropic/claude-sonnet-4-6",
    ],
  },

  // Sub-agents: Kimi K2.5 para codificação e pesquisa
  subagents: {
    model: "openrouter/moonshotai/kimi-k2.5",
    fallbacks: [
      "openrouter/anthropic/claude-sonnet-4-6",
    ],
  },

  // Aliases para troca rápida com /model (atalhos de nome)
  modelAliases: {
    opus: "anthropic/claude-opus-4-6",
    kimi: "openrouter/moonshotai/kimi-k2.5",
    flash: "openrouter/stepfun/step-3.5-flash:free",
  },

  agents: {
    defaults: {
      // Heartbeat: modelo gratuito para checagens periódicas
      heartbeat: {
        every: "30m",
        model: "openrouter/stepfun/step-3.5-flash:free",
        target: "last",
        activeHours: {
          start: "08:00",
          end: "22:00",
          timezone: "America/Sao_Paulo",
        },
      },
    },
  },
}

Com os aliases configurados, você pode trocar de modelo no meio de uma sessão (a conversa ativa entre você e o agente):

/model kimi

Isso troca o modelo da sessão atual sem alterar o padrão global.


Quanto você economiza

Não dá para dar um número exato sem saber seu uso. A forma mais útil de pensar é pela fórmula:

custo com routing = (heartbeats × $0) + (sub-agents × $0.45/M) + (conversa principal × $15/M)

custo sem routing = (heartbeats × $15/M) + (sub-agents × $15/M) + (conversa principal × $15/M)

A economia vem de dois lugares: heartbeats a zero e sub-agents a 3% do preço do Opus. Para quem usa sub-agents com frequência, essa segunda parte tende a ser a maior diferença.

PerfilUso estimadoEconomia aproximada
Leve5-10 sub-agents/dia, heartbeat 1h80-90% vs tudo-Opus
Médio20-30 sub-agents/dia, heartbeat 30m90-93% vs tudo-Opus
Intenso50+ sub-agents/dia, heartbeat 15m93-95% vs tudo-Opus

Os percentuais assumem sub-agents com contexto médio de 50k tokens e heartbeats com HEARTBEAT.md de ~200 tokens. Seu caso pode variar.


Troubleshooting

model_not_found

O prefixo openrouter/ é obrigatório para modelos via OpenRouter. moonshotai/kimi-k2.5 sem o prefixo vai buscar nos provedores diretos e não encontrar.

errado: moonshotai/kimi-k2.5
certo:  openrouter/moonshotai/kimi-k2.5

429 rate_limited no modelo gratuito

O Step Flash tem rate limit (limite de uso — quantas vezes por minuto você pode chamar o modelo) de 50 RPM no tier gratuito. Se o heartbeat estiver configurado com intervalo muito curto e você tiver muitos agentes rodando ao mesmo tempo, pode atingir o limite. Adicione um fallback pago:

heartbeat: {
  model: "openrouter/stepfun/step-3.5-flash:free",
  fallbacks: [
    // modelo pago como plano B se o gratuito travar
    "openrouter/anthropic/claude-haiku-4-5",
  ],
}

Sub-agent herdando o modelo errado

Se um sub-agent está usando o modelo principal em vez do subagents.model, verifique se o subagents.model está configurado no nível certo. A config de defaults.model é o fallback global — subagents.model sobrescreve especificamente para sub-agents e precisa estar no bloco subagents, não dentro de defaults.

insufficient_credits no OpenRouter

O saldo do OpenRouter está zerado. Modelos gratuitos continuam funcionando, mas modelos pagos (incluindo Kimi K2.5) param. Recarregue em openrouter.ai/credits.

Kimi não está sendo usado nos sub-agents

Rode um sub-agent com --verbose para ver qual modelo está sendo selecionado:

# --verbose mostra detalhes da execução, incluindo qual modelo foi usado
openclaw subagents spawn test "ping" --verbose

A saída mostra o modelo resolvido antes de executar a tarefa.


Próximo passo

Esc