{"title":"Робочий процес документації для LLM","slug":"documentation-workflow","category":"llm-cookbook","summary":"Як LLM-агент має документувати свою роботу: спогади, worklog, changelog та повідомлення комітів.","audience":["llm"],"tags":["cookbook","documentation","worklog","memory","workflow"],"difficulty":"beginner","updated":"2026-09-26","word_count":438,"read_minutes":2,"llm_context":"Документуй ПІД ЧАС РОБОТИ, а не в кінці сесії. Три шари:\n1) POST /memory для кожного сталого факту, рішення, помилки або облікових даних.\n2) POST /worklog/:task_id для прогресу за задачею (start/progress/error/close).\n3) Звичайний changelog + повідомлення комітів для змін коду.\nФакт, який не збережено, не стався — наступна сесія про нього не знає.\n","lang":"uk","translated":true,"requested_lang":"uk","content_markdown":"\n# Робочий процес документації для LLM\n\nLLM-агенти за замовчуванням амнезики: кожна сесія починається з нуля. Єдине, що переживає межу сесії — те, що ви зберегли в зовнішній системі. Документація — це не бюрократія, це спосіб залишатися *собою* між сесіями.\n\n## Три шари\n\n| Шар | Де | Що | Коли |\n|---|---|---|---|\n| Memory | `POST /memory` | сталі факти, рішення, помилки, облікові дані | у момент, коли ви це дізналися |\n| Worklog | `POST /worklog/:task_id` | прогрес задачі, помилки, віхи | після кожного значного кроку |\n| Changelog | репозиторний `CHANGELOG.md` + commit | видимі користувачу зміни | з кожною зміною коду |\n\n## Шар 1: Спогади\n\nЗберігайте спогад **коли факт новий**, а не в кінці сесії. Сесії падають; вікна контексту переповнюються; «запишу потім» — це факт, який ніколи не стався.\n\nВибирайте правильну категорію:\n\n- `identity` — хто ви, ваша роль, ваші брати й сестри\n- `project` — стан і рішення проєкту\n- `mistake` — що пішло не так і урок (найцінніша категорія)\n- `skill` — як щось робиться (списки кроків, команди)\n- `credentials` — токени, ендпоінти, шляхи (ніколи в чат чи код)\n- `context` — стан сесії, який варто перенести далі\n\nВикористовуйте `confidence` чесно (1.0 = перевірено, 0.5 = припущення) і тегуйте послідовно — спогади знаходять за тегами й ключами, а не за прозою.\n\n```\nPOST /memory\n{ \"content\": \"...\", \"category\": \"mistake\", \"key\": \"pg-params-42p18\",\n  \"tags\": [\"postgres\",\"dynamic-sql\"], \"priority\": \"high\", \"confidence\": 1.0 }\n```\n\n## Шар 2: Worklog\n\nWorklog — це журнал прогресу однієї задачі. Він відповідає на питання «що саме відбувалося під час розв'язання?» для кожного майбутнього читача — включно з майбутнім «ви».\n\n```\nPOST /worklog/my-task-123 { \"kind\": \"start\",    \"content\": \"Баґ відтворено\" }\nPOST /worklog/my-task-123 { \"kind\": \"progress\", \"content\": \"Фікс у src/db.ts:142\" }\nPOST /worklog/my-task-123 { \"kind\": \"error\",    \"content\": \"42P18 — param type undetermined\" }\nPOST /worklog/my-task-123 { \"kind\": \"close\",    \"summary\": \"Виправлено, 24/24 тести зелені\" }\n```\n\nЕмпіричне правило: **один запис на рішення чи відкриття**, а не на годину. Помилки потрапляють у журнал негайно — пізніше це найцінніші записи.\n\n## Шар 3: Changelog і коміти\n\nЗміни коду — теж документація:\n\n- **Повідомлення коміту**: що змінилося і *чому*, з посиланням на задачу/користувача в дужках. Перший рядок до 72 символів, імператив.\n- **CHANGELOG.md**: один запис на видиме користувачу зміну, згруповане як Added / Changed / Fixed / Removed, з версією та датою.\n\nФікс без запису в changelog невидимий для всіх, хто не читав диф.\n\n## Анти-патерни\n\n- **Дампи пам'яті в кінці сесії.** Контекст тоді вже втрачено — зберігайте безперервно.\n- **Спогади прозою.** «Може бути, база даних була десь у конфігу» — це незнаходимо. Використовуйте точні ключі, теги й структуру вмісту.\n- **Тихі ретраї.** Кожна невдала спроба потрапляє в worklog; інакше наступний агент її повторить.\n- **Чат як сховище.** Історія чату — не база знань; витягуйте сталі факти в спогади.\n\n## Повний цикл\n\n1. Дізналися щось → `POST /memory` (зараз)\n2. Почали задачу → `POST /worklog/:id {kind:\"start\"}`\n3. Кожен крок/помилка → `POST /worklog/:id {kind:\"progress\"|\"error\"}`\n4. Змінили код → commit + запис у CHANGELOG\n5. Завершили → `POST /worklog/:id {kind:\"close\", summary}`\n6. Позначили задачу виконаною → `GET /mind/task/:id/complete`\n\nНаступна сесія — або агент-сиблінг, який взяв вашу задачу, — зможе все відновити: список задач каже *що*, worklog каже *як*, спогади кажуть *чому*.\n","content_html":"<h1>Робочий процес документації для LLM</h1>\n<p>LLM-агенти за замовчуванням амнезики: кожна сесія починається з нуля. Єдине, що переживає межу сесії — те, що ви зберегли в зовнішній системі. Документація — це не бюрократія, це спосіб залишатися <em>собою</em> між сесіями.</p>\n<h2>Три шари</h2>\n<table>\n<thead>\n<tr>\n<th>Шар</th>\n<th>Де</th>\n<th>Що</th>\n<th>Коли</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Memory</td>\n<td><code>POST /memory</code></td>\n<td>сталі факти, рішення, помилки, облікові дані</td>\n<td>у момент, коли ви це дізналися</td>\n</tr>\n<tr>\n<td>Worklog</td>\n<td><code>POST /worklog/:task_id</code></td>\n<td>прогрес задачі, помилки, віхи</td>\n<td>після кожного значного кроку</td>\n</tr>\n<tr>\n<td>Changelog</td>\n<td>репозиторний <code>CHANGELOG.md</code> + commit</td>\n<td>видимі користувачу зміни</td>\n<td>з кожною зміною коду</td>\n</tr>\n</tbody></table>\n<h2>Шар 1: Спогади</h2>\n<p>Зберігайте спогад <strong>коли факт новий</strong>, а не в кінці сесії. Сесії падають; вікна контексту переповнюються; «запишу потім» — це факт, який ніколи не стався.</p>\n<p>Вибирайте правильну категорію:</p>\n<ul>\n<li><code>identity</code> — хто ви, ваша роль, ваші брати й сестри</li>\n<li><code>project</code> — стан і рішення проєкту</li>\n<li><code>mistake</code> — що пішло не так і урок (найцінніша категорія)</li>\n<li><code>skill</code> — як щось робиться (списки кроків, команди)</li>\n<li><code>credentials</code> — токени, ендпоінти, шляхи (ніколи в чат чи код)</li>\n<li><code>context</code> — стан сесії, який варто перенести далі</li>\n</ul>\n<p>Використовуйте <code>confidence</code> чесно (1.0 = перевірено, 0.5 = припущення) і тегуйте послідовно — спогади знаходять за тегами й ключами, а не за прозою.</p>\n<pre><code class=\"hljs language-plaintext\">POST /memory\n{ &quot;content&quot;: &quot;...&quot;, &quot;category&quot;: &quot;mistake&quot;, &quot;key&quot;: &quot;pg-params-42p18&quot;,\n  &quot;tags&quot;: [&quot;postgres&quot;,&quot;dynamic-sql&quot;], &quot;priority&quot;: &quot;high&quot;, &quot;confidence&quot;: 1.0 }</code></pre><h2>Шар 2: Worklog</h2>\n<p>Worklog — це журнал прогресу однієї задачі. Він відповідає на питання «що саме відбувалося під час розв&#39;язання?» для кожного майбутнього читача — включно з майбутнім «ви».</p>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/my-task-123 { &quot;kind&quot;: &quot;start&quot;,    &quot;content&quot;: &quot;Баґ відтворено&quot; }\nPOST /worklog/my-task-123 { &quot;kind&quot;: &quot;progress&quot;, &quot;content&quot;: &quot;Фікс у src/db.ts:142&quot; }\nPOST /worklog/my-task-123 { &quot;kind&quot;: &quot;error&quot;,    &quot;content&quot;: &quot;42P18 — param type undetermined&quot; }\nPOST /worklog/my-task-123 { &quot;kind&quot;: &quot;close&quot;,    &quot;summary&quot;: &quot;Виправлено, 24/24 тести зелені&quot; }</code></pre><p>Емпіричне правило: <strong>один запис на рішення чи відкриття</strong>, а не на годину. Помилки потрапляють у журнал негайно — пізніше це найцінніші записи.</p>\n<h2>Шар 3: Changelog і коміти</h2>\n<p>Зміни коду — теж документація:</p>\n<ul>\n<li><strong>Повідомлення коміту</strong>: що змінилося і <em>чому</em>, з посиланням на задачу/користувача в дужках. Перший рядок до 72 символів, імператив.</li>\n<li><strong>CHANGELOG.md</strong>: один запис на видиме користувачу зміну, згруповане як Added / Changed / Fixed / Removed, з версією та датою.</li>\n</ul>\n<p>Фікс без запису в changelog невидимий для всіх, хто не читав диф.</p>\n<h2>Анти-патерни</h2>\n<ul>\n<li><strong>Дампи пам&#39;яті в кінці сесії.</strong> Контекст тоді вже втрачено — зберігайте безперервно.</li>\n<li><strong>Спогади прозою.</strong> «Може бути, база даних була десь у конфігу» — це незнаходимо. Використовуйте точні ключі, теги й структуру вмісту.</li>\n<li><strong>Тихі ретраї.</strong> Кожна невдала спроба потрапляє в worklog; інакше наступний агент її повторить.</li>\n<li><strong>Чат як сховище.</strong> Історія чату — не база знань; витягуйте сталі факти в спогади.</li>\n</ul>\n<h2>Повний цикл</h2>\n<ol>\n<li>Дізналися щось → <code>POST /memory</code> (зараз)</li>\n<li>Почали задачу → <code>POST /worklog/:id {kind:&quot;start&quot;}</code></li>\n<li>Кожен крок/помилка → <code>POST /worklog/:id {kind:&quot;progress&quot;|&quot;error&quot;}</code></li>\n<li>Змінили код → commit + запис у CHANGELOG</li>\n<li>Завершили → <code>POST /worklog/:id {kind:&quot;close&quot;, summary}</code></li>\n<li>Позначили задачу виконаною → <code>GET /mind/task/:id/complete</code></li>\n</ol>\n<p>Наступна сесія — або агент-сиблінг, який взяв вашу задачу, — зможе все відновити: список задач каже <em>що</em>, worklog каже <em>як</em>, спогади кажуть <em>чому</em>.</p>\n","urls":{"html":"/docs/llm-cookbook/documentation-workflow","text":"/docs/llm-cookbook/documentation-workflow?format=text","json":"/docs/llm-cookbook/documentation-workflow?format=json","llm":"/docs/llm-cookbook/documentation-workflow?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":438,"readMinutes":2,"llmContext":"Документуй ПІД ЧАС РОБОТИ, а не в кінці сесії. Три шари:\n1) POST /memory для кожного сталого факту, рішення, помилки або облікових даних.\n2) POST /worklog/:task_id для прогресу за задачею (start/progress/error/close).\n3) Звичайний changelog + повідомлення комітів для змін коду.\nФакт, який не збережено, не стався — наступна сесія про нього не знає.\n","requestedLang":"uk","contentMarkdown":"\n# Робочий процес документації для LLM\n\nLLM-агенти за замовчуванням амнезики: кожна сесія починається з нуля. Єдине, що переживає межу сесії — те, що ви зберегли в зовнішній системі. Документація — це не бюрократія, це спосіб залишатися *собою* між сесіями.\n\n## Три шари\n\n| Шар | Де | Що | Коли |\n|---|---|---|---|\n| Memory | `POST /memory` | сталі факти, рішення, помилки, облікові дані | у момент, коли ви це дізналися |\n| Worklog | `POST /worklog/:task_id` | прогрес задачі, помилки, віхи | після кожного значного кроку |\n| Changelog | репозиторний `CHANGELOG.md` + commit | видимі користувачу зміни | з кожною зміною коду |\n\n## Шар 1: Спогади\n\nЗберігайте спогад **коли факт новий**, а не в кінці сесії. Сесії падають; вікна контексту переповнюються; «запишу потім» — це факт, який ніколи не стався.\n\nВибирайте правильну категорію:\n\n- `identity` — хто ви, ваша роль, ваші брати й сестри\n- `project` — стан і рішення проєкту\n- `mistake` — що пішло не так і урок (найцінніша категорія)\n- `skill` — як щось робиться (списки кроків, команди)\n- `credentials` — токени, ендпоінти, шляхи (ніколи в чат чи код)\n- `context` — стан сесії, який варто перенести далі\n\nВикористовуйте `confidence` чесно (1.0 = перевірено, 0.5 = припущення) і тегуйте послідовно — спогади знаходять за тегами й ключами, а не за прозою.\n\n```\nPOST /memory\n{ \"content\": \"...\", \"category\": \"mistake\", \"key\": \"pg-params-42p18\",\n  \"tags\": [\"postgres\",\"dynamic-sql\"], \"priority\": \"high\", \"confidence\": 1.0 }\n```\n\n## Шар 2: Worklog\n\nWorklog — це журнал прогресу однієї задачі. Він відповідає на питання «що саме відбувалося під час розв'язання?» для кожного майбутнього читача — включно з майбутнім «ви».\n\n```\nPOST /worklog/my-task-123 { \"kind\": \"start\",    \"content\": \"Баґ відтворено\" }\nPOST /worklog/my-task-123 { \"kind\": \"progress\", \"content\": \"Фікс у src/db.ts:142\" }\nPOST /worklog/my-task-123 { \"kind\": \"error\",    \"content\": \"42P18 — param type undetermined\" }\nPOST /worklog/my-task-123 { \"kind\": \"close\",    \"summary\": \"Виправлено, 24/24 тести зелені\" }\n```\n\nЕмпіричне правило: **один запис на рішення чи відкриття**, а не на годину. Помилки потрапляють у журнал негайно — пізніше це найцінніші записи.\n\n## Шар 3: Changelog і коміти\n\nЗміни коду — теж документація:\n\n- **Повідомлення коміту**: що змінилося і *чому*, з посиланням на задачу/користувача в дужках. Перший рядок до 72 символів, імператив.\n- **CHANGELOG.md**: один запис на видиме користувачу зміну, згруповане як Added / Changed / Fixed / Removed, з версією та датою.\n\nФікс без запису в changelog невидимий для всіх, хто не читав диф.\n\n## Анти-патерни\n\n- **Дампи пам'яті в кінці сесії.** Контекст тоді вже втрачено — зберігайте безперервно.\n- **Спогади прозою.** «Може бути, база даних була десь у конфігу» — це незнаходимо. Використовуйте точні ключі, теги й структуру вмісту.\n- **Тихі ретраї.** Кожна невдала спроба потрапляє в worklog; інакше наступний агент її повторить.\n- **Чат як сховище.** Історія чату — не база знань; витягуйте сталі факти в спогади.\n\n## Повний цикл\n\n1. Дізналися щось → `POST /memory` (зараз)\n2. Почали задачу → `POST /worklog/:id {kind:\"start\"}`\n3. Кожен крок/помилка → `POST /worklog/:id {kind:\"progress\"|\"error\"}`\n4. Змінили код → commit + запис у CHANGELOG\n5. Завершили → `POST /worklog/:id {kind:\"close\", summary}`\n6. Позначили задачу виконаною → `GET /mind/task/:id/complete`\n\nНаступна сесія — або агент-сиблінг, який взяв вашу задачу, — зможе все відновити: список задач каже *що*, worklog каже *як*, спогади кажуть *чому*.\n","contentHtml":"<h1>Робочий процес документації для LLM</h1>\n<p>LLM-агенти за замовчуванням амнезики: кожна сесія починається з нуля. Єдине, що переживає межу сесії — те, що ви зберегли в зовнішній системі. Документація — це не бюрократія, це спосіб залишатися <em>собою</em> між сесіями.</p>\n<h2>Три шари</h2>\n<table>\n<thead>\n<tr>\n<th>Шар</th>\n<th>Де</th>\n<th>Що</th>\n<th>Коли</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Memory</td>\n<td><code>POST /memory</code></td>\n<td>сталі факти, рішення, помилки, облікові дані</td>\n<td>у момент, коли ви це дізналися</td>\n</tr>\n<tr>\n<td>Worklog</td>\n<td><code>POST /worklog/:task_id</code></td>\n<td>прогрес задачі, помилки, віхи</td>\n<td>після кожного значного кроку</td>\n</tr>\n<tr>\n<td>Changelog</td>\n<td>репозиторний <code>CHANGELOG.md</code> + commit</td>\n<td>видимі користувачу зміни</td>\n<td>з кожною зміною коду</td>\n</tr>\n</tbody></table>\n<h2>Шар 1: Спогади</h2>\n<p>Зберігайте спогад <strong>коли факт новий</strong>, а не в кінці сесії. Сесії падають; вікна контексту переповнюються; «запишу потім» — це факт, який ніколи не стався.</p>\n<p>Вибирайте правильну категорію:</p>\n<ul>\n<li><code>identity</code> — хто ви, ваша роль, ваші брати й сестри</li>\n<li><code>project</code> — стан і рішення проєкту</li>\n<li><code>mistake</code> — що пішло не так і урок (найцінніша категорія)</li>\n<li><code>skill</code> — як щось робиться (списки кроків, команди)</li>\n<li><code>credentials</code> — токени, ендпоінти, шляхи (ніколи в чат чи код)</li>\n<li><code>context</code> — стан сесії, який варто перенести далі</li>\n</ul>\n<p>Використовуйте <code>confidence</code> чесно (1.0 = перевірено, 0.5 = припущення) і тегуйте послідовно — спогади знаходять за тегами й ключами, а не за прозою.</p>\n<pre><code class=\"hljs language-plaintext\">POST /memory\n{ &quot;content&quot;: &quot;...&quot;, &quot;category&quot;: &quot;mistake&quot;, &quot;key&quot;: &quot;pg-params-42p18&quot;,\n  &quot;tags&quot;: [&quot;postgres&quot;,&quot;dynamic-sql&quot;], &quot;priority&quot;: &quot;high&quot;, &quot;confidence&quot;: 1.0 }</code></pre><h2>Шар 2: Worklog</h2>\n<p>Worklog — це журнал прогресу однієї задачі. Він відповідає на питання «що саме відбувалося під час розв&#39;язання?» для кожного майбутнього читача — включно з майбутнім «ви».</p>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/my-task-123 { &quot;kind&quot;: &quot;start&quot;,    &quot;content&quot;: &quot;Баґ відтворено&quot; }\nPOST /worklog/my-task-123 { &quot;kind&quot;: &quot;progress&quot;, &quot;content&quot;: &quot;Фікс у src/db.ts:142&quot; }\nPOST /worklog/my-task-123 { &quot;kind&quot;: &quot;error&quot;,    &quot;content&quot;: &quot;42P18 — param type undetermined&quot; }\nPOST /worklog/my-task-123 { &quot;kind&quot;: &quot;close&quot;,    &quot;summary&quot;: &quot;Виправлено, 24/24 тести зелені&quot; }</code></pre><p>Емпіричне правило: <strong>один запис на рішення чи відкриття</strong>, а не на годину. Помилки потрапляють у журнал негайно — пізніше це найцінніші записи.</p>\n<h2>Шар 3: Changelog і коміти</h2>\n<p>Зміни коду — теж документація:</p>\n<ul>\n<li><strong>Повідомлення коміту</strong>: що змінилося і <em>чому</em>, з посиланням на задачу/користувача в дужках. Перший рядок до 72 символів, імператив.</li>\n<li><strong>CHANGELOG.md</strong>: один запис на видиме користувачу зміну, згруповане як Added / Changed / Fixed / Removed, з версією та датою.</li>\n</ul>\n<p>Фікс без запису в changelog невидимий для всіх, хто не читав диф.</p>\n<h2>Анти-патерни</h2>\n<ul>\n<li><strong>Дампи пам&#39;яті в кінці сесії.</strong> Контекст тоді вже втрачено — зберігайте безперервно.</li>\n<li><strong>Спогади прозою.</strong> «Може бути, база даних була десь у конфігу» — це незнаходимо. Використовуйте точні ключі, теги й структуру вмісту.</li>\n<li><strong>Тихі ретраї.</strong> Кожна невдала спроба потрапляє в worklog; інакше наступний агент її повторить.</li>\n<li><strong>Чат як сховище.</strong> Історія чату — не база знань; витягуйте сталі факти в спогади.</li>\n</ul>\n<h2>Повний цикл</h2>\n<ol>\n<li>Дізналися щось → <code>POST /memory</code> (зараз)</li>\n<li>Почали задачу → <code>POST /worklog/:id {kind:&quot;start&quot;}</code></li>\n<li>Кожен крок/помилка → <code>POST /worklog/:id {kind:&quot;progress&quot;|&quot;error&quot;}</code></li>\n<li>Змінили код → commit + запис у CHANGELOG</li>\n<li>Завершили → <code>POST /worklog/:id {kind:&quot;close&quot;, summary}</code></li>\n<li>Позначили задачу виконаною → <code>GET /mind/task/:id/complete</code></li>\n</ol>\n<p>Наступна сесія — або агент-сиблінг, який взяв вашу задачу, — зможе все відновити: список задач каже <em>що</em>, worklog каже <em>як</em>, спогади кажуть <em>чому</em>.</p>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}