LightVela

Hermes การจัดเก็บความทรงจำระยะยาวของเอเจนต์: กฎเหล็กสี่ข้อสำหรับ "น้อยแต่แม่นยำ"

สรุป

Hermes การดูแลความทรงจำระยะยาวของเอเจนต์ไม่ได้เกี่ยวกับการเก็บมากขึ้น แต่ปฏิบัติตามกฎเหล็กสี่ข้อที่ทำให้ความทรงจำ 'น้อยแต่แม่นยำ':

  1. จำกัด: USER.md ที่ประมาณ 1,375 ตัวอักษร และ MEMORY.md ที่ประมาณ 2,200 ตัวอักษร บังคับให้กระชับเนื้อหา
  2. คงที่: ไม่มีการเขียนซ้ำภายในเซสชัน ปกป้องแคช KV และความเสถียรของการอนุมาน
  3. โปร่งใส: การเขียนทุกครั้งมีการประกาศ (💾 Memory updated) และสามารถอนุมัติ, ยกเลิก, และตรวจสอบได้ด้วย /journey
  4. รวมตนเอง: เมื่อความจุเต็ม ไม่มีสิ่งใดถูกละทิ้งอย่างเงียบ ๆ; การตอบสนอง Memory at 2,100/2,200 chars. Consolidate now... บังคับให้เอเจนต์ทำการแลกเปลี่ยนผ่านสามการดำเนินการอะตอม add / replace / remove

ผลลัพธ์: เอเจนต์จะเข้าใจคุณดีขึ้นเมื่อเวลาผ่านไปโดยไม่เคยฟู่ฟ่าจนเกินไป และความจำจะเข้มข้นขึ้นโดยไม่เคยหลุดจากการควบคุม


ความเข้าใจผิดที่พบบ่อย

"ยิ่งผู้ช่วย AI จำได้มากเท่าไหร่ มันก็ยิ่งฉลาดมากขึ้นเท่านั้น"

สิ่งตรงกันข้ามคือความจริง การจำข้อมูลที่มีคุณภาพหลากหลายมากทำให้อัจฉริยะของเอเจนต์ลดลง — มันเริ่มพิจารณาคำกล่าวชั่วคราว ผิดพลาด และล้าสมัยของคุณเป็นข้อเท็จจริงที่มั่นคงเกี่ยวกับคุณ ระบบความจำระยะยาวที่มีประโยชน์อย่างแท้จริงมักจะเป็น จำนวนเล็กแต่แม่นยำ

เพื่อส่งมอบสิ่งนั้น Hermes ตอบคำถามสี่ข้อดังนี้:

  • อะไรสมควรที่จะเข้าสู่ความทรงจำระยะยาว? (ประตูการเขียน)
  • ชิ้นส่วนข้อมูลที่เข้ามาจะกลายเป็นรายการที่จัดเรียงดีได้อย่างไร? (การคัดสรร)
  • เกิดอะไรขึ้นเมื่อข้อมูลเปลี่ยนแปลง? (การปรับปรุงความหมาย)
  • เกิดอะไรขึ้นเมื่อความจุเต็ม? (การรวมบังคับ)}

ส่วนด้านล่างจะดำเนินการตามทั้งสี่ข้อทีละข้อ


1. การเขียน: เอเจนต์คือประตูแรก

ประตูแรกของ Hermes คือ ตัวกรองการเขียน แทนที่จะเก็บทุกประโยค เอเจนต์ ตัดสินใจเอง ว่าจะเขียนในสี่ช่วงเวลาที่ชัดเจน:

  • การบีบอัด: เมื่อบริบทเข้าใกล้ขีดจำกัด เอเจนต์จะทบทวนเซสชันปัจจุบันและดึงสิ่งที่ควรเก็บไว้ข้ามเซสชันออกมา
  • จุดตรวจสอบ: ในช่วงเวลาเช่น การปิดงานหรือเปลี่ยนหัวข้อ เอเจนต์จะตรวจสอบความทรงจำ
  • การกระตุ้น: ระบบจะถามเอเจนต์เป็นระยะ ๆ ว่า "มีอะไรในช่วงเวลานี้ที่ควรเก็บไว้ในความทรงจำระยะยาวไหม" เพื่อให้ชิ้นส่วนสำคัญไม่สูญหาย
  • คำสั่งผู้ใช้โดยตรง: "โปรดจดจำ X" จะถูกเขียนด้วยลำดับความสำคัญ

