Hermes การจัดเก็บความทรงจำระยะยาวของเอเจนต์: กฎเหล็กสี่ข้อสำหรับ "น้อยแต่แม่นยำ"
สรุป
Hermes การดูแลความทรงจำระยะยาวของเอเจนต์ไม่ได้เกี่ยวกับการเก็บมากขึ้น แต่ปฏิบัติตามกฎเหล็กสี่ข้อที่ทำให้ความทรงจำ 'น้อยแต่แม่นยำ':
- จำกัด:
USER.mdที่ประมาณ 1,375 ตัวอักษร และMEMORY.mdที่ประมาณ 2,200 ตัวอักษร บังคับให้กระชับเนื้อหา - คงที่: ไม่มีการเขียนซ้ำภายในเซสชัน ปกป้องแคช KV และความเสถียรของการอนุมาน
- โปร่งใส: การเขียนทุกครั้งมีการประกาศ (
💾 Memory updated) และสามารถอนุมัติ, ยกเลิก, และตรวจสอบได้ด้วย/journey - รวมตนเอง: เมื่อความจุเต็ม ไม่มีสิ่งใดถูกละทิ้งอย่างเงียบ ๆ; การตอบสนอง
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 มีความสามารถที่ซ่อนอยู่อีกอย่างหนึ่ง: ลูปการสะท้อนตนเองเบื้องหลัง ซึ่งจะทำเป็นระยะ:
- ดึงเซสชันล่าสุด;
- ใช้โมเดลราคาถูก (เช่น Gemini Flash) กับเซสชันเหล่านั้นเพื่อดึงสิ่งที่ควรจดจำ;
- สร้างรายการความจำตัวอย่างที่ทำเครื่องหมาย
[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 สรุปได้เป็น สี่กฎเหล็ก:
- จำกัด: ขีดจำกัดตัวอักษรบังคับให้กระชับ
- คงที่: ไม่มีการเปลี่ยนแปลงภายในเซสชัน เพื่อปกป้องแคช
- โปร่งใส: การเขียนทุกครั้งมองเห็นได้สำหรับผู้ใช้ สามารถอนุมัติและย้อนกลับได้
- รวมตัวเองได้: การจัดเก็บเต็มจะไม่ถูกทิ้งอย่างเงียบ ๆ; เอเจนต์ถูกบังคับให้ทำการแลกเปลี่ยน
ในการทำการตลาด 'หน่วยความจำ AI' ผลิตภัณฑ์หลายอย่างมักเน้นไปที่ขนาดของหน่วยความจำที่รองรับและจำนวนรายการที่สามารถเก็บได้ แต่จากมุมมองของผู้ใช้ มีเพียงสามสิ่งที่สำคัญ:
- มันจดจำสิ่งที่สำคัญจริงๆ ได้หรือไม่?
- มันอัปเดตข้อมูลที่ไม่ถูกต้องแล้วทันทีหรือไม่?
- มันจะกลายเป็นพูดมากขึ้นและมีโอกาสผิดพลาดมากขึ้นเพราะจำสิ่งที่ไม่เกี่ยวข้องเยอะหรือไม่?
ระบบความจำที่สามารถตอบได้ว่า 'อะไรที่ไม่ควรจดจำ' คือระบบความจำที่ดี
11. ยังมีสิ่งหนึ่งที่ขาดหายไปเพื่อให้สิ่งนี้ใช้งานได้จริง
ถึงแม้ว่ากลไกความจำจะดีเพียงใด แต่มันก็มีข้อกำหนดเบื้องต้นข้อหนึ่ง: เอเจนต์ต้องมีชีวิตอยู่
หากคุณติดตั้ง Hermes บนแล็ปท็อปของคุณเอง มันจะเข้าสู่โหมดพักทุกครั้งที่คุณปิดฝา วงจรสะท้อนพื้นหลังหยุดชะงัก และ nudge_interval ไม่สามารถไปถึงทริกเกอร์ถัดไปได้ การเปลี่ยนเครื่องหรือการติดตั้งระบบปฏิบัติการใหม่หมายถึงการย้าย ~/.hermes/ ด้วยมือ
นี่คือจุดที่การโฮสต์บนคลาวด์มีประโยชน์อย่างแท้จริง LightVela เป็น บริการเอเจนต์ Hermes ที่โฮสต์บนคลาวด์:
- อินสแตนซ์คลาวด์เฉพาะที่ออนไลน์ตลอด 24×7, พร้อมกับ
MEMORY.md/USER.md/ แฟ้มเก็บเซสชัน SQLite ที่อยู่ตรงนั้นอย่างถาวร; - วงจรการสะท้อนในพื้นหลังยังคงทำงานอยู่, ดังนั้นเอเจนต์จะเติบโตอย่างแท้จริงแม้ว่าคุณจะไม่ได้ใช้งาน;
- ข้อมูลจะอยู่เพียงบนเซิร์ฟเวอร์เฉพาะของคุณ;
- โทรศัพท์, แล็ปท็อป, Telegram, Slack, Lark — ทุกช่องทางเข้าถึงเอเจนต์เดียวกันที่รู้จักคุณ.
Hermes ได้นำปรัชญาของ “มีหน่วยความจำมากกว่าไม่ได้ดีขึ้น” ไปสู่ข้อสรุปเชิงตรรกะ; LightVela ทำให้ปรัชญานั้นเกิดผลทุกวัน โดยอยู่ใกล้คุณ นั่นคือวิธีที่คำสัญญาว่าจะเข้าใจคุณได้ดียิ่งขึ้นตามเวลาได้รับการส่งมอบจริง ๆ
ข้อสรุปสำคัญ
- ระบบความจำที่ดี = การเขียนอย่างเคร่งครัด + การคัดสรรอย่างมีโครงสร้าง + การดำเนินการพื้นฐานสามอย่าง + การบังคับรวมข้อมูล + การสะท้อนผลเบื้องหลัง + ประตูการอนุมัติ + ความโปร่งใสเต็มรูปแบบ.
- การจำได้มากขึ้นไม่ได้หมายความว่าสมองฉลาดขึ้น; การรู้ว่า "สิ่งใดไม่ควรจำ" และถูกบังคับให้ทำการแลกเปลี่ยนมีความสำคัญมากกว่า.
- Hermes ให้ข้อมูลอ้างอิงทางวิศวกรรม; LightVela มุ่งเปลี่ยนสิ่งนั้นให้กลายเป็นประสบการณ์ผลิตภัณฑ์ที่ผู้ใช้สามารถเข้าถึงได้จริง.
อัปเดตล่าสุดเมื่อ 2026-10-09
ทำไม USER.md และ MEMORY.md ไม่สามารถรวมกันได้
ข้อจำกัดสามประการที่เข้มงวด — ความจุ กลยุทธ์การบรรทุก และการอัปเดตเชิงความหมาย — อธิบายเหตุผลที่ Hermes Agent เก็บความทรงจำระยะยาวในสองบันทึกแยกกัน แทนที่จะเป็นไฟล์รวมเดียว
ความจำกับทักษะ: ความจำแบบบอกเล่าและความจำแบบกระบวนการ
บนพื้นฐานของความทรงจำแบบประกาศและแบบกระบวนการจากวิทยาศาสตร์ด้านสติปัญญา อธิบายเหตุผลที่ Hermes เอเย่นต์แบ่งความทรงจำระยะยาวออกเป็นความทรงจำและทักษะ และความแตกต่างในด้านตัวกระตุ้น รูปแบบ และความเร็วของวิวัฒนาการ