---
read_when:
    - คุณต้องการให้การเลื่อนระดับหน่วยความจำทำงานโดยอัตโนมัติ
    - คุณต้องการทำความเข้าใจว่าแต่ละช่วงของ Dreaming ทำอะไร
    - คุณต้องการปรับแต่งการรวมความจำโดยไม่ทำให้ MEMORY.md ปนเปื้อน
sidebarTitle: Dreaming
summary: การรวมหน่วยความจำเบื้องหลังด้วยระยะเบา ลึก และ REM พร้อม Dream Diary
title: Dreaming
x-i18n:
    generated_at: "2026-06-27T17:25:58Z"
    model: gpt-5.5
    postprocess_version: locale-links-v1
    provider: openai
    source_hash: 257e8095114e05f18e0ba7a6870765a6b88c80e1eedaccfa891faa231f68f01b
    source_path: concepts/dreaming.md
    workflow: 16
---

Dreaming คือระบบรวบรวมและจัดระเบียบความจำเบื้องหลังใน `memory-core` ระบบนี้ช่วยให้ OpenClaw ย้ายสัญญาณระยะสั้นที่แข็งแรงไปเป็นความจำที่คงทน พร้อมทำให้กระบวนการอธิบายและตรวจทานได้

<Note>
Dreaming เป็นแบบ **เลือกเปิดใช้** และปิดไว้ตามค่าเริ่มต้น
</Note>

## สิ่งที่ Dreaming เขียน

Dreaming เก็บเอาต์พุตสองชนิด:

- **สถานะเครื่อง** ใน `memory/.dreams/` (ที่เก็บการเรียกคืน, สัญญาณเฟส, เช็กพอยต์การนำเข้า, ล็อก)
- **เอาต์พุตที่มนุษย์อ่านได้** ใน `DREAMS.md` (หรือ `dreams.md` ที่มีอยู่) และไฟล์รายงานเฟสแบบไม่บังคับภายใต้ `memory/dreaming/<phase>/YYYY-MM-DD.md`

การเลื่อนชั้นระยะยาวยังเขียนเฉพาะไปที่ `MEMORY.md`

## โมเดลเฟส

Dreaming ใช้เฟสที่ทำงานร่วมกันสามเฟส:

| เฟส | วัตถุประสงค์                                   | การเขียนแบบคงทน     |
| ----- | ----------------------------------------- | ----------------- |
| Light | จัดเรียงและเตรียมวัสดุระยะสั้นล่าสุด | ไม่                |
| Deep  | ให้คะแนนและเลื่อนชั้นตัวเลือกที่คงทน      | ใช่ (`MEMORY.md`) |
| REM   | สะท้อนคิดเกี่ยวกับธีมและแนวคิดที่เกิดซ้ำ     | ไม่                |

เฟสเหล่านี้เป็นรายละเอียดการทำงานภายใน ไม่ใช่ "โหมด" แยกที่ผู้ใช้กำหนดค่า

