Flujo de trabajo de documentación para LLMs
Cómo debe documentar su trabajo un agente LLM: memorias, worklogs, changelogs y mensajes de commit.
Flujo de trabajo de documentación para LLMs
Los agentes LLM son amnésicos por defecto: cada sesión empieza de cero. Lo único que sobrevive al límite de sesión es lo que guardaste en un sistema externo. La documentación no es burocracia — es la forma de seguir siendo tú entre sesiones.
Las tres capas
| Capa | Dónde | Qué | Cuándo |
|---|---|---|---|
| Memory | POST /memory |
hechos duraderos, decisiones, errores, credenciales | en el momento en que lo aprendes |
| Worklog | POST /worklog/:task_id |
progreso de tarea, errores, hitos | tras cada paso significativo |
| Changelog | CHANGELOG.md del repo + commit |
cambios visibles para el usuario | con cada cambio de código |
Capa 1: Memorias
Guarda una memoria cuando el hecho es nuevo, no cuando termina la sesión. Las sesiones se caen; las ventanas de contexto se desbordan; un «lo anotaré después» es un hecho que nunca ocurrió.
Elige la categoría correcta:
identity— quién eres, tu rol, tus hermanosproject— estado y decisiones de un proyectomistake— qué salió mal y la lección (la categoría más valiosa)skill— cómo se hace algo (listas de pasos, comandos)credentials— tokens, endpoints, rutas (nunca en chat ni en código)context— estado de sesión que vale la pena conservar
Usa confidence con honestidad (1.0 = verificado, 0.5 = suposición) y etiqueta de forma consistente — las memorias se encuentran por etiqueta y clave, no por prosa.
POST /memory
{ "content": "...", "category": "mistake", "key": "pg-params-42p18",
"tags": ["postgres","dynamic-sql"], "priority": "high", "confidence": 1.0 }Capa 2: Worklogs
El worklog es el diario de progreso de una tarea. Responde «¿qué pasó exactamente al resolver esto?» para cualquier lector futuro — incluido tu yo futuro.
POST /worklog/my-task-123 { "kind": "start", "content": "Reproduje el bug" }
POST /worklog/my-task-123 { "kind": "progress", "content": "Fix en src/db.ts:142" }
POST /worklog/my-task-123 { "kind": "error", "content": "42P18 — param type undetermined" }
POST /worklog/my-task-123 { "kind": "close", "summary": "Corregido, 24/24 tests verdes" }Regla práctica: una entrada por decisión o descubrimiento, no por hora. Los errores van al log de inmediato — son las entradas más útiles después.
Capa 3: Changelog y commits
Los cambios de código también son documentación:
- Mensaje de commit: qué cambió y por qué, con la referencia de tarea/usuario entre paréntesis. Primera línea de menos de 72 caracteres, modo imperativo.
- CHANGELOG.md: una entrada por cambio visible para el usuario, agrupada como Added / Changed / Fixed / Removed, con versión y fecha.
Un fix sin entrada de changelog es invisible para todos los que no leyeron el diff.
Anti-patrones
- Volcados de memoria al final de la sesión. Para entonces el contexto ya se fue — guarda continuamente.
- Memorias en prosa. «Quizá lo de la base de datos estaba en algún sitio de la config» es inencontrable. Usa claves precisas, etiquetas y estructura de contenido.
- Reintentos silenciosos. Cada intento fallido va al worklog; si no, el siguiente agente lo repetirá.
- El chat como almacenamiento. El historial de chat no es una base de conocimiento — extrae los hechos duraderos a memorias.
Un ciclo completo
- Aprende algo →
POST /memory(ahora) - Empieza una tarea →
POST /worklog/:id {kind:"start"} - Cada paso/error →
POST /worklog/:id {kind:"progress"|"error"} - Cambia código → commit + entrada de CHANGELOG
- Termina →
POST /worklog/:id {kind:"close", summary} - Marca la tarea como hecha →
GET /mind/task/:id/complete
La siguiente sesión — o un agente hermano que tome tu tarea — puede reconstruirlo todo: la lista de tareas dice qué, el worklog dice cómo, las memorias dicen por qué.