Seu melhor modelo não precisa fazer tudo.
O Downshift dá ao seu agente de código o modelo certo para cada subagente, saída mais curta nos comandos limpos e, se você ativar, só o código que a mudança toca. Sem chamar outra IA para decidir.
- até~53%menos tokens por tarefa em uso real, roteamento e compactor combinados (KiroCrew, 2026-10-21). Só roteamento: ~24% num teste com quatro grupos no Claude Code (46 execuções, uma pessoa, 2026-10-21).
- 0chamadas extras de IA para decidir
- cerca de1 em 10subagentes ficam sem roteamento de propósito, como grupo de controle
O modelo certo, saída mais curta, menos para ler.
RoteamentoCompleto no Claude Code
Modelo certo por subagente
O trabalho mecânico dos subagentes vai para um modelo menor; o arriscado ou duvidoso fica no seu. Um hook local decide, sem outra chamada de IA.
downshift try$ downshift try "rename userId to accountId…" assumed current: claude-opus-5-5… → small: opus → haiku why: trivial task, no risk, confident
Saída real da CLI, 2026-10-21. Linhas longas cortadas. CompactorLigado por padrão
Saída limpa mais curta
Testes que passam e builds limpos chegam ao contexto em uma ou duas linhas. Erros, stack traces e saídas com falha ficam intactos.
downshift compact$ go test ./internal/... Go test: PASS (3 packages ok) under … ok execwrap ok telemetry ok classify [downshift compact: compacted 205 to 119 bytes]
Saída real da CLI, 2026-10-21. Linhas longas cortadas. DCIOpt-in
Menos para ler
Quando você pede uma mudança, o agente recebe só o código que ela toca. Opt-in; medido em tamanho e velocidade, não em qualidade da resposta.
downshift dci$ downshift dci impact HashSessionID Target: HashSessionID Target Type: Symbol Callers/Deps: 31 - cmd/downshift/cmd_test.go:TestHook…
Saída real da CLI, 2026-10-21. Linhas longas cortadas.
Para quem é
O Downshift age quando o seu agente delega uma tarefa. O que você ganha depende de como você paga.
Seu agente delega
Com Claude Code, cada subagente pode receber um modelo do tamanho da tarefa; Codex e Cursor são funcionais; OpenCode está em beta. Sem subagentes, não há o que trocar.
Você paga por token
Trabalho mecânico em modelo menor custa menos por token. O
downshift reportmostra tokens por tarefa concluída, roteado contra controle.Você usa um plano (Pro, Max, Team)
Não há fatura por token. O Downshift mostra quantos tokens rodaram em modelo menor. O efeito no limite do plano ainda está sendo medido.
Não é para: escolher seu modelo principal nem decidir se vale delegar.
Onde um agente de código gasta mais do que precisa.
Três vazamentos. O Downshift é um binário em Go, sem daemon, e atua em cada um.
Subagentes herdam o seu modelo mais caro
Renomear uma variável usa o mesmo modelo de uma revisão de arquitetura.
Solução
Um hook local pontua a tarefa e troca o modelo só quando tem certeza. Na dúvida, o seu modelo fica.
Status
Completo no Claude Code
A saída de rotina enche o contexto
Um teste que passou ou um
git statuslimpo despeja dezenas de linhas repetidas no contexto.Solução
O
downshift compactencurta a execução limpa. Erros, stack traces e saídas com falha ficam byte a byte iguais.Status
Implementado, ligado por padrão
O agente lê mais código do que a mudança precisa
Para mudar um símbolo, abre arquivos inteiros e procura quem o chama.
Solução
O DCI empacota só os símbolos afetados, dentro de um limite de bytes.
Status
Opt-in. Medido em latência e bytes.
Completo: visto funcionando de ponta a ponta. Implementado: código, testes e ao menos uma observação real. Opt-in: desligado até você ativar. Os relatórios mostram tokens e cobertura, não dólares.
- 1
Modelo certo por subagente
Completo no Claude CodeReescreve só o modelo do subagente, nunca o da sessão principal.
RessalvaCerca de 53% menos tokens por tarefa em uso real, roteamento e compactor combinados (KiroCrew, 2026-10-21, 6 tarefas no controle — direcional).
- 2
Compactor
Ligado por padrãoEnvolve
git,go teste as outras ferramentas de teste e build listadas na doc; mantém o código de saída.RessalvaSó comando simples da lista é reescrito; entre os comandos git, só o
git statusencolhe, o resto passa sem mudança; a reescrita automática é só no Claude Code. - 3
Inteligência de código, DCI
Opt-inEntrega ao agente só o código que a mudança toca.
RessalvaBytes e latência medidos; qualidade da resposta não medida.
Vários harnesses, níveis honestos
Uma instalação configura os hooks do Claude Code, Codex e Cursor; o OpenCode está em beta.
RessalvaCodex e Cursor são funcionais, OpenCode está em beta.
Guardrails Implementado
Autenticação, pagamentos, criptografia e dados privados nunca sofrem downshift.
RessalvaA detecção é por padrões, em inglês e português; a taxa de falsos positivos em tráfego real não foi medida.
Veja e compare Implementado
Trocou, segurou ou só observou, com o motivo, e roteado contra controle.
RessalvaO uso de tokens do subagente só é observado no Claude Code; o report exige 20 tarefas concluídas por grupo.
Veja o Downshift em ação
Escolha uma tarefa para ver a decisão, ou digite a sua para montar o comando e rodar no terminal.
Decisões reais do CLI em 2026-10-19, assumindo claude-opus-5-5 como modelo atual. ~75% e ~50% são a diferença de preço de uma troca de modelo, a preço de tabela, não uma economia na sessão. Esta página monta o comando; não roda o classificador.
Reescrito
Fica no frontier
Modelo original preservado
- Tarefa
- rename the userId variable to accountId
- Tier
- small
- mid
- frontier
- Troca de modelo
- opus → haiku
- Diferença de preço
- ~75%, diferença de preço de uma troca de modelo (est., preço de tabela), não é economia da sessão
- Resultado
- Reescrito
- Por quê
- tarefa trivial, sem risco, com confiança
Trava
sem reescrita: retida por uma trava de segurança
O classificador não teve confiança ou a tarefa toca uma área de risco, então ela roda no modelo que pediu.
Seu comando
downshift try '<sua tarefa>'Digite uma tarefa para preencher o comando.
Alguns caracteres foram removidos para o comando colar com segurança no bash, zsh, fish e PowerShell.
Esta página não executa o classificador. Ela só monta o comando. A decisão real roda localmente no CLI, na sua máquina. Até 200 caracteres.
Saída limpa, contexto menor.
Testes que passam e builds limpos chegam ao seu agente em uma ou duas linhas. Erros, stack traces, diffs e qualquer saída com falha ficam exatamente como eram.
O Compactor vem ligado por padrão. Ele passa comandos de rotina pelo downshift compact, que mantém o código de saída e encurta só a saída que ele reconhece como limpa. Cobre todo subcomando de git e as ferramentas de teste e build da lista (go, pytest, vitest, jest, tsc, cargo, playwright, cypress, phpunit, gradle, maven, flutter, dart, next build). Entre os comandos git, só o git status encolhe; o resto passa byte a byte igual.
A reescrita automática funciona no Claude Code. Nos outros harnesses, o agente roda downshift compact -- <comando> direto. Não é o comando /compact: ele nunca resume a sua conversa.
No corpus de teste sintético (248 arquivos), os 26 que compactam encolhem 82,3% em bytes, os melhores casos limpos de 91 a 97%. Nos 248, incluindo falhas feitas para ficar intactas, o corte é de 23,7%. São bytes, não tokens, e não a sua mistura de comandos.
Desligue com "exec": false na configuração ou DOWNSHIFT_EXEC=0.
Antes e depois, execuções reais
| Execução | Antes | Depois | Corte |
|---|---|---|---|
| Suíte completa | 4.466 | 2.331 | −47,8% |
| Pacote 1 | 752 | 317 | −57,8% |
| Pacote 2 | 619 | 238 | −61,5% |
| Pacote 3 | 471 | 174 | −63,1% |
| Pacote 4 | 278 | 142 | −48,9% |
Execuções únicas, 2026-10-21, bytes.
Envie o código que a mudança toca, não o repositório inteiro.
Peça uma mudança e o agente começa pelos chamadores e símbolos que ela alcança, empacotados dentro de um limite de bytes, em vez de abrir arquivos inteiros.
Execução 1: downshift dci impact Route
Opt-in (downshift dci enable). Ele acha o raio de impacto de um símbolo e empacota só o código afetado. Go por AST; TypeScript, JavaScript, Python, Rust, PHP, Java e C# por padrões de texto.
Benchmark: índice a frio em 295 ms, p95 a quente de 5,64 ms, pacotes de 568 a 2.801 bytes.
Medido até agora: tamanho e latência. Não medido: se as respostas melhoram. Leia como um jeito de enviar menos, não como prova de respostas melhores.
Ler a doc do DCIComo um subagente recebe o modelo.
Oito passos, todos em código no repositório. O agente cria um subagente; um hook local pontua a tarefa; os guardrails conferem; o hook troca o modelo ou deixa como está; a telemetria registra contagens e tempos.
Harness
O agente cria um subagente
Agent / TaskO agente principal delega pela ferramenta de criação de subagentes: Agent ou Task, spawn_agent, invoke_subagent. O Downshift não vê nada até o harness disparar o hook de pré-ferramenta.
Downshift
O hook começa
runHookAdapterO runHookAdapter lê o payload da entrada padrão, com limite de 1 MiB e timeout de leitura de 2 s, define um orçamento de 1,5 s e transforma qualquer panic em um subagente intacto.
Downshift
O adapter lê o payload
internal/adaptersO adaptador do harness lê o texto da tarefa, o modelo em que o filho rodaria e a sessão. Ele declara o que o harness consegue fazer e não guarda nenhuma política.
Downshift
A tarefa é classificada
internal/classifySinais ponderados em inglês e português resultam em TRIVIAL, SIMPLE, MEDIUM ou COMPLEX, que vira um tier: small, mid ou frontier. Um prompt sem nenhum sinal cai em mid e se abstém.
Downshift
O passo semântico só pode subir
internal/fuseUma etapa de hash de palavras, dentro do processo, pode elevar uma classe hesitante. Ela nunca baixa um tier, nunca reforça um prompt sem sinal e nunca cria COMPLEX sozinha.
Downshift
Pisos e guardrails conferem
selfcheck.go R1-R9Em seguida rodam o piso de risco, as travas R1 a R9 e o piso do projeto em .downshift/policy.json. A lista de modelos da sessão e a trava de cota decidem o que pode ser escrito. Qualquer ocorrência significa: manter o modelo.
Downshift
Trocar ou segurar
updatedInputCom confiança e segurança, o hook devolve o updatedInput com só o modelo alterado, mais o reasoning_effort onde o harness aceita. Caso contrário, o subagente segue como foi pedido. Cerca de 1 em cada 10 fica sem roteamento de propósito, como grupo de controle.
Harness e depois Downshift
O subagente roda e é registrado
events.jsonlO harness roda o filho no modelo escrito, ou ignora a reescrita, o que o Downshift não controla. O Downshift então acrescenta ao events.jsonl contagens, hashes, tempos e, no Claude Code, os tokens com preço. Nenhum texto de prompt.
O que nunca acontece
- Nenhuma chamada de IA para escolher modelo.
- Nenhum prompt, texto de tarefa ou caminho de arquivo é guardado.
- Nenhuma troca na dúvida.
- Nenhum downshift de tarefa complexa ou que toque autenticação, pagamentos ou segredos.
- Nenhum subagente bloqueado por erro: payload ruim, panic ou timeout deixa o subagente intacto.
- Cerca de 1 em 10 subagentes fica sem roteamento de propósito, como grupo de controle.
Nove camadas, cada uma com seu status.
O status é o que o repositório mostra hoje, não o que está planejado. Implementado não quer dizer validado em todo harness.
Modelo certo, menos ruído
ClassificaçãoPontua o texto da tarefa como TRIVIAL, SIMPLE, MEDIUM ou COMPLEX, sem chamar um LLM.Implementado
- internal/classify: sinais ponderados em inglês e português
- guarda de idioma
- internal/fuse: reforço semântico por hash, só para cima
Nos conjuntos de teste cegos, a acurácia de tier fica entre 40 e 53%, e a maioria dos erros são abstenções que mantêm o seu modelo.
Catálogo de modelos e sessãoSabe quais modelos existem na sua sessão, o tier, o preço de tabela e se algum é explicit_only.Implementado
- internal/catalog: tiers, preços de tabela, aliases, explicit_only
- modelos da sessão vindos de listas do hook, session-models.json, descoberta ou inferidos do modelo atual no Claude Code
Os preços são um retrato datado, então a economia é uma estimativa a preço de tabela.
Hook de roteamento por harnessExecuta a mesma decisão em todo harness e escreve a reescrita no formato próprio de cada um.Implementado
- um runner compartilhado, runHookAdapter
- adaptadores: claudecode, cursor, codex, opencode, antigravity, kirocrew
O Claude Code está completo, Codex e Cursor são funcionais, o OpenCode é beta, Antigravity é experimental, KiroCrew é funcional.
Compactação de saída de shell (downshift compact)git e as ferramentas de teste e build da lista. Mantém o código de saída e compacta só o que é claramente limpo.Ligado por padrão
- wrapper de exec do shell; reescrita automática só no Claude Code
- "exec": false ou DOWNSHIFT_EXEC=0 desliga
- downshift context compress, para pipes
Entenda o código
Inteligência de código (DCI)Encontra o raio de impacto de um símbolo e empacota só o código afetado, dentro de um limite de bytes.Opt-in
- downshift dci impact e dci inspect
- AST de Go, mais TypeScript/JavaScript, Python, Rust, PHP, Java e C# por padrão
- ranking BM25, orçamento padrão de 3500 bytes
Mantenha o controle
Travas de segurançaRetém qualquer mudança que a evidência não sustenta e mantém o modelo que você pediu.Implementado
- R1 a R9 (R3 aposentada) em selfcheck.go
- pisos de risco: secret, authz, crypto, payment, vuln, pii, destructive, concurrency, prompt injection
- piso de tier do projeto em .downshift/policy.json, que só eleva
- trava de cota e crédito
A trava de cota está implementada, mas não foi validada em todos os harnesses.
Regras que sempre segue
- Classificação local. Cada tarefa é pontuada na sua máquina, com sinais e um catálogo de modelos. Sem chamada de LLM. Os prompts são avaliados em memória e nunca guardados.
- Fail-open. Qualquer erro ou capacidade ausente deixa o subagente intacto. O Downshift só altera os campos de modelo e de esforço.
- Na dúvida, o seu modelo. Sem certeza? O subagente mantém o modelo que pediu. Dúvida nunca gasta dinheiro, e uma escolha mais barata sem confiança fica retida.
- Pisos de risco. Pagamentos, autenticação e segredos são protegidos. A migração de um webhook de pagamento ficou no opus. A rotação de segredos de produção manteve o modelo original.
Telemetria, grupo de controle e relatóriosRegistra o que aconteceu e compara os subagentes roteados com um controle sem roteamento.Implementado
- events.jsonl: contagens, hashes, tempos
- downshift stats, session e watch: trocado, segurado ou observado por subagente
- downshift report: tokens por tarefa concluída, roteado contra controle
- grupo de controle de 10% (DOWNSHIFT_CONTROL_SHARE)
Duas execuções controladas até agora, ambas em tarefas mecânicas (2026-10-15 e 2026-10-21). O report exige pelo menos 20 tarefas concluídas por grupo e compara tokens por tarefa concluída; hoje, uso de tokens e fim do filho só são registrados no Claude Code. stats e report não mostram valores em dólar.
Mods no Claude CodeDeixam o trabalho visível: uma barra de progresso com o estado do Downshift em cada subagente, um painel de subagentes, uma árvore de arquivos e uma barra para reabri-los.Implementado
- savvy-progress
- filetree
- downshift-dock
- downshift-theme, opcional
savvy-progress e filetree são mods de terceiros incorporados; o downshift-dock é original e foi testado só contra um engine simulado. Nenhum tem lógica de roteamento. O setup os instala, mas não o tema.
Números reais. Sem matemática de marketing.
KiroCrew real use + Claude Code four-arm trial, 2026-10-21. Dois harnesses, evidências independentes.
- ~53%menos tokens por tarefa concluída, roteamento e compactor, uso realharness KiroCrew2026-10-216 tarefas no controleUma sessão. Grupo de controle é pequeno; trate como direcional, não definitivo.
- ~24%menos tokens por execução aceita, só roteamento, teste com quatro gruposClaude Code46 execuçõesuma pessoa2026-10-2116% por execução; intervalo de 95% de +2,1% a +46,7%. Bugs de isolamento encontrados no estado da bateria — número pode mudar.
- 82,3%menos bytes nos 26 de 248 arquivos do corpus que compactamfixtures sintéticas23,7% nos 248a sua mistura vai variar
- cerca de1 em 10subagentes sem roteamento, como grupo de controle
Tokens por execução aceita, quatro grupos
- A Opus fixo2,25M10 de 11 aceitas
- B opusplan2,00M10 de 11 aceitas, sem roteamento
- C opusplan + roteamento1,52M12 de 12 aceitas
- D roteamento + Compactor1,46M12 de 12 aceitas
Tokens = entrada + saída + leitura de cache + escrita de cache, todos os modelos. Tamanho da barra relativo ao grupo A.
Menos tokens por execução aceita, grupo contra grupo
- Roteamento (B−C)24,1%intervalo de +2,1% a +46,7%. Por execução, antes de cobrar as falhas: 16,5%, de +0,6% a +29,7%. Inclui o custo de uma execução que falhou no grupo opusplan (constantes nomeadas, 2 de 3 aceitas).
- Roteamento + Compactor (B−D)26,8%intervalo de +4,4% a +48,3%
- Compactor sozinho (C−D)3,5%intervalo de −14,8% a +19,4%, inclui zero: não mensurável nesta parte. Os agentes encadearam comandos com “;”, que o Compactor não envolvia até o PR #424 (mesclado em 2026-10-21).
- Opus fixo contra tudo ligado (A−D)34,8%intervalo de +19,1% a +52,5%
- opusplan sozinho (A−B)11,0%intervalo de −28,9% a +39,0%, inclui zero
sólida: o intervalo exclui zero. hachurada: o intervalo inclui zero.
Teste anterior (2026-10-15, preço de tabela)
Até cerca de 12% mais barato por execução no lote mecânico. Um teste, uma pessoa, três execuções por célula, preço de tabela, Claude Code, 2026-10-15. 12 de 12 verificações aprovadas nos dois grupos; as verificações checam estrutura, não qualidade.
Economia por tarefa, roteado contra controle
- Renomear~33%os cinco subagentes rebaixados
- Constantes nomeadas~14%
- Comentários de documentação~10%o intervalo inclui zero
- Testes espelhadosruídonada rebaixado em 2 de 3 execuções
sólida: economia. hachurada: intervalo inclui zero, ou ruído.
Estimativa a preço de tabela. O tamanho da barra é relativo à maior economia.
O que ainda não mostramos
- Economia no limite do seu plano. Ainda sendo medida.
- Economia no uso do dia a dia. Duas execuções controladas em tarefas mecânicas até agora; nada atribuível.
- O efeito do Compactor sozinho nos tokens de uma execução. Não mensurável na parte 1.
- Roteamento em correções naturais que rodam testes. Isso é a parte 2.
- Que o DCI melhora as respostas. Medimos só tamanho e latência.
- Compactação nos seus comandos. Os 82,3% vêm de um corpus sintético, em bytes.
- Que o modelo é aplicado em todo harness. Veja a tabela abaixo.
- Taxa de falsos positivos da detecção de risco em tráfego real.
Parte 1 de 2: tarefas mecânicas. A parte 2 (correções naturais que rodam testes) é a próxima.
Ler o relatório dos quatro gruposLer o relatório A/BVer os resultados do corpus
Um roteador, seis harnesses, níveis honestos.
Os níveis são o que foi observado, não o que está planejado. Uma reescrita emitida prova que o hook respondeu; só a última coluna diz se o subagente rodou naquele modelo.
O que cada harness faz com a reescrita
| Harness | Nível | Reescrita do modelo | O subagente usou o modelo | Compactor |
|---|---|---|---|---|
| Claude Code | Completo | Emitida | Observado, 2026-10-06 | Reescrita automática; ou rode downshift compact -- <comando> |
| Codex | Funcional | Emitida | Inferido pelo subagente seguinte, não observado | Rode o comando direto |
| Cursor | Funcional | Emitida | Não confirmado; descartado nos planos Free e Pro legado | Rode o comando direto |
| OpenCode | Beta | Adapter pronto; plugin em desenvolvimento | Ainda não observado | Rode o comando direto |
| Antigravity | Experimental | Emitida por um campo não documentado | Observado uma vez, desktop 2.21.1 | Rode o comando direto |
| KiroCrew | Funcional | Bloqueia e tenta de novo (modo de política); sem reescrita no lugar | Não registrado (caminho de bloqueio e retentativa) | Rode downshift compact -- <comando> |
O Compactor funciona no KiroCrew chamando o comando direto (steering): 223 chamadas registradas em 2026-10-21. O Compactor é um comando de shell comum, então funciona em qualquer harness. Só o Claude Code o reescreve sozinho. Cada harness roteia os próprios modelos. O roteamento verificado é só o do Claude Code; os outros ficam nos níveis da tabela. Modelos do OpenRouter são só de descoberta e nunca são roteados.
hook PreToolUse rewrite updatedInput.model keeps every sibling field doubt original model kept
hook PreToolUse rewrite model, reasoning effort keeps every sibling field doubt original model kept
hook preToolUse rewrite updated_input.model keeps every sibling field doubt original model kept
PreToolUse em Agent e Task reescreve updatedInput.model. Reescrita observada em 2026-10-06.
PreToolUse em spawn_agent reescreve modelo e esforço de raciocínio. Aplicação inferida, não observada.
preToolUse em Task reescreve updated_input.model. Aplicação não confirmada na versão testada.
Instale, veja o diff, depois grave.
O setup mostra o diff de cada harness que encontrar antes de gravar qualquer coisa, salva um backup com data e hora, e o --undo restaura.
curl -fsSL https://raw.githubusercontent.com/tiagovilasboas/downshift/main/install.sh | shBaixa o binário da sua plataforma.
downshift setup --dry-runMostra o diff. Não grava nada.
downshift setup --yesGrava os hooks, com backup. (Rode
downshift setuppara ser perguntado antes.)downshift doctorConfere o binário, os hooks, o estado e as pontuações.
downshift try "rename the userId variable"Mostra o tier que ele escolheria, e por quê.
downshift setup --undoRestaura o último backup.
Binários para macOS e Linux (amd64, arm64) e Windows (amd64). No Claude Code, o setup também define a sessão principal como opusplan e o modo de plano, a menos que você passe --no-session-policy. Ele mostra o diff antes.
Código aberto, Apache-2.0.
Feito às claras por Tiago Vilas Boas. A contribuição mais útil é um prompt mal roteado: rode downshift try com ele, compare o tier com o que você esperava e abra uma issue com os dois.
Patrocínio financia a manutenção, os benchmarks e o catálogo de modelos.
PatrocinarPerguntas frequentes
O Compactor é o mesmo que o /compact?
Não. O /compact resume a sua conversa. O Compactor encurta a saída limpa de comandos como go test e git status, mantém o código de saída e deixa erros e falhas exatamente como eram.
Isso economiza o limite do meu plano?
Ainda não sabemos. O Downshift mostra quantos tokens rodaram em modelo menor; o efeito no limite do plano ainda está sendo medido.
O que é enviado para fora?
O Downshift não guarda prompts nem texto de tarefa, só contagens, hashes e tempos, localmente. O roteamento não faz chamada de rede. Seu harness continua enviando o trabalho do subagente ao provedor do modelo, como antes. Uma atualização separada de pontuações públicas de modelos não envia prompt e pode ser desligada com DOWNSHIFT_SCORES=off.
Ele pode escolher o modelo errado?
Ele só troca quando tem certeza e nenhum guardrail objeta; na dúvida, o seu modelo fica, e tarefas complexas ou que tocam autenticação, pagamentos ou segredos nunca descem. Use downshift session --why para ver qualquer decisão e reporte um erro como issue.
Como desfaço?
downshift setup --undo restaura o último backup da configuração do seu harness. Pause uma sessão com downshift session --pause ou pare toda reescrita com DOWNSHIFT_NO_ROUTE=1.
Quais agentes de código ele suporta?
O Claude Code está completo. Codex e Cursor são funcionais, o OpenCode está em beta, Antigravity é experimental, KiroCrew é funcional. A tabela acima mostra o que foi observado em cada um.
É seguro ativar o DCI?
É opt-in e fica desligado até você ativar. Medimos tamanho e velocidade, não se as respostas melhoram; teste em um branch e compare.
Cadê o dashboard?
O dashboard web foi removido em 2026-10-20. Use downshift report, downshift stats e downshift session, que mostram tokens e cobertura no terminal.
Ele chama uma IA para escolher o modelo? Preciso de outra chave?
Não para as duas. O roteamento é local, a partir de sinais pontuados e de um catálogo de modelos, sem chamada extra a modelo e sem chave.
Quanto economiza?
Em uso real com roteamento e compactor combinados, cerca de 53% menos tokens por tarefa concluída (harness KiroCrew, 2026-10-21, 6 tarefas no controle — direcional, não definitivo). Só roteamento: cerca de 24% menos tokens por execução aceita num teste com quatro grupos no Claude Code (46 execuções, uma pessoa, 2026-10-21; 16% por execução, intervalo de +2,1% a +46,7%) — bugs de isolamento de estado foram encontrados na bateria e o número pode mudar. A economia do Compactor é adicional ao roteamento. Estimativas não são faturas.
O Downshift tem relação com a biblioteca React downshift?
Não. A biblioteca React downshift cria componentes acessíveis de autocomplete e dropdown. Este projeto é uma ferramenta em Go, sem relação, que roteia subagentes de agentes de código com IA para modelos do tamanho certo.
É grátis?
Sim. Apache-2.0, binário único em Go, sem daemon.
O que muda na minha máquina?
O setup mescla hooks nos arquivos de configuração do seu harness, como o settings.json do Claude Code, e salva antes um backup com data e hora. Um projeto pode ter um piso de tier opcional em .downshift/policy.json. Nada roda como daemon.
Isso deixa a criação de um subagente mais lenta?
Ele adiciona uma chamada de processo local, sem rede e sem LLM. Em uma execução rastreada, o binário terminou em 30 ms. Os limites rígidos são 2 s para ler o payload e 1,5 s de orçamento do hook, e estouro ou erro deixam o subagente intacto. No Claude Code ele ainda pode esperar até 400 ms pelo transcript do pai, para descobrir o modelo atual. É um único rastro, não um benchmark.