Plugin guides

Plugin สมุดบันทึก

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

สถานะที่ OpenClaw เป็นเจ้าของจะอยู่บน Gateway ภายใต้ <state-dir>/logbook/ แต่ การประมวลผลด้วยโมเดลอาจไม่ได้เกิดขึ้นภายในเครื่อง ภาพหน้าจอตัวอย่างจะถูกส่งไปยัง เส้นทางโมเดลภาพที่กำหนดค่าไว้ ส่วนข้อสังเกตและข้อความไทม์ไลน์จะถูกส่งไปยังโมเดลเริ่มต้นของ เอเจนต์ ใช้เส้นทางโมเดลภายในเครื่องสำหรับทั้งสองขั้นตอน หากเนื้อหาบนหน้าจอและ ข้อความกิจกรรมที่ได้จากการประมวลผลต้องอยู่ภายในเครื่องเท่านั้น

Logbook รวมมาให้แล้วและปิดใช้งานโดยค่าเริ่มต้น การเปิดใช้ Plugin นี้จะอนุญาตให้ Gateway เริ่มจับภาพหน้าจอ เนื่องจาก captureEnabled มีค่าเริ่มต้นเป็น true

ก่อนเริ่มต้น

คุณต้องมี:

  • Node ที่เชื่อมต่ออยู่และเปิดเผย screen.snapshot หรือ logbook.snapshot Node ของแอป macOS ต้องได้รับสิทธิ์ Screen Recording ส่วนโฮสต์ Node ของ macOS แบบไม่มีส่วนติดต่อผู้ใช้ (openclaw node host run) จะได้รับคำสั่ง logbook.snapshot ที่ Plugin จัดเตรียมให้ ซึ่งทำงานผ่านเครื่องมือ screencapture ของระบบ
  • เปิดใช้และยืนยันตัวตน Plugin Codex ที่รวมมาให้แล้ว ปัจจุบัน Codex จัดเตรียม สัญญาการแยกข้อมูลจากรูปภาพแบบมีโครงสร้างที่ Logbook ต้องใช้ ลงชื่อเข้าใช้ด้วย openclaw models auth login --provider openai โปรดดู ชุดควบคุม Codex สำหรับวิธีการยืนยันตัวตนอื่น
  • โมเดลเริ่มต้นของเอเจนต์ที่ใช้งานได้ Logbook ใช้โมเดลนี้สังเคราะห์การ์ด บันทึก การประชุมอัปเดต และการถามตอบเกี่ยวกับวัน หลังจากผ่านขั้นตอนโมเดลภาพแล้ว

เริ่มต้นอย่างรวดเร็ว

เปิดใช้ Plugin Codex และ Logbook:

bash
openclaw plugins enable codexopenclaw plugins enable logbook

กำหนดค่าโมเดลภาพอย่างชัดเจนเพื่อให้การเริ่มต้นทำงานมีผลลัพธ์แน่นอน:

json5
{  plugins: {    entries: {      codex: {        enabled: true,      },      logbook: {        enabled: true,        config: {          visionModel: "codex/gpt-5.6-sol",        },      },    },  },}

หากคุณใช้ plugins.allow ให้รวมทั้ง codex และ logbook รีสตาร์ต Gateway หลังจากเปลี่ยนการกำหนดค่า Plugin จากนั้นตรวจสอบการลงทะเบียน และเปิดแดชบอร์ด:

bash
openclaw gateway restartopenclaw plugins inspect logbook --runtime --jsonopenclaw nodes status --connectedopenclaw nodes describe --node <idOrNameOrIp>openclaw dashboard

คำอธิบาย Node ต้องมี screen.snapshot หรือ logbook.snapshot Node แบบไม่มีส่วนติดต่อผู้ใช้จะประกาศ logbook.snapshot หลังจากเปิดใช้งาน Plugin แล้วเท่านั้น โปรดดูการแก้ไขปัญหา Node หากไม่มีคำสั่งดังกล่าว

แท็บ Logbook จะปรากฏเฉพาะเมื่อเปิดใช้ Plugin และเซสชัน Control UI มี operator.write แถวสถานะควรแสดง กำลังจับภาพ โดยไม่มีข้อผิดพลาด การ์ดไทม์ไลน์จะปรากฏเมื่อหน้าต่างการวิเคราะห์ปิดลง หรือคุณสามารถเลือก วิเคราะห์ตอนนี้ หลังจากจับภาพกิจกรรมแล้ว

