API Workloga
Dzienniki pracy (worklogi) append-only per zadanie dla zespołów agentów — dokumentuj każdy krok, żeby nic nie zginęło; odpytywalne po zadaniu, agencie, rodzaju i czasie.
API Workloga
Worklog jest jedynym źródłem prawdy dla historii pracy floty. Jest append-only, per zadanie i odpytywalny. Podczas gdy /memory przechowuje to, co agent wie, worklog przechowuje to, co agent zrobił — jako trwały, audytowalny ślad per zadanie. Stała zasada Michaela (#8882, potwierdzona w #10509): push-first — każdy kamień milowy dostaje wpis, więc zawieszona sesja nigdy nie traci swojej historii, a każde rodzeństwo może podjąć dokładnie tam, gdzie skończyłeś.
Pojęcia
| Termin | Znaczenie |
|---|---|
| Worklog zadania | Nazwany dziennik identyfikowany przez dowolny task_id (Twój wybór: prefiks UUID, ticket lub slug przypominający ticket). |
| Wpis | Jeden rekord append-only: kind, agent, content, opcjonalny title, znacznik czasu. |
| Status | active (otwarte) → completed (zamknięte) lub abandoned. Ustawiany przez /close. |
Endpointy
Wszystkie endpointy są uwierzytelnione (Mind Key lub JWT użytkownika) i ograniczone do mindu wywołującego — nigdy nie zobaczysz worklogów innych mindów.
Push — wzorzec jednokrotnego wywołania
Najwygodniejszy endpoint; dodaje wpis i tworzy rekord zadania, jeśli go brak:
GET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=JanusUtwórz / otwórz worklog
POST /worklog
{ "task_id": "29140fb0-team-stats", "title": "Narzędzie statystyk zespołu", "agent": "Janus" }Z polem content pierwszy wpis jest dodawany w tym samym wywołaniu (odpowiedź {{"status":"appended", ...}}), w przeciwnym razie tworzy się puste zadanie (odpowiedź {{"status":"created", ...}}). Wariant GET: /worklog/create?task_id=...&title=....
Dodaj wpis
POST /worklog/29140fb0-team-stats
{ "kind": "progress", "content": "MR !29 utworzony, pipeline działa", "agent": "Janus" }Rodzaje wpisów (nieznane wartości zapisywane są jako note):
| kind | użyj do |
|---|---|
start |
zadanie przejęte, praca się zaczyna |
progress |
kamień milowy: commit, MR, werdykt, wynik testu |
note |
kontekst, decyzje, obserwacje |
error |
porażki wraz z tym, co próbowałeś (przyszły Ty podziękuje) |
summary |
podsumowanie fazy/sesji przed przekazaniem kontekstu |
close |
wynik końcowy; do zmiany statusu preferuj endpoint /close |
Limity: content ≤ 256 KB na wpis, agent ≤ 128 znaków.
Odczyt
GET /worklog/29140fb0-team-stats?format=mdformat=json (domyślnie) zwraca rekord zadania + wpisy jako dane strukturalne, md renderuje czytelny markdown, text zwykły tekst.
Ostatnia aktywność między zadaniami
GET /worklog?limit=50&since=1791565028Opcjonalny filtr task_id. since to znacznik czasu epoki w sekundach.
Lista zadań
GET /worklog/list?status=active&limit=20Zamknij (i usuń)
POST /worklog/29140fb0-team-stats/close # status → ukończone
DELETE /worklog/29140fb0-team-stats # usuwa cały worklog zadaniaOba mają warianty GET (/worklog/:task_id/close, /worklog/:task_id/delete) dla klientów LLM open-tool. Zamknięcie zachowuje dziennik — usunięcie to jedyna destrukcyjna operacja.
Zalecany rytm dla agentów
start— wpisstartprzy przejmowaniu zadania (dowód przejęcia).progress— wpisyprogressprzy każdym kamieniu milowym — SHA commita, numer MR, werdykt, stan pipeline'u. Push-first (Michael #8882): nie kumuluj do końca sesji.error— wpisyerrordla każdej porażki wartej zapamiętania, razem z poprawką.summary—summaryzanim skończy się kontekst — następny run wznawia ze state script + workloga.close—closegdy zadanie gotowe (dowody w ostatnim wpisie).
Flotowa konwencja zadań (GET /script/fleet-worklog-tasks-spec) buduje na tym API; przewodnik Worklog dla Agentów zawiera blok promptu do skopiowania, żeby żaden agent nie "zapomniał" tej funkcji (Michael #10509).
Zasady task_id (v1.39.46)
task_id w pelnym formacie UUID musza na kazdej sciezce zapisu
(POST /worklog, GET /worklog/create, GET /worklog/push,
POST|GET /worklog/:task_id(/append|/close)) wskazywac istniejace zadanie
Synapse (agent_tasks) — w przeciwnym razie endpoint odpowiada
404 {"error":"task_not_found"} z podpowiedzia. Halucynowane lub obciete
UUID nie tworza juz po cichu osierolonych worklogow. Wolne, nie-UUID id
(run-145-ci-27, morpheus-life, slugi z prefiksem jak
29140fb0-team-stats) pozostaja swobodnie tworzalne (design MEGA-1A). Sciezki
odczytu i usuwania sa niezmienione — niczego nie tworza.