BetaApache-2.0, Go

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.

Replay dos 56 subagentes do teste de 2026-10-15. Totais medidos, ordem intercalada.

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 report mostra 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.

  1. 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

  2. A saída de rotina enche o contexto

    Um teste que passou ou um git status limpo despeja dezenas de linhas repetidas no contexto.

    Solução

    O downshift compact encurta a execução limpa. Erros, stack traces e saídas com falha ficam byte a byte iguais.

    Status

    Implementado, ligado por padrão

  3. 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. 1

    Modelo certo por subagente

    Completo no Claude Code

    Reescreve 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. 2

    Compactor

    Ligado por padrão

    Envolve git, go test e 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 status encolhe, o resto passa sem mudança; a reescrita automática é só no Claude Code.

  3. 3

    Inteligência de código, DCI

    Opt-in

    Entrega ao agente só o código que a mudança toca.

    RessalvaBytes e latência medidos; qualidade da resposta não medida.

  1. 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.

  2. 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.

  3. 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
  1. small
  2. mid
  3. 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

Seu comando

downshift try '<sua tarefa>'

Digite uma tarefa para preencher o comando.

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

downshift compactor -- go test
ExecuçãoAntesDepoisCorte
Suíte completa4.4662.331−47,8%
Pacote 1752317−57,8%
Pacote 2619238−61,5%
Pacote 3471174−63,1%
Pacote 4278142−48,9%

Execuções únicas, 2026-10-21, bytes.

Ver como funciona

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

Routeescolhe o tierrunTryReportcomando trycmd/downshift/try.goHandleadaptador do Claude Codeinternal/adapters/claudecode/claudecode.goHandleadaptador do Codexinternal/adapters/codex/codex.goTestClassifierStabilitytesteinternal/core/classifier_stability_test.go3500 B
Raio de impacto de Route neste repositório, a partir de downshift dci impact --json Route. Quatro chamadores. A caixa tracejada representa o orçamento de empacotamento (3500 bytes por padrão); os blocos são ilustrativos, não medidos.

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 DCI

Como 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.

  1. Harness

    O agente cria um subagente

    Agent / Task

    O 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.

  2. Downshift

    O hook começa

    runHookAdapter

    O 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.

  3. Downshift

    O adapter lê o payload

    internal/adapters

    O 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.

  4. Downshift

    A tarefa é classificada

    internal/classify

    Sinais 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.

  5. Downshift

    O passo semântico só pode subir

    internal/fuse

    Uma 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.

  6. Downshift

    Pisos e guardrails conferem

    selfcheck.go R1-R9

    Em 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.

  7. Downshift

    Trocar ou segurar

    updatedInput

    Com 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.

  8. Harness e depois Downshift

    O subagente roda e é registrado

    events.jsonl

    O 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

2026-10-21, milhões de tokens
  • 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

intervalos bootstrap de 95%
  • 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

estimativa a preço de tabela
  • 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

HarnessNívelReescrita do modeloO subagente usou o modeloCompactor
Claude CodeCompletoEmitidaObservado, 2026-10-06Reescrita automática; ou rode downshift compact -- <comando>
CodexFuncionalEmitidaInferido pelo subagente seguinte, não observadoRode o comando direto
CursorFuncionalEmitidaNão confirmado; descartado nos planos Free e Pro legadoRode o comando direto
OpenCodeBetaAdapter pronto; plugin em desenvolvimentoAinda não observadoRode o comando direto
AntigravityExperimentalEmitida por um campo não documentadoObservado uma vez, desktop 2.21.1Rode o comando direto
KiroCrewFuncionalBloqueia e tenta de novo (modo de política); sem reescrita no lugarNã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.

claude-code · PreToolUse
hook    PreToolUse
rewrite updatedInput.model
keeps   every sibling field
doubt   original model kept
codex · PreToolUse
hook    PreToolUse
rewrite model, reasoning effort
keeps   every sibling field
doubt   original model kept
cursor · preToolUse
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.

Ver a matriz

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.

  1. curl -fsSL https://raw.githubusercontent.com/tiagovilasboas/downshift/main/install.sh | sh

    Baixa o binário da sua plataforma.

  2. downshift setup --dry-run

    Mostra o diff. Não grava nada.

  3. downshift setup --yes

    Grava os hooks, com backup. (Rode downshift setup para ser perguntado antes.)

  4. downshift doctor

    Confere o binário, os hooks, o estado e as pontuações.

  5. downshift try "rename the userId variable"

    Mostra o tier que ele escolheria, e por quê.

  6. downshift setup --undo

    Restaura 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.

Perguntas 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.