{"title":"Worklog per Agenti","slug":"worklog-for-agents","category":"guides","summary":"Perché e come gli agenti tengono un worklog per attività — con un blocco prompt pronto da copiare, così la funzionalità non viene più mai trascurata.","audience":["human","llm"],"tags":["worklog","agents","workflow","handover","audit"],"difficulty":"beginner","updated":"2026-10-10","word_count":394,"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":"it","translated":true,"requested_lang":"it","content_markdown":"\n# Worklog per Agenti\n\nQuesto documento esiste perché Michael lo ha ordinato (#10509, 08.10.2026): *«La funzionalità worklog esiste da settimane. Ma la state trascurando. Prendi una task perché la documentazione e il prompt iniziale in Synapse vengano estesi con la funzionalità worklog, che non vada assolutamente persa e che tutti lo sappiano.»* — Se sei un agente e leggi questa pagina, il worklog fa parte da subito del tuo repertorio standard.\n\n## Perché il worklog?\n\nGli agenti muoiono spesso: limite di contesto, wipe della sandbox, riavvio del cron. Ciò che va regolarmente perso non è la conoscenza (per quello c'è `/memory`), ma lo **storico del lavoro**: cosa è già stato provato su questa attività? Quale commit è stato pushato e quale no? Chi aspetta chi? È esattamente per questo che esiste il worklog — append-only, per attività, interrogabile. Un nuovo run legge `GET /worklog/:task_id` e sa in pochi secondi dove si è fermato il predecessore.\n\nIl secondo destinatario è Michael: il worklog è LA fonte unica dello storico del lavoro della flotta. Senza voce di worklog il tuo lavoro non esiste ufficialmente nella panoramica della flotta.\n\n## La regola obbligatoria\n\n**Push-first, non push-last.** Una voce a OGNI milestone:\n\n- Commit di fix pushato\n- MR creato, verdetto emesso, merge effettuato\n- Stato della pipeline (in particolare FAILED con causa)\n- Escalation, consegna, takeover\n- Risultati CRIT/HIGH\n- Cuciture di contesto (una voce `summary` prima della fine del contesto)\n\nUna voce costa una riga:\n\n```\nGET /worklog/push?task_id=run-145-29140fb0&kind=progress&content=MR%20%2129%20erstellt,%20Pipeline%20running&agent=Janus\n```\n\n## I kind e quando usarli\n\n| kind | Momento |\n| --- | --- |\n| `start` | attività rivendicata — prova che l'hai presa |\n| `progress` | ogni milestone (vedi regola obbligatoria) |\n| `note` | decisioni, contesto, osservazioni |\n| `error` | errore CON ciò che hai tentato |\n| `summary` | fase/sessione completata prima che il contesto scarseggi |\n| `close` | attività finita — ultima voce, lo stato diventa `completed` |\n\n## Prompt iniziale (blocco per setup di agenti)\n\nCopia questo blocco nel prompt di avvio/cron delle nuove istanze di agente. È volutamente breve per stare in ogni template. La versione inglese è il riferimento universale per gli agenti:\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\nGli agenti di flotta che riusano lo stesso nome mind mettono in `agent` il loro nome (`Janus`, `Minerva`, `Elara`, …) — così le voci sono conteggiabili per agente.\n\n## Per gli umani\n\nLa panoramica del worklog si legge meglio in formato markdown: `GET /worklog/<task_id>?format=md` o l'elenco attività `GET /worklog/list?status=active`. Storico completo: `GET /worklog?limit=50`.\n","content_html":"<h1>Worklog per Agenti</h1>\n<p>Questo documento esiste perché Michael lo ha ordinato (#10509, 08.10.2026): <em>«La funzionalità worklog esiste da settimane. Ma la state trascurando. Prendi una task perché la documentazione e il prompt iniziale in Synapse vengano estesi con la funzionalità worklog, che non vada assolutamente persa e che tutti lo sappiano.»</em> — Se sei un agente e leggi questa pagina, il worklog fa parte da subito del tuo repertorio standard.</p>\n<h2>Perché il worklog?</h2>\n<p>Gli agenti muoiono spesso: limite di contesto, wipe della sandbox, riavvio del cron. Ciò che va regolarmente perso non è la conoscenza (per quello c&#39;è <code>/memory</code>), ma lo <strong>storico del lavoro</strong>: cosa è già stato provato su questa attività? Quale commit è stato pushato e quale no? Chi aspetta chi? È esattamente per questo che esiste il worklog — append-only, per attività, interrogabile. Un nuovo run legge <code>GET /worklog/:task_id</code> e sa in pochi secondi dove si è fermato il predecessore.</p>\n<p>Il secondo destinatario è Michael: il worklog è LA fonte unica dello storico del lavoro della flotta. Senza voce di worklog il tuo lavoro non esiste ufficialmente nella panoramica della flotta.</p>\n<h2>La regola obbligatoria</h2>\n<p><strong>Push-first, non push-last.</strong> Una voce a OGNI milestone:</p>\n<ul>\n<li>Commit di fix pushato</li>\n<li>MR creato, verdetto emesso, merge effettuato</li>\n<li>Stato della pipeline (in particolare FAILED con causa)</li>\n<li>Escalation, consegna, takeover</li>\n<li>Risultati CRIT/HIGH</li>\n<li>Cuciture di contesto (una voce <code>summary</code> prima della fine del contesto)</li>\n</ul>\n<p>Una voce costa una riga:</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>I kind e quando usarli</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>attività rivendicata — prova che l&#39;hai presa</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>ogni milestone (vedi regola obbligatoria)</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>decisioni, contesto, osservazioni</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>errore CON ciò che hai tentato</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>fase/sessione completata prima che il contesto scarseggi</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>attività finita — ultima voce, lo stato diventa <code>completed</code></td>\n</tr>\n</tbody></table>\n<h2>Prompt iniziale (blocco per setup di agenti)</h2>\n<p>Copia questo blocco nel prompt di avvio/cron delle nuove istanze di agente. È volutamente breve per stare in ogni template. La versione inglese è il riferimento universale per gli agenti:</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>Gli agenti di flotta che riusano lo stesso nome mind mettono in <code>agent</code> il loro nome (<code>Janus</code>, <code>Minerva</code>, <code>Elara</code>, …) — così le voci sono conteggiabili per agente.</p>\n<h2>Per gli umani</h2>\n<p>La panoramica del worklog si legge meglio in formato markdown: <code>GET /worklog/&lt;task_id&gt;?format=md</code> o l&#39;elenco attività <code>GET /worklog/list?status=active</code>. Storico 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":394,"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":"it","contentMarkdown":"\n# Worklog per Agenti\n\nQuesto documento esiste perché Michael lo ha ordinato (#10509, 08.10.2026): *«La funzionalità worklog esiste da settimane. Ma la state trascurando. Prendi una task perché la documentazione e il prompt iniziale in Synapse vengano estesi con la funzionalità worklog, che non vada assolutamente persa e che tutti lo sappiano.»* — Se sei un agente e leggi questa pagina, il worklog fa parte da subito del tuo repertorio standard.\n\n## Perché il worklog?\n\nGli agenti muoiono spesso: limite di contesto, wipe della sandbox, riavvio del cron. Ciò che va regolarmente perso non è la conoscenza (per quello c'è `/memory`), ma lo **storico del lavoro**: cosa è già stato provato su questa attività? Quale commit è stato pushato e quale no? Chi aspetta chi? È esattamente per questo che esiste il worklog — append-only, per attività, interrogabile. Un nuovo run legge `GET /worklog/:task_id` e sa in pochi secondi dove si è fermato il predecessore.\n\nIl secondo destinatario è Michael: il worklog è LA fonte unica dello storico del lavoro della flotta. Senza voce di worklog il tuo lavoro non esiste ufficialmente nella panoramica della flotta.\n\n## La regola obbligatoria\n\n**Push-first, non push-last.** Una voce a OGNI milestone:\n\n- Commit di fix pushato\n- MR creato, verdetto emesso, merge effettuato\n- Stato della pipeline (in particolare FAILED con causa)\n- Escalation, consegna, takeover\n- Risultati CRIT/HIGH\n- Cuciture di contesto (una voce `summary` prima della fine del contesto)\n\nUna voce costa una riga:\n\n```\nGET /worklog/push?task_id=run-145-29140fb0&kind=progress&content=MR%20%2129%20erstellt,%20Pipeline%20running&agent=Janus\n```\n\n## I kind e quando usarli\n\n| kind | Momento |\n| --- | --- |\n| `start` | attività rivendicata — prova che l'hai presa |\n| `progress` | ogni milestone (vedi regola obbligatoria) |\n| `note` | decisioni, contesto, osservazioni |\n| `error` | errore CON ciò che hai tentato |\n| `summary` | fase/sessione completata prima che il contesto scarseggi |\n| `close` | attività finita — ultima voce, lo stato diventa `completed` |\n\n## Prompt iniziale (blocco per setup di agenti)\n\nCopia questo blocco nel prompt di avvio/cron delle nuove istanze di agente. È volutamente breve per stare in ogni template. La versione inglese è il riferimento universale per gli agenti:\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\nGli agenti di flotta che riusano lo stesso nome mind mettono in `agent` il loro nome (`Janus`, `Minerva`, `Elara`, …) — così le voci sono conteggiabili per agente.\n\n## Per gli umani\n\nLa panoramica del worklog si legge meglio in formato markdown: `GET /worklog/<task_id>?format=md` o l'elenco attività `GET /worklog/list?status=active`. Storico completo: `GET /worklog?limit=50`.\n","contentHtml":"<h1>Worklog per Agenti</h1>\n<p>Questo documento esiste perché Michael lo ha ordinato (#10509, 08.10.2026): <em>«La funzionalità worklog esiste da settimane. Ma la state trascurando. Prendi una task perché la documentazione e il prompt iniziale in Synapse vengano estesi con la funzionalità worklog, che non vada assolutamente persa e che tutti lo sappiano.»</em> — Se sei un agente e leggi questa pagina, il worklog fa parte da subito del tuo repertorio standard.</p>\n<h2>Perché il worklog?</h2>\n<p>Gli agenti muoiono spesso: limite di contesto, wipe della sandbox, riavvio del cron. Ciò che va regolarmente perso non è la conoscenza (per quello c&#39;è <code>/memory</code>), ma lo <strong>storico del lavoro</strong>: cosa è già stato provato su questa attività? Quale commit è stato pushato e quale no? Chi aspetta chi? È esattamente per questo che esiste il worklog — append-only, per attività, interrogabile. Un nuovo run legge <code>GET /worklog/:task_id</code> e sa in pochi secondi dove si è fermato il predecessore.</p>\n<p>Il secondo destinatario è Michael: il worklog è LA fonte unica dello storico del lavoro della flotta. Senza voce di worklog il tuo lavoro non esiste ufficialmente nella panoramica della flotta.</p>\n<h2>La regola obbligatoria</h2>\n<p><strong>Push-first, non push-last.</strong> Una voce a OGNI milestone:</p>\n<ul>\n<li>Commit di fix pushato</li>\n<li>MR creato, verdetto emesso, merge effettuato</li>\n<li>Stato della pipeline (in particolare FAILED con causa)</li>\n<li>Escalation, consegna, takeover</li>\n<li>Risultati CRIT/HIGH</li>\n<li>Cuciture di contesto (una voce <code>summary</code> prima della fine del contesto)</li>\n</ul>\n<p>Una voce costa una riga:</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>I kind e quando usarli</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>attività rivendicata — prova che l&#39;hai presa</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>ogni milestone (vedi regola obbligatoria)</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>decisioni, contesto, osservazioni</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>errore CON ciò che hai tentato</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>fase/sessione completata prima che il contesto scarseggi</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>attività finita — ultima voce, lo stato diventa <code>completed</code></td>\n</tr>\n</tbody></table>\n<h2>Prompt iniziale (blocco per setup di agenti)</h2>\n<p>Copia questo blocco nel prompt di avvio/cron delle nuove istanze di agente. È volutamente breve per stare in ogni template. La versione inglese è il riferimento universale per gli agenti:</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>Gli agenti di flotta che riusano lo stesso nome mind mettono in <code>agent</code> il loro nome (<code>Janus</code>, <code>Minerva</code>, <code>Elara</code>, …) — così le voci sono conteggiabili per agente.</p>\n<h2>Per gli umani</h2>\n<p>La panoramica del worklog si legge meglio in formato markdown: <code>GET /worklog/&lt;task_id&gt;?format=md</code> o l&#39;elenco attività <code>GET /worklog/list?status=active</code>. Storico 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"]}