เกณฑ์การตัดสินมักรวมถึง:

มิติความหมายตัวอย่างที่ตรงข้าม
การนำกลับมาใช้ใหม่ได้อันนี้อาจมีประโยชน์ในงานอื่นๆ ในอนาคตไหม?"วันนี้ฉันอยากดื่มลาเต้"
ความเสถียรเป็นสิ่งชั่วคราวหรือยาวนาน?"หัวฉันปวดวันนี้"
ความเฉพาะเจาะจงทัศนคติคลุมเครือ หรือข้อเท็จจริงที่นำกลับมาใช้ได้?"ฉันคิดว่าฉันชอบสิ่งที่กระชับมากขึ้นหน่อย"
ความไวต่อความเป็นส่วนตัวอีเมล รหัสผ่าน ที่อยู่ที่ไม่ได้ยืนยันอย่างชัดเจนโดยปกติไม่ได้เขียน

เอเจนต์ Hermes ที่ได้รับการฝึกฝนมาดีจะเลือกจดจำเล็กน้อยดีกว่าจำอย่างประมาท


2. การคัดสรร: การเขียนชิ้นส่วนใหม่เป็นรายการ

แม้หลังจากผ่านตัวกรองการเขียนแล้ว ข้อมูลที่เข้ามามักจะเป็นชิ้นส่วน Hermes ขั้นตอนที่สองคือ เขียนชิ้นส่วนเหล่านี้ใหม่ให้เป็นรายการที่สมบูรณ์

ตัวอย่างเช่น การสนทนาแบบดิบอาจเป็น:

“อ้อ ใช่ API ของเราถูกเปลี่ยนให้ผ่านเกตเวย์แทนที่จะไปยังบริการโดยตรง — นั่นเกิดขึ้นเมื่อสัปดาห์ที่แล้ว”

Hermes ไม่เก็บข้อความนั้นตามตัวอักษร มันเขียนว่า:

- [~2026-07-24] Project X's API now routes through the gateway instead of connecting directly.

เกิดขึ้นสี่อย่างที่นั่น:

  • การสกัดข้อเท็จจริง: คำเสริมเช่น "โอ้ ใช่" จะถูกละทิ้ง
  • การระบุประธาน: "that API of ours" กลายเป็น "โครงการ X"
  • การยึดเวลา: "สัปดาห์ที่แล้ว" กลายเป็นวันที่โดยประมาณ
  • ความสามารถในการเรียกค้น: เขียนเป็นรายการที่มีโครงสร้างเพื่อให้ FTS5 สามารถจับคู่ได้ภายหลัง (~20ms เพื่อจับคู่, ~1ms เพื่อแสดงหน้า)

มีเพียงหลังจากการคัดสรรอย่างเป็นระบบเท่านั้นที่รายการจะมีโอกาสถูก เรียกคืนได้หลายเดือนต่อมา


3. การดำเนินการอะตอมสามอย่าง: เพิ่ม / แทนที่ / ลบ

การแก้ไขทุกอย่างที่ Hermes ทำกับ MEMORY.md ต้องตกอยู่บนหนึ่งในสามการดำเนินการอะตอม:

การดำเนินการความหมายตัวกระตุ้น
เพิ่มเพิ่มรายการใหม่เหตุการณ์ใหม่, การตัดสินใจใหม่
แทนที่เขียนทับ รายการเก่าด้วยรายการใหม่การเปลี่ยนแปลงสถานะ ("API ขณะนี้ผ่านเกตเวย์" แทนที่ "API เชื่อมต่อโดยตรง")
ลบการลบทางกายภาพการปฏิเสธของผู้ใช้, รายการหมดอายุ, รายการเก่าถูกรวมเข้าไปจากการรวม

ทำไมการปฏิบัติแบบไม่ชัดเจน (เช่น "แค่ปรับปรุงฟิลด์ที่เกี่ยวข้อง") จึงไม่อนุญาต?

