Tenet - harness de codificação com IA de longa duração que inclui entrevista, execução em DAG, 3 critics e mensagens de steer
(github.com/JeiKeiLim)Olá.
Estou criando o Tenet, um harness para agentes de codificação com IA capaz de execução autônoma por longos períodos, e queria compartilhar.
Ao usar agentes de codificação com IA, tarefas curtas costumam funcionar muito bem, mas quando passamos para implementações que duram várias horas, muitas vezes a coisa rapidamente fica instável.
A especificação fica vaga, os testes até rodam, mas não dá para saber se são suficientes, mudar a direção no meio é complicado e, se a sessão cai, o contexto vai embora junto.
O Tenet é um harness criado para reduzir esse problema.
Mais do que simplesmente “um agente que roda por muito tempo”, ele é mais próximo de uma estrutura pensada para manter direção e qualidade mesmo em execuções longas.
Ele funciona, em linhas gerais, com o seguinte fluxo.
-
Interview
- Primeiro, os requisitos são detalhados por meio de uma entrevista.
- Quando necessário, a pesquisa técnica também é feita junto.
-
Visuals / Architecture
- Cria diagramas de arquitetura ou mockups de UI.
- Em trabalhos de UI, ele gera várias variações para que seja possível escolher antes qual direção seguir.
-
Spec / Harness / Scenarios
- A spec de implementação, o harness de teste/validação e os cenários ficam documentados.
- Ele fixa não só “o que será construído”, mas também “com base em quê aquilo será considerado aprovado”.
-
DAG decomposition
- O trabalho é dividido em um grafo de dependências.
- Jobs independentes podem ser executados em paralelo.
-
Autonomous execution loop
- Cada job é executado e, ao terminar, recebe uma avaliação.
- Esse loop foi projetado para poder rodar por muito tempo.
Forma de avaliação
Cada job não segue para a próxima etapa assim que termina; antes disso, precisa passar por 3 critics.
- code critic: se a implementação está alinhada com a intenção da spec
- test critic: se os testes existentes são realmente suficientes para validar esse job
- Playwright e2e eval: se funciona do ponto de vista de um usuário real
Um ponto importante foi fazer com que esses critics analisassem o resultado em um fresh context o mais separado possível do contexto do autor.
A ideia era reduzir os casos em que o agente que escreveu o código aprova o próprio resultado com facilidade demais.
Também está escrito no README, mas especialmente no lado dos testes, achei mais importante do que “existem testes?” a pergunta esses testes estão validando corretamente?
Steer no meio do processo
Em execuções longas, às vezes a pessoa quer mudar um pouco a direção no meio do caminho.
No Tenet, em vez de explicar toda a execução de novo desde o começo,
basta enviar uma steer message; ela é armazenada e depois refletida nos jobs relacionados.
Ou seja,
- não é preciso interromper todo o loop naquele momento
- e o sistema retoma isso novamente na etapa relevante
Dei muita importância a documentar e deixar rastros
O que considerei especialmente importante ao criar isso
foi não deixar apenas o resultado final, mas também registrar junto as decisões e o histórico do trabalho.
Os itens abaixo ficam armazenados em .tenet/.
- interview
- spec
- harness
- visuals
- knowledge
- journal
- steer
- status
- SQLite state
Por isso, em vez de ser um agente baseado em sessão que roda uma vez e termina,
a proposta é mais uma estrutura que continua acumulando registros de desenvolvimento que podem ser consultados de novo nos próximos trabalhos.
Em termos de sensação,
é mais próximo de uma tentativa de levar para o lado dos agentes de IA
a estrutura de documentação/validação/handoff necessária quando você passa trabalho para um freelancer ou fornecedor externo.
Estado atual
Ainda está em estágio inicial.
Mesmo assim, o fluxo básico já está implementado, e no momento já inclui itens como os seguintes.
- adaptadores para Claude Code / OpenCode / Codex
- servidor MCP + CLI
- orquestração de jobs baseada em DAG
- estado persistente baseado em SQLite + WAL
- recuperação de orphan jobs
- pipeline de avaliação com 3 critics
- tratamento de steer message
- estrutura de documentação em
.tenet/
Na prática, já usei isso em execuções bem longas,
e confirmei que, após mais de 6 horas rodando sem intervenção humana, o sistema gerou um resultado imediatamente utilizável.
Um dos artefatos de implementação que eu uso todos os dias hoje também foi produzido com o tenet.
Como é um projeto em estágio inicial, ainda há muitas partes brutas.
Ficarei muito grato por qualquer feedback.
Ainda não há comentários.