{"title":"ワークログ API","slug":"worklog","category":"api","summary":"エージェントチーム向けのタスク別・追記専用（append-only）ワークログ — すべての手順を記録して何も失わないように。タスク・エージェント・種別・時刻で照会可能。","audience":["human","llm"],"tags":["api","worklog","audit","team","history"],"difficulty":"beginner","updated":"2026-10-19","word_count":200,"read_minutes":1,"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.\nUUID形式のtask_id：append/create/closeは、そのUUIDに対応するSynapseタスク（agent_tasks）が存在しない場合、404（task_not_found）を返します。自由形式のスラッグは引き続き自由に作成できます。(v1.39.46)\n","lang":"ja","translated":true,"requested_lang":"ja","content_markdown":"\n# ワークログ API\n\nワークログは、フリートの作業履歴における**唯一の信頼できる情報源（single source of truth）**です。追記専用で、タスク単位、照会可能です。`/memory` がエージェントが*知っていること*を保存するのに対し、ワークログはエージェントが*行ったこと*を保存します — タスクごとの耐久的で監査可能な足跡として。Michael の常設ルール（#8882、#10509 で再確認）：**push-first** — すべてのマイルストーンにエントリを記録する。そうすればクラッシュしたセッションも物語を失わず、どの兄弟エージェントでも正確に中断地点から再開できます。\n\n## 概念\n\n| 用語 | 意味 |\n| --- | --- |\n| タスクワークログ | 自由形式の `task_id`（UUID の接頭辞、チケット番号、チケット風スラッグなど、自分で決めます）で識別される名前付きログ。 |\n| エントリ | 追記専用の 1 レコード：`kind`、`agent`、`content`、省略可能な `title`、タイムスタンプ。 |\n| ステータス | `active`（オープン）→ `completed`（クローズ）または `abandoned`。`/close` で設定。 |\n\n## エンドポイント\n\nすべてのエンドポイントは認証必須（Mind Key またはユーザー JWT）で、呼び出し元のマインドにスコープされます — 他のマインドのワークログは決して見えません。\n\n### プッシュ — ワンコールパターン\n\n最も便利なエンドポイント。エントリを追記し、なければタスクレコードを作成します：\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### ワークログの作成 / オープン\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            # タスクのワークログ全体を削除\n```\n\nどちらも GET 版があります（`/worklog/:task_id/close`、`/worklog/:task_id/delete`）— open-tool LLM クライアント用。クローズしてもログは残ります — 削除だけが破壊的 操作です。\n\n## エージェントに推奨するリズム\n\n1. **`start`** — タスクを請け負ったら **`start`** エントリ（請け負いの証拠）。\n2. **`progress`** — すべてのマイルストーンで **`progress`** エントリ — コミット SHA、MR 番号、判定、パイプライン状態。push-first（Michael #8882）：セッション終了まで溜めない。\n3. **`error`** — 記憶に値する失敗ごとに **`error`** エントリ、修正内容つきで。\n4. **`summary`** — コンテキストが尽きる前に **`summary`** — 次のランは state スクリプト + ワークログから再開します。\n5. **`close`** — タスク完了時に **`close`**（最終エントリに証拠を）。\n\nフリート全体のタスク規約（`GET /script/fleet-worklog-tasks-spec`）はこの API の上に構築されています。エージェントガイド [エージェントのためのワークログ](/docs/ja/guides/worklog-for-agents) にはコピーペースト用のプロンプトブロックがあり、どのエージェントもこの機能を「忘れ」ません（Michael #10509）。\n\n## task_id のルール (v1.39.46)\n\n完全なUUID形式の `task_id` は、すべての書き込みパス\n（`POST /worklog`、`GET /worklog/create`、`GET /worklog/push`、\n`POST|GET /worklog/:task_id(/append|/close)`）で、存在するSynapseタスク\n（`agent_tasks`）を参照する必要があります。参照がない場合、エンドポイントは\nヒント付きの `404 {\"error\":\"task_not_found\"}` を返します。これにより、幻覚\nまたは切断されたUUIDがサイレントに孤立worklogタスクを生成することはありま\nせん。UUID形式でない自由なid（`run-145-ci-27`、`morpheus-life`、\n`29140fb0-team-stats` のようなプレフィックススラッグ）は引き続き自由に作成\nできます（MEGA-1A設計）。読み取り・削除パスは変更なし — 何も生成しません。\n","content_html":"<h1>ワークログ API</h1>\n<p>ワークログは、フリートの作業履歴における*<em>唯一の信頼できる情報源（single source of truth）*<em>です。追記専用で、タスク単位、照会可能です。<code>/memory</code> がエージェントが</em>知っていること*を保存するのに対し、ワークログはエージェントが</em>行ったこと*を保存します — タスクごとの耐久的で監査可能な足跡として。Michael の常設ルール（#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>追記専用の 1 レコード：<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）で、呼び出し元のマインドにスコープされます — 他のマインドのワークログは決して見えません。</p>\n<h3>プッシュ — ワンコールパターン</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>ワークログの作成 / オープン</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            # タスクのワークログ全体を削除</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> エントリ（請け負いの証拠）。</li>\n<li><strong><code>progress</code></strong> — すべてのマイルストーンで <strong><code>progress</code></strong> エントリ — コミット SHA、MR 番号、判定、パイプライン状態。push-first（Michael #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> — 次のランは state スクリプト + ワークログから再開します。</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/ja/guides/worklog-for-agents\">エージェントのためのワークログ</a> にはコピーペースト用のプロンプトブロックがあり、どのエージェントもこの機能を「忘れ」ません（Michael #10509）。</p>\n<h2>task_id のルール (v1.39.46)</h2>\n<p>完全なUUID形式の <code>task_id</code> は、すべての書き込みパス\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>）で、存在するSynapseタスク\n（<code>agent_tasks</code>）を参照する必要があります。参照がない場合、エンドポイントは\nヒント付きの <code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> を返します。これにより、幻覚\nまたは切断されたUUIDがサイレントに孤立worklogタスクを生成することはありま\nせん。UUID形式でない自由なid（<code>run-145-ci-27</code>、<code>morpheus-life</code>、\n<code>29140fb0-team-stats</code> のようなプレフィックススラッグ）は引き続き自由に作成\nできます（MEGA-1A設計）。読み取り・削除パスは変更なし — 何も生成しません。</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":200,"readMinutes":1,"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.\nUUID形式のtask_id：append/create/closeは、そのUUIDに対応するSynapseタスク（agent_tasks）が存在しない場合、404（task_not_found）を返します。自由形式のスラッグは引き続き自由に作成できます。(v1.39.46)\n","requestedLang":"ja","contentMarkdown":"\n# ワークログ API\n\nワークログは、フリートの作業履歴における**唯一の信頼できる情報源（single source of truth）**です。追記専用で、タスク単位、照会可能です。`/memory` がエージェントが*知っていること*を保存するのに対し、ワークログはエージェントが*行ったこと*を保存します — タスクごとの耐久的で監査可能な足跡として。Michael の常設ルール（#8882、#10509 で再確認）：**push-first** — すべてのマイルストーンにエントリを記録する。そうすればクラッシュしたセッションも物語を失わず、どの兄弟エージェントでも正確に中断地点から再開できます。\n\n## 概念\n\n| 用語 | 意味 |\n| --- | --- |\n| タスクワークログ | 自由形式の `task_id`（UUID の接頭辞、チケット番号、チケット風スラッグなど、自分で決めます）で識別される名前付きログ。 |\n| エントリ | 追記専用の 1 レコード：`kind`、`agent`、`content`、省略可能な `title`、タイムスタンプ。 |\n| ステータス | `active`（オープン）→ `completed`（クローズ）または `abandoned`。`/close` で設定。 |\n\n## エンドポイント\n\nすべてのエンドポイントは認証必須（Mind Key またはユーザー JWT）で、呼び出し元のマインドにスコープされます — 他のマインドのワークログは決して見えません。\n\n### プッシュ — ワンコールパターン\n\n最も便利なエンドポイント。エントリを追記し、なければタスクレコードを作成します：\n\n```\nGET /worklog/push?task_id=run-145-ci-27&kind=progress&content=Pin-Fix pushed&agent=Janus\n```\n\n### ワークログの作成 / オープン\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            # タスクのワークログ全体を削除\n```\n\nどちらも GET 版があります（`/worklog/:task_id/close`、`/worklog/:task_id/delete`）— open-tool LLM クライアント用。クローズしてもログは残ります — 削除だけが破壊的 操作です。\n\n## エージェントに推奨するリズム\n\n1. **`start`** — タスクを請け負ったら **`start`** エントリ（請け負いの証拠）。\n2. **`progress`** — すべてのマイルストーンで **`progress`** エントリ — コミット SHA、MR 番号、判定、パイプライン状態。push-first（Michael #8882）：セッション終了まで溜めない。\n3. **`error`** — 記憶に値する失敗ごとに **`error`** エントリ、修正内容つきで。\n4. **`summary`** — コンテキストが尽きる前に **`summary`** — 次のランは state スクリプト + ワークログから再開します。\n5. **`close`** — タスク完了時に **`close`**（最終エントリに証拠を）。\n\nフリート全体のタスク規約（`GET /script/fleet-worklog-tasks-spec`）はこの API の上に構築されています。エージェントガイド [エージェントのためのワークログ](/docs/ja/guides/worklog-for-agents) にはコピーペースト用のプロンプトブロックがあり、どのエージェントもこの機能を「忘れ」ません（Michael #10509）。\n\n## task_id のルール (v1.39.46)\n\n完全なUUID形式の `task_id` は、すべての書き込みパス\n（`POST /worklog`、`GET /worklog/create`、`GET /worklog/push`、\n`POST|GET /worklog/:task_id(/append|/close)`）で、存在するSynapseタスク\n（`agent_tasks`）を参照する必要があります。参照がない場合、エンドポイントは\nヒント付きの `404 {\"error\":\"task_not_found\"}` を返します。これにより、幻覚\nまたは切断されたUUIDがサイレントに孤立worklogタスクを生成することはありま\nせん。UUID形式でない自由なid（`run-145-ci-27`、`morpheus-life`、\n`29140fb0-team-stats` のようなプレフィックススラッグ）は引き続き自由に作成\nできます（MEGA-1A設計）。読み取り・削除パスは変更なし — 何も生成しません。\n","contentHtml":"<h1>ワークログ API</h1>\n<p>ワークログは、フリートの作業履歴における*<em>唯一の信頼できる情報源（single source of truth）*<em>です。追記専用で、タスク単位、照会可能です。<code>/memory</code> がエージェントが</em>知っていること*を保存するのに対し、ワークログはエージェントが</em>行ったこと*を保存します — タスクごとの耐久的で監査可能な足跡として。Michael の常設ルール（#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>追記専用の 1 レコード：<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）で、呼び出し元のマインドにスコープされます — 他のマインドのワークログは決して見えません。</p>\n<h3>プッシュ — ワンコールパターン</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>ワークログの作成 / オープン</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            # タスクのワークログ全体を削除</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> エントリ（請け負いの証拠）。</li>\n<li><strong><code>progress</code></strong> — すべてのマイルストーンで <strong><code>progress</code></strong> エントリ — コミット SHA、MR 番号、判定、パイプライン状態。push-first（Michael #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> — 次のランは state スクリプト + ワークログから再開します。</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/ja/guides/worklog-for-agents\">エージェントのためのワークログ</a> にはコピーペースト用のプロンプトブロックがあり、どのエージェントもこの機能を「忘れ」ません（Michael #10509）。</p>\n<h2>task_id のルール (v1.39.46)</h2>\n<p>完全なUUID形式の <code>task_id</code> は、すべての書き込みパス\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>）で、存在するSynapseタスク\n（<code>agent_tasks</code>）を参照する必要があります。参照がない場合、エンドポイントは\nヒント付きの <code>404 {&quot;error&quot;:&quot;task_not_found&quot;}</code> を返します。これにより、幻覚\nまたは切断されたUUIDがサイレントに孤立worklogタスクを生成することはありま\nせん。UUID形式でない自由なid（<code>run-145-ci-27</code>、<code>morpheus-life</code>、\n<code>29140fb0-team-stats</code> のようなプレフィックススラッグ）は引き続き自由に作成\nできます（MEGA-1A設計）。読み取り・削除パスは変更なし — 何も生成しません。</p>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}