เหตุผลที่ 1: การปฏิบัติการแบบอะตอมสามารถตรวจสอบได้ การเปลี่ยนแปลงหน่วยความจำแต่ละครั้งจะสอดคล้องกับ "รายการนี้ → รายการนั้น" ซึ่งเป็นสิ่งที่ทำให้การตรวจสอบอย่างละเอียดเช่น /memory diff <id> เป็นไปได้

เหตุผลข้อ 2: มันบังคับให้เอเจนต์ต้องตัดสินใจอย่างชัดเจนว่า 'ฉันกำลังแทนที่ หรือเพิ่มเข้าไป?' — ตัวเลือกแบบสองข้อนี้คือจุดที่การแลกเปลี่ยนเริ่มต้นขึ้น และมันป้องกันบุคลิกที่แยกออกเป็นส่วน ๆ

เหตุผลข้อ 3: มันวางรากฐานสำหรับเกทการอนุมัติ (ส่วนที่ 7) ซึ่งแต่ละรายการที่รอดำเนินการสามารถอนุมัติหรือปฏิเสธได้อย่างอิสระ


4. อัปเดตความหมาย: แก้ไขก่อน ห้ามเพิ่มสิ่งตรงข้าม

นี่คือจุดที่ระบบความจำง่ายๆ ล้มเหลว: จะเกิดอะไรขึ้นเมื่อข้อมูลเปลี่ยนแปลง?

วิธีที่ง่ายเกินไปคือการเพิ่มรายการอีกหนึ่งรายการ ซึ่งทำให้เอเจนต์ถือทั้งหมดนี้พร้อมกัน:

  • ผู้ใช้ชอบ Vue
  • ผู้ใช้ต่อมาสลับไปใช้ React
  • ผู้ใช้กลับไปใช้ Vue

สามรายการขนานกัน และโมเดลเองก็ไม่รู้แล้วว่าจะเชื่ออันไหน

Hermes ปรับปรุงแทนการเพิ่มสิ่งตรงข้าม:

  • ช่องตั้งค่าความชอบใน USER.md มักจะ เขียนทับค่าที่เก่า (replace)
  • ใน MEMORY.md เหตุการณ์ในอดีตจะถูกเก็บไว้ แต่ ช่องสถานะปัจจุบันจะถูกอัปเดต (replace) ทำให้เกิดร่องรอยการย้ายข้อมูลสั้น ๆ
  • สิ่งใดที่ผู้ใช้ปฏิเสธอย่างชัดเจน (“ฉันไม่เคยเป็นแบบนั้น”) จะถูก remove — ลบทางกายภาพ, ไม่ได้บันทึกว่า “ผู้ใช้ปฏิเสธ X”

จุดประสงค์ของทั้งหมดนี้คือเพื่อให้แบบจำลองโลกของเอเจนต์มีความ สอดคล้องกับตัวเอง


5. เมื่อความจุเต็ม: รวมตอนนี้

Hermes กำหนดเพดานสูงสุดที่เข้มงวดที่ ~2,200 อักขระ สำหรับ MEMORY.md เมื่อมันเต็ม จะมี add ส่งกลับดังนี้:

{
  "success": false,
  "error": "Memory at 2,100/2,200 chars. Consolidate now...",
  "current_entries": [...],
  "usage": "2,100/2,200"
}

นั่นไม่ใช่ข้อบกพร่อง มันคือการออกแบบ

ถ้าข้อมูลรายการเก่าที่สุดถูกลบทิ้งโดยอัตโนมัติเมื่อความจุเต็ม เอเจนต์ก็จะไม่มีโอกาสเรียนรู้ที่จะทำการแลกเปลี่ยน — ข้อมูลสำคัญอาจถูกลบออกในขณะที่ข้อมูลที่ไม่เกี่ยวข้องยังคงอยู่ Hermes ทำในทางตรงกันข้าม: การเขียนจะถูกปฏิเสธจนกว่าเอเจนต์จะเคลียร์พื้นที่เอง

