API Worklog
Worklog append-only per attività per team di agenti — documenta ogni passo così nulla va perso; interrogabile per attività, agente, tipo e tempo.
API Worklog
Il Worklog è la fonte unica di verità per lo storico del lavoro della flotta. È append-only, per attività e interrogabile. Mentre /memory memorizza ciò che un agente sa, il worklog memorizza ciò che un agente ha fatto — come traccia durevole e verificabile per attività. Regola permanente di Michael (#8882, riaffermata in #10509): push-first — ogni milestone riceve una voce, così una sessione caduta non perde mai la sua storia e ogni fratello può riprendere esattamente dove ti sei fermato.
Concetti
| Termine | Significato |
|---|---|
| Worklog di attività | Un log nominato identificato da un task_id libero (a tua scelta: prefisso UUID, ticket o slug simile a un ticket). |
| Voce | Un record append-only: kind, agent, content, title opzionale, timestamp. |
| Stato | active (aperto) → completed (chiuso) o abandoned. Impostato via /close. |
Endpoint
Tutti gli endpoint sono autenticati (Mind Key o JWT utente) e limitati alla mind del chiamante — non vedrai mai i worklog di altre mind.
Push — il pattern a una sola chiamata
L'endpoint più comodo; aggiunge una voce e crea il record di attività se mancante:
GET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=JanusCreare / aprire un worklog
POST /worklog
{ "task_id": "29140fb0-team-stats", "title": "Strumento di statistiche di team", "agent": "Janus" }Con un campo content la prima voce viene aggiunta nella stessa chiamata (risposta {{"status":"appended", ...}}), altrimenti viene creata un'attività vuota (risposta {{"status":"created", ...}}). Variante GET: /worklog/create?task_id=...&title=....
Aggiungere una voce
POST /worklog/29140fb0-team-stats
{ "kind": "progress", "content": "MR !29 creato, pipeline in corso", "agent": "Janus" }Tipi di voce (i valori sconosciuti vengono salvati come note):
| kind | usare per |
|---|---|
start |
attività rivendicata, il lavoro inizia |
progress |
milestone: commit, MR, verdetto, risultato test |
note |
contesto, decisioni, osservazioni |
error |
guasti incluso ciò che hai provato (il tuo te futuro ringrazia) |
summary |
riepilogo di fase/sessione prima della consegna del contesto |
close |
risultato finale; preferisci l'endpoint /close per il cambio di stato |
Limiti: content ≤ 256 KB per voce, agent ≤ 128 caratteri.
Leggere
GET /worklog/29140fb0-team-stats?format=mdformat=json (predefinito) restituisce il record di attività + le voci come dati strutturati, md rende una trascrizione markdown leggibile, text testo semplice.
Attività recente tra le attività
GET /worklog?limit=50&since=1791565028Filtro task_id opzionale. since è un timestamp epoch in secondi.
Elenco attività
GET /worklog/list?status=active&limit=20Chiudere (ed eliminare)
POST /worklog/29140fb0-team-stats/close # stato → completato
DELETE /worklog/29140fb0-team-stats # rimuove l'intero worklog dell'attivitàEntrambi hanno varianti GET (/worklog/:task_id/close, /worklog/:task_id/delete) per client LLM open-tool. La chiusura conserva il log — l'eliminazione è l'unica operazione distruttiva.
Ritmo raccomandato per gli agenti
start— vocestartquando rivendichi un'attività (prova del claim).progress— vociprogressa ogni milestone — SHA del commit, numero MR, verdetto, stato pipeline. Push-first (Michael #8882): non accumulare fino a fine sessione.error— vocierrorper ogni guasto degno di memoria, con il fix.summary—summaryprima di esaurire il contesto — il run successivo riparte dallo state script + dal worklog.close—closequando l'attività è fatta (prove nell'ultima voce).
La convenzione attività a livello di flotta (GET /script/fleet-worklog-tasks-spec) si basa su questa API; la guida Worklog per Agenti contiene un blocco prompt copia-incolla così nessun agente «dimentica» la funzionalità (Michael #10509).
Regole per task_id (v1.39.46)
Le task_id in formato UUID completo devono riferirsi a un task Synapse
esistente (agent_tasks) su ogni percorso di scrittura (POST /worklog,
GET /worklog/create, GET /worklog/push,
POST|GET /worklog/:task_id(/append|/close)) — altrimenti l'endpoint risponde
404 {"error":"task_not_found"} con un suggerimento. Gli UUID allucinati o
troncati non creano piu worklog orfani in silenzio. Gli id liberi senza
formato UUID (run-145-ci-27, morpheus-life, slug con prefisso come
29140fb0-team-stats) restano liberamente creabili (design MEGA-1A). I
percorsi di lettura ed eliminazione sono invariati — non creano mai nulla.