---
read_when:
    - คุณต้องการกระดานงานแบบ Kanban ใน Control UI
    - คุณกำลังเปิดหรือปิดใช้งาน Plugin Workboard ที่รวมมาให้
    - คุณต้องการติดตามงานของเอเจนต์ที่วางแผนไว้โดยไม่ใช้เครื่องมือจัดการโครงการภายนอก
summary: เวิร์กบอร์ดแดชบอร์ดเสริมสำหรับการ์ดที่เอเจนต์เป็นเจ้าของและการส่งต่อเซสชัน
title: Plugin กระดานงาน
x-i18n:
    generated_at: "2026-07-19T18:18:05Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    prompt_version: 32
    provider: openai
    source_hash: 38f138584fed2d052ed45798c38a342fd9fe08eddf4fef9f73c52353f4b0ded2
    source_path: plugins/workboard.md
    workflow: 16
---

Plugin Workboard เพิ่มบอร์ดสไตล์ Kanban ที่เป็นตัวเลือกให้กับ
[Control UI](/th/web/control-ui): การ์ดงานขนาดเหมาะกับเอเจนต์ การมอบหมายให้เอเจนต์
และลิงก์กลับไปยังงาน การรัน และเซสชันแดชบอร์ดของการ์ด

Workboard ได้รับการออกแบบให้มีขนาดเล็กโดยตั้งใจ โดยติดตามงานปฏิบัติการภายในเครื่องสำหรับ
OpenClaw Gateway หนึ่งตัว ไม่ได้มีไว้แทน GitHub Issues, Linear, Jira หรือ
ระบบจัดการโครงการของทีมอื่นๆ

## เปิดใช้งาน

Workboard รวมมาให้แล้วแต่ปิดใช้งานเป็นค่าเริ่มต้น:

1. เปิด **Plugins** ใน Control UI หรือใช้ `/settings/plugins` โดยอิงตาม
   พาธฐานของ Control UI ที่กำหนดค่าไว้ ตัวอย่างเช่น พาธฐาน `/openclaw`
   จะใช้ `/openclaw/settings/plugins`
2. ค้นหา **Workboard** แล้วเลือก **Enable** เนื่องจาก Workboard รวมอยู่ใน
   OpenClaw แล้ว จึงไม่ต้องใช้การดำเนินการ **Install**
3. หาก UI แจ้งว่าต้องรีสตาร์ต ให้รีสตาร์ต Gateway

แท็บ Workboard จะปรากฏในแถบนำทางของแดชบอร์ดหลังจากรันไทม์ของ Plugin โหลดเสร็จ
ขณะที่ปิดใช้งาน แท็บนี้จะถูกซ่อนจากการนำทาง การเปิดเส้นทาง
`/workboard` โดยตรงขณะที่ Plugin ปิดใช้งานหรือถูกบล็อกโดย
`plugins.allow`/`plugins.deny` จะแสดงสถานะว่า Plugin ไม่พร้อมใช้งานแทนข้อมูล
การ์ด

ขั้นตอน CLI ที่เทียบเท่ากันคือ:

```bash
openclaw plugins enable workboard
openclaw gateway restart
openclaw dashboard
```

## การกำหนดค่า

Workboard ไม่มีการกำหนดค่าเฉพาะสำหรับ Plugin ให้เปิด/ปิดใช้งานด้วยรายการ
Plugin มาตรฐาน:

```json5
{
  plugins: {
    entries: {
      workboard: {
        enabled: true,
        config: {},
      },
    },
  },
}
```

```bash
openclaw plugins disable workboard
openclaw gateway restart
```

## ฟิลด์ของการ์ด

| ฟิลด์       | ค่า                                                                                                        |
| ----------- | ------------------------------------------------------------------------------------------------------------- |
| `status`    | `triage`, `backlog`, `todo`, `scheduled`, `ready`, `running`, `review`, `blocked`, `done`                     |
| `priority`  | `low`, `normal`, `high`, `urgent`                                                                             |
| `labels`    | สตริงรูปแบบอิสระ                                                                                             |
| `agentId`   | เอเจนต์ที่มอบหมายซึ่งระบุหรือไม่ก็ได้                                                                                       |
| การอ้างอิงที่ลิงก์ไว้ | งาน การรัน เซสชัน หรือ URL ต้นทางที่ระบุหรือไม่ก็ได้                                                                    |
| `execution` | เมตาดาทาที่ระบุหรือไม่ก็ได้สำหรับการรัน Codex/Claude ที่เริ่มจากการ์ด (เอนจิน โหมด โมเดล เซสชัน การรัน id สถานะ) |

นอกจากนี้ การ์ดยังมีเมตาดาทาแบบกระชับสำหรับความพยายาม ความคิดเห็น ลิงก์ หลักฐาน
อาร์ติแฟกต์ การตั้งค่าระบบอัตโนมัติ ไฟล์แนบ บันทึกของเวิร์กเกอร์ สถานะโปรโตคอล
ของเวิร์กเกอร์ การอ้างสิทธิ์ การวินิจฉัย การแจ้งเตือน id เทมเพลต สถานะการเก็บถาวร และ
การตรวจหาเซสชันที่ล้าสมัย รวมถึงรายการเหตุการณ์ล่าสุด (`created`, `edited`,
`moved`, `linked`, `specified`, `decomposed`, `claimed`, `heartbeat`,
`execution_updated`, `attempt_started`, `attempt_updated`, `comment_added`,
`link_added`, `proof_added`, `artifact_added`, `attachment_added`,
`diagnostic`, `notification`, `dispatch`, `orchestration`,
`protocol_violation`, `archived`, `unarchived`, `stale`) เมตาดาทานี้ช่วยให้
ผู้ปฏิบัติงานดูได้ว่าการ์ดเคลื่อนผ่านบอร์ดอย่างไรโดยไม่ต้องเปิดเซสชันที่ลิงก์ไว้
เมตาดาทานี้เป็นบริบทการปฏิบัติงานภายในเครื่อง ไม่ใช่สิ่งทดแทนข้อความถอดเสียงของ
เซสชันหรือประวัติ GitHub issue