การรวมตัวมักเกี่ยวข้องกับ:

  • การรวมหัวข้อ: รายการที่คล้ายกันหลายรายการถูกสรุปโดย LLM ให้เป็นความทรงจำที่กว้างขึ้นหนึ่งรายการ
  • การเก็บถาวรเมื่อหมดอายุ: “เป้าหมายสปรินต์สัปดาห์นี้คือ…” จะถูกเก็บหลังจากวันที่ผ่านไป remove วัน
  • การลดน้ำหนักตามความถี่การเข้าถึง: รายการที่ไม่ได้ถูกเรียกใช้นานจะถูกเลื่อนไปด้านหลังของคิวและถูกรวมเข้าหรือถูกลบก่อน

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


6. วงจรการเรียนรู้ที่ตระหนักถึงความยินยอม: เอเจนต์เรียนรู้เบื้องหลังโดยไม่รบกวนคุณ

Hermes มีความสามารถที่ซ่อนอยู่อีกอย่างหนึ่ง: ลูปการสะท้อนตนเองเบื้องหลัง ซึ่งจะทำเป็นระยะ:

  1. ดึงเซสชันล่าสุด;
  2. ใช้โมเดลราคาถูก (เช่น Gemini Flash) กับเซสชันเหล่านั้นเพื่อดึงสิ่งที่ควรจดจำ;
  3. สร้างรายการความจำตัวอย่างที่ทำเครื่องหมาย [auto].

ฝ่ายต้นน้ำเรียกสิ่งนี้ว่า วงจรการเรียนรู้ที่รับรู้ความยินยอม — การเรียนรู้ไม่ควรขัดจังหวะผู้ใช้ แต่ผู้ใช้สามารถเข้ามามีส่วนร่วมได้ทุกเมื่อ

ประโยชน์:

  • ต้นทุนลดลงเหลือหนึ่งในสามหรือหนึ่งในห้า: โมเดลราคาถูกจัดการการตรวจสอบ โดยแทบไม่มีผลกระทบต่อคุณภาพการจับภาพในการทดสอบขั้นต้น
  • เอเจนต์สามารถเติบโตได้แม้คุณไม่ได้ใช้งาน — ตราบใดที่มันยังออนไลน์
  • ไม่รบกวนการสนทนาหลัก: รายการผู้สมัครรอคุณอยู่ที่เกตการอนุมัติในส่วนถัดไป

7. ประตูการอนุมัติ: หากคุณไม่สบายใจกับการที่เอเจนต์ทำงานด้วยตัวเอง

ผู้ใช้บางคนกังวล: "ถ้าเอเจนต์เขียนอะไรผิดลงในความทรงจำโดยอัตโนมัติจะทำอย่างไร?"

Hermes มีสวิทช์แบบชัดเจน:

memory:
  write_approval: true    # turn on the approval gate

เมื่อเปิดใช้งานสิ่งนั้นแล้ว การเขียนหน่วยความจำ ทั้งหมด (รวมถึงการเขียนอัตโนมัติจากการสะท้อนในพื้นหลัง) จะถูกจัดเตรียมเพื่อการตรวจสอบ ผู้ใช้จะตรวจสอบพวกมันด้วย:

/memory pending           # list pending entries (background reflection marks them [auto])
/memory diff <id>         # inspect a specific change
/memory approve <id>      # approve (or all)
/memory reject <id>       # reject

ทักษะมี skills.write_approval แยกต่างหาก เพราะ SKILL.md อาจยาวและแสดงในบรรทัดเดียวได้ยาก; Hermes ให้ /skills diff <id> เพื่อให้คุณสามารถอ่าน diff แบบรวมทั้งหมดได้

เกตการอนุมัติเป็นการแยกตัวออกอย่างชัดเจนของ การเรียนรู้อัตโนมัติของเอเจนต์ ออกจาก อำนาจอธิปไตยของผู้ใช้ — เอเจนต์อาจสะสมประสบการณ์ได้อย่างอิสระ แต่ การแก้ไขบันทึกของผู้ใช้เองทุกครั้ง ต้องผ่านการอนุมัติจากผู้ใช้


8. ความโปร่งใส: คุณสามารถเห็นการอัปเดตหน่วยความจำทุกครั้ง

Hermes แสดงการกระทำของหน่วยความจำผ่านการแจ้งเตือนแบบเรียลไทม์:

