Modelo de raciocínio
Cuida da conversa principal, do raciocínio difícil e das mudanças de código.
/model ou /tiers reasoning
Código aberto · Apache-2.0
O Distill é um harness de agente de código leve, com interface de terminal. Ele roda nas assinaturas do Grok e do Codex que você já paga, no OpenRouter ou em qualquer modelo que fale o protocolo compatível com a API da OpenAI. Ele reduz o que as suas ferramentas devolvem antes de esse texto chegar ao modelo.
curl -fsSL https://raw.githubusercontent.com/samuelfaj/distill/main/install.sh | sh
macOS, Linux e Windows. Depois, atualize com distill update.
Camadas de modelo
Cada camada tem o seu próprio seletor. Todas começam em auto.
Cuida da conversa principal, do raciocínio difícil e das mudanças de código.
/model ou /tiers reasoning
Assume chamadas adequadas dentro da mesma conversa quando um modelo mais leve dá conta. Opcional.
/worker-model ou /tiers worker
Cuida de tarefas delimitadas, como extração, resumos e compressão.
/utility-model ou /tiers utility
Deixe uma camada sem definir para rodar sem ela. Um Worker sem definir significa nenhum roteamento para o Worker.
Roteamento
O Jev é a camada de decisão dentro do Distill. Ele responde perguntas estruturadas sobre um estado pequeno que o harness monta: qual modelo deve assumir uma chamada, quanta capacidade essa chamada exige e quais partes do resultado de uma ferramenta vale a pena manter.
Economia de tokens
A maior parte da redução acontece em código determinístico, sobre o resultado de uma ferramenta, antes de ele entrar na conversa. O resultado passa por estas etapas em ordem, e cada etapa tem uma trava que pode interrompê-la.
| Etapa | O que ela remove | Quando roda | Padrão |
|---|---|---|---|
| Reuso de leitura | Uma segunda cópia de bytes que já estão na conversa | 2000 bytes ou mais, e idêntico por hash a um payload já enviado | Ativo |
| Trava de saída exata | Nada. Esta etapa interrompe as demais. | A chamada é endereçada por linha, ou o texto pertence a uma skill | Sempre |
| Limpeza prévia | Ruído de terminal e conteúdo que o próprio payload repete | 2000 bytes ou mais, e não é um documento | Ativo |
| Extração de importância | O meio ilegível de um payload longo | 4000 bytes ou mais, e não é um documento | Ativo |
| Tarefa utilitária | Um payload que um modelo pequeno digere mais barato do que o modelo da sessão deveria | 2000 bytes ou mais, e existe uma tarefa registrada para esse formato | Ativo |
| Compressão utilitária | O mesmo, para um payload grande demais para se querer inteiro | 24 KiB ou mais | Ativo |
As quatro primeiras etapas economizam tokens. As duas últimas economizam dinheiro, passando o trabalho para um modelo mais barato, o que é outra coisa.
Travas
Toda etapa que descartaria bytes grava o original em um arquivo antes e envia o caminho junto com o texto reduzido. Se o armazenamento recusa, a etapa não roda.
A redução é comparada com o original antes de alguém usá-la. Se um caminho, um file:line, um número ou uma palavra de erro desapareceria, a redução é descartada e os bytes originais ficam.
retrieve_range devolve um intervalo de linhas de um payload guardado. grep_handle faz uma busca exata dentro dele e devolve as linhas na íntegra, com os números de linha.
O Distill só usa a resposta de uma tarefa utilitária quando uma trava consegue conferi-la. Uma extração precisa citar trechos que realmente aparecem no payload, uma classificação precisa cair em um rótulo fechado e uma escolha precisa nomear ids que foram oferecidos. Quando a conferência falha, os bytes ficam como estavam.
Regras
Estas são regras no código, não configurações.
Um limite não é uma economia, uma estimativa não é uma medição, e um payload ignorado não é uma vitória.
O harness
O Distill é um agente de código completo. O token saver é uma parte dele.
Entre no Grok, no ChatGPT e no OpenRouter de forma independente. Sair de um não afeta os outros.
Suba um servidor compatível com a API da OpenAI, adicione uma entrada no config.toml e use como qualquer camada.
Abra Model tiers na tela inicial para trocar uma camada, ou digite /tiers com o nome dela.
/context mostra para onde a janela está indo, incluindo o custo das definições de ferramentas e da lista de skills. /compact recupera espaço na hora.
GROK_LOG_JEV=1 registra a alavanca, o veredito, o motivo e a confiança de cada decisão.
Defina [jev] enabled = false, ou inicie com GROK_JEV=0, para desligar a camada inteira. Cada alavanca também tem a sua própria chave.
Perfis novos ficam em ~/.distill. Aponte DISTILL_HOME para outro lugar, e um perfil ~/.grok existente continua funcionando.
distill update atualiza uma instalação feita com o instalador de releases.
Nova worktree, retomar sessão, camadas de modelo e logout separado por provedor, tudo na mesma tela.
Início rápido
O instalador detecta a sua plataforma e arquitetura, e grava o binário dentro do seu diretório de usuário.
Rode o comando da sua plataforma.
Faça login na assinatura que você já paga, ou no OpenRouter. Dá para usar mais de uma.
Escolha um modelo de raciocínio, um de trabalho e um utilitário, ou deixe tudo em auto.
Inicie o distill em qualquer diretório de projeto.
macOS e Linux
curl -fsSL https://raw.githubusercontent.com/samuelfaj/distill/main/install.sh | sh
Windows
irm https://raw.githubusercontent.com/samuelfaj/distill/main/install.ps1 | iex
Atualizar uma instalação existente
distill update
Dúvidas
Qualquer uma delas. O Distill mantém login e logout separados para Grok, ChatGPT e OpenRouter, e sair de um não sai dos outros. O ChatGPT usa OAuth, e o OpenRouter aceita login pelo navegador ou uma OPENROUTER_API_KEY.
Sim. Suba um servidor compatível com a API da OpenAI, adicione uma entrada no config.toml com o id do modelo e a base URL, e selecione como uma camada. Perfis novos usam ~/.distill, e você pode mudar esse local com DISTILL_HOME.
Não. O Jev escolhe entre modelos e rotas candidatas que o código fornece. Modo de planejamento, aprovação automática, YOLO e políticas de permissão são do Distill, e o Jev não aprova, não veta nem segura uma chamada para confirmação.
O harness volta ao caminho normal. Uma decisão de roteamento que falha, estoura o tempo ou vem sem confiança deixa o modelo da sessão no lugar, e uma resposta utilitária que não passa na trava é descartada, então os bytes originais ficam como estavam.
Inicie o Distill com GROK_LOG_JEV=1. Ele grava logs/jev.jsonl dentro do seu perfil, um registro por decisão, com rótulos como reuse, crush, extract, keep, used, defer, local e cloud.
O Distill não publica um número de economia, e o código não mede um. As etapas e os limites estão documentados, então você pode ler o que roda e conferir o registro de decisões das suas próprias sessões.
O Distill roda em macOS, Linux e Windows, e se atualiza no lugar.
curl -fsSL https://raw.githubusercontent.com/samuelfaj/distill/main/install.sh | sh
Código aberto sob a licença Apache-2.0.