Código livre

donk

O modelo lê só o que precisa.

Um agente de código para o terminal que decide, por construção, quanto de cada resultado o modelo chega a ler, e mostra a conta do que poupou.

Em desenvolvimento

Instalar Ver o código no GitLab

Terminal no GNOME com o donk reproduzindo uma sessão de exemplo: a conversa, as edições feitas e a saída dos testes resumida.

Cem linhas de teste viram vinte

A saída completa de cada ferramenta é guardada uma vez. O modelo lê um recorte dela, e a tela mostra outro: numa suíte de 124 linhas, o modelo recebe 20 e a contagem do resto.

Terminal com a reprodução de uma sessão do donk: a saída dos testes cortada em 20 linhas, com a contagem das linhas que ficaram de fora.

Veja quanto cada chamada poupou

donk stats mostra, por ferramenta, a saída bruta, o que foi ao modelo e o que apareceu na tela, e estima o tempo poupado contra o de revisar.

Saída do donk stats com os tokens de cada ferramenta, a redução obtida em cada uma e uma estimativa do tempo poupado.

Confira o que o modelo recebeu

donk log lista cada chamada da sessão com os argumentos e confere o que o modelo leu contra a saída completa guardada, em vez de confiar no resumo dele.

Saída do donk log com cada chamada de ferramenta da sessão, seus argumentos e o conteúdo que o modelo recebeu.

Mais recursos

Desfazer

Todo arquivo que uma ferramenta escreve no repositório é copiado antes, e /undo o devolve ao que era.

Pergunta só o que não se desfaz

Escrever no repositório não pede confirmação, caminhos fora dele são negados e comandos marcados como irreversíveis são perguntados de uma vez, num plano único.

Modelo à sua escolha

Qualquer endpoint compatível com a API da OpenAI, a Anthropic ou um servidor seu, registrados num arquivo de configuração, sem modelo nem chave embutidos.

Sobre o projeto

O donk é um agente de código para o terminal: lê, busca e edita os arquivos do seu repositório e roda comandos nele, conforme o modelo pede. A conversa aparece no próprio terminal, com o prompt e o estado num rodapé.

A ideia central é simples. Quando uma ferramenta roda, por exemplo uma suíte de testes, a saída completa é guardada uma vez e nunca vai inteira para o modelo. Dela saem duas versões recortadas: uma para o modelo e outra para a tela. O conteúdo completo continua guardado e pode ser consultado depois, em vez de se confiar num resumo do modelo.

Ele deixa de fora um modelo embutido, uma camada gratuita e qualquer opção que desligue as confirmações e o desfazer. Ainda não há sandbox.

Tecnologias

Rust, num único binário estático, com SQLite e TLS embutidos.

Licença: MIT

Instalar o donk

Para compilar, precisa de Rust 1.98 ou mais novo e de um compilador C. O ripgrep é opcional.

Do binário publicado

Binário estático para Linux x86_64, sem nada para instalar antes.

curl -LO https://gitlab.com/alteronauta/donk/-/releases/26.10.0/downloads/donk-26.10.0-linux-amd64.tar.gz
curl -LO https://gitlab.com/alteronauta/donk/-/releases/26.10.0/downloads/SHA256SUMS
sha256sum --check --ignore-missing SHA256SUMS
tar xzf donk-26.10.0-linux-amd64.tar.gz
install -D donk-26.10.0-linux-amd64/donk ~/.local/bin/donk

Do código-fonte

SQLite e TLS vão dentro do binário, então nenhuma biblioteca do sistema é necessária.

git clone https://gitlab.com/alteronauta/donk.git && cd donk
cargo install --locked --path crates/donk-cli

O donk não traz modelo nem chave: registre os seus em models.toml, ao lado do config.toml, como mostra o README.

Conte o que você precisa resolver.

adriano@ars.tec.br

@adriano@ars.tec.br