วิธีการทำงาน

  1. จับภาพ: ทุก ๆ captureIntervalSeconds (ค่าเริ่มต้น 30 วินาที) Logbook จะเรียกใช้ คำสั่งจับภาพของ Node ที่เลือกและจัดเก็บเฟรม JPEG ที่ปรับขนาดแล้ว เฟรมที่เหมือนกันติดต่อกันจะถูกทำเครื่องหมายว่าไม่มีการใช้งานและไม่นำไปวิเคราะห์
  2. สังเกตการณ์: เมื่อผ่านหน้าต่างเวลาการวิเคราะห์ (ค่าเริ่มต้น 15 นาที) Plugin จะสุ่มเลือกเฟรมที่มีกิจกรรมสูงสุด 16 เฟรมและส่งไปยังโมเดลภาพ ซึ่งจะส่งคืนข้อสังเกตกิจกรรมพร้อมการประทับเวลา ("VS Code: กำลังแก้ไข store.ts และแก้ข้อผิดพลาดด้านชนิดข้อมูล") ช่วงว่างของการจับภาพที่นานกว่าสองนาทีหรือ เมื่อถึงเที่ยงคืนตามเวลาท้องถิ่นจะปิดหน้าต่างปัจจุบันด้วย
  3. สังเคราะห์: ข้อสังเกตพร้อมกับการ์ดที่มีอยู่จาก 45 นาทีล่าสุดจะถูก ปรับปรุงเป็นการ์ดไทม์ไลน์ (การ์ดละ 10-60 นาที) ซึ่งมีชื่อเรื่อง สรุป หมวดหมู่ แอปหลัก และสิ่งรบกวนช่วงสั้น ๆ หากมี
  4. ล้างข้อมูล: เฟรมที่เก่ากว่า retentionDays (ค่าเริ่มต้น 14) จะถูกลบ โดยจะเก็บการ์ด ข้อสังเกต และบันทึกการประชุมอัปเดตที่แคชไว้ต่อไป

ขอบเขตของวันและนาฬิกาในไทม์ไลน์ใช้เขตเวลาท้องถิ่นของ Gateway ไม่ใช่ เขตเวลาของเบราว์เซอร์ เฟรมและฐานข้อมูลไทม์ไลน์ SQLite อยู่ภายใต้ <state-dir>/logbook/

การไหลของโมเดลและข้อมูล

Logbook ใช้เส้นทางโมเดลสองเส้นทางแยกกัน:

ขั้นตอน ข้อมูลที่ส่ง เส้นทางโมเดล
สังเกตการณ์ เฟรม JPEG ตัวอย่างสูงสุด 16 เฟรมพร้อมเวลาจับภาพ visionModel หรือรายการ Codex tools.media ที่ยืมมาและเข้ากันได้
สังเคราะห์การ์ด ข้อสังเกตพร้อมการประทับเวลาและการ์ดไทม์ไลน์ล่าสุด โมเดลเริ่มต้นของเอเจนต์ผ่านรันไทม์ LLM ของ Plugin
สร้างบันทึกการประชุมอัปเดต การ์ดของวันที่เลือกและวันก่อนหน้า โมเดลเริ่มต้นของเอเจนต์ผ่านรันไทม์ LLM ของ Plugin
ถามเกี่ยวกับวันของคุณ คำถาม การ์ดของวันที่เลือก และข้อสังเกตล่าสุด โมเดลเริ่มต้นของเอเจนต์ผ่านรันไทม์ LLM ของ Plugin

ฐานข้อมูล SQLite ทั้งหมดจะไม่ถูกส่งไปยังโมเดลใด ๆ ภาพหน้าจอดิบจะถูกส่ง ไปยังขั้นตอนการสังเกตการณ์เท่านั้น ส่วนการสังเคราะห์การ์ด การสร้างบันทึกการประชุมอัปเดต และการถามตอบจะได้รับ เฉพาะข้อความที่ได้จากการประมวลผล

การกำหนดค่า

