บทเรียน 20: หน่วยความจำถาวร — หน่วยความจำระยะยาว
บทเรียน 20: หน่วยความจำถาวร — หน่วยความจำระยะยาว — คู่มือที่เข้าใจง่ายตามเอกสารอย่างเป็นทางการ
นี่เป็นส่วนหนึ่งของชุดบทช่วยสอนอย่างเป็นทางการของ Hermes Agent ดูบทช่วยสอนทั้งหมด
ลองนึกภาพว่าฟีเจอร์นี้เป็นเหมือนกระดาษโน้ตแปะไว้บนโต๊ะทำงาน: Hermes Agent จะจดสิ่งสำคัญเกี่ยวกับคุณและโปรเจกต์ของคุณไว้ เพื่อที่มันจะได้ไม่ลืมระหว่างการสนทนาครั้งต่างๆ ไม่ต้องมานั่งพูดซ้ำๆ ทุกครั้งที่เริ่มแชทใหม่
Persistent Memory ทำอะไรได้บ้าง?
โดยปกติแล้ว AI agent จะเริ่มต้นใหม่ทุกครั้งในแต่ละเซสชัน — มันจะลืมทุกอย่างเมื่อการสนทนาจบลง Persistent Memory จะเปลี่ยนสิ่งนั้น Hermes Agent จะเก็บไฟล์ข้อความขนาดเล็กสองไฟล์ไว้ในคอมพิวเตอร์ของคุณ โดยมันจะอ่านไฟล์เหล่านี้ในตอนเริ่มต้นของทุกเซสชัน เพื่อให้มันจำความชอบของคุณ รายละเอียดโปรเจกต์ และสิ่งอื่นๆ ที่คุณเคยสอนมันได้ทันที
ขั้นตอนที่ 1: รู้จักไฟล์หน่วยความจำทั้งสองไฟล์
หน่วยความจำของ agent จะอยู่ในไฟล์สองไฟล์ ซึ่งเก็บไว้ใน ~/.hermes/memories/:
| ไฟล์ | สิ่งที่เก็บ | ขีดจำกัดขนาด |
|---|---|---|
| MEMORY.md | บันทึกส่วนตัวของ agent — ข้อเท็จจริงเกี่ยวกับสภาพแวดล้อม ธรรมเนียมปฏิบัติ สิ่งที่มันเรียนรู้ | 2,200 ตัวอักษร (~800 tokens) |
| USER.md | โปรไฟล์ของคุณ — ความชอบ รูปแบบการสื่อสาร ความคาดหวัง | 1,375 ตัวอักษร (~500 tokens) |
ขีดจำกัดเหล่านี้ตั้งใจกำหนดไว้ เพื่อบังคับให้ agent เก็บเฉพาะสิ่งที่สำคัญเท่านั้น เหมือนสมุดโน้ตที่จัดระเบียบอย่างดี มากกว่าลิ้นชักที่รกๆ
ขั้นตอนที่ 2: ดูว่าหน่วยความจำปรากฏใน Prompt อย่างไร
ในตอนเริ่มต้นของแต่ละเซสชัน agent จะโหลดไฟล์ทั้งสองและแสดงเป็น snapshot แบบคงที่ ใน system prompt ของมัน นี่คือตัวอย่างสิ่งที่ agent “เห็น”:
══════════════════════════════════════════════
MEMORY (บันทึกส่วนตัวของคุณ) [67% — 1,474/2,200 ตัวอักษร]
══════════════════════════════════════════════
โปรเจกต์ของผู้ใช้คือเว็บเซอร์วิส Rust ที่ ~/code/myapi โดยใช้ Axum + SQLx
§
เครื่องนี้รัน Ubuntu 22.04 มี Docker และ Podman ติดตั้งอยู่
§
ผู้ใช้ชอบคำตอบที่กระชับ ไม่ชอบคำอธิบายที่ยืดเยื้อ
สังเกตรายละเอียด:
- ส่วนหัวที่แสดงว่าเป็นหน่วยความจำประเภทไหน (MEMORY หรือ USER PROFILE)
- เปอร์เซ็นต์การใช้งานและจำนวนตัวอักษร — เพื่อให้ agent รู้ว่าเหลือพื้นที่เท่าไร
- รายการต่างๆ คั่นด้วย
§(เครื่องหมายเซกชัน) - รายการสามารถมีได้หลายบรรทัด
สำคัญ: snapshot นี้จะถูกจับภาพ เพียงครั้งเดียว ในตอนเริ่มเซสชัน และจะไม่เปลี่ยนแปลงระหว่างเซสชัน หาก agent อัปเดตหน่วยความจำระหว่างการสนทนา การเปลี่ยนแปลงจะถูกบันทึกลงดิสก์ทันที แต่จะไม่ปรากฏใน prompt จนกว่าจะถึงเซสชันถัดไป ซึ่งช่วยให้การทำงานรวดเร็วโดยการรักษา cache ของโมเดลไว้
ขั้นตอนที่ 3: Agent จัดการหน่วยความจำของตัวเอง
agent ใช้เครื่องมือที่เรียกว่า memory ซึ่งมีสามการทำงาน:
- add — เพิ่มรายการหน่วยความจำใหม่
- replace — แทนที่รายการที่มีอยู่ (ใช้การจับคู่สตริงย่อยกับ
old_text) - remove — ลบรายการที่ไม่เกี่ยวข้องอีกต่อไป (ใช้
old_textเช่นกัน)
ไม่มีการทำงานแบบ read เพราะหน่วยความจำถูกฉีดเข้าไปใน prompt แล้ว — agent เห็นมันอยู่เสมอ
นี่คือตัวอย่างง่ายๆ ว่า agent อาจใช้เครื่องมือนี้อย่างไร:
memory action=add content="ผู้ใช้ชอบหัวข้อย่อยมากกว่าย่อหน้า"
หรือการแทนที่ความชอบเก่า:
memory action=replace old_text="ผู้ใช้ชอบคำตอบที่กระชับ" new_text="ผู้ใช้ชอบคำตอบหนึ่งบรรทัดพร้อมอีโมจิ"
ขั้นตอนที่ 4: จะเกิดอะไรขึ้นเมื่อหน่วยความจำเต็ม?
หน่วยความจำ ไม่ บีบอัดอัตโนมัติ เมื่อการเขียนจะเกินขีดจำกัด เครื่องมือ memory จะคืนค่าข้อผิดพลาดแทนที่จะปล่อยให้รายการหายไปอย่างเงียบๆ จากนั้น agent จะจัดการพื้นที่เอง — โดยการรวมหรือลบรายการในเทิร์นเดียวกันก่อนที่จะลองใหม่
นอกจากนี้ โปรดทราบ: replace ก็ถูกจำกัดด้วยขีดจำกัดเช่นกัน การสลับรายการด้วยรายการที่ยาวขึ้นอาจทำให้ล้นได้ ดังนั้นเนื้อหาใหม่ต้องสั้นลง (หรือลบรายการอื่นออก) เพื่อให้พอดี
ขั้นตอนที่ 5: หนึ่ง Agent ต่อหนึ่ง Hermes Home (สำคัญ!)
อย่าชี้กระบวนการ agent สองตัวไปที่ไดเรกทอรี home ของ Hermes เดียวกัน การเขียนหน่วยความจำเป็นแบบอัตโนมัติและโหลดกลับเข้าไปใน system prompt ในตอนเริ่มเซสชัน ดังนั้นการมีผู้เขียนสองคนใช้ home ร่วมกันจะทำให้รายการของทั้งคู่ทับซ้อนกันจนกลายเป็นความยุ่งเหยิงที่ไม่มีใครเป็นคนเขียน หน่วยความจำถูกกำหนดขอบเขตต่อโปรไฟล์โดยการออกแบบ — ให้ agent ตัวที่สองมีโปรไฟล์ของตัวเอง หากพวกเขาต้องการหน่วยความจำร่วมกัน ให้ใช้ผู้ให้บริการหน่วยความจำภายนอกแทน
สรุป
Persistent Memory ทำให้ Hermes Agent มีวิธีที่ง่ายและมีขอบเขตในการจดจำคุณในแต่ละเซสชัน ไฟล์ขนาดเล็กสองไฟล์ — MEMORY.md และ USER.md — เก็บบันทึกที่คัดสรรแล้ว ซึ่งถูกฉีดเป็น snapshot แบบคงที่ในตอนเริ่มเซสชัน agent จัดการไฟล์เหล่านี้ด้วยตัวเองโดยใช้เครื่องมือ memory และขีดจำกัดตัวอักษรช่วยให้ทุกอย่างอยู่ในประเด็น เพียงจำไว้ว่า: หนึ่ง agent ต่อหนึ่งไดเรกทอรี home และ snapshot จะอัปเดตเฉพาะตอนเริ่มเซสชันเท่านั้น
ต่อไป: บทช่วยสอน 21 — งานตามกำหนดเวลา: การตั้งค่าระบบอัตโนมัติที่ทำงานเองตามตัวจับเวลา
📖 เอกสารทางการ
この記事は Hermes Agent のเอกสารทางการに基づいています:เอกสารทางการ › user-guide/features/memory