15 KiB
| read_when | summary | title | x-i18n | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
เอกสารอ้างอิง CLI สำหรับ `openclaw memory` (`status`/`index`/`search`/`promote`/`promote-explain`/`rem-harness`) | memory |
|
openclaw memory
จัดการการทำดัชนีและการค้นหา semantic memory
ให้บริการโดย Plugin memory ที่ใช้งานอยู่ (ค่าเริ่มต้น: memory-core; ตั้งค่า plugins.slots.memory = "none" เพื่อปิดใช้งาน)
ที่เกี่ยวข้อง:
- แนวคิดเรื่อง Memory: Memory
- wiki ของ Memory: Memory Wiki
- CLI ของ wiki: wiki
- Plugins: Plugins
ตัวอย่าง
openclaw memory status
openclaw memory status --deep
openclaw memory status --fix
openclaw memory index --force
openclaw memory search "meeting notes"
openclaw memory search --query "deployment" --max-results 20
openclaw memory promote --limit 10 --min-score 0.75
openclaw memory promote --apply
openclaw memory promote --json --min-recall-count 0 --min-unique-queries 0
openclaw memory promote-explain "router vlan"
openclaw memory promote-explain "router vlan" --json
openclaw memory rem-harness
openclaw memory rem-harness --json
openclaw memory status --json
openclaw memory status --deep --index
openclaw memory status --deep --index --verbose
openclaw memory status --agent main
openclaw memory index --agent main --verbose
ตัวเลือก
memory status และ memory index:
--agent <id>: จำกัดขอบเขตไปยัง agent เดียว หากไม่ระบุ คำสั่งเหล่านี้จะทำงานกับทุก agent ที่กำหนดค่าไว้; หากไม่มีการกำหนดรายการ agent ระบบจะ fallback ไปใช้ agent ค่าเริ่มต้น--verbose: แสดง log แบบละเอียดระหว่างการ probe และการทำดัชนี
memory status:
--deep: probe ความพร้อมใช้งานของ vector + embedding--index: เรียกทำ reindex หาก store มีสถานะ dirty (เป็นนัยว่าใช้--deep)--fix: ซ่อมแซม recall lock ที่ค้างเก่า และปรับ promotion metadata ให้เป็นมาตรฐาน--json: พิมพ์ผลลัพธ์เป็น JSON
หาก memory status แสดง Dreaming status: blocked แสดงว่า Cron ของ Dreaming ที่ระบบจัดการให้ถูกเปิดใช้งานอยู่ แต่ Heartbeat ที่ใช้ขับเคลื่อนไม่ได้ทำงานสำหรับ agent ค่าเริ่มต้น ดู Dreaming never runs สำหรับสองสาเหตุที่พบบ่อย
memory index:
--force: บังคับทำ reindex แบบเต็ม
memory search:
- อินพุตคำค้น: ส่งได้ทั้ง
[query]แบบ positional หรือ--query <text> - หากระบุทั้งสองแบบ
--queryจะมีลำดับความสำคัญกว่า - หากไม่ระบุทั้งสองแบบ คำสั่งจะออกพร้อม error
--agent <id>: จำกัดขอบเขตไปยัง agent เดียว (ค่าเริ่มต้น: agent ค่าเริ่มต้น)--max-results <n>: จำกัดจำนวนผลลัพธ์ที่ส่งคืน--min-score <n>: กรองผลลัพธ์ที่มีคะแนนต่ำออก--json: พิมพ์ผลลัพธ์เป็น JSON
memory promote:
ดูตัวอย่างและนำการโปรโมต memory ระยะสั้นไปใช้จริง
openclaw memory promote [--apply] [--limit <n>] [--include-promoted]
--apply-- เขียนการโปรโมตลงในMEMORY.md(ค่าเริ่มต้น: แสดงตัวอย่างเท่านั้น)--limit <n>-- จำกัดจำนวน candidate ที่แสดง--include-promoted-- รวมรายการที่เคยถูกโปรโมตแล้วในรอบก่อนหน้า
ตัวเลือกทั้งหมด:
- จัดอันดับ candidate ระยะสั้นจาก
memory/YYYY-MM-DD.mdโดยใช้สัญญาณการโปรโมตแบบถ่วงน้ำหนัก (frequency,relevance,query diversity,recency,consolidation,conceptual richness) - ใช้สัญญาณระยะสั้นทั้งจาก memory recall และรอบ daily-ingestion รวมถึงสัญญาณ reinforcement จากเฟส light/REM
- เมื่อเปิดใช้ Dreaming,
memory-coreจะจัดการ Cron หนึ่งรายการโดยอัตโนมัติซึ่งรันการกวาดเต็มรูปแบบ (light -> REM -> deep) อยู่เบื้องหลัง (ไม่ต้องใช้openclaw cron addด้วยตนเอง) --agent <id>: จำกัดขอบเขตไปยัง agent เดียว (ค่าเริ่มต้น: agent ค่าเริ่มต้น)--limit <n>: จำนวน candidate สูงสุดที่จะส่งคืน/นำไปใช้--min-score <n>: คะแนนการโปรโมตแบบถ่วงน้ำหนักขั้นต่ำ--min-recall-count <n>: จำนวน recall ขั้นต่ำที่ candidate ต้องมี--min-unique-queries <n>: จำนวน query ที่แตกต่างกันขั้นต่ำที่ candidate ต้องมี--apply: ผนวก candidate ที่เลือกลงในMEMORY.mdและทำเครื่องหมายว่าโปรโมตแล้ว--include-promoted: รวม candidate ที่โปรโมตไปแล้วในเอาต์พุต--json: พิมพ์เอาต์พุตเป็น JSON
memory promote-explain:
อธิบาย candidate สำหรับการโปรโมตที่ระบุ พร้อมรายละเอียดการแยกคะแนน
openclaw memory promote-explain <selector> [--agent <id>] [--include-promoted] [--json]
<selector>: คีย์ของ candidate, ส่วนของพาธ, หรือส่วนของ snippet ที่ใช้ค้นหา--agent <id>: จำกัดขอบเขตไปยัง agent เดียว (ค่าเริ่มต้น: agent ค่าเริ่มต้น)--include-promoted: รวม candidate ที่โปรโมตไปแล้ว--json: พิมพ์เอาต์พุตเป็น JSON
memory rem-harness:
ดูตัวอย่าง REM reflections, candidate truths และเอาต์พุตการโปรโมตแบบ deep โดยไม่เขียนอะไรลงไฟล์
openclaw memory rem-harness [--agent <id>] [--include-promoted] [--json]
--agent <id>: จำกัดขอบเขตไปยัง agent เดียว (ค่าเริ่มต้น: agent ค่าเริ่มต้น)--include-promoted: รวม candidate แบบ deep ที่โปรโมตไปแล้ว--json: พิมพ์เอาต์พุตเป็น JSON
Dreaming
Dreaming คือระบบรวม memory เบื้องหลังที่มีสามเฟสทำงานร่วมกัน:
light (จัดเรียง/เตรียมข้อมูลระยะสั้น), deep (โปรโมตข้อเท็จจริงที่คงทน
ลงใน MEMORY.md) และ REM (สะท้อนและแสดงธีมต่าง ๆ)
- เปิดใช้งานด้วย
plugins.entries.memory-core.config.dreaming.enabled: true - สลับจากแชตได้ด้วย
/dreaming on|off(หรือตรวจสอบด้วย/dreaming status) - Dreaming ทำงานตามตารางการกวาดที่ระบบจัดการไว้รายการเดียว (
dreaming.frequency) และรันเฟสตามลำดับ: light, REM, deep - เฉพาะเฟส deep เท่านั้นที่เขียน durable memory ลงใน
MEMORY.md - เอาต์พุตเฟสแบบอ่านได้โดยมนุษย์และบันทึกไดอารีจะถูกเขียนลงใน
DREAMS.md(หรือdreams.mdที่มีอยู่เดิม) พร้อมรายงานแยกตามเฟสแบบไม่บังคับในmemory/dreaming/<phase>/YYYY-MM-DD.md - การจัดอันดับใช้สัญญาณแบบถ่วงน้ำหนัก: ความถี่ของ recall, ความเกี่ยวข้องในการดึงคืน, ความหลากหลายของ query, ความใหม่ตามเวลา, การรวมข้ามวัน และความสมบูรณ์เชิงแนวคิดที่อนุมานได้
- การโปรโมตจะอ่าน daily note ปัจจุบันซ้ำก่อนเขียนลง
MEMORY.mdดังนั้น snippet ระยะสั้นที่ถูกแก้ไขหรือลบจะไม่ถูกโปรโมตจากสแนปชอต recall-store ที่ล้าสมัย - การรัน
memory promoteทั้งแบบตามตารางและแบบ manual ใช้ค่าเริ่มต้นของเฟส deep เดียวกัน เว้นแต่คุณจะส่ง threshold override ผ่านแฟลก CLI - การรันอัตโนมัติจะกระจายการทำงานไปยัง memory workspace ที่กำหนดค่าไว้
ตารางเวลาเริ่มต้น:
- รอบการกวาด:
dreaming.frequency = 0 3 * * * - threshold ของ deep:
minScore=0.8,minRecallCount=3,minUniqueQueries=3,recencyHalfLifeDays=14,maxAgeDays=30
ตัวอย่าง:
{
"plugins": {
"entries": {
"memory-core": {
"config": {
"dreaming": {
"enabled": true
}
}
}
}
}
}
หมายเหตุ:
memory index --verboseพิมพ์รายละเอียดรายเฟส (provider, model, แหล่งข้อมูล, กิจกรรมของ batch)memory statusรวมพาธเพิ่มเติมใด ๆ ที่กำหนดไว้ผ่านmemorySearch.extraPaths- หากฟิลด์คีย์ API ระยะไกลของ Active Memory ที่มีผลจริงถูกกำหนดเป็น SecretRefs คำสั่งจะ resolve ค่าเหล่านั้นจาก snapshot ของ Gateway ที่ใช้งานอยู่ หาก Gateway ไม่พร้อมใช้งาน คำสั่งจะล้มเหลวทันที
- หมายเหตุเรื่อง Gateway version skew: เส้นทางคำสั่งนี้ต้องใช้ Gateway ที่รองรับ
secrets.resolve; Gateway รุ่นเก่าจะส่งกลับ unknown-method error - ปรับรอบการกวาดตามตารางได้ด้วย
dreaming.frequencyส่วนนโยบายการโปรโมตแบบ deep เป็นเรื่องภายใน; ใช้แฟลก CLI บนmemory promoteเมื่อต้องการ override แบบครั้งเดียว memory rem-harness --path <file-or-dir> --groundedจะแสดงตัวอย่างWhat Happened,ReflectionsและPossible Lasting Updatesแบบ grounded จาก daily note เก่าโดยไม่เขียนอะไรลงไฟล์memory rem-backfill --path <file-or-dir>จะเขียนรายการไดอารีแบบ grounded ที่ย้อนกลับได้ลงในDREAMS.mdเพื่อให้ UI ตรวจสอบmemory rem-backfill --path <file-or-dir> --stage-short-termจะ seed candidate แบบ grounded ที่คงทนลงใน store โปรโมตระยะสั้นปัจจุบันด้วย เพื่อให้เฟส deep ปกติสามารถจัดอันดับต่อได้memory rem-backfill --rollbackจะลบรายการไดอารีแบบ grounded ที่เคยเขียนไว้ก่อนหน้า และmemory rem-backfill --rollback-short-termจะลบ candidate ระยะสั้นแบบ grounded ที่เคยถูก stage ไว้- ดู Dreaming สำหรับคำอธิบายเฟสแบบเต็มและเอกสารอ้างอิงการกำหนดค่า