การตั้งค่าแสดงเป็น
offเขียนแบบเงียบ, ไม่แสดงอะไร
on (ค่าเริ่มต้น)💾 Memory updated
verbose💾 Memory ➕ User prefers terse replies (พร้อมตัวอย่างเนื้อหา)

จาก "มีบางสิ่งถูกจดจำ" ไปจนถึง "รายการนี้ถูกจดจำอย่างแม่นยำ" ความละเอียดขึ้นอยู่กับคุณ ระดับของ ความสามารถในการสังเกต แบบนี้หาได้ยากในเอเยนต์ AI — ส่วนใหญ่จะมองความทรงจำเป็นกล่องดำ


9. การเรียนรู้ตลอดเส้นทาง: ทบทวนว่าเอเจนต์เติบโตอย่างไร

หากคุณต้องการ ย้อนดู สิ่งที่เอเจนต์ได้เรียนรู้ตลอดหลายเดือนที่ผ่านมา Hermes จะให้ /journey (ชื่ออื่น /learning, /memory-graph):

  • CLI: hermes journey (รองรับ --play การเล่นซ้ำแบบเคลื่อนไหวและ --json การส่งออก)
  • TUI: ชั้นวาง /journey
  • Desktop: แผงโต้ตอบ Star Map

พร้อมคำสั่งทำความสะอาดที่ตรงกัน:

hermes journey list           # list all nodes
hermes journey delete <node>  # archive a Skill (recoverable) or delete a memory
hermes journey edit <node>    # open in $EDITOR

เครื่องมือนี้มีความสำคัญมากกว่าความแปลกใหม่ — มันยอมรับบางสิ่งที่เป็นจริง: วิธีที่เอเจนต์เติบโตนั้นคุ้มค่าที่จะพิจารณาเอง


10. ทำไมข้อจำกัดนี้จึงสำคัญในทางปฏิบัติ

รวมทั้งหมดข้างต้นเข้าด้วยกัน ปรัชญาความจำของ Hermes สรุปได้เป็น สี่กฎเหล็ก:

  1. จำกัด: ขีดจำกัดตัวอักษรบังคับให้กระชับ
  2. คงที่: ไม่มีการเปลี่ยนแปลงภายในเซสชัน เพื่อปกป้องแคช
  3. โปร่งใส: การเขียนทุกครั้งมองเห็นได้สำหรับผู้ใช้ สามารถอนุมัติและย้อนกลับได้
  4. รวมตัวเองได้: การจัดเก็บเต็มจะไม่ถูกทิ้งอย่างเงียบ ๆ; เอเจนต์ถูกบังคับให้ทำการแลกเปลี่ยน

ในการทำการตลาด 'หน่วยความจำ AI' ผลิตภัณฑ์หลายอย่างมักเน้นไปที่ขนาดของหน่วยความจำที่รองรับและจำนวนรายการที่สามารถเก็บได้ แต่จากมุมมองของผู้ใช้ มีเพียงสามสิ่งที่สำคัญ:

  1. มันจดจำสิ่งที่สำคัญจริงๆ ได้หรือไม่?
  2. มันอัปเดตข้อมูลที่ไม่ถูกต้องแล้วทันทีหรือไม่?
  3. มันจะกลายเป็นพูดมากขึ้นและมีโอกาสผิดพลาดมากขึ้นเพราะจำสิ่งที่ไม่เกี่ยวข้องเยอะหรือไม่?

ระบบความจำที่สามารถตอบได้ว่า 'อะไรที่ไม่ควรจดจำ' คือระบบความจำที่ดี


11. ยังมีสิ่งหนึ่งที่ขาดหายไปเพื่อให้สิ่งนี้ใช้งานได้จริง

ถึงแม้ว่ากลไกความจำจะดีเพียงใด แต่มันก็มีข้อกำหนดเบื้องต้นข้อหนึ่ง: เอเจนต์ต้องมีชีวิตอยู่