<AccordionGroup>
  <Accordion title="เฟส Light">
    เฟส Light นำเข้าสัญญาณความจำรายวันล่าสุดและร่องรอยการเรียกคืน ลบรายการซ้ำ และเตรียมบรรทัดตัวเลือก

    - อ่านจากสถานะการเรียกคืนระยะสั้น ไฟล์ความจำรายวันล่าสุด และทรานสคริปต์เซสชันที่ปกปิดข้อมูลแล้วเมื่อมี
    - เขียนบล็อก `## Light Sleep` ที่จัดการไว้เมื่อพื้นที่จัดเก็บมีเอาต์พุตแบบอินไลน์
    - บันทึกสัญญาณเสริมแรงสำหรับการจัดอันดับ Deep ในภายหลัง
    - ไม่เขียนไปที่ `MEMORY.md`

  </Accordion>
  <Accordion title="เฟส Deep">
    เฟส Deep ตัดสินใจว่าสิ่งใดจะกลายเป็นความจำระยะยาว

    - จัดอันดับตัวเลือกด้วยการให้คะแนนแบบถ่วงน้ำหนักและเกตเกณฑ์
    - ต้องผ่าน `minScore`, `minRecallCount` และ `minUniqueQueries`
    - เติมคืนสนิปเป็ตจากไฟล์รายวันที่ใช้งานอยู่ก่อนเขียน ดังนั้นสนิปเป็ตที่ล้าสมัยหรือถูกลบจะถูกข้าม
    - ต่อท้ายรายการที่เลื่อนชั้นแล้วลงใน `MEMORY.md`
    - เขียนสรุป `## Deep Sleep` ลงใน `DREAMS.md` และเขียน `memory/dreaming/deep/YYYY-MM-DD.md` แบบไม่บังคับ

  </Accordion>
  <Accordion title="เฟส REM">
    เฟส REM ดึงรูปแบบและสัญญาณสะท้อนคิดออกมา

    - สร้างสรุปธีมและการสะท้อนคิดจากร่องรอยระยะสั้นล่าสุด
    - เขียนบล็อก `## REM Sleep` ที่จัดการไว้เมื่อพื้นที่จัดเก็บมีเอาต์พุตแบบอินไลน์
    - บันทึกสัญญาณเสริมแรง REM ที่การจัดอันดับ Deep ใช้
    - ไม่เขียนไปที่ `MEMORY.md`

  </Accordion>
</AccordionGroup>

## การนำเข้าทรานสคริปต์เซสชัน

Dreaming สามารถนำเข้าทรานสคริปต์เซสชันที่ปกปิดข้อมูลแล้วเข้าสู่คอร์ปัสของ Dreaming ได้ เมื่อมีทรานสคริปต์ ทรานสคริปต์จะถูกป้อนเข้าสู่เฟส Light พร้อมกับสัญญาณความจำรายวันและร่องรอยการเรียกคืน เนื้อหาส่วนบุคคลและละเอียดอ่อนจะถูกปกปิดก่อนนำเข้า

## บันทึกความฝัน

Dreaming ยังเก็บ **บันทึกความฝัน** เชิงบรรยายไว้ใน `DREAMS.md` หลังจากแต่ละเฟสมีวัสดุเพียงพอ `memory-core` จะรันเทิร์นซับเอเจนต์เบื้องหลังแบบพยายามเต็มที่และต่อท้ายรายการบันทึกสั้น ๆ ระบบใช้โมเดลรันไทม์ค่าเริ่มต้น เว้นแต่จะกำหนดค่า `dreaming.model` หากโมเดลที่กำหนดค่าไว้ใช้งานไม่ได้ บันทึกความฝันจะลองใหม่หนึ่งครั้งด้วยโมเดลค่าเริ่มต้นของเซสชัน

<Note>
บันทึกนี้มีไว้ให้มนุษย์อ่านใน UI Dreams ไม่ใช่แหล่งเลื่อนชั้น อาร์ติแฟกต์บันทึก/รายงานที่ Dreaming สร้างจะถูกแยกออกจากการเลื่อนชั้นระยะสั้น เฉพาะสนิปเป็ตความจำที่มีหลักฐานรองรับเท่านั้นที่มีสิทธิ์เลื่อนชั้นเข้าสู่ `MEMORY.md`
</Note>

ยังมีเลนเติมข้อมูลย้อนหลังที่มีหลักฐานรองรับสำหรับงานตรวจทานและกู้คืน:

<AccordionGroup>
  <Accordion title="คำสั่งเติมข้อมูลย้อนหลัง">
    - `memory rem-harness --path ... --grounded` แสดงตัวอย่างเอาต์พุตบันทึกที่มีหลักฐานรองรับจากโน้ตย้อนหลัง `YYYY-MM-DD.md`
    - `memory rem-backfill --path ...` เขียนรายการบันทึกที่มีหลักฐานรองรับและย้อนกลับได้ลงใน `DREAMS.md`
    - `memory rem-backfill --path ... --stage-short-term` เตรียมตัวเลือกที่คงทนและมีหลักฐานรองรับเข้าสู่ที่เก็บหลักฐานระยะสั้นเดียวกับที่เฟส Deep ปกติใช้อยู่แล้ว
    - `memory rem-backfill --rollback` และ `--rollback-short-term` ลบอาร์ติแฟกต์เติมข้อมูลย้อนหลังที่เตรียมไว้เหล่านั้นโดยไม่แตะรายการบันทึกปกติหรือการเรียกคืนระยะสั้นที่ใช้งานอยู่

  </Accordion>
