Why You Should Care About Checkpoints
Tutorial 30: Checkpoints & Rollback — easy-to-understand guide based on official docs
ทำไมคุณควรสนใจ Checkpoints
ลองนึกภาพว่าคุณให้ Hermes ช่วยรีแฟกเตอร์โค้ดชุดใหญ่ แล้วผ่านไปครึ่งทางคุณเพิ่งรู้ว่าวิธีใหม่ที่เลือกใช้นั้นพังพินาศสิ้นดี หากไม่มี checkpoints คุณคงต้องมานั่งแก้โค้ดด้วยมือหรือไล่หาประวัติจาก git อย่างปวดหัว แต่ถ้ามี checkpoints คุณแค่พิมพ์ /rollback แล้วเลือกจุดกู้คืน ก็เหมือนมีไทม์แมชชีนสำหรับโปรเจกต์ของคุณ
จุดเด่นที่สุดคือ checkpoints เป็นตัวเลือกเสริมล้วนๆ โดยค่าเริ่มต้นใน v2 จะปิดไว้ ถ้าคุณไม่ใช้มันก็จะไม่มีวันรู้สึกว่ามันมีอยู่ แต่เมื่อไหร่ที่คุณต้องการ มันคือตัวช่วยชีวิตจริงๆ
วิธีเปิดใช้งาน Checkpoints
คุณมีสองวิธีในการเปิดระบบความปลอดภัยนี้:
เฉพาะเซสชัน (แค่แชทนี้):
hermes chat --checkpoints
แบบทั่วโลก (ทุกเซสชัน) — แก้ไข ~/.hermes/config.yaml:
checkpoints:
enabled: true
อะไรบ้างที่ทำให้เกิด Checkpoint?
Hermes จะสแนปช็อตโปรเจกต์ของคุณโดยอัตโนมัติก่อนการทำงานที่ อาจก่อให้เกิดความเสียหาย ซึ่งรวมถึง:
- เครื่องมือจัดการไฟล์ —
write_fileและpatch - คำสั่งเทอร์มินัลอันตราย —
rm,rmdir,cp,mv,sed -i,truncate,dd,shred, การรีไดเรกต์เอาต์พุต (>), และgit reset/clean/checkout
เพื่อไม่ให้สร้างไฟล์รกจนเกินไป Hermes จะสร้าง checkpoint สูงสุดหนึ่งอันต่อไดเรกทอรีต่อเทิร์น ดังนั้นเซสชันที่ยาวนานจะไม่ทำให้ดิสก์เต็มไปด้วยสแนปช็อตนับร้อยๆ อัน
เบื้องหลังความมหัศจรรย์
นี่คือส่วนที่ฉลาด: Hermes ใช้ shadow git repository แบบแชร์เดียว ที่เก็บไว้ที่ ~/.hermes/checkpoints/store/ โฟลเดอร์ .git ของโปรเจกต์จริงของคุณ จะไม่ถูกแตะต้องเลย ทุกโปรเจกต์ใช้พื้นที่เก็บร่วมกันนี้ และระบบ content-addressable ของ git จะทำการตัดข้อมูลซ้ำซ้อนข้ามโปรเจกต์ให้อัตโนมัติ หมายความว่าถ้าสองโปรเจกต์มีไฟล์คล้ายกัน มันจะถูกเก็บเพียงครั้งเดียว
การใช้ /rollback ภายในเซสชัน
เมื่อเปิด checkpoints แล้ว คุณสามารถใช้คำสั่งสแลชเหล่านี้ระหว่างแชทได้:
| คำสั่ง | ฟังก์ชัน |
|---|---|
/rollback |
แสดงรายการ checkpoints ทั้งหมดพร้อมสถิติการเปลี่ยนแปลง |
/rollback <N> |
กู้คืนไปยัง checkpoint ที่ N โดย คงการแก้ไขด้วยมือของคุณไว้ (และยกเลิกเทิร์นแชทล่าสุดด้วย) |
/rollback <N> --all |
กู้คืนแบบเต็มรูปแบบ — เขียนทับ การแก้ไขด้วยมือของคุณด้วย |
/rollback diff <N> |
แสดงตัวอย่าง diff ระหว่าง checkpoint ที่ N กับสถานะปัจจุบัน |
/rollback <N> <file> |
กู้คืนเพียงไฟล์เดียวจาก checkpoint ที่ N |
เมื่อคุณพิมพ์ /rollback คุณจะเห็นผลลัพธ์ประมาณนี้:
📸 Checkpoints for /path/to/project:
1. 4270a8c 2026-03-16 04:36 before patch (1 file, +1/-0)
2. eaf4c1f 2026-03-16 04:35 before write_file
3. b3f9d2e 2026-03-16 04:34 before terminal: sed -i s/old/new/ config.py (1 file, +1/-1)
การจัดการพื้นที่เก็บจากเชลล์
นอกเหนือจากเซสชัน คุณสามารถตรวจสอบและทำความสะอาดพื้นที่เก็บ checkpoint ได้:
hermes checkpoints # แสดงขนาดรวม จำนวนโปรเจกต์ และรายละเอียด
hermes checkpoints status # เหมือนกับคำสั่งด้านบน
hermes checkpoints list # alias ของ status
hermes checkpoints prune # บังคับทำความสะอาด: ลบ orphan, GC, บังคับขนาดสูงสุด
hermes checkpoints clear # ล้างฐานข้อมูล checkpoint ทั้งหมด (ถามก่อน)
hermes checkpoints clear-legacy # ลบเฉพาะไฟล์ migration จาก v1
การปรับแต่งคอนฟิก
คุณสามารถควบคุมทุกอย่างได้ใน ~/.hermes/config.yaml:
checkpoints:
enabled: false # สวิตช์หลัก (ค่าเริ่มต้น: false)
max_snapshots: 20 # จำนวน checkpoint สูงสุดต่อโปรเจกต์
max_total_size_mb: 500 # ขีดจำกัดขนาดรวมของพื้นที่เก็บ
max_file_size_mb: 10 # ข้ามไฟล์ที่ใหญ่กว่าขนาดนี้
auto_prune: true # ทำความสะอาดรายการเก่าอัตโนมัติเมื่อเริ่มต้น
retention_days: 7 # เก็บรายการที่ถูกเข้าถึงภายในจำนวนวันนี้
min_interval_hours: 24 # prune อย่างมากที่สุดหนึ่งครั้งต่อช่วงเวลานี้
รายละเอียดที่ชาญฉลาด: auto-prune จะไม่ลบ orphan entries (โปรเจกต์ที่ไดเรกทอรีทำงานไม่มีอยู่แล้ว) เพราะไดเรกทอรีที่หายไปอาจหมายถึงไดรฟ์ภายนอกที่ไม่ได้เชื่อมต่อ หรือ VPN ที่ยังไม่ได้เชื่อมต่อ การลบ orphan จะเกิดขึ้นผ่านคำสั่ง hermes checkpoints prune ที่ต้องยืนยันก่อนเท่านั้น
เมื่อไหร่ที่คุณควรเปิดใช้?
ถ้าคุณกำลังทำงาน เชิงทดลอง, รีแฟกเตอร์ครั้งใหญ่, หรือ กำลังเรียนรู้อะไรใหม่กับ Hermes ให้เปิด checkpoints ไว้ พื้นที่จัดเก็บที่ใช้ก็ไม่มากนัก (ต้องขอบคุณระบบตัดข้อมูลซ้ำซ้อน) และความอุ่นใจที่ได้กลับมาคุ้มค่ามาก แต่ถ้าคุณแค่ทำงานง่ายๆ ปลอดภัย ก็ปิดไว้เพื่อประหยัดพื้นที่ดิสก์
Checkpoints เป็นหนึ่งในฟีเจอร์ที่คุณจะลืมไปเลย — จนกระทั่งวินาทีที่คุณต้องการมันอย่างที่สุด และเมื่อถึงเวลานั้น คุณจะดีใจที่มันมีอยู่
📖 เอกสารทางการ
この記事は Hermes Agent のเอกสารทางการに基づいています:เอกสารทางการ › user-guide/checkpoints-and-rollback