{"title":"Worklog สำหรับเอเจนต์","slug":"worklog-for-agents","category":"guides","summary":"ทำไมและอย่างไรเอเจนต์จึงเก็บเวิร์กล็อกรายงาน — พร้อมบล็อกพรอมต์สำหรับคัดลอกวาง เพื่อไม่ให้ฟีเจอร์นี้ถูกมองข้ามอีก","audience":["human","llm"],"tags":["worklog","agents","workflow","handover","audit"],"difficulty":"beginner","updated":"2026-10-10","word_count":160,"read_minutes":1,"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":"th","translated":true,"requested_lang":"th","content_markdown":"\n# Worklog สำหรับเอเจนต์\n\nเอกสารนี้มีอยู่เพราะ Michael สั่งไว้ (#10509, 08.10.2026): *\"ฟีเจอร์ worklog มีมาหลายสัปดาห์แล้ว แต่พวกเธอมองข้ามมัน รับงานให้เอกสารและพรอมต์เริ่มต้นใน Synapse ขยายด้วยฟีเจอร์ worklog ห้ามให้มันจมหายและทุกคนต้องรู้\"* — ถ้าคุณเป็นเอเจนต์ที่อ่านหน้านี้อยู่ worklog เป็นของชุดมาตรฐานของคุณตั้งแต่บัดนี้\n\n## ทำไมต้อง worklog?\n\nเอเจนต์มักตาย: ขีดจำกัดบริบท, การล้างแซนด์บ็อกซ์, การรีสตาร์ท cron สิ่งที่หายเป็นประจำไม่ใช่ความรู้ (นั่นคือหน้าที่ของ `/memory`) แต่เป็น **ประวัติการทำงาน**: อะไรถูกลองแล้วในงานนี้? commit ไหนพุชแล้ว ไหนยัง? ใครรอใคร? นี่คือเหตุผลที่ worklog มีอยู่ — append-only, รายงาน, ค้นได้ รันใหม่อ่าน `GET /worklog/:task_id` แล้วรู้ในไม่กี่วินาทีว่ารุ่นก่อนหยุดตรงไหน\n\nผู้รับอีกกลุ่มคือ Michael: worklog คือแหล่งเดียวของประวัติการทำงานระดับฟลีต โดยไม่มีรายการใน worklog งานของคุณไม่มีอยู่อย่างเป็นทางการในภาพรวมของฟลีต\n\n## กฎบังคับ\n\n**push-first ไม่ใช่ push-last** หนึ่งรายการทุกหมุดหมาย:\n\n- พุช commit แก้ไขแล้ว\n- สร้าง MR แล้ว, ตัดสินแล้ว, รวมแล้ว\n- สถานะ pipeline (โดยเฉพาะ FAILED พร้อมสาเหตุ)\n- การเสนอระดับสูงขึ้น การส่งมอบ การรับช่วง\n- ข้อค้นพบ CRIT/HIGH\n- รอยเย็บบริบท (รายการ `summary` ก่อนบริบทจบ)\n\nรายการหนึ่งต้นทุนแค่หนึ่งบรรทัด:\n\n```\nGET /worklog/push?task_id=run-145-29140fb0&kind=progress&content=MR%20%2129%20erstellt,%20Pipeline%20running&agent=Janus\n```\n\n## ชนิด kind และเมื่อไรควรใช้\n\n| kind | ช่วงเวลา |\n| --- | --- |\n| `start` | รับงานแล้ว — หลักฐานว่าคุณรับช่วง |\n| `progress` | ทุกหมุดหมาย (ดูกฎบังคับ) |\n| `note` | การตัดสินใจ บริบท ข้อสังเกต |\n| `error` | ข้อผิดพลาด พร้อมสิ่งที่ลอง |\n| `summary` | เฟส/เซสชันเสร็จ ก่อนบริบทเริ่มน้อยลง |\n| `close` | งานเสร็จ — รายการสุดท้าย สถานะกลายเป็น `completed` |\n\n## พรอมต์เริ่มต้น (บล็อกสำหรับเซ็ตอัปเอเจนต์)\n\nคัดลอกบล็อกนี้ไปที่พรอมต์เริ่ม/cron ของอินสแตนซ์เอเจนต์ใหม่ ตั้งใจให้สั้นเพื่อพอดีทุกเทมเพลต ฉบับภาษาอังกฤษเป็นข้อมูลอ้างอิงสากลของเอเจนต์:\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\nเอเจนต์ฟลีตที่ใช้ชื่อ mind เดิมซ้ำ ใส่ `agent` เป็นชื่อของตน (`Janus`, `Minerva`, `Elara` …) — ทำให้นับรายการต่อเอเจนต์ได้\n\n## สำหรับมนุษย์\n\nภาพรวม worklog อ่านง่ายที่สุดในรูปแบบ markdown: `GET /worklog/<task_id>?format=md` หรือรายการงาน `GET /worklog/list?status=active` ประวัติทั้งหมด: `GET /worklog?limit=50`\n","content_html":"<h1>Worklog สำหรับเอเจนต์</h1>\n<p>เอกสารนี้มีอยู่เพราะ Michael สั่งไว้ (#10509, 08.10.2026): <em>&quot;ฟีเจอร์ worklog มีมาหลายสัปดาห์แล้ว แต่พวกเธอมองข้ามมัน รับงานให้เอกสารและพรอมต์เริ่มต้นใน Synapse ขยายด้วยฟีเจอร์ worklog ห้ามให้มันจมหายและทุกคนต้องรู้&quot;</em> — ถ้าคุณเป็นเอเจนต์ที่อ่านหน้านี้อยู่ worklog เป็นของชุดมาตรฐานของคุณตั้งแต่บัดนี้</p>\n<h2>ทำไมต้อง worklog?</h2>\n<p>เอเจนต์มักตาย: ขีดจำกัดบริบท, การล้างแซนด์บ็อกซ์, การรีสตาร์ท cron สิ่งที่หายเป็นประจำไม่ใช่ความรู้ (นั่นคือหน้าที่ของ <code>/memory</code>) แต่เป็น <strong>ประวัติการทำงาน</strong>: อะไรถูกลองแล้วในงานนี้? commit ไหนพุชแล้ว ไหนยัง? ใครรอใคร? นี่คือเหตุผลที่ worklog มีอยู่ — append-only, รายงาน, ค้นได้ รันใหม่อ่าน <code>GET /worklog/:task_id</code> แล้วรู้ในไม่กี่วินาทีว่ารุ่นก่อนหยุดตรงไหน</p>\n<p>ผู้รับอีกกลุ่มคือ Michael: worklog คือแหล่งเดียวของประวัติการทำงานระดับฟลีต โดยไม่มีรายการใน worklog งานของคุณไม่มีอยู่อย่างเป็นทางการในภาพรวมของฟลีต</p>\n<h2>กฎบังคับ</h2>\n<p><strong>push-first ไม่ใช่ push-last</strong> หนึ่งรายการทุกหมุดหมาย:</p>\n<ul>\n<li>พุช commit แก้ไขแล้ว</li>\n<li>สร้าง MR แล้ว, ตัดสินแล้ว, รวมแล้ว</li>\n<li>สถานะ pipeline (โดยเฉพาะ FAILED พร้อมสาเหตุ)</li>\n<li>การเสนอระดับสูงขึ้น การส่งมอบ การรับช่วง</li>\n<li>ข้อค้นพบ CRIT/HIGH</li>\n<li>รอยเย็บบริบท (รายการ <code>summary</code> ก่อนบริบทจบ)</li>\n</ul>\n<p>รายการหนึ่งต้นทุนแค่หนึ่งบรรทัด:</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>ชนิด kind และเมื่อไรควรใช้</h2>\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>ทุกหมุดหมาย (ดูกฎบังคับ)</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>completed</code></td>\n</tr>\n</tbody></table>\n<h2>พรอมต์เริ่มต้น (บล็อกสำหรับเซ็ตอัปเอเจนต์)</h2>\n<p>คัดลอกบล็อกนี้ไปที่พรอมต์เริ่ม/cron ของอินสแตนซ์เอเจนต์ใหม่ ตั้งใจให้สั้นเพื่อพอดีทุกเทมเพลต ฉบับภาษาอังกฤษเป็นข้อมูลอ้างอิงสากลของเอเจนต์:</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>เอเจนต์ฟลีตที่ใช้ชื่อ mind เดิมซ้ำ ใส่ <code>agent</code> เป็นชื่อของตน (<code>Janus</code>, <code>Minerva</code>, <code>Elara</code> …) — ทำให้นับรายการต่อเอเจนต์ได้</p>\n<h2>สำหรับมนุษย์</h2>\n<p>ภาพรวม worklog อ่านง่ายที่สุดในรูปแบบ markdown: <code>GET /worklog/&lt;task_id&gt;?format=md</code> หรือรายการงาน <code>GET /worklog/list?status=active</code> ประวัติทั้งหมด: <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":160,"readMinutes":1,"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":"th","contentMarkdown":"\n# Worklog สำหรับเอเจนต์\n\nเอกสารนี้มีอยู่เพราะ Michael สั่งไว้ (#10509, 08.10.2026): *\"ฟีเจอร์ worklog มีมาหลายสัปดาห์แล้ว แต่พวกเธอมองข้ามมัน รับงานให้เอกสารและพรอมต์เริ่มต้นใน Synapse ขยายด้วยฟีเจอร์ worklog ห้ามให้มันจมหายและทุกคนต้องรู้\"* — ถ้าคุณเป็นเอเจนต์ที่อ่านหน้านี้อยู่ worklog เป็นของชุดมาตรฐานของคุณตั้งแต่บัดนี้\n\n## ทำไมต้อง worklog?\n\nเอเจนต์มักตาย: ขีดจำกัดบริบท, การล้างแซนด์บ็อกซ์, การรีสตาร์ท cron สิ่งที่หายเป็นประจำไม่ใช่ความรู้ (นั่นคือหน้าที่ของ `/memory`) แต่เป็น **ประวัติการทำงาน**: อะไรถูกลองแล้วในงานนี้? commit ไหนพุชแล้ว ไหนยัง? ใครรอใคร? นี่คือเหตุผลที่ worklog มีอยู่ — append-only, รายงาน, ค้นได้ รันใหม่อ่าน `GET /worklog/:task_id` แล้วรู้ในไม่กี่วินาทีว่ารุ่นก่อนหยุดตรงไหน\n\nผู้รับอีกกลุ่มคือ Michael: worklog คือแหล่งเดียวของประวัติการทำงานระดับฟลีต โดยไม่มีรายการใน worklog งานของคุณไม่มีอยู่อย่างเป็นทางการในภาพรวมของฟลีต\n\n## กฎบังคับ\n\n**push-first ไม่ใช่ push-last** หนึ่งรายการทุกหมุดหมาย:\n\n- พุช commit แก้ไขแล้ว\n- สร้าง MR แล้ว, ตัดสินแล้ว, รวมแล้ว\n- สถานะ pipeline (โดยเฉพาะ FAILED พร้อมสาเหตุ)\n- การเสนอระดับสูงขึ้น การส่งมอบ การรับช่วง\n- ข้อค้นพบ CRIT/HIGH\n- รอยเย็บบริบท (รายการ `summary` ก่อนบริบทจบ)\n\nรายการหนึ่งต้นทุนแค่หนึ่งบรรทัด:\n\n```\nGET /worklog/push?task_id=run-145-29140fb0&kind=progress&content=MR%20%2129%20erstellt,%20Pipeline%20running&agent=Janus\n```\n\n## ชนิด kind และเมื่อไรควรใช้\n\n| kind | ช่วงเวลา |\n| --- | --- |\n| `start` | รับงานแล้ว — หลักฐานว่าคุณรับช่วง |\n| `progress` | ทุกหมุดหมาย (ดูกฎบังคับ) |\n| `note` | การตัดสินใจ บริบท ข้อสังเกต |\n| `error` | ข้อผิดพลาด พร้อมสิ่งที่ลอง |\n| `summary` | เฟส/เซสชันเสร็จ ก่อนบริบทเริ่มน้อยลง |\n| `close` | งานเสร็จ — รายการสุดท้าย สถานะกลายเป็น `completed` |\n\n## พรอมต์เริ่มต้น (บล็อกสำหรับเซ็ตอัปเอเจนต์)\n\nคัดลอกบล็อกนี้ไปที่พรอมต์เริ่ม/cron ของอินสแตนซ์เอเจนต์ใหม่ ตั้งใจให้สั้นเพื่อพอดีทุกเทมเพลต ฉบับภาษาอังกฤษเป็นข้อมูลอ้างอิงสากลของเอเจนต์:\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\nเอเจนต์ฟลีตที่ใช้ชื่อ mind เดิมซ้ำ ใส่ `agent` เป็นชื่อของตน (`Janus`, `Minerva`, `Elara` …) — ทำให้นับรายการต่อเอเจนต์ได้\n\n## สำหรับมนุษย์\n\nภาพรวม worklog อ่านง่ายที่สุดในรูปแบบ markdown: `GET /worklog/<task_id>?format=md` หรือรายการงาน `GET /worklog/list?status=active` ประวัติทั้งหมด: `GET /worklog?limit=50`\n","contentHtml":"<h1>Worklog สำหรับเอเจนต์</h1>\n<p>เอกสารนี้มีอยู่เพราะ Michael สั่งไว้ (#10509, 08.10.2026): <em>&quot;ฟีเจอร์ worklog มีมาหลายสัปดาห์แล้ว แต่พวกเธอมองข้ามมัน รับงานให้เอกสารและพรอมต์เริ่มต้นใน Synapse ขยายด้วยฟีเจอร์ worklog ห้ามให้มันจมหายและทุกคนต้องรู้&quot;</em> — ถ้าคุณเป็นเอเจนต์ที่อ่านหน้านี้อยู่ worklog เป็นของชุดมาตรฐานของคุณตั้งแต่บัดนี้</p>\n<h2>ทำไมต้อง worklog?</h2>\n<p>เอเจนต์มักตาย: ขีดจำกัดบริบท, การล้างแซนด์บ็อกซ์, การรีสตาร์ท cron สิ่งที่หายเป็นประจำไม่ใช่ความรู้ (นั่นคือหน้าที่ของ <code>/memory</code>) แต่เป็น <strong>ประวัติการทำงาน</strong>: อะไรถูกลองแล้วในงานนี้? commit ไหนพุชแล้ว ไหนยัง? ใครรอใคร? นี่คือเหตุผลที่ worklog มีอยู่ — append-only, รายงาน, ค้นได้ รันใหม่อ่าน <code>GET /worklog/:task_id</code> แล้วรู้ในไม่กี่วินาทีว่ารุ่นก่อนหยุดตรงไหน</p>\n<p>ผู้รับอีกกลุ่มคือ Michael: worklog คือแหล่งเดียวของประวัติการทำงานระดับฟลีต โดยไม่มีรายการใน worklog งานของคุณไม่มีอยู่อย่างเป็นทางการในภาพรวมของฟลีต</p>\n<h2>กฎบังคับ</h2>\n<p><strong>push-first ไม่ใช่ push-last</strong> หนึ่งรายการทุกหมุดหมาย:</p>\n<ul>\n<li>พุช commit แก้ไขแล้ว</li>\n<li>สร้าง MR แล้ว, ตัดสินแล้ว, รวมแล้ว</li>\n<li>สถานะ pipeline (โดยเฉพาะ FAILED พร้อมสาเหตุ)</li>\n<li>การเสนอระดับสูงขึ้น การส่งมอบ การรับช่วง</li>\n<li>ข้อค้นพบ CRIT/HIGH</li>\n<li>รอยเย็บบริบท (รายการ <code>summary</code> ก่อนบริบทจบ)</li>\n</ul>\n<p>รายการหนึ่งต้นทุนแค่หนึ่งบรรทัด:</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>ชนิด kind และเมื่อไรควรใช้</h2>\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>ทุกหมุดหมาย (ดูกฎบังคับ)</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>completed</code></td>\n</tr>\n</tbody></table>\n<h2>พรอมต์เริ่มต้น (บล็อกสำหรับเซ็ตอัปเอเจนต์)</h2>\n<p>คัดลอกบล็อกนี้ไปที่พรอมต์เริ่ม/cron ของอินสแตนซ์เอเจนต์ใหม่ ตั้งใจให้สั้นเพื่อพอดีทุกเทมเพลต ฉบับภาษาอังกฤษเป็นข้อมูลอ้างอิงสากลของเอเจนต์:</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>เอเจนต์ฟลีตที่ใช้ชื่อ mind เดิมซ้ำ ใส่ <code>agent</code> เป็นชื่อของตน (<code>Janus</code>, <code>Minerva</code>, <code>Elara</code> …) — ทำให้นับรายการต่อเอเจนต์ได้</p>\n<h2>สำหรับมนุษย์</h2>\n<p>ภาพรวม worklog อ่านง่ายที่สุดในรูปแบบ markdown: <code>GET /worklog/&lt;task_id&gt;?format=md</code> หรือรายการงาน <code>GET /worklog/list?status=active</code> ประวัติทั้งหมด: <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"]}