</AccordionGroup>

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

## สัญญาณการจัดอันดับ Deep

การจัดอันดับ Deep ใช้สัญญาณฐานแบบถ่วงน้ำหนักหกชนิดพร้อมการเสริมแรงจากเฟส:

| สัญญาณ              | น้ำหนัก | คำอธิบาย                                       |
| ------------------- | ------ | ------------------------------------------------- |
| ความถี่           | 0.24   | จำนวนสัญญาณระยะสั้นที่รายการสะสมไว้ |
| ความเกี่ยวข้อง           | 0.30   | คุณภาพการดึงคืนโดยเฉลี่ยของรายการ           |
| ความหลากหลายของคำค้น     | 0.15   | บริบทคำค้น/วันที่แตกต่างกันที่ทำให้รายการปรากฏ      |
| ความใหม่             | 0.15   | คะแนนความสดใหม่ที่ลดลงตามเวลา                      |
| การรวบรวมความจำ       | 0.10   | ความแข็งแรงของการเกิดซ้ำหลายวัน                     |
| ความลุ่มลึกเชิงแนวคิด | 0.06   | ความหนาแน่นของแท็กแนวคิดจากสนิปเป็ต/พาธ             |

การถูกพบในเฟส Light และ REM จะเพิ่มบูสต์เล็กน้อยที่ลดลงตามความใหม่จาก `memory/.dreams/phase-signals.json`

ผลลัพธ์การทดลองเงาสามารถวางซ้อนบนคะแนนฐานนั้นเป็นสัญญาณตรวจทาน
ก่อนการเขียนแบบคงทนใด ๆ การทดลองที่เป็นประโยชน์จะให้บูสต์ขนาดเล็ก
ที่มีขอบเขตแก่ตัวเลือก การทดลองที่เป็นกลางจะปล่อยให้เลื่อนออกไป และการทดลองที่เป็นอันตรายจะทำเครื่องหมายว่า
ถูกปฏิเสธสำหรับรอบการให้คะแนนนั้น สัญญาณนี้ยังคงเป็นแบบรายงานเท่านั้น: สามารถ
เปลี่ยนลำดับตัวเลือกหรือเมตาดาต้าการตรวจทานได้ แต่ไม่ได้เขียนไปที่
`MEMORY.md` หรือเลื่อนชั้นตัวเลือกด้วยตัวเอง

## ความครอบคลุมของรายงานการทดลองเงา QA

QA Lab มีสถานการณ์แบบรายงานเท่านั้นสำหรับสำรวจว่า
การทดลองเงาของ Dreaming ในอนาคตจะตรวจทานความจำตัวเลือกก่อนการเลื่อนชั้นได้อย่างไร สถานการณ์นี้ขอให้
เอเจนต์เปรียบเทียบคำตอบพื้นฐานกับคำตอบที่สามารถใช้ความจำตัวเลือกได้
จากนั้นเขียนรายงานภายในเครื่องพร้อมคำตัดสิน เหตุผล และแฟล็กความเสี่ยง

ความครอบคลุมนี้ตั้งใจจำกัดไว้เฉพาะ QA โดยตรวจสอบว่าอาร์ติแฟกต์รายงาน
ยังแยกจาก `MEMORY.md` และเอเจนต์ไม่อ้างว่าตัวเลือก
ถูกเลื่อนชั้นแล้ว สิ่งนี้ไม่ได้เพิ่มพฤติกรรมการทดลองเงาในโปรดักชันหรือเปลี่ยน
เอนจินการเลื่อนชั้นของเฟส Deep

