- หน้าแรก
- Documentation
- เซสชัน
- หน่วยความจำอัตโนมัติ
หน่วยความจำอัตโนมัติ
เมื่อเปิดใช้งาน เอเจนต์จะดึงความรู้ที่คงทนจากเซสชันที่ผ่านมาโดยอัตโนมัติ และแทรกสรุปแบบกระชบเข้าในแต่ละเซสชันใหม่ เมื่อเวลาผ่านไป ระบบจะสร้างที่เก็บหน่วยความจำระดับโปรเจกต์ — การตัดสินใจทางเทคนิค เวิร์กโฟลว์ที่ทำซ้ำ ข้อผิดพลาดที่พบบ่อย — ที่ส่งต่อไปได้โดยไม่ต้องดำเนินการด้วยตนเอง
ปิดใช้งานโดยค่าเริ่มต้น เปิดใช้งานผ่าน /settings หรือ config.yml:
memories: enabled: trueการใช้งาน
หัวข้อที่มีชื่อว่า “การใช้งาน”สิ่งที่ถูกแทรกเข้าไป
หัวข้อที่มีชื่อว่า “สิ่งที่ถูกแทรกเข้าไป”เมื่อเริ่มเซสชัน หากมีสรุปหน่วยความจำสำหรับโปรเจกต์ปัจจุบัน ระบบจะแทรกเข้าใน system prompt เป็นบล็อก Memory Guidance เอเจนต์จะได้รับคำสั่งให้:
- ถือว่าหน่วยความจำเป็นบริบทแบบฮิวริสติก — มีประโยชน์สำหรับกระบวนการและการตัดสินใจก่อนหน้า แต่ไม่ใช่แหล่งอ้างอิงที่เชื่อถือได้สำหรับสถานะ repo ปัจจุบัน
- อ้างอิงเส้นทาง memory artifact เมื่อหน่วยความจำเปลี่ยนแปลงแผน และจับคู่กับหลักฐานจาก repo ปัจจุบันก่อนดำเนินการ
- ให้ความสำคัญกับสถานะ repo และคำสั่งของผู้ใช้เมื่อขัดแย้งกับหน่วยความจำ ถือว่าหน่วยความจำที่ขัดแย้งเป็นข้อมูลที่ล้าสมัย
การอ่าน memory artifacts
หัวข้อที่มีชื่อว่า “การอ่าน memory artifacts”เอเจนต์สามารถอ่านไฟล์หน่วยความจำได้โดยตรงโดยใช้ URL memory:// กับเครื่องมือ read:
| URL | เนื้อหา |
|---|---|
memory://root | สรุปแบบกระชับที่แทรกเมื่อเริ่มต้น |
memory://root/MEMORY.md | เอกสารหน่วยความจำระยะยาวฉบับเต็ม |
memory://root/skills/<name>/SKILL.md | playbook ทักษะที่สร้างขึ้น |
คำสั่ง slash /memory
หัวข้อที่มีชื่อว่า “คำสั่ง slash /memory”| คำสั่งย่อย | ผลลัพธ์ |
|---|---|
view | แสดง payload ของหน่วยความจำที่แทรกในปัจจุบัน |
clear / reset | ลบข้อมูลหน่วยความจำทั้งหมดและ artifacts ที่สร้างขึ้น |
enqueue / rebuild | บังคับให้การรวมรวมทำงานในการเริ่มต้นครั้งถัดไป |
วิธีการทำงาน
หัวข้อที่มีชื่อว่า “วิธีการทำงาน”หน่วยความจำถูกสร้างขึ้นโดยไปป์ไลน์เบื้องหลังที่ทำงานเมื่อเริ่มต้นหรือถูกกระตุ้นด้วยตนเองผ่านคำสั่ง slash
เฟส 1 — การดึงข้อมูลต่อเซสชัน: สำหรับแต่ละเซสชันที่ผ่านมาที่มีการเปลี่ยนแปลงตั้งแต่ครั้งสุดท้ายที่ถูกประมวลผล โมเดลจะอ่านประวัติเซสชันและดึงสัญญาณที่คงทน: การตัดสินใจทางเทคนิค ข้อจำกัด ความล้มเหลวที่แก้ไขแล้ว เวิร์กโฟลว์ที่ทำซ้ำ เซสชันที่ใหม่เกินไป เก่าเกินไป หรือกำลังใช้งานอยู่จะถูกข้าม การดึงข้อมูลแต่ละครั้งจะสร้างบล็อกหน่วยความจำดิบและสรุปสั้นสำหรับเซสชันนั้น
เฟส 2 — การรวมรวม: หลังจากการดึงข้อมูล โมเดลจะทำการประมวลผลครั้งที่สองโดยอ่านข้อมูลที่ดึงจากทุกเซสชันและสร้างผลลัพธ์สามรายการที่เขียนลงดิสก์:
MEMORY.md— เอกสารหน่วยความจำระยะยาวที่ผ่านการคัดสรรmemory_summary.md— ข้อความกระชับที่แทรกเมื่อเริ่มเซสชันskills/— playbook เชิงกระบวนการที่ใช้ซ้ำได้ แต่ละรายการอยู่ในไดเรกทอรีย่อยของตัวเอง
เฟส 2 ใช้ lease เพื่อป้องกันการทำงานซ้ำเมื่อหลายกระบวนการเริ่มต้นพร้อมกัน ไดเรกทอรีทักษะที่ล้าสมัยจากการทำงานก่อนหน้าจะถูกตัดออกโดยอัตโนมัติ
ผลลัพธ์ทั้งหมดจะถูกสแกนหาข้อมูลลับก่อนเขียนลงดิสก์
พฤติกรรมการดึงข้อมูล
หัวข้อที่มีชื่อว่า “พฤติกรรมการดึงข้อมูล”พฤติกรรมการดึงข้อมูลหน่วยความจำและการรวมรวมถูกขับเคลื่อนทั้งหมดโดยไฟล์ prompt แบบคงที่ใน src/prompts/memories/
| ไฟล์ | วัตถุประสงค์ | ตัวแปร |
|---|---|---|
stage_one_system.md | System prompt สำหรับการดึงข้อมูลต่อเซสชัน | — |
stage_one_input.md | เทมเพลต user-turn ที่ครอบเนื้อหาเซสชัน | {{thread_id}}, {{response_items_json}} |
consolidation.md | Prompt สำหรับการรวมรวมข้ามเซสชัน | {{raw_memories}}, {{rollout_summaries}} |
read_path.md | Memory guidance ที่แทรกเข้าในเซสชันที่กำลังทำงาน | {{memory_summary}} |
การเลือกโมเดล
หัวข้อที่มีชื่อว่า “การเลือกโมเดล”หน่วยความจำใช้ระบบ model role
| เฟส | บทบาท | วัตถุประสงค์ |
|---|---|---|
| เฟส 1 (การดึงข้อมูล) | default | การดึงความรู้ต่อเซสชัน |
| เฟส 2 (การรวมรวม) | smol | การสังเคราะห์ข้ามเซสชัน |
หาก smol ไม่ได้ถูกกำหนดค่า เฟส 2 จะ fallback ไปใช้บทบาท default
การกำหนดค่า
หัวข้อที่มีชื่อว่า “การกำหนดค่า”| การตั้งค่า | ค่าเริ่มต้น | คำอธิบาย |
|---|---|---|
memories.enabled | false | สวิตช์หลัก |
memories.maxRolloutAgeDays | 30 | เซสชันที่เก่ากว่านี้จะไม่ถูกประมวลผล |
memories.minRolloutIdleHours | 12 | เซสชันที่ใช้งานล่าสุดกว่านี้จะถูกข้าม |
memories.maxRolloutsPerStartup | 64 | จำนวนสูงสุดของเซสชันที่ประมวลผลในการเริ่มต้นครั้งเดียว |
memories.summaryInjectionTokenLimit | 5000 | จำนวน token สูงสุดของสรุปที่แทรกเข้าใน system prompt |
ตัวปรับค่าเพิ่มเติม (concurrency, ระยะเวลา lease, token budgets) มีอยู่ใน config สำหรับการใช้งานขั้นสูง
ไฟล์สำคัญ
หัวข้อที่มีชื่อว่า “ไฟล์สำคัญ”src/memories/index.ts— การจัดการไปป์ไลน์ การแทรก การจัดการคำสั่ง slashsrc/memories/storage.ts— คิวงานและ thread registry ที่ใช้ SQLite เป็นฐานsrc/prompts/memories/— เทมเพลต prompt ของหน่วยความจำsrc/internal-urls/memory-protocol.ts— ตัวจัดการ URLmemory://