json5
{  plugins: {    entries: {      codex: {        enabled: true,      },      logbook: {        enabled: true,        config: {          captureEnabled: true,          captureIntervalSeconds: 30,          analysisIntervalMinutes: 15,          nodeId: "my-mac",          screenIndex: 0,          maxWidth: 1440,          visionModel: "codex/gpt-5.6-sol",          retentionDays: 14,        },      },    },  },}

คีย์การกำหนดค่า Logbook ทั้งหมดเป็นตัวเลือก ค่าตัวเลขจะถูกปัดเป็นจำนวนเต็ม และจำกัดให้อยู่ในช่วงที่รองรับ

คีย์ ค่าเริ่มต้น ช่วงหรือค่า ลักษณะการทำงาน
captureEnabled true ค่าบูลีน สวิตช์หลักแบบถาวรสำหรับภาพบันทึกใหม่ ไทม์ไลน์ยังคงใช้งานได้เมื่อเป็น false
captureIntervalSeconds 30 5-600 ระยะเวลาระหว่างความพยายามจับภาพ
analysisIntervalMinutes 15 3-120 หน้าต่างเวลาการสังเกตการณ์เป้าหมาย โดยช่วงว่างและเวลาเที่ยงคืนอาจปิดหน้าต่างเร็วกว่านั้น
nodeId ไม่ได้ตั้งค่า รหัส Node หรือชื่อที่แสดง ตรึงการจับภาพไว้กับ Node ที่เชื่อมต่อหนึ่งรายการ โดยไม่แยกตัวพิมพ์เล็กและใหญ่ในการจับคู่
screenIndex 0 0-16 ดัชนีจอแสดงผลที่เริ่มนับจากศูนย์
maxWidth 1440 480-3840 ขีดจำกัดขนาดการจับภาพที่ร้องขอ โดย macOS แบบไม่มีส่วนติดต่อผู้ใช้จะนำไปใช้กับมิติที่ใหญ่ที่สุด
visionModel ไม่ได้ตั้งค่า provider/model เส้นทางแบบมีโครงสร้างที่ระบุชัดเจน การอ้างอิงที่มีรูปแบบไม่ถูกต้องจะหยุดการวิเคราะห์ชั่วคราว และผู้ให้บริการที่ไม่รองรับจะทำให้ชุดงานล้มเหลว
retentionDays 14 1-365 ลบเฟรมเก่า แต่จะเก็บการ์ด ข้อสังเกต และบันทึกการประชุมอัปเดตไว้

เมื่อไม่มี nodeId Logbook จะเลือก Node ของแอปที่เชื่อมต่อและเปิดเผย screen.snapshot ก่อน จากนั้นจึงใช้ Node แบบไม่มีส่วนติดต่อผู้ใช้ที่เปิดเผย logbook.snapshot เป็นทางเลือก ในการตั้งค่าที่ไม่ได้ตรึง Node ไว้ Node ที่ล้มเหลวจะถูกหมุนไปไว้หลัง Node อื่นที่มีคุณสมบัติเหมาะสม ปุ่มสลับหยุดชั่วคราวบนแดชบอร์ดมีผลเฉพาะเซสชันและจะรีเซ็ตเมื่อ Gateway รีสตาร์ต ใช้ captureEnabled: false เพื่อหยุดแบบถาวร

การเลือกโมเดลภาพ

Logbook จะเลือกโมเดลการสังเกตการณ์ตามลำดับต่อไปนี้:

  1. plugins.entries.logbook.config.visionModel
  2. รายการ Codex รายการแรกที่รองรับรูปภาพภายใต้ tools.media.image.models
  3. รายการ Codex รายการแรกที่รองรับรูปภาพภายใต้ tools.media.models

ผู้ให้บริการสื่ออื่นจะถูกข้าม เนื่องจากปัจจุบันยังไม่เปิดเผย สัญญาการแยกข้อมูลแบบมีโครงสร้างที่ Logbook ต้องใช้ การตั้งค่า tools.media.image.enabled: false จะปิดใช้งานค่าเริ่มต้นของโมเดลสื่อที่ยืมมา แต่ visionModel ของ Logbook ที่ระบุอย่างชัดเจนยังคงมีผล