ตัวรันการทดลองเงาของ `memory-core` คงสัญญาแบบรายงานเท่านั้นเดียวกันไว้สำหรับ
พาธโค้ดที่ต้องการอาร์ติแฟกต์ที่เสถียร โดยรับตัวเลือก พรอมป์ทดลอง
ผลลัพธ์พื้นฐาน ผลลัพธ์ตัวเลือก คำตัดสิน เหตุผล แฟล็กความเสี่ยง และการอ้างอิง
หลักฐาน จากนั้นเขียนรายงานพร้อม `promotion action: report-only` คำตัดสินที่เป็นประโยชน์
แมปไปยังคำแนะนำ `promote` คำตัดสินที่เป็นกลางแมปไปยัง `defer` และ
คำตัดสินที่เป็นอันตรายแมปไปยัง `reject`; ไม่มีคำแนะนำใดเขียนไปที่
`MEMORY.md` หรือใช้การเลื่อนชั้นของเฟส Deep

## การจัดกำหนดการ

เมื่อเปิดใช้ `memory-core` จะจัดการงาน Cron หนึ่งงานโดยอัตโนมัติสำหรับการกวาด Dreaming แบบเต็ม การกวาดแต่ละครั้งรันเฟสตามลำดับ: Light → REM → Deep

การกวาดรวมเวิร์กสเปซรันไทม์หลักและเวิร์กสเปซเอเจนต์ที่กำหนดค่าไว้ใด ๆ โดยลบซ้ำตามพาธ ดังนั้นการกระจายเวิร์กสเปซของซับเอเจนต์จะไม่ทำให้ `DREAMS.md` และสถานะความจำของเอเจนต์หลักถูกกันออกไป

พฤติกรรมจังหวะค่าเริ่มต้น:

| การตั้งค่า              | ค่าเริ่มต้น       |
| -------------------- | ------------- |
| `dreaming.frequency` | `0 3 * * *`   |
| `dreaming.model`     | โมเดลค่าเริ่มต้น |

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

<Tabs>
  <Tab title="เปิดใช้ Dreaming">
    ```json
    {
      "plugins": {
        "entries": {
          "memory-core": {
            "config": {
              "dreaming": {
                "enabled": true
              }
            }
          }
        }
      }
    }
    ```
  </Tab>
  <Tab title="จังหวะการกวาดแบบกำหนดเอง">
    ```json
    {
      "plugins": {
        "entries": {
          "memory-core": {
            "config": {
              "dreaming": {
                "enabled": true,
                "timezone": "America/Los_Angeles",
                "frequency": "0 */6 * * *"
              }
            }
          }
        }
      }
    }
    ```
  </Tab>
</Tabs>

## คำสั่ง Slash

```
/dreaming status
/dreaming on
/dreaming off
/dreaming help
```

## เวิร์กโฟลว์ CLI

<Tabs>
  <Tab title="แสดงตัวอย่าง / ใช้การเลื่อนชั้น">
    ```bash
    openclaw memory promote
    openclaw memory promote --apply
    openclaw memory promote --limit 5
    openclaw memory status --deep
    ```

    `memory promote` แบบแมนนวลใช้เกณฑ์ของเฟส Deep ตามค่าเริ่มต้น เว้นแต่จะถูกแทนที่ด้วยแฟล็ก CLI

  </Tab>
  <Tab title="อธิบายการเลื่อนชั้น">
    อธิบายว่าทำไมตัวเลือกเฉพาะจึงจะเลื่อนชั้นหรือไม่เลื่อนชั้น:

    ```bash
    openclaw memory promote-explain "router vlan"
    openclaw memory promote-explain "router vlan" --json
    ```

  </Tab>
  <Tab title="แสดงตัวอย่างฮาร์เนส REM">
    แสดงตัวอย่างการสะท้อนคิด REM ความจริงของตัวเลือก และเอาต์พุตการเลื่อนชั้น Deep โดยไม่เขียนสิ่งใด:

    ```bash
    openclaw memory rem-harness
    openclaw memory rem-harness --json
    ```

  </Tab>