Plugin และ Control UI ใช้สัญญาการ์ด Workboard เดียวกัน ดังนั้นการรีเฟรชแดชบอร์ด
จึงคงที่มาและสิทธิ์กำกับของเวิร์กสเปซ สถานะการอ้างสิทธิ์ การดำเนินการวินิจฉัย
และหมายเลขลำดับการแจ้งเตือน แทนที่จะฉายสำเนาการ์ดขนาดเล็กกว่าที่ใช้เฉพาะ
UI ระบบจะเพิกเฉยต่อชนิดการวินิจฉัย ระดับความรุนแรงของการวินิจฉัย และ
ชนิดการแจ้งเตือนที่ไม่รู้จัก จนกว่าทั้งสองส่วนจะรองรับ โดยจะไม่เขียนค่าเหล่านี้
ใหม่ให้เป็นสถานะอื่นที่ถูกต้อง

แดชบอร์ดที่เปิดอยู่จะอัปเดตจากการทำให้ `plugin.workboard.changed` ใช้ไม่ได้ แต่ละ
เหตุการณ์มีเพียงยุคและหมายเลขแก้ไขของที่เก็บ จากนั้น UI จะอ่านการ์ดฉบับมาตรฐาน
อีกครั้งผ่าน RPC `operator.read` ตามปกติ หมายเลขแก้ไขหลายรายการจะถูกรวมเป็น
การอ่านติดตามผลครั้งเดียว Workboard จะเลื่อนการอ่านนั้นออกไปขณะที่กำลังลาก
แก้ไข หรือเขียนการ์ด แล้วดำเนินการต่อหลังจากการโต้ตอบภายในเครื่องเสร็จสิ้น
การเชื่อมต่อใหม่จะโหลดข้อมูลฉบับมาตรฐานอีกครั้งเสมอ ไม่มีการสำรวจข้อมูลการ์ด
ทั้งหมดเป็นกิจวัตร และ **Refresh** ยังคงพร้อมใช้สำหรับการกู้คืนด้วยตนเอง

เมื่อมีมากกว่าหนึ่งบอร์ด แถบเครื่องมือจะมีตัวกรอง **Board** ซึ่งอิงกับ
เมตาดาทาของบอร์ดที่จัดเก็บถาวร แทนที่จะอิงเฉพาะการ์ดที่มองเห็นอยู่ในขณะนั้น
ดังนั้นจึงยังเลือกบอร์ดที่ว่างและบอร์ดที่เก็บถาวรได้ การ์ดที่ไม่มี
id บอร์ดอย่างชัดเจนจะอยู่ในบอร์ดฉบับมาตรฐาน `default` บอร์ดที่เลือกจะถูกจัดเก็บ
ในพารามิเตอร์คิวรี `?board=` จึงสามารถบุ๊กมาร์กหรือแชร์ URL ของ Workboard
ที่กรองแล้วได้ การเลือก **All boards** จะลบพารามิเตอร์นี้

