Tutorial 8: Session Management
Tutorial 8: Session Management — easy-to-understand guide based on official docs
บทช่วยสอน 8: การจัดการเซสชัน
เคยปิดเทอร์มินัลแล้วเสียบทสนทนาดีๆ กับ Hermes ไปอย่างน่าเสียดายไหม? หรืออยากกลับไปคุยต่อจากจุดที่ค้างไว้ในการแก้บั๊กสุดหินจากเมื่อวาน? ข่าวดี: Hermes จำทุกอย่างได้ บทสนทนาทุกบทจะถูกบันทึกเป็นเซสชันโดยอัตโนมัติ และในบทช่วยสอนนี้เราจะมาดูวิธีใช้พลังวิเศษนี้กัน
เซสชันทำงานยังไง
ให้คิดว่าเซสชันคือบันทึกการแชทที่มีป้ายชื่อติดไว้ ไม่ว่าคุณจะคุยกับ Hermes ผ่าน CLI, Telegram, Discord, Slack, WhatsApp หรือแพลตฟอร์มอื่นๆ ที่รองรับอีก 20+ แพลตฟอร์ม บทสนทนาของคุณจะถูกเก็บไว้พร้อมประวัติทั้งหมด
ทุกอย่างถูกเก็บในฐานข้อมูล SQLite ที่ ~/.hermes/state.db สำหรับแต่ละเซสชัน Hermes จะติดตาม:
- ชื่อเรื่องที่ไม่ซ้ำกันและอ่านง่าย
- แพลตฟอร์มที่คุณใช้ (CLI, Telegram ฯลฯ)
- โมเดลและการตั้งค่า
- ประวัติข้อความทั้งหมดพร้อมการเรียกใช้เครื่องมือและผลลัพธ์
- จำนวนโทเค็นและเวลาประทับ
- ID เซสชันต้นทาง (สำหรับกรณีที่บทสนทนายาวๆ ถูกแบ่งออก)
อะไรที่เข้าไปในบริบทจริงๆ
นี่คือความเข้าใจผิดที่พบบ่อย: Hermes ไม่ได้อ่านไฟล์หรือรูปภาพทั้งหมดที่คุณเคยส่งซ้ำทุกครั้ง สื่อจะถูกจัดการเป็นรายเทิร์น ถ้าคุณส่งรูปภาพแล้วขอมีม Hermes อาจวิเคราะห์ด้วยวิทัศน์ (vision) หนึ่งครั้ง จากนั้นเทิร์นถัดๆ ไปจะใช้เพียงคำอธิบายข้อความหรือพาธในเครื่อง — ไม่ใช่ไฟล์ JPEG ดิบๆ
ตัวกินบริบทตัวจริงคือข้อความที่ verbose: ทรานสคริปต์ที่วางมา, โลไฟล์ขนาดยักษ์, ดิฟฟ์มหึมา เอกสารมีเคล็ดลับดีๆ: ควรใช้บทสรุป, พาธไฟล์, และข้อความที่เจาะจงเฉพาะส่วน แทนที่จะคัดลอกอาร์ติแฟกต์ขนาดใหญ่เข้าไปในแชท
การกลับมาคุยต่อจาก CLI
นี่คือจุดที่ความมหัศจรรย์เกิดขึ้น มาดูสามวิธีในการกลับไปคุยต่อจากจุดที่ค้างไว้
1. ต่อเซสชันล่าสุด:
hermes --continue
# หรือสั้นกว่า
hermes -c
คำสั่งนี้จะดึงเซสชัน CLI ล่าสุดของคุณและโหลดประวัติทั้งหมด
2. ต่อตามเทอร์มินัล (อันนี้ใหม่และเจ๋งมาก):
การใส่ -c เฉยๆ ตอนนี้จะรู้จักเทอร์มินัลแล้ว Hermes จะวางไฟล์ breadcrumb เล็กๆ ไว้สำหรับแต่ละเซสชันเทอร์มินัล ดังนั้นถ้าคุณมีเทอร์มินัลสองแผงวางเคียงกัน แต่ละแผงจะกลับไปคุยต่อ บทสนทนาของตัวเอง แทนที่จะแย่งกันใช้เซสชันเดียวกัน ไม่มีการปนกันระหว่างแผงอีกต่อไป!
ถ้าไม่มี breadcrumb (ใช้ครั้งแรก หรือเก่ากว่า 30 วัน) มันจะถอยไปใช้เซสชันล่าสุดแทน คุณสามารถปิดฟีเจอร์นี้ได้ด้วยการตั้งค่า session.terminal_continue: false ใน config.yaml
3. กลับมาคุยต่อด้วยชื่อ:
ตั้งชื่อเซสชันให้มีความหมาย แล้วคุณสามารถกระโดดกลับเข้าไปได้ทันที:
hermes -c "my project"
ถ้ามีชื่อที่คล้ายกัน เช่น “my project”, “my project #2” ฯลฯ Hermes จะเลือกอันล่าสุดให้อัตโนมัติ
การกลับไปที่เซสชันเฉพาะ
ต้องกลับไปหาบทสนทนาใดบทสนทนาหนึ่งโดยเฉพาะไหม? ใช้ session ID:
hermes --resume 20250305_091523_a1b2c3d4
# หรือใช้ชื่อเรื่อง
hermes --resume "refactoring auth"
# หรือแค่เซสชันล่าสุด
hermes --resume latest
เคล็ดลับจากเอกสาร
/compress— ใช้เมื่อเซสชันยาวเกินไป มันจะลดบริบทที่ใช้งานอยู่ (แต่จำไว้ว่า: ไม่ใช่การลบเพื่อความเป็นส่วนตัว)/new payments-refactor— เริ่มเธรดใหม่พร้อมตั้งชื่อทันที ทำให้ค้นหาเจอได้ง่ายด้วย/resumehermes sessions prune— ใช้เมื่อต้องการลบเซสชันเก่าที่จบไปแล้วเท่านั้นhermes sessions optimize— ถ้าstate.dbแค่ใหญ่เกินไป คำสั่งนี้จะรวมดัชนีค้นหาและทำความสะอาดโดยไม่แตะต้องข้อมูลของคุณ เริ่มจากคำสั่งนี้ก่อนเลย!
สรุป
การจัดการเซสชันคือพลังวิเศษด้านความจำของคุณ ไม่ว่าคุณจะจัดการหลายโปรเจกต์พร้อมกันในเทอร์มินัลต่างๆ หรือกลับไปแก้ดีบักเกมเมื่อสัปดาห์ก่อน Hermes จัดการให้ได้หมด ข้อควรจำหลักๆ: ใช้ /compress สำหรับแชทที่ยาว, ตั้งชื่อเซสชันด้วย /new <ชื่อ> และปล่อยให้ -c ที่รู้จักเทอร์มินัลช่วยจัดระเบียบแผงของคุณ
แชทให้สนุกนะ!
📖 เอกสารทางการ
この記事は Hermes Agent のเอกสารทางการに基づいています:เอกสารทางการ › user-guide/sessions