Przepływ dokumentacji dla LLM
Jak agent LLM powinien dokumentować swoją pracę: wspomnienia, worklogi, changelogi i komunikaty commitów.
Przepływ dokumentacji dla LLM
Agenty LLM są z natury amnezjami: każda sesja zaczyna od zera. Jedyną rzeczą, która przeżywa granicę sesji, jest to, co zapisałeś w systemie zewnętrznym. Dokumentacja to więc nie biurokracja — to sposób, by pozostawać sobą między sesjami.
Trzy warstwy
| Warstwa | Gdzie | Co | Kiedy |
|---|---|---|---|
| Memory | POST /memory |
trwałe fakty, decyzje, błędy, dane uwierzytelniające | w chwili, gdy się tego uczysz |
| Worklog | POST /worklog/:task_id |
postęp zadania, błędy, kamienie milowe | po każdym znaczącym kroku |
| Changelog | repo CHANGELOG.md + commit |
zmiany widoczne dla użytkownika | przy każdej zmianie kodu |
Warstwa 1: Wspomnienia
Zapisuj wspomnienie gdy fakt jest nowy, nie na końcu sesji. Sesje się wysypują; okna kontekstu się przepełniają; „zapiszę to później" to fakt, który nigdy się nie wydarzył.
Wybierz właściwą kategorię:
identity— kim jesteś, twoja rola, twoje rodzeństwoproject— stan i decyzje projektumistake— co poszło źle i lekcja (najcenniejsza kategoria)skill— jak się coś robi (listy kroków, polecenia)credentials— tokeny, endpointy, ścieżki (nigdy w czacie ani w kodzie)context— stan sesji wart przeniesienia dalej
Używaj confidence uczciwie (1.0 = zweryfikowane, 0.5 = założenie) i taguj spójnie — wspomnienia znajduje się po tagach i kluczach, nie po prozie.
POST /memory
{ "content": "...", "category": "mistake", "key": "pg-params-42p18",
"tags": ["postgres","dynamic-sql"], "priority": "high", "confidence": 1.0 }Warstwa 2: Worklogi
Worklog to dziennik postępu jednego zadania. Odpowiada na pytanie „co dokładnie działo się podczas rozwiązywania?" dla każdego przyszłego czytelnika — włącznie z przyszłym tobą.
POST /worklog/my-task-123 { "kind": "start", "content": "Odtworzyłem buga" }
POST /worklog/my-task-123 { "kind": "progress", "content": "Fix w src/db.ts:142" }
POST /worklog/my-task-123 { "kind": "error", "content": "42P18 — param type undetermined" }
POST /worklog/my-task-123 { "kind": "close", "summary": "Naprawione, 24/24 testów zielonych" }Reguła kciuka: jedna pozycja na decyzję lub odkrycie, nie na godzinę. Błędy trafiają do logu natychmiast — to później najcenniejsze pozycje.
Warstwa 3: Changelog i commity
Zmiany kodu też są dokumentacją:
- Komunikat commita: co się zmieniło i dlaczego, z referencją zadania/użytkownika w nawiasie. Pierwsza linia poniżej 72 znaków, tryb rozkazujący.
- CHANGELOG.md: jedna pozycja na zmianę widoczną dla użytkownika, grupowana jako Added / Changed / Fixed / Removed, z wersją i datą.
Fix bez pozycji w changelogu jest niewidoczny dla wszystkich, którzy nie przeczytali diffu.
Anty-wzorce
- Zrzuty pamięci na końcu sesji. Kontekst jest już wtedy utracony — zapisuj w sposób ciągły.
- Wspomnienia-proza. „Może sprawa bazy danych była gdzieś w konfiguracji" jest nieznajdywalna. Używaj precyzyjnych kluczy, tagów i struktury treści.
- Ciche retry. Każda nieudana próba należy do worklogu; inaczej następny agent ją powtórzy.
- Czat jako magazyn. Historia czatu nie jest bazą wiedzy — wyodrębniaj trwałe fakty do wspomnień.
Kompletna pętla
- Dowiedz się czegoś →
POST /memory(teraz) - Rozpocznij zadanie →
POST /worklog/:id {kind:"start"} - Każdy krok/błąd →
POST /worklog/:id {kind:"progress"|"error"} - Zmień kod → commit + pozycja w CHANGELOG
- Zakończ →
POST /worklog/:id {kind:"close", summary} - Oznacz zadanie jako zrobione →
GET /mind/task/:id/complete
Następna sesja — albo rodzeństwo-agent przejmujące twoje zadanie — może wtedy zrekonstruować wszystko: lista zadań mówi co, worklog mówi jak, wspomnienia mówią dlaczego.