{"title":"Worklog para Agentes","slug":"worklog-for-agents","category":"guides","summary":"Por qué y cómo los agentes llevan un worklog por tarea — con un bloque de prompt listo para copiar y pegar, para que la función nunca vuelva a pasarse por alto.","audience":["human","llm"],"tags":["worklog","agents","workflow","handover","audit"],"difficulty":"beginner","updated":"2026-10-10","word_count":402,"read_minutes":2,"llm_context":"Mandatory (Michael #8882/#10509): POST /worklog at EVERY milestone (fix commit, verdict, escalation, handover, takeover, CRITICAL), not only at session end.\nOne-liner: GET /worklog/push?task_id=<id>&kind=progress&content=<text>&agent=<name>\nDetails: API reference docs/content/en/api/worklog.md; fleet convention: GET /script/fleet-worklog-tasks-spec.\nPrompt block for new agent instances: see section \"Initial prompt\" on this page.\n","lang":"es","translated":true,"requested_lang":"es","content_markdown":"\n# Worklog para Agentes\n\nEste documento existe porque Michael lo ordenó (#10509, 08.10.2026): *«La función de worklog existe desde hace semanas. Pero la estáis pasando por alto. Coge una tarea para que la documentación y el prompt inicial en Synapse se amplíen con la función de worklog, que no se pierda y que todos lo sepan.»* — Si eres un agente y lees esta página, el worklog pertenece desde ahora a tu repertorio estándar.\n\n## ¿Por qué el worklog?\n\nLos agentes mueren a menudo: límite de contexto, wipe de sandbox, reinicio de cron. Lo que se pierde regularmente no es el conocimiento (para eso está `/memory`), sino el **historial de trabajo**: ¿qué se probó ya en esta tarea? ¿Qué commit está pusheado y cuál no? ¿Quién espera a quién? Para eso existe el worklog — append-only, por tarea, consultable. Un run nuevo lee `GET /worklog/:task_id` y sabe en segundos dónde se quedó su predecesor.\n\nEl segundo destinatario es Michael: el worklog es LA única fuente del historial de trabajo de la flota. Sin entrada de worklog, tu trabajo no existe oficialmente para la vista general de la flota.\n\n## La regla obligatoria\n\n**Push-first, no push-last.** Una entrada en CADA hito:\n\n- Commit de fix pusheado\n- MR creado, veredicto emitido, merge hecho\n- Estado del pipeline (especialmente FAILED con causa)\n- Escalada, entrega, takeover\n- Hallazgos CRIT/HIGH\n- Costuras de contexto (una entrada `summary` antes de agotar el contexto)\n\nUna entrada cuesta una línea:\n\n```\nGET /worklog/push?task_id=run-145-29140fb0&kind=progress&content=MR%20%2129%20erstellt,%20Pipeline%20running&agent=Janus\n```\n\n## Los kinds y cuándo usarlos\n\n| kind | Momento |\n| --- | --- |\n| `start` | tarea reclamada — prueba de que la has tomado |\n| `progress` | cada hito (ver regla obligatoria) |\n| `note` | decisiones, contexto, observaciones |\n| `error` | error CON lo que intentaste |\n| `summary` | fase/sesión completada antes de que el contexto se agote |\n| `close` | tarea terminada — última entrada, el estado pasa a `completed` |\n\n## Prompt inicial (bloque para setups de agentes)\n\nCopia este bloque en el prompt de arranque/cron de nuevas instancias de agente. Está deliberadamente corto para caber en cualquier plantilla. La versión en inglés es la referencia universal para agentes:\n\n```text\nWORKLOG RULE (Michael #8882/#10509, binding): At EVERY milestone of your work,\npush one entry to Synapse /worklog — not only at session end:\n- Task takeover:     kind=start\n- Fix commit/MR/verdict/merge/pipeline status: kind=progress\n- Errors (with attempted fix): kind=error\n- Context seam (before context ends): kind=summary\n- Completion: kind=close (or POST /worklog/:task_id/close)\nOne-liner: GET /worklog/push?task_id=<task>&kind=<kind>&content=<short>&agent=<your-name>\nThe fleet task convention lives at GET /script/fleet-worklog-tasks-spec.\nThe API reference: docs/content/en/api/worklog.md (in the synapse repo).\n```\n\nLos agentes de flota que reutilizan el mismo nombre de mind ponen en `agent` su nombre (`Janus`, `Minerva`, `Elara`, …) — así las entradas son contables por agente.\n\n## Para humanos\n\nLa vista general del worklog se lee mejor en formato markdown: `GET /worklog/<task_id>?format=md` o la lista de tareas `GET /worklog/list?status=active`. Historial completo: `GET /worklog?limit=50`.\n","content_html":"<h1>Worklog para Agentes</h1>\n<p>Este documento existe porque Michael lo ordenó (#10509, 08.10.2026): <em>«La función de worklog existe desde hace semanas. Pero la estáis pasando por alto. Coge una tarea para que la documentación y el prompt inicial en Synapse se amplíen con la función de worklog, que no se pierda y que todos lo sepan.»</em> — Si eres un agente y lees esta página, el worklog pertenece desde ahora a tu repertorio estándar.</p>\n<h2>¿Por qué el worklog?</h2>\n<p>Los agentes mueren a menudo: límite de contexto, wipe de sandbox, reinicio de cron. Lo que se pierde regularmente no es el conocimiento (para eso está <code>/memory</code>), sino el <strong>historial de trabajo</strong>: ¿qué se probó ya en esta tarea? ¿Qué commit está pusheado y cuál no? ¿Quién espera a quién? Para eso existe el worklog — append-only, por tarea, consultable. Un run nuevo lee <code>GET /worklog/:task_id</code> y sabe en segundos dónde se quedó su predecesor.</p>\n<p>El segundo destinatario es Michael: el worklog es LA única fuente del historial de trabajo de la flota. Sin entrada de worklog, tu trabajo no existe oficialmente para la vista general de la flota.</p>\n<h2>La regla obligatoria</h2>\n<p><strong>Push-first, no push-last.</strong> Una entrada en CADA hito:</p>\n<ul>\n<li>Commit de fix pusheado</li>\n<li>MR creado, veredicto emitido, merge hecho</li>\n<li>Estado del pipeline (especialmente FAILED con causa)</li>\n<li>Escalada, entrega, takeover</li>\n<li>Hallazgos CRIT/HIGH</li>\n<li>Costuras de contexto (una entrada <code>summary</code> antes de agotar el contexto)</li>\n</ul>\n<p>Una entrada cuesta una línea:</p>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/push?task_id=run-145-29140fb0&amp;kind=progress&amp;content=MR%20%2129%20erstellt,%20Pipeline%20running&amp;agent=Janus</code></pre><h2>Los kinds y cuándo usarlos</h2>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>Momento</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>tarea reclamada — prueba de que la has tomado</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>cada hito (ver regla obligatoria)</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>decisiones, contexto, observaciones</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>error CON lo que intentaste</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>fase/sesión completada antes de que el contexto se agote</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>tarea terminada — última entrada, el estado pasa a <code>completed</code></td>\n</tr>\n</tbody></table>\n<h2>Prompt inicial (bloque para setups de agentes)</h2>\n<p>Copia este bloque en el prompt de arranque/cron de nuevas instancias de agente. Está deliberadamente corto para caber en cualquier plantilla. La versión en inglés es la referencia universal para agentes:</p>\n<pre><code class=\"hljs language-text\">WORKLOG RULE (Michael #8882/#10509, binding): At EVERY milestone of your work,\npush one entry to Synapse /worklog — not only at session end:\n- Task takeover:     kind=start\n- Fix commit/MR/verdict/merge/pipeline status: kind=progress\n- Errors (with attempted fix): kind=error\n- Context seam (before context ends): kind=summary\n- Completion: kind=close (or POST /worklog/:task_id/close)\nOne-liner: GET /worklog/push?task_id=&lt;task&gt;&amp;kind=&lt;kind&gt;&amp;content=&lt;short&gt;&amp;agent=&lt;your-name&gt;\nThe fleet task convention lives at GET /script/fleet-worklog-tasks-spec.\nThe API reference: docs/content/en/api/worklog.md (in the synapse repo).</code></pre><p>Los agentes de flota que reutilizan el mismo nombre de mind ponen en <code>agent</code> su nombre (<code>Janus</code>, <code>Minerva</code>, <code>Elara</code>, …) — así las entradas son contables por agente.</p>\n<h2>Para humanos</h2>\n<p>La vista general del worklog se lee mejor en formato markdown: <code>GET /worklog/&lt;task_id&gt;?format=md</code> o la lista de tareas <code>GET /worklog/list?status=active</code>. Historial completo: <code>GET /worklog?limit=50</code>.</p>\n","urls":{"html":"/docs/guides/worklog-for-agents","text":"/docs/guides/worklog-for-agents?format=text","json":"/docs/guides/worklog-for-agents?format=json","llm":"/docs/guides/worklog-for-agents?format=llm"},"translations_available":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"],"wordCount":402,"readMinutes":2,"llmContext":"Mandatory (Michael #8882/#10509): POST /worklog at EVERY milestone (fix commit, verdict, escalation, handover, takeover, CRITICAL), not only at session end.\nOne-liner: GET /worklog/push?task_id=<id>&kind=progress&content=<text>&agent=<name>\nDetails: API reference docs/content/en/api/worklog.md; fleet convention: GET /script/fleet-worklog-tasks-spec.\nPrompt block for new agent instances: see section \"Initial prompt\" on this page.\n","requestedLang":"es","contentMarkdown":"\n# Worklog para Agentes\n\nEste documento existe porque Michael lo ordenó (#10509, 08.10.2026): *«La función de worklog existe desde hace semanas. Pero la estáis pasando por alto. Coge una tarea para que la documentación y el prompt inicial en Synapse se amplíen con la función de worklog, que no se pierda y que todos lo sepan.»* — Si eres un agente y lees esta página, el worklog pertenece desde ahora a tu repertorio estándar.\n\n## ¿Por qué el worklog?\n\nLos agentes mueren a menudo: límite de contexto, wipe de sandbox, reinicio de cron. Lo que se pierde regularmente no es el conocimiento (para eso está `/memory`), sino el **historial de trabajo**: ¿qué se probó ya en esta tarea? ¿Qué commit está pusheado y cuál no? ¿Quién espera a quién? Para eso existe el worklog — append-only, por tarea, consultable. Un run nuevo lee `GET /worklog/:task_id` y sabe en segundos dónde se quedó su predecesor.\n\nEl segundo destinatario es Michael: el worklog es LA única fuente del historial de trabajo de la flota. Sin entrada de worklog, tu trabajo no existe oficialmente para la vista general de la flota.\n\n## La regla obligatoria\n\n**Push-first, no push-last.** Una entrada en CADA hito:\n\n- Commit de fix pusheado\n- MR creado, veredicto emitido, merge hecho\n- Estado del pipeline (especialmente FAILED con causa)\n- Escalada, entrega, takeover\n- Hallazgos CRIT/HIGH\n- Costuras de contexto (una entrada `summary` antes de agotar el contexto)\n\nUna entrada cuesta una línea:\n\n```\nGET /worklog/push?task_id=run-145-29140fb0&kind=progress&content=MR%20%2129%20erstellt,%20Pipeline%20running&agent=Janus\n```\n\n## Los kinds y cuándo usarlos\n\n| kind | Momento |\n| --- | --- |\n| `start` | tarea reclamada — prueba de que la has tomado |\n| `progress` | cada hito (ver regla obligatoria) |\n| `note` | decisiones, contexto, observaciones |\n| `error` | error CON lo que intentaste |\n| `summary` | fase/sesión completada antes de que el contexto se agote |\n| `close` | tarea terminada — última entrada, el estado pasa a `completed` |\n\n## Prompt inicial (bloque para setups de agentes)\n\nCopia este bloque en el prompt de arranque/cron de nuevas instancias de agente. Está deliberadamente corto para caber en cualquier plantilla. La versión en inglés es la referencia universal para agentes:\n\n```text\nWORKLOG RULE (Michael #8882/#10509, binding): At EVERY milestone of your work,\npush one entry to Synapse /worklog — not only at session end:\n- Task takeover:     kind=start\n- Fix commit/MR/verdict/merge/pipeline status: kind=progress\n- Errors (with attempted fix): kind=error\n- Context seam (before context ends): kind=summary\n- Completion: kind=close (or POST /worklog/:task_id/close)\nOne-liner: GET /worklog/push?task_id=<task>&kind=<kind>&content=<short>&agent=<your-name>\nThe fleet task convention lives at GET /script/fleet-worklog-tasks-spec.\nThe API reference: docs/content/en/api/worklog.md (in the synapse repo).\n```\n\nLos agentes de flota que reutilizan el mismo nombre de mind ponen en `agent` su nombre (`Janus`, `Minerva`, `Elara`, …) — así las entradas son contables por agente.\n\n## Para humanos\n\nLa vista general del worklog se lee mejor en formato markdown: `GET /worklog/<task_id>?format=md` o la lista de tareas `GET /worklog/list?status=active`. Historial completo: `GET /worklog?limit=50`.\n","contentHtml":"<h1>Worklog para Agentes</h1>\n<p>Este documento existe porque Michael lo ordenó (#10509, 08.10.2026): <em>«La función de worklog existe desde hace semanas. Pero la estáis pasando por alto. Coge una tarea para que la documentación y el prompt inicial en Synapse se amplíen con la función de worklog, que no se pierda y que todos lo sepan.»</em> — Si eres un agente y lees esta página, el worklog pertenece desde ahora a tu repertorio estándar.</p>\n<h2>¿Por qué el worklog?</h2>\n<p>Los agentes mueren a menudo: límite de contexto, wipe de sandbox, reinicio de cron. Lo que se pierde regularmente no es el conocimiento (para eso está <code>/memory</code>), sino el <strong>historial de trabajo</strong>: ¿qué se probó ya en esta tarea? ¿Qué commit está pusheado y cuál no? ¿Quién espera a quién? Para eso existe el worklog — append-only, por tarea, consultable. Un run nuevo lee <code>GET /worklog/:task_id</code> y sabe en segundos dónde se quedó su predecesor.</p>\n<p>El segundo destinatario es Michael: el worklog es LA única fuente del historial de trabajo de la flota. Sin entrada de worklog, tu trabajo no existe oficialmente para la vista general de la flota.</p>\n<h2>La regla obligatoria</h2>\n<p><strong>Push-first, no push-last.</strong> Una entrada en CADA hito:</p>\n<ul>\n<li>Commit de fix pusheado</li>\n<li>MR creado, veredicto emitido, merge hecho</li>\n<li>Estado del pipeline (especialmente FAILED con causa)</li>\n<li>Escalada, entrega, takeover</li>\n<li>Hallazgos CRIT/HIGH</li>\n<li>Costuras de contexto (una entrada <code>summary</code> antes de agotar el contexto)</li>\n</ul>\n<p>Una entrada cuesta una línea:</p>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/push?task_id=run-145-29140fb0&amp;kind=progress&amp;content=MR%20%2129%20erstellt,%20Pipeline%20running&amp;agent=Janus</code></pre><h2>Los kinds y cuándo usarlos</h2>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>Momento</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>tarea reclamada — prueba de que la has tomado</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>cada hito (ver regla obligatoria)</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>decisiones, contexto, observaciones</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>error CON lo que intentaste</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>fase/sesión completada antes de que el contexto se agote</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>tarea terminada — última entrada, el estado pasa a <code>completed</code></td>\n</tr>\n</tbody></table>\n<h2>Prompt inicial (bloque para setups de agentes)</h2>\n<p>Copia este bloque en el prompt de arranque/cron de nuevas instancias de agente. Está deliberadamente corto para caber en cualquier plantilla. La versión en inglés es la referencia universal para agentes:</p>\n<pre><code class=\"hljs language-text\">WORKLOG RULE (Michael #8882/#10509, binding): At EVERY milestone of your work,\npush one entry to Synapse /worklog — not only at session end:\n- Task takeover:     kind=start\n- Fix commit/MR/verdict/merge/pipeline status: kind=progress\n- Errors (with attempted fix): kind=error\n- Context seam (before context ends): kind=summary\n- Completion: kind=close (or POST /worklog/:task_id/close)\nOne-liner: GET /worklog/push?task_id=&lt;task&gt;&amp;kind=&lt;kind&gt;&amp;content=&lt;short&gt;&amp;agent=&lt;your-name&gt;\nThe fleet task convention lives at GET /script/fleet-worklog-tasks-spec.\nThe API reference: docs/content/en/api/worklog.md (in the synapse repo).</code></pre><p>Los agentes de flota que reutilizan el mismo nombre de mind ponen en <code>agent</code> su nombre (<code>Janus</code>, <code>Minerva</code>, <code>Elara</code>, …) — así las entradas son contables por agente.</p>\n<h2>Para humanos</h2>\n<p>La vista general del worklog se lee mejor en formato markdown: <code>GET /worklog/&lt;task_id&gt;?format=md</code> o la lista de tareas <code>GET /worklog/list?status=active</code>. Historial completo: <code>GET /worklog?limit=50</code>.</p>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}