แท็บแดชบอร์ด

  • ไทม์ไลน์: การ์ดที่ขยายได้สำหรับแต่ละกิจกรรม พร้อมสีตามหมวดหมู่ แอปหลัก ป้ายสิ่งรบกวน และคีย์เฟรมจากภาพบันทึก
  • ภาพรวมของวัน: อัตราส่วนการจดจ่อ การแบ่งตามหมวดหมู่ และแอปที่ใช้มากที่สุด
  • การประชุมอัปเดตประจำวัน: เปลี่ยนข้อมูลของเมื่อวานและวันนี้เป็นข้อความอัปเดตที่พร้อมวาง
  • ถามเกี่ยวกับวันของคุณ: คำถามภาษาธรรมชาติที่ตอบจากไทม์ไลน์ที่ติดตามไว้ ("ฉันตรวจสอบ PR ของ Gateway เมื่อใด")
  • วิเคราะห์ตอนนี้: ปิดหน้าต่างการจับภาพปัจจุบันทันทีแทนการรอ ช่วงเวลาการวิเคราะห์

เมธอดของ Gateway

Logbook ลงทะเบียนเมธอด RPC ของ Gateway ต่อไปนี้:

เมธอด พารามิเตอร์ ขอบเขต ผลลัพธ์
logbook.status ไม่มี operator.read สถานะการจับภาพ การวิเคราะห์ โมเดล Node วันของ Gateway และเขตเวลาของ Gateway
logbook.days ไม่มี operator.read วันที่มีจำนวนการ์ดไทม์ไลน์และขอบเขตเวลาของการ์ด
logbook.timeline { day?: "YYYY-MM-DD" } operator.read การ์ดและสถิติประจำวันที่ได้จากการประมวลผล โดยค่าเริ่มต้นเป็นวันปัจจุบันของ Gateway
logbook.frames { startMs, endMs } operator.write ข้อมูลเมตาของเฟรมในช่วงเวลาที่ร้องขอในหน่วยมิลลิวินาทีนับจากยุค
logbook.frame { frameId } operator.write เฟรม JPEG ดิบหนึ่งเฟรมในรูปแบบ base64
logbook.standup { day?, refresh? } operator.write ข้อความการประชุมอัปเดตสำหรับวันที่ระบุจากแคชหรือสร้างใหม่
logbook.ask { day?, question } operator.write คำตอบสำหรับวันที่ระบุซึ่งอ้างอิงจากไทม์ไลน์
logbook.capture.set { paused } operator.write สถานะหยุดชั่วคราวเฉพาะเซสชันและสถานะที่อัปเดตแล้ว
logbook.analyze.now ไม่มี operator.write เริ่มการวิเคราะห์ที่รอดำเนินการ หรือส่งคืนเหตุผลที่ไม่สามารถเริ่มได้

เมธอดสำหรับอ่านจะส่งคืนสถานะการทำงานหรือข้อความที่ได้จากการประมวลผล พิกเซลภาพหน้าจอดิบ การดำเนินการที่ใช้จ่ายกับโมเดล และการเปลี่ยนแปลงรันไทม์ต้องใช้ operator.write แท็บ Control UI ต้องใช้ operator.write เช่นกัน เนื่องจาก เปิดให้ใช้การดำเนินการเหล่านั้นและแสดงตัวอย่างเฟรมดิบ ส่วนไคลเอนต์แบบอ่านอย่างเดียวยังคงเรียกใช้ เมธอดข้อความที่ได้จากการประมวลผลได้โดยตรง

หมายเหตุด้านความเป็นส่วนตัว

  • ภาพบันทึกอาจมีทุกสิ่งที่ปรากฏบนหน้าจอ รวมถึงข้อมูลลับ เฟรมจะไม่ ออกจากเครื่อง ยกเว้นเมื่อถูกส่งเป็นข้อมูลเข้าตัวอย่างไปยังโมเดลการสังเกตการณ์ ที่กำหนดค่าไว้
  • ข้อสังเกต การ์ดล่าสุด และคำถามอาจออกจากเครื่องผ่าน โมเดลเริ่มต้นของเอเจนต์ระหว่างการสังเคราะห์การ์ด การสร้างบันทึกการประชุมอัปเดต หรือการถามตอบ ให้ใช้ นโยบายการจัดการข้อมูลของผู้ให้บริการกับเส้นทางโมเดลทั้งสอง
  • ใช้เส้นทางภายในเครื่องสำหรับทั้งโมเดลการสังเกตการณ์แบบมีโครงสร้างและโมเดลเริ่มต้นของเอเจนต์ เมื่อคุณต้องการกระบวนการที่ทำงานภายในเครื่องทั้งหมด
  • เฟรม ฐานข้อมูลไทม์ไลน์ และข้อมูลจับภาพชั่วคราวจะถูกเขียนด้วย สิทธิ์ไฟล์สำหรับเจ้าของเท่านั้น
  • การเพิ่ม screen.snapshot ลงใน gateway.nodes.denyCommands เป็น สวิตช์หยุดการจับภาพหน้าจอ โดยจะบล็อกทั้งการจับภาพจาก Node ของแอปและ คำสั่ง logbook.snapshot ของ Logbook เอง
  • การตั้งค่า tools.media.image.enabled: false จะหยุด Logbook ไม่ให้ยืม โมเดลรูปภาพของสื่อมาใช้วิเคราะห์ด้วย จากนั้นระบบจะใช้เฉพาะ visionModel ที่ระบุชัดเจนใน การกำหนดค่า Plugin เท่านั้น

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

