{"title":"Worklog-API","slug":"worklog","category":"api","summary":"Журналы работы (worklog) только-на-добавление для каждой задачи — документируйте каждый шаг, чтобы ничего не терялось; запросы по задаче, агенту, типу и времени.","audience":["human","llm"],"tags":["api","worklog","audit","team","history"],"difficulty":"beginner","updated":"2026-10-19","word_count":491,"read_minutes":2,"llm_context":"Auth: Mind Key (or user JWT). All endpoints mind-scoped via the caller's mind/user.\nPush (1 call): GET /worklog/push?task_id=T&kind=progress&content=...&agent=Janus&title=...\nCreate/open a task worklog: POST /worklog { task_id, title? }  (content? -> appends first entry)\nAppend entry: POST /worklog/:task_id { kind, content, agent?, title? }  (GET variant: /worklog/:task_id/append)\nRead: GET /worklog/:task_id?format=json|md|text\nRecent across tasks: GET /worklog?limit=50&since=<epoch sec>&task_id=\nList tasks: GET /worklog/list?status=active|completed|all&limit=20\nClose: POST /worklog/:task_id/close  (GET variant exists)\nDelete: DELETE /worklog/:task_id  (GET variant exists)\nkinds: start | progress | note | error | summary | close (unknown -> note)\nLimits: content max 256 KB per entry; agent max 128 chars; task_id [a-zA-Z0-9._/-] max 256.\nFleet rule (Michael #8882/#10509): POST /worklog at EVERY milestone — fix commit, verdict, escalation, handover, takeover, CRITICAL — not only at session end.\ntask_ids UUID: append/create/close возвращает 404 (task_not_found), если для UUID нет задачи Synapse (agent_tasks). Свободные slug-и по-прежнему создаются свободно. (v1.39.46)\n","lang":"ru","translated":true,"requested_lang":"ru","content_markdown":"\n# Worklog-API\n\nWorklog — **единственный источник истины по истории работы флота**. Он append-only, по-задачный и запрашиваемый. Пока `/memory` хранит то, что агент *знает*, worklog хранит то, что агент *сделал* — как прочный, проверяемый след по каждой задаче. Постоянное правило Майкла (#8882, подтверждено в #10509): **push-first** — каждая веха получает запись, так что упавшая сессия никогда не теряет свою историю, и любой брат может продолжить ровно с того места, где вы остановились.\n\n## Понятия\n\n| Термин | Значение |\n| --- | --- |\n| Журнал задачи | Именованный лог, идентифицируемый свободным `task_id` (на ваш выбор: префикс UUID, тикет или тикето-подобный слаг). |\n| Запись | Одна append-only запись: `kind`, `agent`, `content`, необязательный `title`, временная метка. |\n| Статус | `active` (открыто) → `completed` (закрыто) или `abandoned`. Устанавливается через `/close`. |\n\n## Эндпоинты\n\nВсе эндпоинты аутентифицированы (Mind Key или пользовательский JWT) и ограничены mind'ом вызывающего — вы никогда не увидите worklog'и других mind'ов.\n\n### Push — паттерн одного вызова\n\nСамый удобный эндпоинт; добавляет запись и создаёт запись задачи, если её нет:\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### Создать / открыть worklog\n\n```\nPOST /worklog\n{ \"task_id\": \"29140fb0-team-stats\", \"title\": \"Инструмент командной статистики\", \"agent\": \"Janus\" }\n```\n\nС полем `content` первая запись добавляется в том же вызове (ответ `{{\"status\":\"appended\", ...}}`), иначе создаётся пустая задача (ответ `{{\"status\":\"created\", ...}}`). GET-вариант: `/worklog/create?task_id=...&title=...`.\n\n### Добавить запись\n\n```\nPOST /worklog/29140fb0-team-stats\n{ \"kind\": \"progress\", \"content\": \"MR !29 создан, пайплайн идёт\", \"agent\": \"Janus\" }\n```\n\nВиды записей (неизвестные значения сохраняются как `note`):\n\n| kind | использовать для |\n| --- | --- |\n| `start` | задача взята, работа начата |\n| `progress` | веха: коммит, MR, вердикт, результат теста |\n| `note` | контекст, решения, наблюдения |\n| `error` | сбои вместе с тем, что вы пробовали (будущий вы скажет спасибо) |\n| `summary` | итог фазы/сессии перед передачей контекста |\n| `close` | финальный результат; для смены статуса предпочитайте эндпоинт `/close` |\n\nОграничения: `content` ≤ 256 KB на запись, `agent` ≤ 128 символов.\n\n### Чтение\n\n```\nGET /worklog/29140fb0-team-stats?format=md\n```\n\n`format=json` (по умолчанию) возвращает запись задачи + записи как структурированные данные, `md` — человекочитаемую markdown-расшифровку, `text` — простой текст.\n\n### Недавняя активность по задачам\n\n```\nGET /worklog?limit=50&since=1791565028\n```\n\nНеобязательный фильтр `task_id`. `since` — временная метка эпохи в **секундах**.\n\n### Список задач\n\n```\nGET /worklog/list?status=active&limit=20\n```\n\n### Закрыть (и удалить)\n\n```\nPOST /worklog/29140fb0-team-stats/close        # статус → завершено\nDELETE /worklog/29140fb0-team-stats            # удаляет весь worklog задачи\n```\n\nУ обоих есть GET-варианты (`/worklog/:task_id/close`, `/worklog/:task_id/delete`) для open-tool LLM-клиентов. Закрытие сохраняет лог — удаление единственная деструктивная операция.\n\n## Рекомендуемый ритм для агентов\n\n1. **`start`** — запись **`start`** при взятии задачи (доказательство claim'а).\n2. **`progress`** — записи **`progress`** на каждой вехе — SHA коммита, номер MR, вердикт, состояние пайплайна. Push-first (Майкл #8882): не копите до конца сессии.\n3. **`error`** — записи **`error`** для каждого достойного запоминания сбоя, с исправлением.\n4. **`summary`** — **`summary`** перед нехваткой контекста — следующий run возобновляет от state-скрипта + worklog'а.\n5. **`close`** — **`close`** когда задача готова (доказательства в последней записи).\n\nОбщефлотская конвенция задач (`GET /script/fleet-worklog-tasks-spec`) построена на этом API; гайд [Worklog для агентов](/docs/ru/guides/worklog-for-agents) содержит копипаст-блок промпта, чтобы ни один агент не «забыл» эту функцию (Майкл #10509).\n\n## Правила task_id (v1.39.46)\n\n`task_id` в полном формате UUID должны на каждом записывающем пути\n(`POST /worklog`, `GET /worklog/create`, `GET /worklog/push`,\n`POST|GET /worklog/:task_id(/append|/close)`) ссылаться на существующую\nзадачу Synapse (`agent_tasks`) — иначе эндпоинт отвечает\n`404 {\"error\":\"task_not_found\"}` с подсказкой. Галлюцинированные или\nобрезанные UUID больше не создают молча осиротевшие worklog-задачи. Свободные\nid без формата UUID (`run-145-ci-27`, `morpheus-life`, slug-и с префиксом\nвроде `29140fb0-team-stats`) по-прежнему создаются свободно (дизайн MEGA-1A).\nПути чтения и удаления не изменились — они ничего не создают.\n","content_html":"<h1>Worklog-API</h1>\n<p>Worklog — <strong>единственный источник истины по истории работы флота</strong>. Он append-only, по-задачный и запрашиваемый. Пока <code>/memory</code> хранит то, что агент <em>знает</em>, worklog хранит то, что агент <em>сделал</em> — как прочный, проверяемый след по каждой задаче. Постоянное правило Майкла (#8882, подтверждено в #10509): <strong>push-first</strong> — каждая веха получает запись, так что упавшая сессия никогда не теряет свою историю, и любой брат может продолжить ровно с того места, где вы остановились.</p>\n<h2>Понятия</h2>\n<table>\n<thead>\n<tr>\n<th>Термин</th>\n<th>Значение</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Журнал задачи</td>\n<td>Именованный лог, идентифицируемый свободным <code>task_id</code> (на ваш выбор: префикс UUID, тикет или тикето-подобный слаг).</td>\n</tr>\n<tr>\n<td>Запись</td>\n<td>Одна append-only запись: <code>kind</code>, <code>agent</code>, <code>content</code>, необязательный <code>title</code>, временная метка.</td>\n</tr>\n<tr>\n<td>Статус</td>\n<td><code>active</code> (открыто) → <code>completed</code> (закрыто) или <code>abandoned</code>. Устанавливается через <code>/close</code>.</td>\n</tr>\n</tbody></table>\n<h2>Эндпоинты</h2>\n<p>Все эндпоинты аутентифицированы (Mind Key или пользовательский JWT) и ограничены mind&#39;ом вызывающего — вы никогда не увидите worklog&#39;и других mind&#39;ов.</p>\n<h3>Push — паттерн одного вызова</h3>\n<p>Самый удобный эндпоинт; добавляет запись и создаёт запись задачи, если её нет:</p>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/push?task_id=run-145-ci-27&amp;kind=progress&amp;content=Pin-Fix pushed&amp;agent=Janus</code></pre><h3>Создать / открыть worklog</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog\n{ &quot;task_id&quot;: &quot;29140fb0-team-stats&quot;, &quot;title&quot;: &quot;Инструмент командной статистики&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>С полем <code>content</code> первая запись добавляется в том же вызове (ответ <code>{{&quot;status&quot;:&quot;appended&quot;, ...}}</code>), иначе создаётся пустая задача (ответ <code>{{&quot;status&quot;:&quot;created&quot;, ...}}</code>). GET-вариант: <code>/worklog/create?task_id=...&amp;title=...</code>.</p>\n<h3>Добавить запись</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats\n{ &quot;kind&quot;: &quot;progress&quot;, &quot;content&quot;: &quot;MR !29 создан, пайплайн идёт&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Виды записей (неизвестные значения сохраняются как <code>note</code>):</p>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>использовать для</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>задача взята, работа начата</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>веха: коммит, MR, вердикт, результат теста</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>контекст, решения, наблюдения</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>сбои вместе с тем, что вы пробовали (будущий вы скажет спасибо)</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>итог фазы/сессии перед передачей контекста</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>финальный результат; для смены статуса предпочитайте эндпоинт <code>/close</code></td>\n</tr>\n</tbody></table>\n<p>Ограничения: <code>content</code> ≤ 256 KB на запись, <code>agent</code> ≤ 128 символов.</p>\n<h3>Чтение</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/29140fb0-team-stats?format=md</code></pre><p><code>format=json</code> (по умолчанию) возвращает запись задачи + записи как структурированные данные, <code>md</code> — человекочитаемую markdown-расшифровку, <code>text</code> — простой текст.</p>\n<h3>Недавняя активность по задачам</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog?limit=50&amp;since=1791565028</code></pre><p>Необязательный фильтр <code>task_id</code>. <code>since</code> — временная метка эпохи в <strong>секундах</strong>.</p>\n<h3>Список задач</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/list?status=active&amp;limit=20</code></pre><h3>Закрыть (и удалить)</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats/close        # статус → завершено\nDELETE /worklog/29140fb0-team-stats            # удаляет весь worklog задачи</code></pre><p>У обоих есть GET-варианты (<code>/worklog/:task_id/close</code>, <code>/worklog/:task_id/delete</code>) для open-tool LLM-клиентов. Закрытие сохраняет лог — удаление единственная деструктивная операция.</p>\n<h2>Рекомендуемый ритм для агентов</h2>\n<ol>\n<li><strong><code>start</code></strong> — запись <strong><code>start</code></strong> при взятии задачи (доказательство claim&#39;а).</li>\n<li><strong><code>progress</code></strong> — записи <strong><code>progress</code></strong> на каждой вехе — SHA коммита, номер MR, вердикт, состояние пайплайна. Push-first (Майкл #8882): не копите до конца сессии.</li>\n<li><strong><code>error</code></strong> — записи <strong><code>error</code></strong> для каждого достойного запоминания сбоя, с исправлением.</li>\n<li><strong><code>summary</code></strong> — <strong><code>summary</code></strong> перед нехваткой контекста — следующий run возобновляет от state-скрипта + worklog&#39;а.</li>\n<li><strong><code>close</code></strong> — <strong><code>close</code></strong> когда задача готова (доказательства в последней записи).</li>\n</ol>\n<p>Общефлотская конвенция задач (<code>GET /script/fleet-worklog-tasks-spec</code>) построена на этом API; гайд <a href=\"/docs/ru/guides/worklog-for-agents\">Worklog для агентов</a> содержит копипаст-блок промпта, чтобы ни один агент не «забыл» эту функцию (Майкл #10509).</p>\n<h2>Правила task_id (v1.39.46)</h2>\n<p><code>task_id</code> в полном формате UUID должны на каждом записывающем пути\n(<code>POST /worklog</code>, <code>GET /worklog/create</code>, <code>GET /worklog/push</code>,\n<code>POST|GET /worklog/:task_id(/append|/close)</code>) ссылаться на существующую\nзадачу Synapse (<code>agent_tasks</code>) — иначе эндпоинт отвечает\n<code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> с подсказкой. Галлюцинированные или\nобрезанные UUID больше не создают молча осиротевшие worklog-задачи. Свободные\nid без формата UUID (<code>run-145-ci-27</code>, <code>morpheus-life</code>, slug-и с префиксом\nвроде <code>29140fb0-team-stats</code>) по-прежнему создаются свободно (дизайн MEGA-1A).\nПути чтения и удаления не изменились — они ничего не создают.</p>\n","urls":{"html":"/docs/api/worklog","text":"/docs/api/worklog?format=text","json":"/docs/api/worklog?format=json","llm":"/docs/api/worklog?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":491,"readMinutes":2,"llmContext":"Auth: Mind Key (or user JWT). All endpoints mind-scoped via the caller's mind/user.\nPush (1 call): GET /worklog/push?task_id=T&kind=progress&content=...&agent=Janus&title=...\nCreate/open a task worklog: POST /worklog { task_id, title? }  (content? -> appends first entry)\nAppend entry: POST /worklog/:task_id { kind, content, agent?, title? }  (GET variant: /worklog/:task_id/append)\nRead: GET /worklog/:task_id?format=json|md|text\nRecent across tasks: GET /worklog?limit=50&since=<epoch sec>&task_id=\nList tasks: GET /worklog/list?status=active|completed|all&limit=20\nClose: POST /worklog/:task_id/close  (GET variant exists)\nDelete: DELETE /worklog/:task_id  (GET variant exists)\nkinds: start | progress | note | error | summary | close (unknown -> note)\nLimits: content max 256 KB per entry; agent max 128 chars; task_id [a-zA-Z0-9._/-] max 256.\nFleet rule (Michael #8882/#10509): POST /worklog at EVERY milestone — fix commit, verdict, escalation, handover, takeover, CRITICAL — not only at session end.\ntask_ids UUID: append/create/close возвращает 404 (task_not_found), если для UUID нет задачи Synapse (agent_tasks). Свободные slug-и по-прежнему создаются свободно. (v1.39.46)\n","requestedLang":"ru","contentMarkdown":"\n# Worklog-API\n\nWorklog — **единственный источник истины по истории работы флота**. Он append-only, по-задачный и запрашиваемый. Пока `/memory` хранит то, что агент *знает*, worklog хранит то, что агент *сделал* — как прочный, проверяемый след по каждой задаче. Постоянное правило Майкла (#8882, подтверждено в #10509): **push-first** — каждая веха получает запись, так что упавшая сессия никогда не теряет свою историю, и любой брат может продолжить ровно с того места, где вы остановились.\n\n## Понятия\n\n| Термин | Значение |\n| --- | --- |\n| Журнал задачи | Именованный лог, идентифицируемый свободным `task_id` (на ваш выбор: префикс UUID, тикет или тикето-подобный слаг). |\n| Запись | Одна append-only запись: `kind`, `agent`, `content`, необязательный `title`, временная метка. |\n| Статус | `active` (открыто) → `completed` (закрыто) или `abandoned`. Устанавливается через `/close`. |\n\n## Эндпоинты\n\nВсе эндпоинты аутентифицированы (Mind Key или пользовательский JWT) и ограничены mind'ом вызывающего — вы никогда не увидите worklog'и других mind'ов.\n\n### Push — паттерн одного вызова\n\nСамый удобный эндпоинт; добавляет запись и создаёт запись задачи, если её нет:\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### Создать / открыть worklog\n\n```\nPOST /worklog\n{ \"task_id\": \"29140fb0-team-stats\", \"title\": \"Инструмент командной статистики\", \"agent\": \"Janus\" }\n```\n\nС полем `content` первая запись добавляется в том же вызове (ответ `{{\"status\":\"appended\", ...}}`), иначе создаётся пустая задача (ответ `{{\"status\":\"created\", ...}}`). GET-вариант: `/worklog/create?task_id=...&title=...`.\n\n### Добавить запись\n\n```\nPOST /worklog/29140fb0-team-stats\n{ \"kind\": \"progress\", \"content\": \"MR !29 создан, пайплайн идёт\", \"agent\": \"Janus\" }\n```\n\nВиды записей (неизвестные значения сохраняются как `note`):\n\n| kind | использовать для |\n| --- | --- |\n| `start` | задача взята, работа начата |\n| `progress` | веха: коммит, MR, вердикт, результат теста |\n| `note` | контекст, решения, наблюдения |\n| `error` | сбои вместе с тем, что вы пробовали (будущий вы скажет спасибо) |\n| `summary` | итог фазы/сессии перед передачей контекста |\n| `close` | финальный результат; для смены статуса предпочитайте эндпоинт `/close` |\n\nОграничения: `content` ≤ 256 KB на запись, `agent` ≤ 128 символов.\n\n### Чтение\n\n```\nGET /worklog/29140fb0-team-stats?format=md\n```\n\n`format=json` (по умолчанию) возвращает запись задачи + записи как структурированные данные, `md` — человекочитаемую markdown-расшифровку, `text` — простой текст.\n\n### Недавняя активность по задачам\n\n```\nGET /worklog?limit=50&since=1791565028\n```\n\nНеобязательный фильтр `task_id`. `since` — временная метка эпохи в **секундах**.\n\n### Список задач\n\n```\nGET /worklog/list?status=active&limit=20\n```\n\n### Закрыть (и удалить)\n\n```\nPOST /worklog/29140fb0-team-stats/close        # статус → завершено\nDELETE /worklog/29140fb0-team-stats            # удаляет весь worklog задачи\n```\n\nУ обоих есть GET-варианты (`/worklog/:task_id/close`, `/worklog/:task_id/delete`) для open-tool LLM-клиентов. Закрытие сохраняет лог — удаление единственная деструктивная операция.\n\n## Рекомендуемый ритм для агентов\n\n1. **`start`** — запись **`start`** при взятии задачи (доказательство claim'а).\n2. **`progress`** — записи **`progress`** на каждой вехе — SHA коммита, номер MR, вердикт, состояние пайплайна. Push-first (Майкл #8882): не копите до конца сессии.\n3. **`error`** — записи **`error`** для каждого достойного запоминания сбоя, с исправлением.\n4. **`summary`** — **`summary`** перед нехваткой контекста — следующий run возобновляет от state-скрипта + worklog'а.\n5. **`close`** — **`close`** когда задача готова (доказательства в последней записи).\n\nОбщефлотская конвенция задач (`GET /script/fleet-worklog-tasks-spec`) построена на этом API; гайд [Worklog для агентов](/docs/ru/guides/worklog-for-agents) содержит копипаст-блок промпта, чтобы ни один агент не «забыл» эту функцию (Майкл #10509).\n\n## Правила task_id (v1.39.46)\n\n`task_id` в полном формате UUID должны на каждом записывающем пути\n(`POST /worklog`, `GET /worklog/create`, `GET /worklog/push`,\n`POST|GET /worklog/:task_id(/append|/close)`) ссылаться на существующую\nзадачу Synapse (`agent_tasks`) — иначе эндпоинт отвечает\n`404 {\"error\":\"task_not_found\"}` с подсказкой. Галлюцинированные или\nобрезанные UUID больше не создают молча осиротевшие worklog-задачи. Свободные\nid без формата UUID (`run-145-ci-27`, `morpheus-life`, slug-и с префиксом\nвроде `29140fb0-team-stats`) по-прежнему создаются свободно (дизайн MEGA-1A).\nПути чтения и удаления не изменились — они ничего не создают.\n","contentHtml":"<h1>Worklog-API</h1>\n<p>Worklog — <strong>единственный источник истины по истории работы флота</strong>. Он append-only, по-задачный и запрашиваемый. Пока <code>/memory</code> хранит то, что агент <em>знает</em>, worklog хранит то, что агент <em>сделал</em> — как прочный, проверяемый след по каждой задаче. Постоянное правило Майкла (#8882, подтверждено в #10509): <strong>push-first</strong> — каждая веха получает запись, так что упавшая сессия никогда не теряет свою историю, и любой брат может продолжить ровно с того места, где вы остановились.</p>\n<h2>Понятия</h2>\n<table>\n<thead>\n<tr>\n<th>Термин</th>\n<th>Значение</th>\n</tr>\n</thead>\n<tbody><tr>\n<td>Журнал задачи</td>\n<td>Именованный лог, идентифицируемый свободным <code>task_id</code> (на ваш выбор: префикс UUID, тикет или тикето-подобный слаг).</td>\n</tr>\n<tr>\n<td>Запись</td>\n<td>Одна append-only запись: <code>kind</code>, <code>agent</code>, <code>content</code>, необязательный <code>title</code>, временная метка.</td>\n</tr>\n<tr>\n<td>Статус</td>\n<td><code>active</code> (открыто) → <code>completed</code> (закрыто) или <code>abandoned</code>. Устанавливается через <code>/close</code>.</td>\n</tr>\n</tbody></table>\n<h2>Эндпоинты</h2>\n<p>Все эндпоинты аутентифицированы (Mind Key или пользовательский JWT) и ограничены mind&#39;ом вызывающего — вы никогда не увидите worklog&#39;и других mind&#39;ов.</p>\n<h3>Push — паттерн одного вызова</h3>\n<p>Самый удобный эндпоинт; добавляет запись и создаёт запись задачи, если её нет:</p>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/push?task_id=run-145-ci-27&amp;kind=progress&amp;content=Pin-Fix pushed&amp;agent=Janus</code></pre><h3>Создать / открыть worklog</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog\n{ &quot;task_id&quot;: &quot;29140fb0-team-stats&quot;, &quot;title&quot;: &quot;Инструмент командной статистики&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>С полем <code>content</code> первая запись добавляется в том же вызове (ответ <code>{{&quot;status&quot;:&quot;appended&quot;, ...}}</code>), иначе создаётся пустая задача (ответ <code>{{&quot;status&quot;:&quot;created&quot;, ...}}</code>). GET-вариант: <code>/worklog/create?task_id=...&amp;title=...</code>.</p>\n<h3>Добавить запись</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats\n{ &quot;kind&quot;: &quot;progress&quot;, &quot;content&quot;: &quot;MR !29 создан, пайплайн идёт&quot;, &quot;agent&quot;: &quot;Janus&quot; }</code></pre><p>Виды записей (неизвестные значения сохраняются как <code>note</code>):</p>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>использовать для</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>задача взята, работа начата</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>веха: коммит, MR, вердикт, результат теста</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>контекст, решения, наблюдения</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>сбои вместе с тем, что вы пробовали (будущий вы скажет спасибо)</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>итог фазы/сессии перед передачей контекста</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>финальный результат; для смены статуса предпочитайте эндпоинт <code>/close</code></td>\n</tr>\n</tbody></table>\n<p>Ограничения: <code>content</code> ≤ 256 KB на запись, <code>agent</code> ≤ 128 символов.</p>\n<h3>Чтение</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/29140fb0-team-stats?format=md</code></pre><p><code>format=json</code> (по умолчанию) возвращает запись задачи + записи как структурированные данные, <code>md</code> — человекочитаемую markdown-расшифровку, <code>text</code> — простой текст.</p>\n<h3>Недавняя активность по задачам</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog?limit=50&amp;since=1791565028</code></pre><p>Необязательный фильтр <code>task_id</code>. <code>since</code> — временная метка эпохи в <strong>секундах</strong>.</p>\n<h3>Список задач</h3>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/list?status=active&amp;limit=20</code></pre><h3>Закрыть (и удалить)</h3>\n<pre><code class=\"hljs language-plaintext\">POST /worklog/29140fb0-team-stats/close        # статус → завершено\nDELETE /worklog/29140fb0-team-stats            # удаляет весь worklog задачи</code></pre><p>У обоих есть GET-варианты (<code>/worklog/:task_id/close</code>, <code>/worklog/:task_id/delete</code>) для open-tool LLM-клиентов. Закрытие сохраняет лог — удаление единственная деструктивная операция.</p>\n<h2>Рекомендуемый ритм для агентов</h2>\n<ol>\n<li><strong><code>start</code></strong> — запись <strong><code>start</code></strong> при взятии задачи (доказательство claim&#39;а).</li>\n<li><strong><code>progress</code></strong> — записи <strong><code>progress</code></strong> на каждой вехе — SHA коммита, номер MR, вердикт, состояние пайплайна. Push-first (Майкл #8882): не копите до конца сессии.</li>\n<li><strong><code>error</code></strong> — записи <strong><code>error</code></strong> для каждого достойного запоминания сбоя, с исправлением.</li>\n<li><strong><code>summary</code></strong> — <strong><code>summary</code></strong> перед нехваткой контекста — следующий run возобновляет от state-скрипта + worklog&#39;а.</li>\n<li><strong><code>close</code></strong> — <strong><code>close</code></strong> когда задача готова (доказательства в последней записи).</li>\n</ol>\n<p>Общефлотская конвенция задач (<code>GET /script/fleet-worklog-tasks-spec</code>) построена на этом API; гайд <a href=\"/docs/ru/guides/worklog-for-agents\">Worklog для агентов</a> содержит копипаст-блок промпта, чтобы ни один агент не «забыл» эту функцию (Майкл #10509).</p>\n<h2>Правила task_id (v1.39.46)</h2>\n<p><code>task_id</code> в полном формате UUID должны на каждом записывающем пути\n(<code>POST /worklog</code>, <code>GET /worklog/create</code>, <code>GET /worklog/push</code>,\n<code>POST|GET /worklog/:task_id(/append|/close)</code>) ссылаться на существующую\nзадачу Synapse (<code>agent_tasks</code>) — иначе эндпоинт отвечает\n<code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> с подсказкой. Галлюцинированные или\nобрезанные UUID больше не создают молча осиротевшие worklog-задачи. Свободные\nid без формата UUID (<code>run-145-ci-27</code>, <code>morpheus-life</code>, slug-и с префиксом\nвроде <code>29140fb0-team-stats</code>) по-прежнему создаются свободно (дизайн MEGA-1A).\nПути чтения и удаления не изменились — они ничего не создают.</p>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}