CLI commands
หน่วยความจำ
openclaw memory
จัดการการทำดัชนีและการค้นหาหน่วยความจำเชิงความหมาย
ให้บริการโดย Plugin memory-core ที่รวมมาให้ คำสั่งนี้พร้อมใช้งานเมื่อ
plugins.slots.memory เลือก memory-core (ค่าเริ่มต้น); Plugin หน่วยความจำอื่น
จะแสดง namespace ของ CLI ของตนเอง
ที่เกี่ยวข้อง:
- แนวคิดหน่วยความจำ: หน่วยความจำ
- วิกิหน่วยความจำ: วิกิหน่วยความจำ
- CLI วิกิ: wiki
- Plugins: Plugins
ตัวอย่าง
openclaw memory statusopenclaw memory status --deepopenclaw memory status --fixopenclaw memory index --forceopenclaw memory search "meeting notes"openclaw memory search --query "deployment" --max-results 20openclaw memory promote --limit 10 --min-score 0.75openclaw memory promote --applyopenclaw memory promote --json --min-recall-count 0 --min-unique-queries 0openclaw memory promote-explain "router vlan"openclaw memory promote-explain "router vlan" --jsonopenclaw memory rem-harnessopenclaw memory rem-harness --jsonopenclaw memory status --jsonopenclaw memory status --deep --indexopenclaw memory status --deep --index --verboseopenclaw memory status --agent mainopenclaw memory index --agent main --verboseตัวเลือก
memory status และ memory index:
--agent <id>: จำกัดขอบเขตไปยังเอเจนต์เดียว หากไม่ระบุ คำสั่งเหล่านี้จะทำงานกับเอเจนต์ที่กำหนดค่าไว้แต่ละตัว; หากไม่ได้กำหนดค่ารายการเอเจนต์ไว้ จะย้อนกลับไปใช้เอเจนต์เริ่มต้น--verbose: แสดงบันทึกโดยละเอียดระหว่างการตรวจสอบและการทำดัชนี
memory status:
--deep: ตรวจสอบความพร้อมของ vector store ในเครื่อง, ความพร้อมของ embedding provider และความพร้อมของการค้นหาเวกเตอร์เชิงความหมายmemory statusแบบปกติจะยังคงรวดเร็วและไม่เรียกใช้งาน embedding แบบสดหรือการค้นพบ provider; สถานะ vector store หรือ semantic vector ที่ไม่ทราบหมายความว่าไม่ได้ถูกตรวจสอบในคำสั่งนั้น โหมดคำศัพท์ QMDsearchMode: "search"จะข้ามการตรวจสอบเวกเตอร์เชิงความหมายและการดูแลรักษา embedding แม้ใช้--deep--index: เรียกทำดัชนีใหม่หาก store สกปรก (มีนัยถึง--deep)--fix: ซ่อมแซม stale recall locks และปรับ metadata ของ promotion ให้เป็นมาตรฐาน--json: พิมพ์ผลลัพธ์ JSON
หาก memory status แสดง Dreaming status: blocked หมายความว่า cron ของ Dreaming ที่จัดการไว้ถูกเปิดใช้งาน แต่ Heartbeat ที่ขับเคลื่อนมันไม่ทำงานสำหรับเอเจนต์เริ่มต้น ดู Dreaming ไม่เคยทำงาน สำหรับสาเหตุทั่วไปสองข้อ
memory index:
--force: บังคับทำดัชนีใหม่ทั้งหมด
memory search:
- อินพุตคำค้น: ส่ง
[query]แบบ positional หรือ--query <text> - หากระบุทั้งสองอย่าง
--queryจะมีผลเหนือกว่า - หากไม่ระบุทั้งสองอย่าง คำสั่งจะออกพร้อมข้อผิดพลาด
--agent <id>: จำกัดขอบเขตไปยังเอเจนต์เดียว (ค่าเริ่มต้น: เอเจนต์เริ่มต้น)--max-results <n>: จำกัดจำนวนผลลัพธ์ที่ส่งคืน--min-score <n>: กรองรายการที่มีคะแนนต่ำออก--json: พิมพ์ผลลัพธ์ JSON
memory promote:
ดูตัวอย่างและปรับใช้การ promote หน่วยความจำระยะสั้น
openclaw memory promote [--apply] [--limit <n>] [--include-promoted]--apply-- เขียน promotions ลงในMEMORY.md(ค่าเริ่มต้น: แสดงตัวอย่างเท่านั้น)--limit <n>-- จำกัดจำนวน candidates ที่แสดง--include-promoted-- รวมรายการที่ถูก promote แล้วในรอบก่อนหน้า
ตัวเลือกทั้งหมด:
- จัดอันดับ candidates ระยะสั้นจาก
memory/YYYY-MM-DD.mdโดยใช้สัญญาณ promotion แบบถ่วงน้ำหนัก (frequency,relevance,query diversity,recency,consolidation,conceptual richness) - ใช้สัญญาณระยะสั้นจากทั้ง memory recalls และ daily-ingestion passes รวมถึงสัญญาณเสริมแรงจากเฟส light/REM
- เมื่อเปิดใช้งาน Dreaming,
memory-coreจะจัดการ cron job หนึ่งงานโดยอัตโนมัติ ซึ่งทำ full sweep (light -> REM -> deep) ในเบื้องหลัง (ไม่จำเป็นต้องเรียกopenclaw cron addด้วยตนเอง) --agent <id>: จำกัดขอบเขตไปยังเอเจนต์เดียว (ค่าเริ่มต้น: เอเจนต์เริ่มต้น)--limit <n>: จำนวน candidates สูงสุดที่จะส่งคืน/ปรับใช้--min-score <n>: คะแนน promotion แบบถ่วงน้ำหนักขั้นต่ำ--min-recall-count <n>: จำนวน recall ขั้นต่ำที่ candidate ต้องมี--min-unique-queries <n>: จำนวนคำค้นที่แตกต่างกันขั้นต่ำที่ candidate ต้องมี--apply: เพิ่ม candidates ที่เลือกลงในMEMORY.mdและทำเครื่องหมายว่า promoted--include-promoted: รวม candidates ที่ promoted แล้วในผลลัพธ์--json: พิมพ์ผลลัพธ์ JSON
memory promote-explain:
อธิบาย candidate ของ promotion ที่ระบุและรายละเอียดการแยกคะแนน
openclaw memory promote-explain <selector> [--agent <id>] [--include-promoted] [--json]<selector>: คีย์ candidate, ส่วนหนึ่งของ path หรือส่วนหนึ่งของ snippet ที่จะค้นหา--agent <id>: จำกัดขอบเขตไปยังเอเจนต์เดียว (ค่าเริ่มต้น: เอเจนต์เริ่มต้น)--include-promoted: รวม candidates ที่ promoted แล้ว--json: พิมพ์ผลลัพธ์ JSON
memory rem-harness:
ดูตัวอย่าง reflections ของ REM, truths ที่เป็น candidate และผลลัพธ์ deep promotion โดยไม่เขียนสิ่งใด
openclaw memory rem-harness [--agent <id>] [--include-promoted] [--json]--agent <id>: จำกัดขอบเขตไปยังเอเจนต์เดียว (ค่าเริ่มต้น: เอเจนต์เริ่มต้น)--include-promoted: รวม deep candidates ที่ promoted แล้ว--json: พิมพ์ผลลัพธ์ JSON
Dreaming
Dreaming คือระบบรวบรวมหน่วยความจำในเบื้องหลังที่มีสามเฟสซึ่งทำงานร่วมกัน:
light (จัดเรียง/เตรียม material ระยะสั้น), deep (promote ข้อเท็จจริงที่คงทน
ลงใน MEMORY.md) และ REM (สะท้อนและนำ themes ขึ้นมาแสดง)
- เปิดใช้งานด้วย
plugins.entries.memory-core.config.dreaming.enabled: true - สลับจากแชตด้วย
/dreaming on|off(หรือตรวจสอบด้วย/dreaming status) ผู้เรียกจาก channel ต้องเป็นเจ้าของจึงจะเปลี่ยนการตั้งค่าได้; Gateway clients ต้องมีoperator.adminสถานะและความช่วยเหลือแบบอ่านอย่างเดียวยังคงพร้อมใช้งานสำหรับ ผู้ส่งคำสั่งที่ได้รับอนุญาต - Dreaming ทำงานตามกำหนด sweep ที่จัดการไว้หนึ่งรายการ (
dreaming.frequency) และเรียกใช้เฟสตามลำดับ: light, REM, deep - เฉพาะเฟส deep เท่านั้นที่เขียนหน่วยความจำถาวรลงใน
MEMORY.md - ผลลัพธ์ของเฟสและรายการไดอารี่ที่มนุษย์อ่านได้จะถูกเขียนลงใน
DREAMS.md(หรือdreams.mdที่มีอยู่) พร้อมรายงานต่อเฟสแบบไม่บังคับในmemory/dreaming/<phase>/YYYY-MM-DD.md - การจัดอันดับใช้สัญญาณถ่วงน้ำหนัก: ความถี่ของ recall, ความเกี่ยวข้องของ retrieval, ความหลากหลายของคำค้น, ความใหม่ตามเวลา, การรวบรวมข้ามวัน และความสมบูรณ์ของแนวคิดที่อนุมานได้
- Promotion จะอ่าน live daily note ซ้ำก่อนเขียนลง
MEMORY.mdดังนั้น snippets ระยะสั้นที่ถูกแก้ไขหรือลบจะไม่ถูก promote จาก snapshots ของ recall store ที่ล้าสมัย - การเรียกใช้งานตามกำหนดและการเรียก
memory promoteด้วยตนเองใช้ค่าเริ่มต้นของเฟส deep เดียวกัน เว้นแต่คุณจะส่งค่า threshold overrides ผ่าน CLI - การเรียกใช้งานอัตโนมัติจะกระจายไปยัง memory workspaces ที่กำหนดค่าไว้
การกำหนดเวลาเริ่มต้น:
- จังหวะ sweep:
dreaming.frequency = 0 3 * * * - thresholds ของ 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, sources, batch activity)memory statusรวม path เพิ่มเติมใด ๆ ที่กำหนดค่าผ่านmemorySearch.extraPaths- หากฟิลด์คีย์ API ระยะไกลของ active memory ที่มีผลถูกกำหนดค่าเป็น SecretRefs คำสั่งจะ resolve ค่าเหล่านั้นจาก snapshot ของ gateway ที่ active หาก gateway ไม่พร้อมใช้งาน คำสั่งจะล้มเหลวอย่างรวดเร็ว
- หมายเหตุเรื่องความคลาดเคลื่อนของเวอร์ชัน Gateway: path คำสั่งนี้ต้องใช้ gateway ที่รองรับ
secrets.resolve; gateway รุ่นเก่าจะส่งคืนข้อผิดพลาด unknown-method - ปรับจังหวะ sweep ตามกำหนดด้วย
dreaming.frequencyนโยบาย deep promotion นอกเหนือจากนี้เป็นภายใน ยกเว้นdreaming.phases.deep.maxPromotedSnippetTokensซึ่งจำกัดความยาว snippet ที่ promoted โดยยังคงแสดง provenance ไว้ ใช้ flags ของ CLI กับmemory promoteเมื่อคุณต้องการ threshold overrides แบบใช้ครั้งเดียวด้วยตนเอง memory rem-harness --path <file-or-dir> --groundedแสดงตัวอย่างWhat Happened,ReflectionsและPossible Lasting Updatesแบบ grounded จาก daily notes ในอดีตโดยไม่เขียนสิ่งใดmemory rem-backfill --path <file-or-dir>เขียนรายการไดอารี่แบบ grounded ที่ย้อนกลับได้ลงในDREAMS.mdเพื่อการตรวจทานใน UImemory rem-backfill --path <file-or-dir> --stage-short-termยัง seed grounded durable candidates ลงใน live short-term promotion store เพื่อให้เฟส deep ปกติสามารถจัดอันดับได้memory rem-backfill --rollbackลบรายการไดอารี่แบบ grounded ที่เขียนไว้ก่อนหน้า และmemory rem-backfill --rollback-short-termลบ grounded short-term candidates ที่ stage ไว้ก่อนหน้า- ดู Dreaming สำหรับคำอธิบายเฟสทั้งหมดและข้อมูลอ้างอิงการกำหนดค่า