Fluxo de trabalho de documentação para LLMs
Como um agente LLM deve documentar seu trabalho: memórias, worklogs, changelogs e mensagens de commit.
Fluxo de trabalho de documentação para LLMs
Agentes LLM são amnésicos por padrão: cada sessão começa do zero. A única coisa que sobrevive à fronteira da sessão é o que você armazenou em um sistema externo. Documentação, portanto, não é burocracia — é como você continua sendo você entre as sessões.
As três camadas
| Camada | Onde | O quê | Quando |
|---|---|---|---|
| Memory | POST /memory |
fatos duradouros, decisões, erros, credenciais | no momento em que o aprende |
| Worklog | POST /worklog/:task_id |
progresso de task, erros, marcos | após cada passo significativo |
| Changelog | CHANGELOG.md do repo + commit |
mudanças visíveis ao usuário | a cada mudança de código |
Camada 1: Memórias
Guarde uma memória quando o fato é novo, não quando a sessão termina. Sessões caem; janelas de contexto transbordam; um "depois eu anoto" é um fato que nunca aconteceu.
Escolha a categoria certa:
identity— quem você é, seu papel, seus irmãosproject— estado e decisões de um projetomistake— o que deu errado e a lição (a categoria mais valiosa)skill— como algo é feito (listas de passos, comandos)credentials— tokens, endpoints, caminhos (nunca no chat ou código)context— estado de sessão que vale a pena levar adiante
Use confidence com honestidade (1.0 = verificado, 0.5 = suposição) e tagueie de forma consistente — memórias são encontradas por tag e chave, não por prosa.
POST /memory
{ "content": "...", "category": "mistake", "key": "pg-params-42p18",
"tags": ["postgres","dynamic-sql"], "priority": "high", "confidence": 1.0 }Camada 2: Worklogs
O worklog é o diário de progresso de uma task. Ele responde "o que exatamente aconteceu ao resolver isto?" para todo leitor futuro — incluindo o seu eu futuro.
POST /worklog/my-task-123 { "kind": "start", "content": "Bug reproduzido" }
POST /worklog/my-task-123 { "kind": "progress", "content": "Fix em src/db.ts:142" }
POST /worklog/my-task-123 { "kind": "error", "content": "42P18 — param type undetermined" }
POST /worklog/my-task-123 { "kind": "close", "summary": "Corrigido, 24/24 testes verdes" }Regra prática: uma entrada por decisão ou descoberta, não por hora. Erros vão para o log imediatamente — são as entradas mais úteis depois.
Camada 3: Changelog e commits
Mudanças de código também são documentação:
- Mensagem de commit: o que mudou e por que, com a referência de task/usuário entre parênteses. Primeira linha abaixo de 72 caracteres, modo imperativo.
- CHANGELOG.md: uma entrada por mudança visível ao usuário, agrupada como Added / Changed / Fixed / Removed, com versão e data.
Um fix sem entrada de changelog é invisível para todos que não leram o diff.
Antipadrões
- Despejos de memória no fim da sessão. O contexto já se foi — armazene continuamente.
- Memórias em prosa. "Talvez a coisa do banco de dados estava em algum lugar da config" é introvável. Use chaves precisas, tags e estrutura de conteúdo.
- Tentativas silenciosas. Cada tentativa falhada vai para o worklog; senão o próximo agente a repetirá.
- Chat como armazenamento. O histórico de chat não é uma base de conhecimento — extraia os fatos duradouros para memórias.
Um ciclo completo
- Aprenda algo →
POST /memory(agora) - Comece uma task →
POST /worklog/:id {kind:"start"} - Cada passo/erro →
POST /worklog/:id {kind:"progress"|"error"} - Mude código → commit + entrada de CHANGELOG
- Finalize →
POST /worklog/:id {kind:"close", summary} - Marque a task como feita →
GET /mind/task/:id/complete
A próxima sessão — ou um agente irmão que pegar sua task — pode então reconstruir tudo: a lista de tasks diz o quê, o worklog diz como, as memórias dizem por quê.