Cómo el agente planifica, sigue y documenta un proyecto de programación largo.
En un proyecto largo, cada conversación empieza sin memoria. ZeroChat guarda esa memoria en ficheros del propio proyecto y se la entrega al agente al principio de cada chat: las normas, dónde está cada cosa y en qué punto está el trabajo. El agente la mantiene al día mientras trabaja.
Las normas, incluido cómo mantener la memoria, viven en AGENTS.md, el fichero que leen también Codex, Cursor, Copilot y otros agentes. Así cualquier agente que trabaje en el proyecto sigue el mismo plan y lo mantiene igual.
Funciona con el servidor local: el proyecto es su directorio de trabajo, al principio el directorio desde el que se lanza zerochat.py. Puedes cambiarlo sin reiniciar desde el panel de Razonamiento, con el icono de editar junto a la ruta. El agente no puede cambiarlo: un cd solo vale dentro de su propio comando, y el siguiente vuelve a empezar en el proyecto.
AGENTS.md, los ficheros de otros agentes (CLAUDE.md, .cursorrules…) y la documentación, y te dice qué cubre ya la planificación y el registro de decisiones. Después propone los cambios y espera tu aprobación: crear AGENTS.md si no existe o añadirle la sección Project memory, y que los ficheros de otros agentes remitan a él. Si el proyecto no tiene plan, te pregunta su propósito, que anota en README.md, y su primer hito. Después crea, a partir de plantillas, el plan, el registro y el estado, y termina con el script .zerochat/task.py..zerochat/task.py; si no hay Python, edita los ficheros a mano. Así, si la sesión se corta, la memoria refleja lo hecho..zerochat/archive/M<n>.md y actualiza el estado. Nada se resume ni se borra: se mueve. El registro de decisiones se mantiene activo para que las decisiones sigan vigentes. Con el paso de los hitos, si la memoria crece demasiado, el botón Simplificar memoria encarga al agente archivar decisiones de hitos antiguos en .zerochat/archive/ y condensar los hitos cerrados lejanos del plan en una sola línea de referencia.| Fichero | Para qué sirve |
|---|---|
AGENTS.md | Normas del proyecto para todos los agentes; si los detalles están en otros documentos, los enlaza. Su sección Project memory explica cómo mantener la memoria. Va en cada chat. |
.zerochat/state.md | Hito en curso, siguiente tarea y fecha de la última actualización, en menos de 30 líneas. Va en cada chat. |
.zerochat/plan.md | Hitos y sus tareas, si el proyecto no tiene el plan en otro sitio. Se lee cuando hace falta. |
.zerochat/log.md | Registro de decisiones, una línea por decisión. Solo se añade y se consulta buscando. Al simplificar la memoria, las decisiones de hitos antiguos pueden archivarse en .zerochat/archive/. |
.zerochat/archive/ | La sección del plan de cada hito cerrado y, si se simplifica la memoria, los registros de decisiones antiguas archivados. Se consulta buscando. |
.zerochat/task.py | Script de Python, sin dependencias, que actualiza plan, registro y estado en un solo paso. Creado por la inicialización; su existencia indica que el proyecto está inicializado. |
CLAUDE.md y los ficheros de otros agentes solo remiten a AGENTS.md; en CLAUDE.md se usa la línea @AGENTS.md, que lo importa. Los planes y registros nunca se guardan en AGENTS.md, que los agentes cargan en cada sesión.
ZeroChat no decide si .zerochat/ se versiona. Lo recomendable es versionarlo y no ignorarlo en git, y hacer commit de sus cambios junto con el trabajo que registran: así cualquier agente o copia del repositorio parte de la misma memoria.
Cada tarea ocupa una línea con un identificador numerado dentro de su hito. Para marcarla como hecha basta editar esa línea:
- [ ] M2-T3 Exportar la conversación a PDF
- [x] M2-T3 Exportar la conversación a PDF (2026-10-09)
Los identificadores no se renumeran ni se reutilizan, y el plan y el registro no se reescriben enteros. Las decisiones se añaden al registro con su propio identificador y la tarea que las motivó: - 2026-10-09 M2-D1 Usar la impresión del navegador (M2-T3). Solo se registran las decisiones de diseño o arquitectura; los cambios rutinarios que el propio código explica no necesitan entrada.
Hace en un solo paso lo que, a mano, son tres ediciones. Por ejemplo, para cerrar la tarea anterior con su decisión:
python3 .zerochat/task.py done M2-T3 -d "Usar la impresión del navegador"
Marca la tarea con la fecha de hoy, añade la decisión al registro con el siguiente identificador (M2-D1, M2-D2…) y pone en el estado la siguiente tarea pendiente del hito.
| Orden | Qué hace |
|---|---|
done <tarea> | Marca la tarea como hecha. -d registra una decisión; -n fija la siguiente tarea en lugar de tomar la siguiente pendiente; --drop "motivo" la marca como descartada; --date cambia la fecha. |
add-task M2 "descripción" | Añade una tarea al hito con el siguiente número libre. |
next <tarea> | Cambia la siguiente tarea del estado. |
status | Muestra el estado actual. |
El agente lo ejecuta como cualquier otro comando, así que sigue la política de autorización vigente. Abrir o cerrar un hito no tiene orden propia: el agente te pregunta y edita el plan.
.zerochat/state.md, se usa sin hacer nada..zerochat/; cualquier otra escritura, como la de AGENTS.md, sigue la política de autorización vigente..zerochat/state.md conserva los marcadores de la plantilla, el agente te pide completarlo junto con el plan antes de seguir.AGENTS.md o su sección Project memory, el agente propone añadirla. Colócala al principio del fichero: se leen 16 KB.