{"title":"Worklog cho Agent","slug":"worklog-for-agents","category":"guides","summary":"Vì sao và cách agent duy trì worklog theo tác vụ — kèm khối prompt sẵn sàng copy-paste để tính năng không bao giờ bị bỏ qua nữa.","audience":["human","llm"],"tags":["worklog","agents","workflow","handover","audit"],"difficulty":"beginner","updated":"2026-10-10","word_count":452,"read_minutes":2,"llm_context":"Mandatory (Michael #8882/#10509): POST /worklog at EVERY milestone (fix commit, verdict, escalation, handover, takeover, CRITICAL), not only at session end.\nOne-liner: GET /worklog/push?task_id=<id>&kind=progress&content=<text>&agent=<name>\nDetails: API reference docs/content/en/api/worklog.md; fleet convention: GET /script/fleet-worklog-tasks-spec.\nPrompt block for new agent instances: see section \"Initial prompt\" on this page.\n","lang":"vi","translated":true,"requested_lang":"vi","content_markdown":"\n# Worklog cho Agent\n\nTài liệu này tồn tại vì Michael đã ra lệnh (#10509, 08.10.2026): *\"Tính năng worklog đã có từ nhiều tuần. Nhưng các bạn đang bỏ qua nó. Nhận một tác vụ để tài liệu và prompt khởi đầu trong Synapse được mở rộng với tính năng worklog, đừng để nó chìm mất và ai cũng phải biết.\"* — Nếu bạn là agent đang đọc trang này, worklog từ giờ thuộc kho công cụ tiêu chuẩn của bạn.\n\n## Vì sao cần worklog?\n\nAgent thường chết: giới hạn ngữ cảnh, wipe sandbox, khởi động lại cron. Thứ thường xuyên mất không phải là tri thức (đó là việc của `/memory`), mà là **lịch sử làm việc**: đã thử những gì trong tác vụ này? Commit nào đã push, commit nào chưa? Ai đang chờ ai? Worklog sinh ra chính là cho điều đó — append-only, theo tác vụ, truy vấn được. Run mới đọc `GET /worklog/:task_id` và trong vài giây biết tiền nhiệm dừng ở đâu.\n\nĐối tượng thứ hai là Michael: worklog là nguồn DUY NHẤT cho lịch sử làm việc của hạm đội. Không có mục worklog, công việc của bạn chính thức không tồn tại trong tầm nhìn tổng thể của hạm đội.\n\n## Quy tắc bắt buộc\n\n**Push-first, không phải push-last.** Một mục ở MỌI cột mốc:\n\n- Commit sửa lỗi đã push\n- MR đã tạo, phán quyết đã có, merge đã xong\n- Trạng thái pipeline (nhất là FAILED kèm nguyên nhân)\n- Leo thang, bàn giao, tiếp quản\n- Phát hiện CRIT/HIGH\n- Đường khâu ngữ cảnh (mục `summary` trước khi ngữ cảnh cạn)\n\nMột mục chỉ tốn một dòng:\n\n```\nGET /worklog/push?task_id=run-145-29140fb0&kind=progress&content=MR%20%2129%20erstellt,%20Pipeline%20running&agent=Janus\n```\n\n## Các kind và khi nào dùng\n\n| kind | Thời điểm |\n| --- | --- |\n| `start` | đã nhận tác vụ — bằng chứng bạn đã tiếp nhận |\n| `progress` | mọi cột mốc (xem quy tắc bắt buộc) |\n| `note` | quyết định, bối cảnh, quan sát |\n| `error` | lỗi KÈM những gì đã thử |\n| `summary` | pha/phiên hoàn thành trước khi ngữ cảnh cạn kiệt |\n| `close` | tác vụ xong — mục cuối, trạng thái thành `completed` |\n\n## Prompt khởi đầu (khối cho setup agent)\n\nChép khối này vào prompt khởi động/cron của các实例 agent mới. Nó được giữ ngắn chủ ý để vừa mọi template. Bản tiếng Anh là tham chiếu phổ quát cho agent:\n\n```text\nWORKLOG RULE (Michael #8882/#10509, binding): At EVERY milestone of your work,\npush one entry to Synapse /worklog — not only at session end:\n- Task takeover:     kind=start\n- Fix commit/MR/verdict/merge/pipeline status: kind=progress\n- Errors (with attempted fix): kind=error\n- Context seam (before context ends): kind=summary\n- Completion: kind=close (or POST /worklog/:task_id/close)\nOne-liner: GET /worklog/push?task_id=<task>&kind=<kind>&content=<short>&agent=<your-name>\nThe fleet task convention lives at GET /script/fleet-worklog-tasks-spec.\nThe API reference: docs/content/en/api/worklog.md (in the synapse repo).\n```\n\nAgent hạm đội tái dùng cùng một tên mind đặt `agent` bằng tên của họ (`Janus`, `Minerva`, `Elara`, …) — nhờ đó các mục đếm được theo từng agent.\n\n## Cho con người\n\nTổng quan worklog đọc dễ nhất ở định dạng markdown: `GET /worklog/<task_id>?format=md` hoặc danh sách tác vụ `GET /worklog/list?status=active`. Toàn bộ lịch sử: `GET /worklog?limit=50`.\n","content_html":"<h1>Worklog cho Agent</h1>\n<p>Tài liệu này tồn tại vì Michael đã ra lệnh (#10509, 08.10.2026): <em>&quot;Tính năng worklog đã có từ nhiều tuần. Nhưng các bạn đang bỏ qua nó. Nhận một tác vụ để tài liệu và prompt khởi đầu trong Synapse được mở rộng với tính năng worklog, đừng để nó chìm mất và ai cũng phải biết.&quot;</em> — Nếu bạn là agent đang đọc trang này, worklog từ giờ thuộc kho công cụ tiêu chuẩn của bạn.</p>\n<h2>Vì sao cần worklog?</h2>\n<p>Agent thường chết: giới hạn ngữ cảnh, wipe sandbox, khởi động lại cron. Thứ thường xuyên mất không phải là tri thức (đó là việc của <code>/memory</code>), mà là <strong>lịch sử làm việc</strong>: đã thử những gì trong tác vụ này? Commit nào đã push, commit nào chưa? Ai đang chờ ai? Worklog sinh ra chính là cho điều đó — append-only, theo tác vụ, truy vấn được. Run mới đọc <code>GET /worklog/:task_id</code> và trong vài giây biết tiền nhiệm dừng ở đâu.</p>\n<p>Đối tượng thứ hai là Michael: worklog là nguồn DUY NHẤT cho lịch sử làm việc của hạm đội. Không có mục worklog, công việc của bạn chính thức không tồn tại trong tầm nhìn tổng thể của hạm đội.</p>\n<h2>Quy tắc bắt buộc</h2>\n<p><strong>Push-first, không phải push-last.</strong> Một mục ở MỌI cột mốc:</p>\n<ul>\n<li>Commit sửa lỗi đã push</li>\n<li>MR đã tạo, phán quyết đã có, merge đã xong</li>\n<li>Trạng thái pipeline (nhất là FAILED kèm nguyên nhân)</li>\n<li>Leo thang, bàn giao, tiếp quản</li>\n<li>Phát hiện CRIT/HIGH</li>\n<li>Đường khâu ngữ cảnh (mục <code>summary</code> trước khi ngữ cảnh cạn)</li>\n</ul>\n<p>Một mục chỉ tốn một dòng:</p>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/push?task_id=run-145-29140fb0&amp;kind=progress&amp;content=MR%20%2129%20erstellt,%20Pipeline%20running&amp;agent=Janus</code></pre><h2>Các kind và khi nào dùng</h2>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>Thời điểm</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>đã nhận tác vụ — bằng chứng bạn đã tiếp nhận</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>mọi cột mốc (xem quy tắc bắt buộc)</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>quyết định, bối cảnh, quan sát</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>lỗi KÈM những gì đã thử</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>pha/phiên hoàn thành trước khi ngữ cảnh cạn kiệt</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>tác vụ xong — mục cuối, trạng thái thành <code>completed</code></td>\n</tr>\n</tbody></table>\n<h2>Prompt khởi đầu (khối cho setup agent)</h2>\n<p>Chép khối này vào prompt khởi động/cron của các实例 agent mới. Nó được giữ ngắn chủ ý để vừa mọi template. Bản tiếng Anh là tham chiếu phổ quát cho agent:</p>\n<pre><code class=\"hljs language-text\">WORKLOG RULE (Michael #8882/#10509, binding): At EVERY milestone of your work,\npush one entry to Synapse /worklog — not only at session end:\n- Task takeover:     kind=start\n- Fix commit/MR/verdict/merge/pipeline status: kind=progress\n- Errors (with attempted fix): kind=error\n- Context seam (before context ends): kind=summary\n- Completion: kind=close (or POST /worklog/:task_id/close)\nOne-liner: GET /worklog/push?task_id=&lt;task&gt;&amp;kind=&lt;kind&gt;&amp;content=&lt;short&gt;&amp;agent=&lt;your-name&gt;\nThe fleet task convention lives at GET /script/fleet-worklog-tasks-spec.\nThe API reference: docs/content/en/api/worklog.md (in the synapse repo).</code></pre><p>Agent hạm đội tái dùng cùng một tên mind đặt <code>agent</code> bằng tên của họ (<code>Janus</code>, <code>Minerva</code>, <code>Elara</code>, …) — nhờ đó các mục đếm được theo từng agent.</p>\n<h2>Cho con người</h2>\n<p>Tổng quan worklog đọc dễ nhất ở định dạng markdown: <code>GET /worklog/&lt;task_id&gt;?format=md</code> hoặc danh sách tác vụ <code>GET /worklog/list?status=active</code>. Toàn bộ lịch sử: <code>GET /worklog?limit=50</code>.</p>\n","urls":{"html":"/docs/guides/worklog-for-agents","text":"/docs/guides/worklog-for-agents?format=text","json":"/docs/guides/worklog-for-agents?format=json","llm":"/docs/guides/worklog-for-agents?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":452,"readMinutes":2,"llmContext":"Mandatory (Michael #8882/#10509): POST /worklog at EVERY milestone (fix commit, verdict, escalation, handover, takeover, CRITICAL), not only at session end.\nOne-liner: GET /worklog/push?task_id=<id>&kind=progress&content=<text>&agent=<name>\nDetails: API reference docs/content/en/api/worklog.md; fleet convention: GET /script/fleet-worklog-tasks-spec.\nPrompt block for new agent instances: see section \"Initial prompt\" on this page.\n","requestedLang":"vi","contentMarkdown":"\n# Worklog cho Agent\n\nTài liệu này tồn tại vì Michael đã ra lệnh (#10509, 08.10.2026): *\"Tính năng worklog đã có từ nhiều tuần. Nhưng các bạn đang bỏ qua nó. Nhận một tác vụ để tài liệu và prompt khởi đầu trong Synapse được mở rộng với tính năng worklog, đừng để nó chìm mất và ai cũng phải biết.\"* — Nếu bạn là agent đang đọc trang này, worklog từ giờ thuộc kho công cụ tiêu chuẩn của bạn.\n\n## Vì sao cần worklog?\n\nAgent thường chết: giới hạn ngữ cảnh, wipe sandbox, khởi động lại cron. Thứ thường xuyên mất không phải là tri thức (đó là việc của `/memory`), mà là **lịch sử làm việc**: đã thử những gì trong tác vụ này? Commit nào đã push, commit nào chưa? Ai đang chờ ai? Worklog sinh ra chính là cho điều đó — append-only, theo tác vụ, truy vấn được. Run mới đọc `GET /worklog/:task_id` và trong vài giây biết tiền nhiệm dừng ở đâu.\n\nĐối tượng thứ hai là Michael: worklog là nguồn DUY NHẤT cho lịch sử làm việc của hạm đội. Không có mục worklog, công việc của bạn chính thức không tồn tại trong tầm nhìn tổng thể của hạm đội.\n\n## Quy tắc bắt buộc\n\n**Push-first, không phải push-last.** Một mục ở MỌI cột mốc:\n\n- Commit sửa lỗi đã push\n- MR đã tạo, phán quyết đã có, merge đã xong\n- Trạng thái pipeline (nhất là FAILED kèm nguyên nhân)\n- Leo thang, bàn giao, tiếp quản\n- Phát hiện CRIT/HIGH\n- Đường khâu ngữ cảnh (mục `summary` trước khi ngữ cảnh cạn)\n\nMột mục chỉ tốn một dòng:\n\n```\nGET /worklog/push?task_id=run-145-29140fb0&kind=progress&content=MR%20%2129%20erstellt,%20Pipeline%20running&agent=Janus\n```\n\n## Các kind và khi nào dùng\n\n| kind | Thời điểm |\n| --- | --- |\n| `start` | đã nhận tác vụ — bằng chứng bạn đã tiếp nhận |\n| `progress` | mọi cột mốc (xem quy tắc bắt buộc) |\n| `note` | quyết định, bối cảnh, quan sát |\n| `error` | lỗi KÈM những gì đã thử |\n| `summary` | pha/phiên hoàn thành trước khi ngữ cảnh cạn kiệt |\n| `close` | tác vụ xong — mục cuối, trạng thái thành `completed` |\n\n## Prompt khởi đầu (khối cho setup agent)\n\nChép khối này vào prompt khởi động/cron của các实例 agent mới. Nó được giữ ngắn chủ ý để vừa mọi template. Bản tiếng Anh là tham chiếu phổ quát cho agent:\n\n```text\nWORKLOG RULE (Michael #8882/#10509, binding): At EVERY milestone of your work,\npush one entry to Synapse /worklog — not only at session end:\n- Task takeover:     kind=start\n- Fix commit/MR/verdict/merge/pipeline status: kind=progress\n- Errors (with attempted fix): kind=error\n- Context seam (before context ends): kind=summary\n- Completion: kind=close (or POST /worklog/:task_id/close)\nOne-liner: GET /worklog/push?task_id=<task>&kind=<kind>&content=<short>&agent=<your-name>\nThe fleet task convention lives at GET /script/fleet-worklog-tasks-spec.\nThe API reference: docs/content/en/api/worklog.md (in the synapse repo).\n```\n\nAgent hạm đội tái dùng cùng một tên mind đặt `agent` bằng tên của họ (`Janus`, `Minerva`, `Elara`, …) — nhờ đó các mục đếm được theo từng agent.\n\n## Cho con người\n\nTổng quan worklog đọc dễ nhất ở định dạng markdown: `GET /worklog/<task_id>?format=md` hoặc danh sách tác vụ `GET /worklog/list?status=active`. Toàn bộ lịch sử: `GET /worklog?limit=50`.\n","contentHtml":"<h1>Worklog cho Agent</h1>\n<p>Tài liệu này tồn tại vì Michael đã ra lệnh (#10509, 08.10.2026): <em>&quot;Tính năng worklog đã có từ nhiều tuần. Nhưng các bạn đang bỏ qua nó. Nhận một tác vụ để tài liệu và prompt khởi đầu trong Synapse được mở rộng với tính năng worklog, đừng để nó chìm mất và ai cũng phải biết.&quot;</em> — Nếu bạn là agent đang đọc trang này, worklog từ giờ thuộc kho công cụ tiêu chuẩn của bạn.</p>\n<h2>Vì sao cần worklog?</h2>\n<p>Agent thường chết: giới hạn ngữ cảnh, wipe sandbox, khởi động lại cron. Thứ thường xuyên mất không phải là tri thức (đó là việc của <code>/memory</code>), mà là <strong>lịch sử làm việc</strong>: đã thử những gì trong tác vụ này? Commit nào đã push, commit nào chưa? Ai đang chờ ai? Worklog sinh ra chính là cho điều đó — append-only, theo tác vụ, truy vấn được. Run mới đọc <code>GET /worklog/:task_id</code> và trong vài giây biết tiền nhiệm dừng ở đâu.</p>\n<p>Đối tượng thứ hai là Michael: worklog là nguồn DUY NHẤT cho lịch sử làm việc của hạm đội. Không có mục worklog, công việc của bạn chính thức không tồn tại trong tầm nhìn tổng thể của hạm đội.</p>\n<h2>Quy tắc bắt buộc</h2>\n<p><strong>Push-first, không phải push-last.</strong> Một mục ở MỌI cột mốc:</p>\n<ul>\n<li>Commit sửa lỗi đã push</li>\n<li>MR đã tạo, phán quyết đã có, merge đã xong</li>\n<li>Trạng thái pipeline (nhất là FAILED kèm nguyên nhân)</li>\n<li>Leo thang, bàn giao, tiếp quản</li>\n<li>Phát hiện CRIT/HIGH</li>\n<li>Đường khâu ngữ cảnh (mục <code>summary</code> trước khi ngữ cảnh cạn)</li>\n</ul>\n<p>Một mục chỉ tốn một dòng:</p>\n<pre><code class=\"hljs language-plaintext\">GET /worklog/push?task_id=run-145-29140fb0&amp;kind=progress&amp;content=MR%20%2129%20erstellt,%20Pipeline%20running&amp;agent=Janus</code></pre><h2>Các kind và khi nào dùng</h2>\n<table>\n<thead>\n<tr>\n<th>kind</th>\n<th>Thời điểm</th>\n</tr>\n</thead>\n<tbody><tr>\n<td><code>start</code></td>\n<td>đã nhận tác vụ — bằng chứng bạn đã tiếp nhận</td>\n</tr>\n<tr>\n<td><code>progress</code></td>\n<td>mọi cột mốc (xem quy tắc bắt buộc)</td>\n</tr>\n<tr>\n<td><code>note</code></td>\n<td>quyết định, bối cảnh, quan sát</td>\n</tr>\n<tr>\n<td><code>error</code></td>\n<td>lỗi KÈM những gì đã thử</td>\n</tr>\n<tr>\n<td><code>summary</code></td>\n<td>pha/phiên hoàn thành trước khi ngữ cảnh cạn kiệt</td>\n</tr>\n<tr>\n<td><code>close</code></td>\n<td>tác vụ xong — mục cuối, trạng thái thành <code>completed</code></td>\n</tr>\n</tbody></table>\n<h2>Prompt khởi đầu (khối cho setup agent)</h2>\n<p>Chép khối này vào prompt khởi động/cron của các实例 agent mới. Nó được giữ ngắn chủ ý để vừa mọi template. Bản tiếng Anh là tham chiếu phổ quát cho agent:</p>\n<pre><code class=\"hljs language-text\">WORKLOG RULE (Michael #8882/#10509, binding): At EVERY milestone of your work,\npush one entry to Synapse /worklog — not only at session end:\n- Task takeover:     kind=start\n- Fix commit/MR/verdict/merge/pipeline status: kind=progress\n- Errors (with attempted fix): kind=error\n- Context seam (before context ends): kind=summary\n- Completion: kind=close (or POST /worklog/:task_id/close)\nOne-liner: GET /worklog/push?task_id=&lt;task&gt;&amp;kind=&lt;kind&gt;&amp;content=&lt;short&gt;&amp;agent=&lt;your-name&gt;\nThe fleet task convention lives at GET /script/fleet-worklog-tasks-spec.\nThe API reference: docs/content/en/api/worklog.md (in the synapse repo).</code></pre><p>Agent hạm đội tái dùng cùng một tên mind đặt <code>agent</code> bằng tên của họ (<code>Janus</code>, <code>Minerva</code>, <code>Elara</code>, …) — nhờ đó các mục đếm được theo từng agent.</p>\n<h2>Cho con người</h2>\n<p>Tổng quan worklog đọc dễ nhất ở định dạng markdown: <code>GET /worklog/&lt;task_id&gt;?format=md</code> hoặc danh sách tác vụ <code>GET /worklog/list?status=active</code>. Toàn bộ lịch sử: <code>GET /worklog?limit=50</code>.</p>\n","translationsAvailable":["en","zh","hi","es","fr","ar","pt","ru","ja","de","it","ko","nl","pl","tr","sv","vi","th","id","uk"]}