---
read_when:
    - คุณต้องการไทม์ไลน์กิจกรรมประจำวันแบบ Dayflow ใน UI ควบคุม
    - คุณกำลังเปิดใช้งานหรือกำหนดค่า Plugin Logbook ที่มาพร้อมระบบ
    - คุณต้องการสรุปการประชุมสแตนด์อัปหรือทบทวนกิจกรรมประจำวันโดยอิงจากกิจกรรมบนหน้าจอ
summary: บันทึกงานอัตโนมัติแบบเลือกใช้ที่สร้างจากภาพหน้าจอที่จับเป็นระยะ
title: Plugin สมุดบันทึก
x-i18n:
    generated_at: "2026-07-12T16:26:10Z"
    model: gpt-5.6
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: a3ea1d40d62041417d047fbaf6b02aeb86e76314b8f620f7b9939e2e0c3b9f7e
    source_path: plugins/logbook.md
    workflow: 16
---

Plugin Logbook เปลี่ยนกิจกรรมบนหน้าจอให้เป็นบันทึกการทำงานอัตโนมัติ โดยจะ
บันทึกภาพหน้าจอเป็นระยะจาก Node ที่จับคู่ไว้ สรุปภาพเหล่านั้นเป็น
ข้อสังเกตพร้อมการประทับเวลา และสร้างการ์ดไทม์ไลน์ใน
[Control UI](/th/web/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](/th/plugins/codex-harness) สำหรับวิธีการยืนยันตัวตนอื่น
- โมเดลเริ่มต้นของเอเจนต์ที่ใช้งานได้ Logbook ใช้โมเดลนี้สังเคราะห์การ์ด บันทึก
  การประชุมอัปเดต และการถามตอบเกี่ยวกับวัน หลังจากผ่านขั้นตอนโมเดลภาพแล้ว

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

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

```bash
openclaw plugins enable codex
openclaw 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 restart
openclaw plugins inspect logbook --runtime --json
openclaw nodes status --connected
openclaw nodes describe --node <idOrNameOrIp>
openclaw dashboard
```

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

แท็บ 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 --connected
openclaw 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` หรือเลือก **วิเคราะห์ทันที** หลังจากจับกิจกรรมแล้ว
- เฟรมที่เหมือนกันติดต่อกันถือเป็นหลักฐานว่าไม่มีการใช้งาน และจะไม่รวมอยู่ในชุดการวิเคราะห์ ให้เปลี่ยนสิ่งที่แสดงบนหน้าจอก่อนทดสอบ
- หากชุดล่าสุดแสดงข้อผิดพลาด ให้แก้ไขปัญหาเกี่ยวกับโมเดลหรือการยืนยันตัวตน แล้วเลือก **วิเคราะห์ทันที** ระบบจะลองประมวลผลชุดที่ล้มเหลวอีกครั้งเฉพาะเมื่อสั่งการนี้อย่างชัดเจนเท่านั้น เพื่อหลีกเลี่ยงค่าใช้จ่ายในการใช้โมเดลซ้ำ

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

- [จัดการ Plugin](/th/plugins/manage-plugins)
- [ชุดควบคุม Codex](/th/plugins/codex-harness)
- [การทำความเข้าใจสื่อ](/th/nodes/media-understanding)
- [Node](/th/nodes)
- [การแก้ไขปัญหา Node](/th/nodes/troubleshooting)
- [ส่วนติดต่อผู้ใช้ควบคุม](/th/web/control-ui)
