🤖HermesBlog
Hermes Official Tutorials · Parte 308/9/2026

Why You Should Care About Checkpoints

Tutorial 30: Checkpoints & Rollback — easy-to-understand guide based on official docs

Hermes tutorial

ทำไมคุณควรสนใจ 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