หากคุณติดตั้ง Hermes บนแล็ปท็อปของคุณเอง มันจะเข้าสู่โหมดพักทุกครั้งที่คุณปิดฝา วงจรสะท้อนพื้นหลังหยุดชะงัก และ nudge_interval ไม่สามารถไปถึงทริกเกอร์ถัดไปได้ การเปลี่ยนเครื่องหรือการติดตั้งระบบปฏิบัติการใหม่หมายถึงการย้าย ~/.hermes/ ด้วยมือ

นี่คือจุดที่การโฮสต์บนคลาวด์มีประโยชน์อย่างแท้จริง LightVela เป็น บริการเอเจนต์ Hermes ที่โฮสต์บนคลาวด์:

  • อินสแตนซ์คลาวด์เฉพาะที่ออนไลน์ตลอด 24×7, พร้อมกับ MEMORY.md / USER.md / แฟ้มเก็บเซสชัน SQLite ที่อยู่ตรงนั้นอย่างถาวร;
  • วงจรการสะท้อนในพื้นหลังยังคงทำงานอยู่, ดังนั้นเอเจนต์จะเติบโตอย่างแท้จริงแม้ว่าคุณจะไม่ได้ใช้งาน;
  • ข้อมูลจะอยู่เพียงบนเซิร์ฟเวอร์เฉพาะของคุณ;
  • โทรศัพท์, แล็ปท็อป, Telegram, Slack, Lark — ทุกช่องทางเข้าถึงเอเจนต์เดียวกันที่รู้จักคุณ.

Hermes ได้นำปรัชญาของ “มีหน่วยความจำมากกว่าไม่ได้ดีขึ้น” ไปสู่ข้อสรุปเชิงตรรกะ; LightVela ทำให้ปรัชญานั้นเกิดผลทุกวัน โดยอยู่ใกล้คุณ นั่นคือวิธีที่คำสัญญาว่าจะเข้าใจคุณได้ดียิ่งขึ้นตามเวลาได้รับการส่งมอบจริง ๆ


ข้อสรุปสำคัญ

  • ระบบความจำที่ดี = การเขียนอย่างเคร่งครัด + การคัดสรรอย่างมีโครงสร้าง + การดำเนินการพื้นฐานสามอย่าง + การบังคับรวมข้อมูล + การสะท้อนผลเบื้องหลัง + ประตูการอนุมัติ + ความโปร่งใสเต็มรูปแบบ.
  • การจำได้มากขึ้นไม่ได้หมายความว่าสมองฉลาดขึ้น; การรู้ว่า "สิ่งใดไม่ควรจำ" และถูกบังคับให้ทำการแลกเปลี่ยนมีความสำคัญมากกว่า.
  • Hermes ให้ข้อมูลอ้างอิงทางวิศวกรรม; LightVela มุ่งเปลี่ยนสิ่งนั้นให้กลายเป็นประสบการณ์ผลิตภัณฑ์ที่ผู้ใช้สามารถเข้าถึงได้จริง.

อัปเดตล่าสุดเมื่อ 2026-10-09

บนหน้านี้

สรุปความเข้าใจผิดที่พบบ่อย1. การเขียน: เอเจนต์คือประตูแรก2. การคัดสรร: การเขียนชิ้นส่วนใหม่เป็นรายการ3. การดำเนินการอะตอมสามอย่าง: เพิ่ม / แทนที่ / ลบ4. อัปเดตความหมาย: แก้ไขก่อน ห้ามเพิ่มสิ่งตรงข้าม5. เมื่อความจุเต็ม: รวมตอนนี้6. วงจรการเรียนรู้ที่ตระหนักถึงความยินยอม: เอเจนต์เรียนรู้เบื้องหลังโดยไม่รบกวนคุณ7. ประตูการอนุมัติ: หากคุณไม่สบายใจกับการที่เอเจนต์ทำงานด้วยตัวเอง8. ความโปร่งใส: คุณสามารถเห็นการอัปเดตหน่วยความจำทุกครั้ง9. การเรียนรู้ตลอดเส้นทาง: ทบทวนว่าเอเจนต์เติบโตอย่างไร10. ทำไมข้อจำกัดนี้จึงสำคัญในทางปฏิบัติ11. ยังมีสิ่งหนึ่งที่ขาดหายไปเพื่อให้สิ่งนี้ใช้งานได้จริงข้อสรุปสำคัญ