---
read_when:
    - คุณต้องการให้การโปรโมตหน่วยความจำทำงานโดยอัตโนมัติ
    - คุณต้องการเข้าใจว่าแต่ละช่วงของ Dreaming ทำอะไร
    - คุณต้องการปรับแต่งการรวมข้อมูลโดยไม่ทำให้ MEMORY.md รก
sidebarTitle: Dreaming
summary: การผสานรวมหน่วยความจำเบื้องหลังด้วยเฟสเบา ลึก และ REM พร้อมบันทึกความฝัน
title: Dreaming
x-i18n:
    generated_at: "2026-05-02T22:18:13Z"
    model: gpt-5.5
    provider: openai
    source_hash: b56f93c68f53178e0998b9809ff358910956260f72ff7213b7d0dd92300f5d24
    source_path: concepts/dreaming.md
    workflow: 16
---

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

<Note>
Dreaming เป็นแบบ **opt-in** และปิดใช้งานโดยค่าเริ่มต้น
</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 phase">
    เฟส Light นำเข้าสัญญาณความจำรายวันล่าสุดและร่องรอยการเรียกคืน ขจัดข้อมูลซ้ำ และเตรียมบรรทัดตัวเลือก

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

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

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

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

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

  </Accordion>
</AccordionGroup>

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

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

## Dream Diary

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

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

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

<AccordionGroup>
  <Accordion title="Backfill commands">
    - `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` ลบอาร์ติแฟกต์ backfill ที่เตรียมไว้เหล่านั้นโดยไม่แตะรายการไดอารีปกติหรือการเรียกคืนระยะสั้นสด

  </Accordion>
</AccordionGroup>

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

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

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

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

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

## การกำหนดเวลา

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

การกวาดรวม workspace รันไทม์หลักและ agent workspaces ที่กำหนดค่าไว้ โดยขจัดรายการซ้ำตามพาธ ดังนั้นการกระจาย workspace ของ subagent จะไม่ตัด `DREAMS.md` และสถานะความจำของ agent หลักออก

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

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

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

<Tabs>
  <Tab title="Enable dreaming">
    ```json
    {
      "plugins": {
        "entries": {
          "memory-core": {
            "config": {
              "dreaming": {
                "enabled": true
              }
            }
          }
        }
      }
    }
    ```
  </Tab>
  <Tab title="Custom sweep cadence">
    ```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="Promotion preview / apply">
    ```bash
    openclaw memory promote
    openclaw memory promote --apply
    openclaw memory promote --limit 5
    openclaw memory status --deep
    ```

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

  </Tab>
  <Tab title="Explain promotion">
    อธิบายว่าเหตุใดตัวเลือกเฉพาะจึงจะได้รับหรือไม่ได้รับการเลื่อนขั้น:

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

  </Tab>
  <Tab title="REM harness preview">
    แสดงตัวอย่างการสะท้อน REM, candidate truths, และเอาต์พุตการเลื่อนขั้น 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">
  การแทนที่โมเดล subagent ของ Dream Diary แบบเสริม ใช้ค่า `provider/model` มาตรฐานเมื่อกำหนดรายการอนุญาต `allowedModels` ของ subagent ด้วย
</ParamField>

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

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

## UI Dreams

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

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

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

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

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

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