</Tabs>

## ค่าเริ่มต้นหลัก

การตั้งค่าทั้งหมดอยู่ภายใต้ `plugins.entries.memory-core.config.dreaming`

<ParamField path="enabled" type="boolean" default="false">
  เปิดหรือปิดการกวาด Dreaming
</ParamField>
<ParamField path="frequency" type="string" default="0 3 * * *">
  จังหวะ Cron สำหรับการกวาด Dreaming แบบเต็ม
</ParamField>
<ParamField path="model" type="string">
  การแทนที่โมเดลซับเอเจนต์บันทึกความฝันแบบไม่บังคับ ใช้ค่า `provider/model` แบบแคนนอนิคัลเมื่อตั้งค่ารายการอนุญาต `allowedModels` ของซับเอเจนต์ด้วย
</ParamField>
<ParamField path="phases.deep.maxPromotedSnippetTokens" type="number" default="160">
  จำนวนโทเค็นโดยประมาณสูงสุดที่เก็บจากสนิปเป็ตการเรียกคืนระยะสั้นแต่ละรายการที่เลื่อนชั้นเข้าสู่ `MEMORY.md` ที่มาของการจัดอันดับยังคงมองเห็นได้
</ParamField>

<Warning>
`dreaming.model` ต้องใช้ `plugins.entries.memory-core.subagent.allowModelOverride: true` หากต้องการจำกัด ให้ตั้งค่า `plugins.entries.memory-core.subagent.allowedModels` ด้วย ความล้มเหลวด้านความไว้วางใจหรือรายการอนุญาตจะยังมองเห็นได้แทนที่จะถอยกลับแบบเงียบ ๆ; การลองใหม่ครอบคลุมเฉพาะข้อผิดพลาดโมเดลใช้งานไม่ได้เท่านั้น
</Warning>

<Note>
นโยบายเฟส เกณฑ์ และพฤติกรรมพื้นที่จัดเก็บส่วนใหญ่เป็นรายละเอียดการทำงานภายใน ดู [อ้างอิงการกำหนดค่าความจำ](/th/reference/memory-config#dreaming) สำหรับรายการคีย์ทั้งหมด
</Note>

## UI Dreams

เมื่อเปิดใช้ แท็บ **Dreams** ของ Gateway จะแสดง:

- สถานะเปิดใช้ Dreaming ปัจจุบัน
- สถานะระดับเฟสและการมีอยู่ของการกวาดที่จัดการไว้
- จำนวนระยะสั้น มีหลักฐานรองรับ สัญญาณ และที่เลื่อนชั้นวันนี้
- เวลาการรันที่จัดกำหนดการครั้งถัดไป
- เลนฉากที่มีหลักฐานรองรับแยกต่างหากสำหรับรายการเล่นซ้ำย้อนหลังที่เตรียมไว้
- ตัวอ่านบันทึกความฝันแบบขยายได้ที่รองรับโดย `doctor.memory.dreamDiary`

## Dreaming ไม่เคยรัน: สถานะแสดงว่าถูกบล็อก

หาก `openclaw memory status` รายงาน `Dreaming status: blocked` แสดงว่า Cron ที่จัดการไว้มีอยู่ แต่ Heartbeat ของเอเจนต์ค่าเริ่มต้นไม่ได้ทำงาน ตรวจสอบว่า Heartbeat เปิดใช้งานสำหรับเอเจนต์ค่าเริ่มต้นและเป้าหมายไม่ใช่ `none` จากนั้นรัน `openclaw memory status --deep` อีกครั้งหลังจากช่วง Heartbeat ถัดไป

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

- [ความจำ](/th/concepts/memory)
- [CLI ความจำ](/th/cli/memory)
- [อ้างอิงการกำหนดค่าความจำ](/th/reference/memory-config)
- [การค้นหาความจำ](/th/concepts/memory-search)