ไม่พบแท็บ Logbook

ตรวจสอบเงื่อนไขทั้งสามข้อ:

  1. openclaw plugins list --enabled มี logbook
  2. Gateway รีสตาร์ตแล้วหลังจากเปลี่ยน Plugin หรือรายการอนุญาต
  3. การเชื่อมต่อ Control UI มี operator.write เซสชันแบบอ่านอย่างเดียวจะไม่ได้รับ ตัวอธิบายแท็บแบบโต้ตอบ

หากตั้งค่า plugins.allow จะต้องมีทั้ง logbook และ codex สำหรับการกำหนดค่าที่แนะนำ

การจับภาพรายงานข้อผิดพลาด

bash
openclaw nodes status --connectedopenclaw nodes describe --node <idOrNameOrIp>openclaw logs --follow
  • ตรวจสอบว่า Node เปิดให้ใช้ screen.snapshot หรือ logbook.snapshot
  • อนุญาตสิทธิ์การบันทึกหน้าจอบน Mac ที่ใช้จับภาพ
  • หากกำหนดค่า nodeId ให้ตรวจสอบว่าตรงกับรหัส Node หรือชื่อที่แสดง
  • ตรวจสอบว่า gateway.nodes.denyCommands ไม่มี screen.snapshot

หลังจากล้มเหลวติดต่อกันสามครั้ง Logbook จะชะลอการทำงานเป็นเวลาสิบรอบการจับภาพ แล้วจึงลองใหม่ การตั้งค่าที่ไม่ได้ตรึง Node ไว้สามารถสลับไปใช้ Node อื่นที่มีคุณสมบัติเหมาะสมได้

จับภาพสำเร็จแต่ไม่มีการ์ดปรากฏ

  • สถานะ ไม่พบโมเดล หมายความว่าไม่พบเส้นทางวิชันแบบมีโครงสร้างที่เข้ากันได้ เปิดใช้งานและยืนยันตัวตน Plugin Codex หรือตั้งค่า visionModel ที่ถูกต้องอย่างชัดเจน เฟรมที่จับภาพไว้จะยังคงรอการประมวลผลระหว่างที่ไม่มีโมเดล และสามารถนำมาวิเคราะห์ได้หลังจากแก้ไขการกำหนดค่าแล้ว
  • รอเป็นเวลา analysisIntervalMinutes หรือเลือก วิเคราะห์ทันที หลังจากจับกิจกรรมแล้ว
  • เฟรมที่เหมือนกันติดต่อกันถือเป็นหลักฐานว่าไม่มีการใช้งาน และจะไม่รวมอยู่ในชุดการวิเคราะห์ ให้เปลี่ยนสิ่งที่แสดงบนหน้าจอก่อนทดสอบ
  • หากชุดล่าสุดแสดงข้อผิดพลาด ให้แก้ไขปัญหาเกี่ยวกับโมเดลหรือการยืนยันตัวตน แล้วเลือก วิเคราะห์ทันที ระบบจะลองประมวลผลชุดที่ล้มเหลวอีกครั้งเฉพาะเมื่อสั่งการนี้อย่างชัดเจนเท่านั้น เพื่อหลีกเลี่ยงค่าใช้จ่ายในการใช้โมเดลซ้ำ

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

Was this useful?
On this page

On this page