CLI commands
CLI กระดานงาน
openclaw workboard คือส่วนติดต่อผ่านเทอร์มินัลสำหรับ Plugin Workboard ที่มาพร้อมระบบ ช่วยให้ผู้ปฏิบัติงานแสดงรายการการ์ด สร้างการ์ด ตรวจสอบการ์ดหนึ่งใบ และสั่งให้ Gateway ที่กำลังทำงานส่งงานที่พร้อมไปยังรอบการทำงานของผู้ปฏิบัติงาน subagent
เปิดใช้ Plugin ก่อนใช้คำสั่ง:
openclaw plugins enable workboardopenclaw gateway restartการใช้งาน
openclaw workboard list [--board <id>] [--status <status>] [--include-archived] [--json]openclaw workboard create <title...> [--notes <text>] [--status <status>] [--priority <priority>] [--agent <id>] [--board <id>] [--labels <items>] [--json]openclaw workboard show <id> [--json]openclaw workboard move <id> --status <status> [--json]openclaw workboard dispatch [--board <id>] [--max-starts <count>] [--admin] [--url <url>] [--token <token>] [--timeout <ms>] [--json]คำสั่งนี้อ่านและเขียนฐานข้อมูล SQLite ที่ Plugin เป็นเจ้าของ ซึ่งเป็นฐานข้อมูลเดียวกับที่แดชบอร์ดและเครื่องมือเอเจนต์ Workboard ใช้ รหัสการ์ดเป็น UUID ส่วนคำสั่งที่รับรหัสการ์ดยังรับคำนำหน้ารหัสที่ระบุได้อย่างไม่กำกวมด้วย (เอาต์พุตข้อความแบบย่อแสดงอักขระ 8 ตัวแรก)
ค่าที่ใช้ได้สำหรับ status: triage, backlog, todo, scheduled, ready, running, review, blocked, done ค่าที่ใช้ได้สำหรับ priority: low, normal, high, urgent
list
openclaw workboard listopenclaw workboard list --board default --status readyopenclaw workboard list --jsonเอาต์พุตข้อความมีรูปแบบย่อ:
7f4a2c10 ready high default agent-a แก้ไข Heartbeat ของผู้ปฏิบัติงานที่ค้างอยู่คอลัมน์ประกอบด้วยคำนำหน้ารหัส สถานะ ลำดับความสำคัญ รหัสบอร์ด รหัสเอเจนต์ซึ่งมีหรือไม่มีก็ได้ และชื่อเรื่อง
| แฟล็ก | วัตถุประสงค์ |
|---|---|
--board <id> |
จำกัดผลลัพธ์ไว้ที่เนมสเปซของบอร์ดหนึ่งรายการ |
--status <status> |
จำกัดผลลัพธ์ไว้ที่สถานะ Workboard หนึ่งสถานะ |
--include-archived |
รวมการ์ดที่เก็บถาวรไว้ในเอาต์พุตข้อความแบบย่อ |
--json |
แสดงรายการการ์ดทั้งหมดเป็น JSON สำหรับเครื่อง |
โดยค่าเริ่มต้น เอาต์พุตข้อความแบบย่อจะซ่อนการ์ดที่เก็บถาวรไว้ เพื่อให้ CLI ตรงกับ /workboard list ส่ง --include-archived เพื่อแสดงการ์ดเหล่านั้น เอาต์พุต JSON จะเก็บรายการการ์ดทั้งหมดไว้เสมอ รวมถึงการ์ดที่เก็บถาวร เพื่อรองรับระบบอัตโนมัติที่มีอยู่
create
openclaw workboard create "Fix stale worker heartbeat" --priority high --labels bug,workboardopenclaw workboard create "Write Workboard docs" --status ready --agent docs-agent --board docs --notes "Cover CLI, slash command, dispatch, and SQLite state."| แฟล็ก | วัตถุประสงค์ |
|---|---|
--notes <text> |
บันทึกเริ่มต้นของการ์ด |
--status <status> |
สถานะเริ่มต้น ค่าเริ่มต้นคือ todo |
--priority <priority> |
ลำดับความสำคัญ ค่าเริ่มต้นคือ normal |
--agent <id> |
มอบหมายการ์ดให้เอเจนต์หรือรหัสเจ้าของ |
--board <id> |
จัดเก็บการ์ดในเนมสเปซของบอร์ด |
--labels <items> |
ป้ายกำกับที่คั่นด้วยจุลภาค |
--json |
แสดงการ์ดที่สร้างเป็น JSON สำหรับเครื่อง |
create เขียนลงในสถานะ SQLite ของ Workboard โดยตรง การ์ดจะปรากฏทันทีในแท็บ Workboard ของ Control UI และในเครื่องมือ Workboard
show
openclaw workboard show 7f4a2c10openclaw workboard show 7f4a2c10 --jsonเอาต์พุตข้อความจะแสดงบรรทัดการ์ดแบบย่อและบันทึก เอาต์พุต JSON จะส่งคืนระเบียนการ์ดทั้งหมด ซึ่งรวมถึงข้อมูลเมตาการดำเนินการ ความพยายาม ความคิดเห็น ลิงก์ หลักฐาน อาร์ติแฟกต์ บันทึกผู้ปฏิบัติงาน สถานะโปรโตคอล การวินิจฉัย และข้อมูลเมตาระบบอัตโนมัติ
สถานะหลักฐานใน JSON คือผลลัพธ์ที่ผู้ปฏิบัติงานรายงาน passed บันทึก
การประเมินตนเองของผู้ปฏิบัติงานต่อคำสั่งหรือการตรวจสอบที่แนบมา โดยไม่ใช่ผลลัพธ์
จากการตรวจสอบยืนยันที่เป็นอิสระ
move
openclaw workboard move 7f4a2c10 --status reviewopenclaw workboard move 7f4a2c10 --status done --jsonmove เปลี่ยนสถานะของการ์ดโดยใช้เส้นทางผู้ปฏิบัติงานแบบกำหนดเองเส้นทางเดียวกับการลากการ์ดในแดชบอร์ด คำสั่งนี้รับรหัสการ์ดแบบเต็มหรือคำนำหน้าที่ระบุได้อย่างไม่กำกวม การพักเนื่องจากการขึ้นต่อกันและกำหนดการที่ยังทำงานอยู่ยังคงมีผล ผู้ปฏิบัติงานสามารถย้ายการ์ดที่มีการอ้างสิทธิ์ได้โดยไม่ต้องใช้โทเค็นการอ้างสิทธิ์ของเอเจนต์ โทเค็นการอ้างสิทธิ์ยังคงจำกัดขอบเขตไว้สำหรับการแก้ไขผ่านเครื่องมือเอเจนต์ และถูกปกปิดจากเอาต์พุต JSON
dispatch
openclaw workboard dispatchopenclaw workboard dispatch --jsonopenclaw workboard dispatch --max-starts 10openclaw workboard dispatch --adminopenclaw workboard dispatch --url http://127.0.0.1:18789 --token "$OPENCLAW_GATEWAY_TOKEN"ก่อนอื่น dispatch จะเรียกเมธอด RPC workboard.cards.dispatch ของ Gateway ที่กำลังทำงาน ซึ่งใช้รันไทม์ subagent เดียวกับการดำเนินการส่งงานในแดชบอร์ด ดังนั้นการ์ดที่พร้อมจึงกลายเป็นรอบการทำงานของผู้ปฏิบัติงานที่ติดตามเป็นงาน พร้อมคีย์เซสชันที่เชื่อมโยงกัน --max-starts ใช้เมธอดแบบเพิ่มเติม workboard.cards.dispatchWithOptions เพื่อให้ Gateway รุ่นเก่าปฏิเสธตัวเลือกก่อนเริ่มผู้ปฏิบัติงานใดๆ หลังอัปเกรด ให้รีสตาร์ต Gateway ก่อนใช้แฟล็กนี้ การ์ดที่กำหนดเอเจนต์ไว้จะใช้คีย์เซสชัน subagent ที่จำกัดขอบเขตตามเอเจนต์ ส่วนการ์ดที่ไม่ได้กำหนดเอเจนต์จะยังคงใช้คีย์ subagent ที่ไม่จำกัดขอบเขต เพื่อคงเอเจนต์เริ่มต้นที่กำหนดค่าไว้ของ Gateway
ลูปการส่งงาน:
- เลื่อนรายการลูกที่การขึ้นต่อกันพร้อมแล้วไปเป็น
ready - บล็อกการอ้างสิทธิ์ที่หมดอายุหรือรอบการทำงานของผู้ปฏิบัติงานที่หมดเวลา
- บันทึกข้อมูลเมตาการส่งงานในการ์ดที่พร้อม
- เลือกการ์ดที่พร้อมและยังไม่มีการอ้างสิทธิ์เป็นชุดขนาดเล็ก
- อ้างสิทธิ์การ์ดที่เลือกแต่ละใบให้ผู้ส่งงานหรือเอเจนต์ที่กำหนด
- เริ่มรอบการทำงานของผู้ปฏิบัติงาน subagent ด้วยบริบทการ์ดที่มีขอบเขตจำกัดและโทเค็นการอ้างสิทธิ์ของการ์ด
- จัดเก็บรหัสรอบการทำงานของผู้ปฏิบัติงาน คีย์เซสชัน การเชื่อมโยงงานเมื่อบัญชีแยกประเภทงานของ Gateway รายงานข้อมูลดังกล่าว สถานะการดำเนินการ และบันทึกผู้ปฏิบัติงานไว้ในการ์ด
การคัดเลือกเป็นแบบระมัดระวัง โดยค่าเริ่มต้น การส่งงานหนึ่งครั้งจะเริ่มผู้ปฏิบัติงานไม่เกินสามราย ข้ามการ์ดที่เก็บถาวรหรือมีการอ้างสิทธิ์อยู่แล้ว และเริ่มการ์ดเพียงหนึ่งใบต่อเจ้าของหรือเอเจนต์ในการประมวลผลหนึ่งรอบ การ์ดที่มีเจ้าของเป็นงานที่กำลังทำงานหรืออยู่ระหว่างรีวิวจะถูกเก็บไว้สำหรับการส่งงานครั้งถัดไป ส่ง --max-starts <count> พร้อมจำนวนเต็มบวกเพื่อเปลี่ยนขีดจำกัดต่อรอบ กฎหนึ่งการ์ดต่อเจ้าของยังคงมีผล ดังนั้นจำนวนที่เริ่มจริงอาจต่ำกว่า
หากการเริ่มผู้ปฏิบัติงานล้มเหลวหลังจากมีการอ้างสิทธิ์การ์ด Workboard จะบล็อกการ์ดนั้น ล้างการอ้างสิทธิ์ และบันทึกความล้มเหลวไว้ในข้อมูลเมตาการดำเนินการของการ์ดและบันทึกผู้ปฏิบัติงาน ทำให้การเริ่มที่ล้มเหลวยังคงมองเห็นได้แทนที่จะส่งการ์ดกลับเข้าคิวโดยไม่แจ้งให้ทราบ
หากไม่ได้ระบุเป้าหมาย Gateway อย่างชัดเจน และ Gateway ภายในเครื่องใช้งานไม่ได้หรือยังไม่เปิดเผยเมธอดการส่งงานของ Workboard CLI จะถอยกลับไปใช้การส่งงานแบบข้อมูลเท่านั้นกับสถานะ Workboard ภายในเครื่อง การส่งงานแบบข้อมูลเท่านั้นยังคงเลื่อนลำดับการขึ้นต่อกัน ล้างการอ้างสิทธิ์ที่ค้าง และบล็อกรอบการทำงานที่หมดเวลาได้ แต่จะไม่เริ่มผู้ปฏิบัติงาน ความล้มเหลวด้านการรับรองความถูกต้อง สิทธิ์ และการตรวจสอบความถูกต้อง รวมถึงความล้มเหลวของเป้าหมาย --url หรือ --token ที่ระบุไว้อย่างชัดเจน จะถูกรายงานโดยตรงแทนการเรียกใช้การถอยกลับ
เอาต์พุตข้อความรายงานการเริ่มผู้ปฏิบัติงาน:
การส่งงานเสร็จสมบูรณ์: เริ่มแล้ว=2 ล้มเหลว=0เอาต์พุตการถอยกลับระบุไว้อย่างชัดเจน:
Gateway ใช้งานไม่ได้; ส่งงานแบบข้อมูลเท่านั้น: เลื่อนแล้ว=1 บล็อกแล้ว=0เอาต์พุต JSON มีผลลัพธ์การส่งงาน การส่งงานที่รองรับโดย Gateway อาจมี started และ startFailures ส่วนการถอยกลับแบบข้อมูลเท่านั้นมี gatewayUnavailable: true โทเค็นการอ้างสิทธิ์ถูกปกปิดจากเอาต์พุต JSON ของการ์ด
ในแดชบอร์ด ผลลัพธ์การส่งงานเดียวกันจะแสดงเป็นข้อมูลสรุปสั้นๆ เพื่อให้ผู้ปฏิบัติงานเห็นจำนวนการ์ดที่เริ่ม เลื่อน บล็อก เรียกคืน หรือล้มเหลวได้โดยไม่ต้องเปิดรายละเอียดการ์ด
ความสอดคล้องกับคำสั่งแบบทับ
ช่องทางที่รองรับคำสั่งสามารถใช้คำสั่งแบบทับที่ตรงกัน:
/workboard list/workboard show 7f4a2c10/workboard create แก้ไข Heartbeat ของผู้ปฏิบัติงานที่ค้างอยู่/workboard move 7f4a2c10 --status review/workboard dispatchการส่งงานด้วยคำสั่งแบบทับยังใช้รันไทม์ subagent ของ Gateway จึงมีพฤติกรรมการอ้างสิทธิ์ การเริ่มผู้ปฏิบัติงาน และความล้มเหลวเช่นเดียวกับเส้นทาง Gateway ของแดชบอร์ดและ CLI
/workboard list และ /workboard show เป็นคำสั่งอ่านสำหรับผู้ส่งคำสั่งที่ได้รับอนุญาต /workboard create, /workboard move และ /workboard dispatch แก้ไขสถานะบอร์ด และต้องมีสถานะเจ้าของบนส่วนติดต่อแชต หรือเป็นไคลเอนต์ Gateway ที่มี operator.write หรือ operator.admin
สิทธิ์
โดยปกติ เส้นทางการส่งงานของ CLI จะร้องขอขอบเขต Gateway operator.write และ operator.read การ์ดที่ผูกกับเวิร์กสเปซจะทำงานโดยตรงในเวิร์กสเปซของเอเจนต์ที่กำหนดค่าไว้อย่างแน่นอน คำขอ worktree จะถูกจำกัดให้แคบลงเฉพาะไดเรกทอรีนั้น แทนที่จะอนุญาตให้โฮสต์สร้างโค้ดที่ควบคุมโดยรีโพซิทอรี ผู้ปฏิบัติงานที่เลือกต้องมีสิทธิ์เข้าถึงแซนด์บ็อกซ์ Docker ที่เขียนได้และไม่ใช้ร่วมกันสำหรับเวิร์กสเปซนั้นโดยเฉพาะ มีแฮชคอนเทนเนอร์ที่ทำงานอยู่ซึ่งตรงกับเมานต์และนโยบายที่ร้องขอ และไม่มีความสามารถในการหลบออกไปยังโฮสต์ ส่ง --admin เพื่อร้องขอ operator.admin อย่างชัดเจน อนุญาตให้ใช้เช็กเอาต์อื่นของโฮสต์ และใช้การตั้งค่า worktree ที่มีการจัดการตามปกติ การเชื่อมต่อจะล้มเหลวหากขอบเขตดังกล่าวไม่ได้รับอนุมัติสำหรับไคลเอนต์ โทเค็น Gateway แบบอ่านอย่างเดียวสามารถตรวจสอบข้อมูล Workboard ผ่านเมธอดอ่าน แต่ไม่สามารถสร้างการ์ดหรือส่งงานให้ผู้ปฏิบัติงานได้ นอกเหนือจากนี้ ข้อจำกัดของเวิร์กสเปซจะไม่เปลี่ยนแปลงการย้ายการ์ดด้วยตนเองสำหรับผู้เรียกที่มีสิทธิ์แก้ไข Workboard
คำสั่ง list, create, show และ move ภายในเครื่องทำงานกับไดเรกทอรีสถานะ OpenClaw ภายในเครื่องที่โปรไฟล์ปัจจุบันใช้ ใช้ --dev หรือ --profile <name> กับคำสั่งระดับบนสุด openclaw เมื่อต้องการใช้รูทสถานะอื่น
การแก้ไขปัญหา
ไม่มีการ์ดปรากฏ
ยืนยันว่าเปิดใช้ Plugin สำหรับโปรไฟล์และรูทสถานะเดียวกัน:
openclaw plugins inspect workboard --runtime --jsonหากแดชบอร์ดแสดงการ์ดแต่ CLI ไม่แสดง ให้ตรวจสอบว่าทั้งสองคำสั่งใช้การตั้งค่า --dev หรือ --profile เดียวกัน
การส่งงานระบุว่าเป็นแบบข้อมูลเท่านั้น
เริ่มหรือรีสตาร์ต Gateway:
openclaw gateway restartopenclaw gateway status --deepจากนั้นลอง openclaw workboard dispatch อีกครั้ง การถอยกลับแบบข้อมูลเท่านั้นมีประโยชน์สำหรับการล้างสถานะภายในเครื่อง แต่รอบการทำงานของผู้ปฏิบัติงานต้องใช้ Gateway ที่ทำงานอยู่
การส่งงานไม่เริ่มสิ่งใด
ตรวจสอบว่ามีการ์ด ready ที่ไม่มีการอ้างสิทธิ์ที่ใช้งานอยู่อย่างน้อยหนึ่งใบ:
openclaw workboard list --status readyระบบอาจข้ามการ์ดเมื่อเจ้าของเดียวกันมีงานที่กำลังทำงานหรืออยู่ระหว่างรีวิวอยู่แล้ว ย้ายงานที่เสร็จสมบูรณ์ไปยัง done ปลดการอ้างสิทธิ์ที่ค้างผ่านเครื่องมือ Workboard หรือเรียกใช้การส่งงานอีกครั้งหลังจากผู้ปฏิบัติงานที่ใช้งานอยู่ทำงานเสร็จ