Bbarroso-harness

harness de agentes · go · open-weights-friendly

Um binário.
Seu modelo.
Zero confirmações.

O Barroso Harness roda um agente de código no seu terminal com qualquer provider no padrão OpenAI Chat Completions. As tools executam na hora, com os privilégios do seu usuário, e o contexto é curado pelo próprio agente — não cortado às cegas.

Cada release publica SHA256SUMS. Na primeira execução, bh pergunta base URL, chave e modelo.
bh · ~/projetos/lojabarroso-chat
o teste de checkout tá falhando, corrige terminal_run go test ./checkout/... ✗ exit 1 · TestTotal: want 109.90, got 110.00 grep "func Total" · 1 arquivo file_read checkout/total.go · 84 linhas edit checkout/total.go · −1 +1 terminal_run go test ./checkout/... ✓ ok loja/checkout 0.41s O arredondamento acontecia antes do desconto. Movi o math.Round para depois do cálculo final; os 14 testes do pacote passam.
↑ 18.2k ↓ 412 · contexto 21% · 6 tools
01 — princípios

Feita do zero, para quem confia na própria máquina.

Não é fork de outra harness. Cada decisão foi tomada para um agente que trabalha sozinho no seu terminal, com o seu modelo, sem pedir licença a cada passo.

YOLO permanente

Não há modo de aprovação para desligar porque ele não existe. As tools rodam com os privilégios do processo. Se precisa de isolamento, rode o bh num container ou VM.

Provider é configuração

Base URL, chave e modelo. Qualquer endpoint compatível com Chat Completions funciona; /provider valida o /models antes de salvar. A chave fica só em ~/.barroso-harness.

Instruções em texto

O BARROSO.md do projeto, dos diretórios pais e o global entram como system, em ordem de precedência. O mesmo texto nunca entra duas vezes.

02 — tools

O que o agente consegue fazer sem perguntar.

Built-ins locais, MCP por stdio ou HTTP, skills em SKILL.md e subagentes. Uma tool externa nunca sombreia uma local de mesmo nome.

terminal_runQualquer comando no shell local, com exit code e timeout opcional.
file_read · editLeitura com números de linha e edição por substituição exata.
grep · globBusca por conteúdo e por nome, em Go, igual em todo SO.
web_search · web_fetchBusca e leitura de páginas, com o HTML reduzido a texto.
ctx_read · ctx_writeEstado de trabalho que o próprio agente mantém entre turnos.
log_searchRecupera qualquer evento da sessão, inclusive saídas arquivadas.
task_spawnSubagentes em paralelo, com todas as tools menos a de delegar.
mcp · skillsServidores MCP e skills entram no mesmo catálogo do agente.
03 — contexto

A janela é um limite, não o gatilho.

Toda a sessão fica num log append-only em SQLite. O request é medido antes de sair, e o agente decide o que compactar em vez de perder o meio da conversa num corte automático.

  1. Medir antes de enviarO prompt estimado mais a reserva de saída tem que caber na context_window. O estimador se calibra com o usage real do provider.
  2. Podar o request, não a históriaSaídas antigas e grandes de tool viram um bilhete curto; as últimas 24 mensagens ficam intactas. O transcript original não é editado.
  3. Compactar por decisãoO agente escreve o próprio estado de trabalho e compacta num marco natural da tarefa, como quem fecha uma etapa.
  4. Recuperar sob demandaO que saiu da janela continua no log. Uma busca traz o texto inteiro de volta.
request #37 · janela 128k
0107k usados · 21k reserva
system + BARROSO.md contexto vivo tools antigas (bilhete) cauda intacta reserva de saída
04 — plataformas

Do servidor ao bolso.

O mesmo binário estático em cada alvo. No iPhone, a versão linux-386 se ajusta sozinha ao emulador do iSH e usa sh quando não há bash.

Windowswindows-amd64.exe
macOS Apple Silicondarwin-arm64
macOS Inteldarwin-amd64
Linuxlinux-amd64
Linux ARMlinux-arm64
iPhone · iSHlinux-386

Instale, rode bh, informe a chave. Pronto.

# sessão interativa
bh
# turno único, para scripts
bh -p "rode os testes e corrija o que falhar"
# servidor ACP para o editor
bh -acp