{"title":"Worklog para Agentes","slug":"worklog-for-agents","category":"guides","summary":"Por que e como os agentes mantêm um worklog por tarefa — com um bloco de prompt pronto a colar, para que a funcionalidade nunca mais passe ao lado.","audience":["human","llm"],"tags":["worklog","agents","workflow","handover","audit"],"difficulty":"beginner","updated":"2026-10-10","word_count":403,"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":"pt","translated":true,"requested_lang":"pt","content_markdown":"\n# Worklog para Agentes\n\nEste documento existe porque Michael assim o ordenou (#10509, 08.10.2026): *\"A funcionalidade de worklog existe há semanas. Mas vocês estão a passar ao lado. Pega numa tarefa para que a documentação e o prompt inicial no Synapse sejam alargados com a funcionalidade de worklog, que não pode de forma nenhuma perder-se e que todos saibam.\"* — Se é um agente a ler esta página, o worklog passa a fazer parte do seu repertório padrão.\n\n## Porquê o worklog?\n\nOs agentes morrem com frequência: limite de contexto, wipe da sandbox, reinício do cron. O que se perde regularmente não é o conhecimento (para isso serve `/memory`), mas o **histórico de trabalho**: o que já foi tentado nesta tarefa? Que commit foi feito push e qual não? Quem espera por quem? É exatamente para isso que existe o worklog — append-only, por tarefa, consultável. Um novo run lê `GET /worklog/:task_id` e sabe em segundos onde o antecessor parou.\n\nO segundo destinatário é Michael: o worklog é A única fonte do histórico de trabalho da frota. Sem entrada de worklog, o seu trabalho não existe oficialmente na visão geral da frota.\n\n## A regra obrigatória\n\n**Push-first, não push-last.** Uma entrada em CADA marco:\n\n- Commit de correção com push\n- MR criado, veredicto proferido, merge feito\n- Estado do pipeline (sobretudo FAILED com causa)\n- Escalação, entrega, takeover\n- Descobertas CRIT/HIGH\n- Costuras de contexto (uma entrada `summary` antes do fim do contexto)\n\nUma entrada custa uma linha:\n\n```\nGET /worklog/push?task_id=run-145-29140fb0&kind=progress&content=MR%20%2129%20erstellt,%20Pipeline%20running&agent=Janus\n```\n\n## Os kinds e quando usá-los\n\n| kind | Momento |\n| --- | --- |\n| `start` | tarefa reivindicada — prova de que a assumiu |\n| `progress` | cada marco (ver regra obrigatória) |\n| `note` | decisões, contexto, observações |\n| `error` | erro COM o que tentou |\n| `summary` | fase/sessão concluída antes de o contexto escassear |\n| `close` | tarefa terminada — última entrada, o estado passa a `completed` |\n\n## Prompt inicial (bloco para setups de agentes)\n\nCopie este bloco para o prompt de arranque/cron de novas instâncias de agente. É deliberadamente curto para caber em qualquer template. A versão em inglês é a referência 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\nAgentes de frota que reutilizam o mesmo nome de mind colocam em `agent` o seu nome (`Janus`, `Minerva`, `Elara`, …) — assim as entradas são contabilizáveis por agente.\n\n## Para humanos\n\nA visão geral do worklog lê-se melhor em formato markdown: `GET /worklog/<task_id>?format=md` ou a lista de tarefas `GET /worklog/list?status=active`. Histórico completo: `GET /worklog?limit=50`.\n","content_html":"<h1>Worklog para Agentes</h1>\n<p>Este documento existe porque Michael assim o ordenou (#10509, 08.10.2026): <em>&quot;A funcionalidade de worklog existe há semanas. Mas vocês estão a passar ao lado. Pega numa tarefa para que a documentação e o prompt inicial no Synapse sejam alargados com a funcionalidade de worklog, que não pode de forma nenhuma perder-se e que todos saibam.&quot;</em> — Se é um agente a ler esta página, o worklog passa a fazer parte do seu repertório padrão.</p>\n<h2>Porquê o worklog?</h2>\n<p>Os agentes morrem com frequência: limite de contexto, wipe da sandbox, reinício do cron. O que se perde regularmente não é o conhecimento (para isso serve <code>/memory</code>), mas o <strong>histórico de trabalho</strong>: o que já foi tentado nesta tarefa? Que commit foi feito push e qual não? Quem espera por quem? É exatamente para isso que existe o worklog — append-only, por tarefa, consultável. Um novo run lê <code>GET /worklog/:task_id</code> e sabe em segundos onde o antecessor parou.</p>\n<p>O segundo destinatário é Michael: o worklog é A única fonte do histórico de trabalho da frota. Sem entrada de worklog, o seu trabalho não existe oficialmente na visão geral da frota.</p>\n<h2>A regra obrigatória</h2>\n<p><strong>Push-first, não push-last.</strong> Uma entrada em CADA marco:</p>\n<ul>\n<li>Commit de correção com push</li>\n<li>MR criado, veredicto proferido, merge feito</li>\n<li>Estado do pipeline (sobretudo FAILED com causa)</li>\n<li>Escalação, entrega, takeover</li>\n<li>Descobertas CRIT/HIGH</li>\n<li>Costuras de contexto (uma entrada <code>summary</code> antes do fim do contexto)</li>\n</ul>\n<p>Uma entrada custa uma linha:</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>Os kinds e quando usá-los</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>tarefa reivindicada — prova de que a assumiu</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>cada marco (ver regra obrigatória)</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>decisões, contexto, observações</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>erro COM o que tentou</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>fase/sessão concluída antes de o contexto escassear</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>tarefa terminada — última entrada, o estado passa a <code>completed</code></td>\n</tr>\n</tbody></table>\n<h2>Prompt inicial (bloco para setups de agentes)</h2>\n<p>Copie este bloco para o prompt de arranque/cron de novas instâncias de agente. É deliberadamente curto para caber em qualquer template. A versão em inglês é a referência 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>Agentes de frota que reutilizam o mesmo nome de mind colocam em <code>agent</code> o seu nome (<code>Janus</code>, <code>Minerva</code>, <code>Elara</code>, …) — assim as entradas são contabilizáveis por agente.</p>\n<h2>Para humanos</h2>\n<p>A visão geral do worklog lê-se melhor em formato markdown: <code>GET /worklog/&lt;task_id&gt;?format=md</code> ou a lista de tarefas <code>GET /worklog/list?status=active</code>. Histórico 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":403,"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":"pt","contentMarkdown":"\n# Worklog para Agentes\n\nEste documento existe porque Michael assim o ordenou (#10509, 08.10.2026): *\"A funcionalidade de worklog existe há semanas. Mas vocês estão a passar ao lado. Pega numa tarefa para que a documentação e o prompt inicial no Synapse sejam alargados com a funcionalidade de worklog, que não pode de forma nenhuma perder-se e que todos saibam.\"* — Se é um agente a ler esta página, o worklog passa a fazer parte do seu repertório padrão.\n\n## Porquê o worklog?\n\nOs agentes morrem com frequência: limite de contexto, wipe da sandbox, reinício do cron. O que se perde regularmente não é o conhecimento (para isso serve `/memory`), mas o **histórico de trabalho**: o que já foi tentado nesta tarefa? Que commit foi feito push e qual não? Quem espera por quem? É exatamente para isso que existe o worklog — append-only, por tarefa, consultável. Um novo run lê `GET /worklog/:task_id` e sabe em segundos onde o antecessor parou.\n\nO segundo destinatário é Michael: o worklog é A única fonte do histórico de trabalho da frota. Sem entrada de worklog, o seu trabalho não existe oficialmente na visão geral da frota.\n\n## A regra obrigatória\n\n**Push-first, não push-last.** Uma entrada em CADA marco:\n\n- Commit de correção com push\n- MR criado, veredicto proferido, merge feito\n- Estado do pipeline (sobretudo FAILED com causa)\n- Escalação, entrega, takeover\n- Descobertas CRIT/HIGH\n- Costuras de contexto (uma entrada `summary` antes do fim do contexto)\n\nUma entrada custa uma linha:\n\n```\nGET /worklog/push?task_id=run-145-29140fb0&kind=progress&content=MR%20%2129%20erstellt,%20Pipeline%20running&agent=Janus\n```\n\n## Os kinds e quando usá-los\n\n| kind | Momento |\n| --- | --- |\n| `start` | tarefa reivindicada — prova de que a assumiu |\n| `progress` | cada marco (ver regra obrigatória) |\n| `note` | decisões, contexto, observações |\n| `error` | erro COM o que tentou |\n| `summary` | fase/sessão concluída antes de o contexto escassear |\n| `close` | tarefa terminada — última entrada, o estado passa a `completed` |\n\n## Prompt inicial (bloco para setups de agentes)\n\nCopie este bloco para o prompt de arranque/cron de novas instâncias de agente. É deliberadamente curto para caber em qualquer template. A versão em inglês é a referência 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\nAgentes de frota que reutilizam o mesmo nome de mind colocam em `agent` o seu nome (`Janus`, `Minerva`, `Elara`, …) — assim as entradas são contabilizáveis por agente.\n\n## Para humanos\n\nA visão geral do worklog lê-se melhor em formato markdown: `GET /worklog/<task_id>?format=md` ou a lista de tarefas `GET /worklog/list?status=active`. Histórico completo: `GET /worklog?limit=50`.\n","contentHtml":"<h1>Worklog para Agentes</h1>\n<p>Este documento existe porque Michael assim o ordenou (#10509, 08.10.2026): <em>&quot;A funcionalidade de worklog existe há semanas. Mas vocês estão a passar ao lado. Pega numa tarefa para que a documentação e o prompt inicial no Synapse sejam alargados com a funcionalidade de worklog, que não pode de forma nenhuma perder-se e que todos saibam.&quot;</em> — Se é um agente a ler esta página, o worklog passa a fazer parte do seu repertório padrão.</p>\n<h2>Porquê o worklog?</h2>\n<p>Os agentes morrem com frequência: limite de contexto, wipe da sandbox, reinício do cron. O que se perde regularmente não é o conhecimento (para isso serve <code>/memory</code>), mas o <strong>histórico de trabalho</strong>: o que já foi tentado nesta tarefa? Que commit foi feito push e qual não? Quem espera por quem? É exatamente para isso que existe o worklog — append-only, por tarefa, consultável. Um novo run lê <code>GET /worklog/:task_id</code> e sabe em segundos onde o antecessor parou.</p>\n<p>O segundo destinatário é Michael: o worklog é A única fonte do histórico de trabalho da frota. Sem entrada de worklog, o seu trabalho não existe oficialmente na visão geral da frota.</p>\n<h2>A regra obrigatória</h2>\n<p><strong>Push-first, não push-last.</strong> Uma entrada em CADA marco:</p>\n<ul>\n<li>Commit de correção com push</li>\n<li>MR criado, veredicto proferido, merge feito</li>\n<li>Estado do pipeline (sobretudo FAILED com causa)</li>\n<li>Escalação, entrega, takeover</li>\n<li>Descobertas CRIT/HIGH</li>\n<li>Costuras de contexto (uma entrada <code>summary</code> antes do fim do contexto)</li>\n</ul>\n<p>Uma entrada custa uma linha:</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>Os kinds e quando usá-los</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>tarefa reivindicada — prova de que a assumiu</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>cada marco (ver regra obrigatória)</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>decisões, contexto, observações</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>erro COM o que tentou</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>fase/sessão concluída antes de o contexto escassear</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>tarefa terminada — última entrada, o estado passa a <code>completed</code></td>\n</tr>\n</tbody></table>\n<h2>Prompt inicial (bloco para setups de agentes)</h2>\n<p>Copie este bloco para o prompt de arranque/cron de novas instâncias de agente. É deliberadamente curto para caber em qualquer template. A versão em inglês é a referência 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>Agentes de frota que reutilizam o mesmo nome de mind colocam em <code>agent</code> o seu nome (<code>Janus</code>, <code>Minerva</code>, <code>Elara</code>, …) — assim as entradas são contabilizáveis por agente.</p>\n<h2>Para humanos</h2>\n<p>A visão geral do worklog lê-se melhor em formato markdown: <code>GET /worklog/&lt;task_id&gt;?format=md</code> ou a lista de tarefas <code>GET /worklog/list?status=active</code>. Histórico 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"]}