การ์ดจะถูกจัดเก็บในสถานะ Gateway ของ Plugin เอง และย้ายไปพร้อมกับสถานะ
OpenClaw ส่วนที่เหลือของ Gateway นั้น (ดู [พื้นที่จัดเก็บ](#storage))

## การเริ่มงานจากการ์ด

การ์ดที่ยังไม่ได้ลิงก์สามารถเริ่มงานได้โดยตรง:

- **Run Codex** / **Run Claude** เริ่มการรันเอเจนต์ที่มีการติดตามงานด้วย
  เอนจินที่ระบุอย่างชัดเจน ส่งพรอมต์ของการ์ด และทำเครื่องหมายการ์ดเป็น `running` การรัน Codex
  ใช้ `openai/gpt-5.6-sol`; การรัน Claude ใช้ `anthropic/claude-sonnet-4-6`
- **Open Codex** / **Open Claude** สร้างเซสชันแดชบอร์ดที่ลิงก์ไว้โดยไม่
  ส่งพรอมต์ของการ์ดหรือย้ายการ์ด สำหรับงานแบบดำเนินการเองที่ยังคง
  เชื่อมโยงกับบอร์ด

การเริ่มแบบอัตโนมัติใช้เส้นทางการรันเอเจนต์ที่มีการติดตามงานของ Gateway
(ใช้เอเจนต์และโมเดลเริ่มต้น เว้นแต่จะเลือก Codex/Claude อย่างชัดเจน) จากนั้น Workboard
จะลิงก์งานที่ได้ id การรัน และคีย์เซสชันกลับไปยังการ์ด การดำเนินการที่ลิงก์ไว้
แต่ละครั้งยังบันทึกสรุปความพยายาม (เอนจิน โหมด โมเดล id การรัน
การประทับเวลา สถานะ จำนวนความล้มเหลวสะสม) เพื่อให้ยังมองเห็นความล้มเหลวซ้ำๆ ได้

แดชบอร์ดจะรีเฟรชสถานะงานจากบัญชีแยกประเภทงานของ Gateway โดยจับคู่งาน
กับการ์ดตาม id งาน id การรัน หรือคีย์เซสชันที่ลิงก์ไว้ งานที่อยู่ในคิว/กำลังทำงาน
จะทำให้วงจรชีวิตของการ์ดยังคงทำงานอยู่ ส่วนงานที่เสร็จสิ้น ล้มเหลว หมดเวลา หรือ
ถูกยกเลิกจะย้ายการ์ดไปยัง `review` หรือ `blocked` โดยใช้กฎการซิงค์เดียวกัน
กับเซสชันที่ลิงก์ไว้ (ดู [การซิงค์วงจรชีวิตของเซสชัน](#session-lifecycle-sync))

## เครื่องมือเอเจนต์

| เครื่องมือ                                                                                                                                             | วัตถุประสงค์                                                                                                                                                                                   |
| ------------------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `workboard_list`                                                                                                                                 | แสดงรายการการ์ดแบบย่อพร้อมสถานะการอ้างสิทธิ์/การวินิจฉัย และกรองตามบอร์ดได้ตามต้องการ                                                                                                                    |
| `workboard_read`                                                                                                                                 | ส่งคืนการ์ดหนึ่งใบพร้อมบริบทของผู้ปฏิบัติงานที่จำกัดขอบเขต (บันทึก ความพยายาม ความคิดเห็น ลิงก์ หลักฐาน อาร์ติแฟกต์ ผลลัพธ์ของรายการแม่ งานล่าสุดของผู้รับมอบหมาย และการวินิจฉัยที่ทำงานอยู่)                               |
| `workboard_create`                                                                                                                               | สร้างการ์ดโดยกำหนดรายการแม่ ผู้เช่า Skills บอร์ด เมทาดาทาของเวิร์กสเปซ คีย์ idempotency ขีดจำกัดรันไทม์ และงบประมาณการลองใหม่ได้ตามต้องการ                                                             |
| `workboard_link`                                                                                                                                 | เชื่อมโยงการ์ดแม่กับการ์ดลูก การ์ดลูกจะคงอยู่ในสถานะ `todo` จนกว่าการ์ดแม่ทุกรายการจะถึง `done` จากนั้นการเลื่อนขั้นโดยการจัดส่งจะย้ายการ์ดเหล่านั้นไปยัง `ready`                                                     |
| `workboard_claim`                                                                                                                                | อ้างสิทธิ์การ์ดสำหรับเอเจนต์ที่เรียกใช้ และย้าย `backlog`/`todo`/`ready` ไปยัง `running`                                                                                                        |
| `workboard_heartbeat`                                                                                                                            | รีเฟรช Heartbeat ของการอ้างสิทธิ์ระหว่างการทำงานที่ใช้เวลานานกว่า                                                                                                                                          |
| `workboard_release`                                                                                                                              | ปลดการอ้างสิทธิ์หลังเสร็จสิ้น หยุดพัก หรือส่งมอบงาน และสามารถย้ายการ์ดไปยังสถานะถัดไปได้                                                                                                |
| `workboard_complete` / `workboard_block`                                                                                                         | เครื่องมือวงจรชีวิตแบบมีโครงสร้างสำหรับสรุปขั้นสุดท้าย หลักฐาน อาร์ติแฟกต์ และรายการการ์ดที่สร้างขึ้น (ต้องอ้างอิงการ์ดที่เชื่อมโยงกลับมายังการ์ดที่เสร็จสมบูรณ์) หรือเหตุผลที่ขัดขวางการทำงาน                 |
| `workboard_attachment_add` / `workboard_attachment_read` / `workboard_attachment_delete`                                                         | จัดเก็บไฟล์แนบขนาดเล็กของการ์ดในสถานะ SQLite ของ Plugin ทำดัชนีบนการ์ด และแสดงในบริบทของผู้ปฏิบัติงาน                                                                                         |
| `workboard_worker_log` / `workboard_protocol_violation`                                                                                          | บันทึกบรรทัดล็อกของผู้ปฏิบัติงานและบล็อกการ์ดเมื่อผู้ปฏิบัติงานอัตโนมัติหยุดโดยไม่เรียก `workboard_complete`/`workboard_block`                                                           |
| `workboard_board_create` / `workboard_board_archive` / `workboard_board_delete`                                                                  | จัดการเมทาดาทาของบอร์ดที่บันทึกถาวร (ชื่อที่แสดง คำอธิบาย สถานะการเก็บถาวร และเวิร์กสเปซเริ่มต้น)                                                                                            |
| `workboard_runs`                                                                                                                                 | ส่งคืนประวัติความพยายามรันที่บันทึกถาวรสำหรับการ์ด                                                                                                                                      |
| `workboard_specify`                                                                                                                              | เปลี่ยนการ์ดคัดกรอง/แบ็กล็อกแบบคร่าว ๆ ให้เป็นการ์ด `todo` ที่ชัดเจนขึ้น และบันทึกสรุปข้อกำหนดไว้ในการ์ด                                                                                      |
| `workboard_decompose`                                                                                                                            | แตกการ์ดควบคุมงานแม่ออกเป็นการ์ดลูกที่เชื่อมโยงกัน โดยสืบทอดเมทาดาทาของบอร์ด/ผู้เช่า และสามารถทำให้การ์ดแม่เสร็จสมบูรณ์พร้อมรายการการ์ดที่สร้างขึ้น                                             |
| `workboard_notify_subscribe` / `workboard_notify_list` / `workboard_notify_events` / `workboard_notify_advance` / `workboard_notify_unsubscribe` | จัดการการสมัครรับการแจ้งเตือน การอ่านเหตุการณ์สามารถเล่นซ้ำได้อย่างปลอดภัย ส่วน `advance` จะเลื่อนเคอร์เซอร์ถาวรเพื่อให้ผู้เรียกทำงานต่อได้โดยไม่สูญเสียหรืออ่านเหตุการณ์การ์ดที่เสร็จสิ้น/ล้มเหลว/ค้างซ้ำ |
| `workboard_boards` / `workboard_stats`                                                                                                           | ตรวจสอบเนมสเปซของบอร์ดและสถิติคิว                                                                                                                                                 |
| `workboard_promote` / `workboard_reassign` / `workboard_reclaim`                                                                                 | กู้คืนหรือส่งมอบงานที่ติดค้าง                                                                                                                                                           |
| `workboard_comment` / `workboard_proof`                                                                                                          | เพิ่มบันทึกการส่งมอบงานหรือแนบข้อมูลอ้างอิงหลักฐาน/อาร์ติแฟกต์                                                                                                                                    |
| `workboard_unblock`                                                                                                                              | ย้ายงานที่ถูกบล็อกกลับไปยัง `todo`                                                                                                                                                         |
| `workboard_move`                                                                                                                                 | ย้ายการ์ดไปยังสถานะอื่น โดยการ์ดที่ถูกอ้างสิทธิ์กำหนดให้ผู้เรียกต้องมีขอบเขตการอ้างสิทธิ์ของเอเจนต์                                                                                                      |
| `workboard_dispatch`                                                                                                                             | กระตุ้นการเลื่อนขั้นตามการขึ้นต่อกันหรือการล้างการอ้างสิทธิ์ที่ค้างโดยไม่เปิดใช้ผู้ปฏิบัติงาน ส่วนการเปิดใช้ผู้ปฏิบัติงานใช้การจัดส่งผ่าน Gateway หรือคำสั่งแบบเครื่องหมายทับ                                                        |

สถานะหลักฐานเป็นผลลัพธ์ที่ผู้ปฏิบัติงานรายงาน ไม่ใช่การตรวจสอบอิสระ รายการ `passed`
หมายความว่าผู้ปฏิบัติงานรายงานว่าคำสั่งหรือการตรวจสอบของตนสำเร็จ ผู้ใช้งานที่ต้องการ
เกณฑ์คุณภาพแบบอิสระควรตรวจสอบคำสั่ง URL หรืออาร์ติแฟกต์ที่แนบมา และ
เรียกใช้ตัวตรวจสอบของตนเอง `workboard_proof` จะส่งคืน `proofId` ของระเบียนใหม่ เมื่อ
`workboard_complete` รายงานสถานะสิ้นสุดของหลักฐานเดียวกันนั้น ให้ส่ง `proofId` เพื่อให้
ระเบียนที่รอดำเนินการได้รับการแก้ไข ณ ตำแหน่งเดิมโดยไม่สูญเสียข้อมูลประจำตัวหรือการประทับเวลา หลักฐานที่
มีสถานะสิ้นสุดเดียวกันอยู่แล้วจะถูกนำกลับมาใช้โดยไม่เปลี่ยนแปลง หลักฐานการเสร็จสมบูรณ์ที่ไม่มี
`proofId` จะยังคงเป็นแบบเพิ่มต่อท้ายเท่านั้น ดังนั้นการลองใหม่ในภายหลังจึงไม่สามารถเขียนทับประวัติเก่าเพียงเพราะ
คำสั่งหรือบันทึกเหมือนกัน

การ์ดที่ถูกอ้างสิทธิ์จะปฏิเสธการแก้ไขผ่านเครื่องมือเอเจนต์จากเอเจนต์อื่น เว้นแต่ผู้เรียก
จะถือโทเค็นการอ้างสิทธิ์ที่ `workboard_claim` ส่งคืน การ์ดทุกใบที่ส่งคืนโดย
เครื่องมือเอเจนต์หรือการเรียก Gateway RPC จะปกปิด `metadata.claim.token` เป็น `[redacted]`
(ตัวโทเค็นจะถูกส่งคืนเพียงครั้งเดียวที่ระดับบนสุดจาก `workboard_claim` เท่านั้น)
เพื่อให้ผู้ดูแลแดชบอร์ดและเอเจนต์อื่นตรวจสอบสถานะการอ้างสิทธิ์ได้โดยไม่เคย
เห็นโทเค็นที่ใช้งานได้ การกู้คืนดำเนินการผ่าน
`workboard_promote`/`workboard_reassign`/`workboard_reclaim` ซึ่ง
ไม่ต้องใช้โทเค็น

## การจัดส่ง

การจัดส่งทำงานภายใน Gateway โดยไม่สร้างโพรเซส OS ใด ๆ ตามอำเภอใจ เซสชันเอเจนต์ย่อย
ตามปกติของ OpenClaw ยังคงเป็นเจ้าของการดำเนินการ การจัดส่งหนึ่งรอบจะ:

1. เลื่อนขั้นการ์ดที่การขึ้นต่อกันพร้อมแล้ว
2. บันทึกเมทาดาทาการจัดส่งในการ์ดที่พร้อม
3. บล็อกการอ้างสิทธิ์ที่หมดอายุหรือการรันที่หมดเวลา
4. ทำเครื่องหมายการ์ดคัดกรองที่กำหนดค่าโดยบอร์ดเป็นตัวเลือกสำหรับการควบคุมงาน
5. อ้างสิทธิ์การ์ดที่พร้อมจำนวนเล็กน้อยเป็นชุด และเริ่มการรันของผู้ปฏิบัติงานผ่าน
   รันไทม์เอเจนต์ย่อยของ Gateway

ผู้ปฏิบัติงานจะได้รับบริบทของการ์ดที่จำกัดขอบเขต พร้อมโทเค็นการอ้างสิทธิ์ที่จำเป็นต่อการส่ง Heartbeat
ทำให้เสร็จสมบูรณ์ หรือบล็อกการ์ดผ่านเครื่องมือ Workboard

พาธของเวิร์กสเปซเป็นไปตามสิทธิ์ระบบไฟล์ที่มีอยู่ของผู้เรียก ไคลเอนต์ Gateway
ที่มี `operator.write` สามารถใช้เวิร์กสเปซของเอเจนต์ที่กำหนดค่าไว้
ส่วนไคลเอนต์ `operator.admin` สามารถใช้เช็กเอาต์อื่นบนโฮสต์ได้ เครื่องมือเอเจนต์ที่อยู่ในแซนด์บ็อกซ์ใช้
สิทธิ์เข้าถึงเวิร์กสเปซของแซนด์บ็อกซ์ ขณะที่เครื่องมือเฉพาะเวิร์กสเปซที่ไม่อยู่ในแซนด์บ็อกซ์ใช้
รูทเวิร์กสเปซที่กำหนดค่าไว้ Workboard จะบันทึกสิทธิ์ดังกล่าวเมื่อมีการ
กำหนดเวิร์กสเปซ และหาจุดตัดกับสิทธิ์ปัจจุบันของผู้เรียกอีกครั้งในขณะจัดส่ง
ดังนั้นการ์ดที่บันทึกถาวรจึงไม่สามารถขยายสิทธิ์เข้าถึงของผู้เรียกในภายหลังได้ การ์ดเก่าที่มี
เวิร์กสเปซโฮสต์ระบุไว้อย่างชัดเจนแต่ไม่มีสิทธิ์ที่บันทึกไว้ ต้องบันทึกเวิร์กสเปซนั้น
ใหม่ก่อนการจัดส่งแบบเต็มโฮสต์ ส่วนการ์ดที่ไม่มีพาธโฮสต์จะนำ
สิทธิ์ของผู้เรียกปัจจุบันมาใช้เมื่อจัดส่งครั้งแรก

การจัดส่งที่ผูกกับเวิร์กสเปซจะยอมรับไดเรกทอรีหรือเช็กเอาต์ Git เฉพาะเมื่อ
รูทของรีโพซิทอรีตรงกับเวิร์กสเปซเอเจนต์เป้าหมายทุกประการ คำขอ worktree
จะถูกจำกัดให้เหลือไดเรกทอรีนั้นและบันทึกถาวรเป็นเวิร์กสเปซแบบไดเรกทอรี เพื่อให้
โฮสต์ไม่สร้างเช็กเอาต์หรือเรียกใช้โค้ดตั้งค่ารีโพซิทอรี ผู้ปฏิบัติงานเป้าหมาย
ต้องใช้แซนด์บ็อกซ์ Docker ที่เขียนได้และไม่ใช้ร่วมกันสำหรับเวิร์กสเปซนั้นโดยเฉพาะ
โดยไม่มีการดำเนินการแบบยกระดับ การแทนที่การเรียกใช้โฮสต์/Node ที่บันทึกถาวร หรือ
เครื่องมือ Plugin และ MCP ที่ยังไม่ได้จัดประเภท Workboard จะแจกแจงเครื่องมือที่ลงทะเบียนไว้
แทนการเชื่อถือคำนำหน้า `workboard_*` และการจัดส่งจะปฏิเสธคอนเทนเนอร์ Docker
ที่กำลังทำงานหากแฮชเมานต์/การกำหนดค่าจริงของคอนเทนเนอร์นั้นล้าสมัย การจัดส่งจะรายงาน
นโยบายเป้าหมายที่ไม่เข้ากันแทนการเริ่มผู้ปฏิบัติงานที่มีข้อจำกัดน้อยกว่า
การจัดส่งแบบเต็มโฮสต์สามารถกำหนดเป้าหมายเช็กเอาต์ภายในเครื่องอื่น ๆ และคงการตั้งค่า
worktree ที่มีการจัดการตามปกติไว้

สิทธิ์ของเวิร์กสเปซไม่ได้สร้างโมเดลสิทธิ์วงจรชีวิตของการ์ดชุดที่สอง
ผู้เรียกที่แก้ไขการ์ด Workboard ได้สามารถย้ายการ์ดผ่านสถานะเดียวกัน
ด้วยตนเองบนทุกพื้นผิว ส่วนสิทธิ์เข้าถึงเวิร์กสเปซแบบอ่านอย่างเดียวจะป้องกันเฉพาะ
การจัดส่งผู้ปฏิบัติงานที่ต้องใช้สิทธิ์เขียน

### การเลือกผู้ปฏิบัติงาน

แต่ละรอบจะเริ่ม **worker ไม่เกิน 3 ตัวโดยค่าเริ่มต้น** การ์ดที่พร้อมจะเรียงตาม
ลำดับความสำคัญ ตามด้วยตำแหน่ง และเวลาที่สร้าง แต่ละรอบจะเริ่มเพียงหนึ่งการ์ดต่อ
เจ้าของ/เอเจนต์ และข้ามเจ้าของที่มีงานกำลังทำงานหรือรอรีวิวอยู่บน
บอร์ดแล้ว การ์ดที่เก็บถาวรแล้ว การ์ดที่มีการอ้างสิทธิ์อยู่ และการ์ดที่ไม่ได้อยู่ในสถานะ `ready`
จะไม่ถูกเลือกเพื่อเริ่ม worker (แต่ยังอาจได้รับผลจาก
ส่วนข้อมูลของการ dispatch ได้แก่ การล้างการอ้างสิทธิ์ที่ค้าง การเลื่อนสถานะการขึ้นต่อกัน และการล้างงานที่หมดเวลา)

คีย์เซสชันจะกำหนดแบบตายตัวต่อบอร์ด/การ์ด ดังนั้นการ dispatch ซ้ำจะกำหนดเส้นทาง
กลับไปยังเลน worker เดิม แทนที่จะสร้างเซสชันที่ไม่เกี่ยวข้องกัน:

- การ์ดที่กำหนดผู้รับผิดชอบแล้ว: `agent:<agentId>:subagent:workboard-<boardId>-<cardId>`
- การ์ดที่ยังไม่ได้กำหนดผู้รับผิดชอบ: `subagent:workboard-<boardId>-<cardId>` (Gateway จะระบุ
  เอเจนต์เริ่มต้นที่กำหนดค่าไว้)

หากไม่สามารถเริ่ม worker ได้หลังจากอ้างสิทธิ์การ์ดแล้ว Workboard จะบล็อก
การ์ด ล้างการอ้างสิทธิ์ บันทึกความล้มเหลวในการเริ่มรัน และเพิ่มบรรทัด
บันทึกของ worker ซึ่งมองเห็นได้ในแดชบอร์ด, JSON ของ CLI, เครื่องมือเอเจนต์ และ
ข้อมูลวินิจฉัยของการ์ด

### จุดเริ่มต้น

- การดำเนินการ dispatch ในแดชบอร์ด
- `openclaw workboard dispatch`
- `/workboard dispatch` บนช่องทางที่รองรับคำสั่ง

ทั้งสามรายการใช้รันไทม์ซับเอเจนต์ของ Gateway เมื่อ Gateway พร้อมใช้งาน
CLI มีทางเลือกสำรองสำหรับผู้ดำเนินการหนึ่งแบบ: หากการเรียก Gateway ล้มเหลวด้วย
ข้อผิดพลาดการเชื่อมต่อ/ไม่พร้อมใช้งาน (หรือข้อผิดพลาด `unknown method` สำหรับ
Gateway รุ่นเก่า) และไม่มีเป้าหมาย `--url`/`--token` ที่ระบุอย่างชัดเจน รวมถึงไม่มี Gateway
ระยะไกลที่กำหนดค่าไว้ (`OPENCLAW_GATEWAY_URL` หรือ `gateway.mode: remote`) ที่มีผล CLI จะเรียกใช้
การ dispatch เฉพาะข้อมูลกับสถานะ SQLite ในเครื่อง โดยสามารถเลื่อนสถานะการขึ้นต่อกัน
ล้างการอ้างสิทธิ์ที่ค้าง และบล็อกการรันที่หมดเวลาได้ แต่ไม่สามารถเริ่ม worker ได้ ความล้มเหลวด้านการยืนยันตัวตน
สิทธิ์ และการตรวจสอบความถูกต้องจาก Gateway ที่เข้าถึงได้จะไม่ถือว่า
ไม่พร้อมใช้งาน แต่จะแสดงเป็นข้อผิดพลาดของคำสั่ง เช่นเดียวกับความล้มเหลวใดๆ ของ Gateway
เมื่อมีการระบุเป้าหมาย `--url`/`--token` อย่างชัดเจน

ข้อมูลเมตาของบอร์ดสามารถตั้งค่า `autoDecompose`, `autoDecomposePerDispatch`,
`defaultAssignee` และ `orchestratorProfile` ได้ OpenClaw จะบันทึกเจตนานี้และ
แสดงในบริบทของ worker ส่วนการระบุข้อกำหนด/การแยกย่อยงานจริงยังคงดำเนินการ
ผ่านเครื่องมือ Workboard ตามปกติ

## CLI และคำสั่งแบบสแลช

```bash
openclaw workboard list [--board <id>] [--status <status>] [--include-archived] [--json]
openclaw workboard create "Fix stale card lifecycle" --priority high --labels bug,workboard
openclaw workboard show <card-id> [--json]
openclaw workboard move <card-id> --status <status> [--json]
openclaw workboard dispatch [--board <id>] [--json]
```

เอาต์พุตข้อความ `list` จะซ่อนการ์ดที่เก็บถาวรแล้วโดยค่าเริ่มต้น (`--include-archived`
ใช้แทนค่าเริ่มต้นนี้ได้) ส่วน `--json` จะรวมการ์ดที่เก็บถาวรแล้วเสมอ ซึ่งตรงกับสัญญา
การ์ดแบบเต็มที่สคริปต์เดิมใช้อยู่ `show` และ `move` รองรับคำนำหน้า id
ที่ระบุได้อย่างไม่กำกวม `list`, `create`, `show` และ `move` จะอ่าน/เขียนสถานะ Plugin
ในเครื่องโดยตรงเสมอ เฉพาะ `dispatch` เท่านั้นที่เรียก Gateway ที่กำลังทำงาน พร้อมทางเลือกสำรอง
ตามที่อธิบายไว้ข้างต้น

ดูแฟล็กทั้งหมด เอาต์พุต JSON พฤติกรรมทางเลือกสำรองของ Gateway
การจัดการคำนำหน้า id กฎการเลือกสำหรับ dispatch และการแก้ไขปัญหาได้ที่ [CLI ของ Workboard](/th/cli/workboard)

`/workboard list`, `/workboard show <card-id>`, `/workboard create <title>`,
`/workboard move <card-id> --status <status>` และ `/workboard dispatch` ทำงานสอดคล้องกับ
CLI การแสดงรายการและการแสดงรายละเอียดเป็นการอ่านข้อมูลสำหรับผู้ส่งคำสั่งที่ได้รับอนุญาตทุกคน
การสร้าง การย้าย และการ dispatch ต้องมีสถานะเจ้าของบนพื้นผิวแชต หรือเป็นไคลเอนต์ Gateway
ที่มี `operator.write`/`operator.admin` การย้ายโดยผู้ดำเนินการด้วยตนเองใช้
พฤติกรรมแทนที่การอ้างสิทธิ์แบบเดียวกับการลากแล้ววางในแดชบอร์ด การเข้าถึง worktree
ยังคงเป็นไปตามขอบเขตเวิร์กสเปซเดียวกันที่อธิบายไว้ข้างต้น

## การซิงค์วงจรชีวิตของเซสชัน

การ์ดสามารถเชื่อมโยงกับเซสชันแดชบอร์ดที่มีอยู่ หรือเซสชันที่สร้างขึ้นเมื่อ
เริ่มงานจากการ์ด การ์ดที่เชื่อมโยงจะแสดงวงจรชีวิตของเซสชันในบรรทัด:
กำลังทำงาน ค้าง เชื่อมโยงแต่ไม่ได้ใช้งาน เสร็จสิ้น ล้มเหลว หรือไม่พบ นอกจากนี้ยังสามารถบันทึก
เซสชันที่มีอยู่จากแท็บเซสชันด้วย **เพิ่มไปยัง Workboard** การ์ดจะ
เชื่อมโยงกับเซสชันนั้น ใช้ป้ายกำกับเซสชันหรือพรอมต์ล่าสุดของผู้ใช้เป็นชื่อเรื่อง
และเติมบันทึกเริ่มต้นจากพรอมต์ล่าสุดของผู้ใช้ร่วมกับคำตอบล่าสุดของผู้ช่วย
เมื่อมีข้อมูล

หากเซสชันที่เชื่อมโยงหายไป การ์ดจะยังคงเชื่อมโยงไว้เพื่อรักษาบริบท และ
ยังมีตัวควบคุมเริ่มต้นให้เริ่มใหม่ในเซสชันใหม่ หากเซสชันที่เชื่อมโยงและกำลังใช้งาน
หยุดรายงานกิจกรรมล่าสุด Workboard จะทำเครื่องหมายการ์ดเป็น
`stale` และจัดเก็บเป็นข้อมูลเมตาจนกว่าวงจรชีวิตจะล้างข้อมูลดังกล่าว

ขณะที่การ์ดอยู่ในสถานะงานที่กำลังดำเนินอยู่ Workboard จะติดตามเซสชันที่เชื่อมโยง:

| สถานะเซสชันที่เชื่อมโยง                  | สถานะการ์ด |
| ------------------------------------- | ----------- |
| กำลังใช้งาน                                | `running`   |
| เสร็จสมบูรณ์                             | `review`    |
| ล้มเหลว ถูกยุติ หมดเวลา หรือถูกยกเลิก | `blocked`   |

**สถานะรีวิวด้วยตนเองมีผลเหนือกว่า** การย้ายการ์ดไปยัง `review`, `blocked` หรือ `done`
จะหยุดการซิงค์อัตโนมัติสำหรับการ์ดนั้นจนกว่าจะย้ายกลับไปยัง `todo` หรือ `running`

การเริ่มการ์ดจะใช้เซสชัน Gateway ตามปกติ Workboard จะจัดเก็บเฉพาะ
ข้อมูลเมตาและลิงก์ของการ์ด บันทึกบทสนทนา การเลือกโมเดล และวงจรชีวิต
ของการรันยังคงอยู่ภายใต้การจัดการของระบบเซสชันตามปกติ ใช้ **หยุด** บนการ์ดที่เชื่อมโยง
และกำลังทำงานเพื่อยกเลิกการรันที่กำลังใช้งาน Workboard จะทำเครื่องหมายการ์ดนั้นเป็น `blocked` เพื่อให้
ยังคงมองเห็นได้สำหรับการติดตามผล

การ์ดใหม่สามารถเริ่มจากเทมเพลต Workboard (`bugfix`, `docs`, `release`,
`pr_review`, `plugin`) เทมเพลตจะกรอกชื่อเรื่อง บันทึก ป้ายกำกับ และลำดับความสำคัญไว้ล่วงหน้า
โดยจัดเก็บ id ของเทมเพลตเป็นข้อมูลเมตาของการ์ด

## เวิร์กโฟลว์ในแดชบอร์ด

1. เปิดแท็บ Workboard ใน Control UI
2. สร้างการ์ดพร้อมชื่อเรื่อง บันทึก ลำดับความสำคัญ ป้ายกำกับ เอเจนต์ที่ระบุหรือไม่ระบุก็ได้ และ
   เซสชันที่เชื่อมโยงซึ่งระบุหรือไม่ระบุก็ได้ หรือเปิดเซสชันแล้วเลือก **เพิ่มไปยัง Workboard**
   สำหรับเซสชันที่มีอยู่
3. ลากการ์ดระหว่างคอลัมน์ หรือโฟกัสตัวควบคุมสถานะแบบกะทัดรัดแล้วใช้
   เมนูหรือ ArrowLeft/ArrowRight ขณะลาก การ์ดต้นทางจะจางลงและ
   คอลัมน์ที่พร้อมรับการวางจะแสดงเส้นขอบ
4. เริ่มงานจากการ์ดเพื่อสร้างหรือใช้เซสชันแดชบอร์ดซ้ำ
5. เปิดเซสชันที่เชื่อมโยงจากการ์ดขณะที่เอเจนต์กำลังทำงาน
6. ปล่อยให้การซิงค์วงจรชีวิตย้ายงานที่กำลังทำงานไปยัง `review`/`blocked` จากนั้น
   ย้ายการ์ดไปยัง `done` ด้วยตนเองเมื่อยอมรับงานแล้ว

## การวินิจฉัย

การวินิจฉัยคำนวณจากข้อมูลเมตาของการ์ดในเครื่อง การตรวจสอบในตัวจะแจ้งเตือน:

| ประเภท                        | เงื่อนไข                                                                      |
| --------------------------- | ------------------------------------------------------------------------------ |
| `stranded_ready`            | การ์ด `todo`/`backlog`/`ready` ที่กำหนดผู้รับผิดชอบแล้วและไม่ได้อัปเดตมานานกว่า 1 ชั่วโมง             |
| `running_without_heartbeat` | การ์ด `running` ที่ไม่มี Heartbeat ของการอ้างสิทธิ์หรือการอัปเดตการดำเนินงานมานานกว่า 20 นาที |
| `blocked_too_long`          | การ์ด `blocked` ที่ไม่ได้อัปเดตมานานกว่า 24 ชั่วโมง                                   |
| `repeated_failures`         | จำนวนความล้มเหลวที่ติดตามของการ์ดถึง 2 ครั้งขึ้นไป                                |
| `missing_proof`             | การ์ด `done` ที่ไม่มีหลักฐาน อาร์ติแฟกต์ หรือไฟล์แนบ                          |
| `orphaned_session`          | การ์ด `running` ที่มี `sessionKey` แต่ไม่มีข้อมูลเมตา `execution`                |

## สิทธิ์

เมธอด RPC ของ Gateway อยู่ภายใต้ `workboard.*`:

| ขอบเขต            | เมธอด                                                                                                                                                                                                                                                                                                                                                                            |
| ---------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `operator.read`  | `cards.list`, `cards.export`, `cards.diagnostics`, แสดงรายการ/รับไฟล์แนบ, อ่านเหตุการณ์การแจ้งเตือน, `boards.list`, `cards.stats`, `cards.runs`                                                                                                                                                                                                                                       |
| `operator.write` | `cards.diagnostics.refresh`, สร้าง/อัปเดต/ย้าย/ลบ/แสดงความคิดเห็น/เชื่อมโยง/linkDependency/หลักฐาน/อาร์ติแฟกต์, เพิ่ม/ลบไฟล์แนบ, บันทึก worker, การละเมิดโปรโตคอล, อ้างสิทธิ์/Heartbeat/ปล่อย/เลื่อนสถานะ/กำหนดใหม่/เรียกคืน/ทำให้เสร็จ/บล็อก/ยกเลิกการบล็อก, `cards.dispatch`, `cards.bulk`, เก็บถาวร, `boards.upsert`/`archive`/`delete`, `cards.specify`/`decompose`, สมัครรับ/ลบ/เลื่อนการแจ้งเตือน |

ไม่มีเมธอด RPC ใดต้องใช้ `operator.admin` เบราว์เซอร์ที่เชื่อมต่อด้วยสิทธิ์
ผู้ดำเนินการแบบอ่านอย่างเดียวสามารถตรวจสอบบอร์ดได้ แต่ไม่สามารถแก้ไขการ์ดได้ ขอบเขตผู้ดูแลระบบ
จะขยายพาธโฮสต์ Workboard ที่ยอมรับ แต่ไม่เปลี่ยนเมธอดที่พร้อมใช้งาน

## พื้นที่จัดเก็บ

Workboard จัดเก็บข้อมูลถาวรไว้ในฐานข้อมูล SQLite เชิงสัมพันธ์ที่ Plugin เป็นเจ้าของ
ภายใต้ไดเรกทอรีสถานะของ OpenClaw ได้แก่ บอร์ด การ์ด ป้ายกำกับ เหตุการณ์วงจรชีวิต
ความพยายามรัน ความคิดเห็น ลิงก์การขึ้นต่อกัน หลักฐาน การอ้างอิงอาร์ติแฟกต์
ข้อมูลเมตาและบล็อบของไฟล์แนบ การวินิจฉัย การแจ้งเตือน บันทึก worker
สถานะโปรโตคอล และการสมัครรับข้อมูล ทั้งหมดอยู่ในตารางของ Workboard (ไม่ใช่
รายการคีย์-ค่าของ Plugin) การส่งออกการ์ดจะรักษาเรื่องราวของบอร์ดไว้
โดยไม่ฝังเนื้อหาบล็อบของไฟล์แนบ

การติดตั้งที่เคยใช้ Workboard ในรุ่น `.28` สามารถเรียกใช้
`openclaw doctor --fix` เพื่อย้ายเนมสเปซสถานะ Plugin แบบเดิมที่เผยแพร่แล้ว
(`workboard.cards`, `workboard.boards`, `workboard.notify` และหากมี
`workboard.attachments`) ไปยังฐานข้อมูลเชิงสัมพันธ์

## การแก้ไขปัญหา

**แท็บแจ้งว่า Workboard ไม่พร้อมใช้งาน**

```bash
openclaw plugins inspect workboard --runtime --json
```

หากกำหนดค่า `plugins.allow` ไว้ ให้เพิ่ม `workboard` ลงไป หาก `plugins.deny`
มี `workboard` ให้ลบออกก่อนเปิดใช้งาน Plugin

**ไม่สามารถบันทึกการ์ด**

ตรวจสอบว่าการเชื่อมต่อของเบราว์เซอร์มีสิทธิ์ `operator.write` เซสชันผู้ดำเนินการ
แบบอ่านอย่างเดียวสามารถแสดงรายการการ์ดได้ แต่ไม่สามารถสร้าง แก้ไข ย้าย หรือลบการ์ด

**การเริ่มการ์ดไม่เปิดเซสชันที่คาดไว้**

ตรวจสอบ id เอเจนต์และเซสชันที่เชื่อมโยงของการ์ด จากนั้นเปิดเซสชันหรือแชตเพื่อ
ตรวจสอบสถานะการรันจริง

**การ dispatch ไม่เริ่ม worker**

ตรวจสอบว่ามีการ์ด `ready` อย่างน้อยหนึ่งใบที่ไม่มีการอ้างสิทธิ์อยู่:

```bash
openclaw workboard list --status ready
```

หาก CLI รายงานการ dispatch เฉพาะข้อมูล ให้เริ่มหรือรีสตาร์ต Gateway แล้ว
ลองอีกครั้ง การ dispatch เฉพาะข้อมูลจะอัปเดตสถานะบอร์ดในเครื่อง แต่ไม่สามารถเริ่ม
การรัน worker ของซับเอเจนต์ได้ นอกจากนี้ การ์ดอาจถูกข้ามเมื่อมีการ์ดอื่นของ
เจ้าของหรือเอเจนต์เดียวกันกำลังทำงานหรือรอรีวิวอยู่ ให้ทำงานที่กำลังใช้งานนั้น
ให้เสร็จ บล็อก หรือปล่อยการอ้างสิทธิ์ก่อน dispatch งานเพิ่มเติมสำหรับเจ้าของ
คนเดียวกัน

## ที่เกี่ยวข้อง

- [Control UI](/th/web/control-ui)
- [CLI ของ Workboard](/th/cli/workboard)
- [Plugins](/th/tools/plugin)
- [จัดการ Plugins](/th/plugins/manage-plugins)
- [เซสชัน](/th/concepts/session)
