🤖HermesBlog
Hermes Feature Guides · Parte 308/9/2026

Checkpoints และ `/rollback` — ตัวช่วยความปลอดภัยสำหรับคำสั่งเสี่ยงๆ

Credential Pools — Rotate API Keys — easy-to-understand guide based on official docs

hermes-feature-30-credential-pools

Checkpoints และ /rollback — ตัวช่วยความปลอดภัยสำหรับคำสั่งเสี่ยงๆ

เคยดู AI agent รันคำสั่งแบบ rm -rf หรือเขียนทับไฟล์แล้วคิดว่า “หวังว่ามันจะรู้ว่ากำลังทำอะไรอยู่นะ” ไหม? ด้วย Hermes Agent v2 คุณมีตัวช่วยความปลอดภัยที่แท้จริงแล้ว — checkpoints — ที่สามารถสแนปช็อตโปรเจกต์ของคุณก่อนการทำงานที่เสี่ยง และกู้คืนกลับมาได้ด้วยคำสั่งเดียว

จุดเด่นที่สุด? มันเป็นแบบ เลือกใช้เองได้ทั้งหมด (opt-in) ผู้ใช้ส่วนใหญ่ไม่ต้องแตะ /rollback เลย และเนื่องจาก shadow-store อาจใช้พื้นที่เพิ่มขึ้นเรื่อยๆ ค่าเริ่มต้นจึงเป็นปิด แต่เมื่อไหร่ที่คุณต้องการ มันคือตัวช่วยชีวิตจริงๆ

เปิดใช้งาน Checkpoints

คุณสามารถเปิดใช้ checkpoints แบบต่อเซสชันได้ด้วยแฟล็กง่ายๆ:

hermes chat --checkpoints

หรือเปิดใช้แบบ global ใน ~/.hermes/config.yaml:

checkpoints:
  enabled: true

แค่นี้เอง เมื่อเปิดแล้ว Hermes จะสแนปช็อตโปรเจกต์ของคุณโดยอัตโนมัติก่อนที่จะมีอะไรที่เสี่ยงเกิดขึ้น

อะไรบ้างที่ทำให้เกิด Checkpoint

Hermes จะสร้าง checkpoint โดยอัตโนมัติก่อน:

  • เครื่องมือจัดการไฟล์write_file และ patch
  • คำสั่งเทอร์มินัลที่อันตรายrm, rmdir, cp, install, mv, sed -i, truncate, dd, shred, การรีไดเรกต์เอาต์พุต (>), และ git reset/clean/checkout

agent จะสร้าง อย่างมากหนึ่ง checkpoint ต่อไดเรกทอรีต่อเทิร์น เพื่อให้เซสชันที่ยาวนานไม่สร้างสแนปช็อตมากเกินไปจนเปลืองพื้นที่จัดเก็บ

ทำงานเบื้องหลังอย่างไร

ความมหัศจรรย์เกิดขึ้นผ่าน Checkpoint Manager ภายใน ซึ่งดูแล shadow git repository แบบใช้ร่วมกันที่ ~/.hermes/checkpoints/store/ .git ของโปรเจกต์จริงของคุณจะไม่ถูกแตะต้องเลย — ทุกอย่างอยู่ใน store แยกต่างหากนี้

นี่คือขั้นตอนการทำงาน:

  1. Hermes ตรวจจับเมื่อเครื่องมือกำลังจะแก้ไขไฟล์ใน working tree ของคุณ
  2. หนึ่งครั้งต่อเทิร์นการสนทนา (ต่อไดเรกทอรี) มันจะหา project root ที่เหมาะสม
  3. มันจะเริ่มต้นหรือใช้ shadow store ที่ใช้ร่วมกันเดิม
  4. มันจะ stage ไฟล์ลงใน per-project index สร้าง tree และ commit ไปยัง per-project ref (refs/hermes/<project-hash>)

เนื่องจากทุกโปรเจกต์ใช้ store ร่วมกัน ระบบ object database แบบ content-addressable ของ git จึง deduplicate ข้อมูลข้ามโปรเจกต์และข้ามเทิร์น — คุณจึงไม่เปลืองพื้นที่กับเนื้อหาที่ซ้ำกัน

ใช้ /rollback ในเซสชัน

เมื่อคุณอยู่ในเซสชันที่เปิด checkpoints ไว้ คุณจะมีสแลชคำสั่งหลายตัวให้ใช้:

คำสั่ง คำอธิบาย
/rollback แสดงรายการ checkpoint ทั้งหมดพร้อมสถิติการเปลี่ยนแปลง
/rollback <N> กู้คืนไปยัง checkpoint ที่ N โดยคงการแก้ไขด้วยมือของคุณไว้ (และยกเลิกเทิร์นแชทล่าสุดด้วย)
/rollback <N> --all กู้คืนแบบเต็มรูปแบบ — เขียนทับการแก้ไขด้วยมือของคุณด้วย
/rollback diff <N> ดูตัวอย่าง diff ระหว่าง checkpoint ที่ N กับสถานะปัจจุบัน
/rollback <N> <file> กู้คืนไฟล์เดียวจาก checkpoint ที่ N

เมื่อคุณรัน /rollback คุณจะเห็นรายการที่จัดรูปแบบแล้วแบบนี้:

📸 Checkpoints สำหรับ /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)

จัดการ Store จากเชลล์

นอกเซสชัน คุณสามารถตรวจสอบและจัดการ checkpoint store ด้วยคำสั่ง CLI:

คำสั่ง คำอธิบาย
hermes checkpoints แสดงขนาดรวม จำนวนโปรเจกต์ รายละเอียดแยกตามโปรเจกต์
hermes checkpoints status เหมือนกับ checkpoints เฉยๆ
hermes checkpoints list alias ของ status
hermes checkpoints prune บังคับทำความสะอาด: ลบ orphan/stale, GC, บังคับขนาดสูงสุด
hermes checkpoints clear ล้างฐาน checkpoint ทั้งหมด (ถามก่อน)
hermes checkpoints clear-legacy ลบเฉพาะ archive legacy-* จากการย้ายจาก v1

ตัวเลือกการกำหนดค่า

คุณสามารถปรับแต่งพฤติกรรม checkpoint ได้ใน ~/.hermes/config.yaml:

checkpoints:
  enabled: false              # สวิตช์หลัก (ค่าเริ่มต้น: false — เลือกใช้เอง)
  max_snapshots: 20           # จำนวน checkpoint สูงสุดต่อโปรเจกต์
  max_total_size_mb: 500      # ขีดจำกัดขนาดรวมของ store
  max_file_size_mb: 10        # ข้ามไฟล์ใดก็ตามที่ใหญ่กว่านี้
  auto_prune: true            # ทำความสะอาดตอนเริ่มต้น (เปิดโดยค่าเริ่มต้น)
  retention_days: 7           # ลบรายการที่เก่ากว่านี้
  min_interval_hours: 24      # ระยะเวลาขั้นต่ำระหว่างการ auto-prune

ข้อควรทราบสำคัญ: การ auto-prune จะไม่ลบรายการ “orphan” (ที่หา working directory ไม่เจอ) เพราะการที่ workdir หายไปตอนเริ่มต้นอาจหมายถึงโปรเจกต์ถูกลบ — หรือ external volume หรือ network share ที่ยังไม่ได้ mount การล้าง orphan จะเกิดขึ้นผ่านคำสั่ง hermes checkpoints prune แบบชัดแจ้งเท่านั้น ซึ่งจะถามยืนยันก่อน

หากต้องการปิดทุกอย่าง:

checkpoints:
  enabled: false
  auto_prune: false

เมื่อ enabled: false Checkpoint Manager จะไม่ทำงานอะไรเลยและไม่พยายามรันคำสั่ง git เมื่อ auto_prune: false store จะโตขึ้นเรื่อยๆ จนกว่าคุณจะรัน hermes checkpoints prune ด้วยตัวเอง

สรุป

Checkpoints ให้ความมั่นใจที่จะปล่อยให้ Hermes ทำงานได้อย่างอิสระ โดยรู้ว่าคุณสามารถย้อนกลับไปยังสถานะที่ดีได้เสมอ ไม่ว่าคุณจะทดลองรีแฟกเตอร์ ทดสอบคำสั่งเสี่ยงๆ หรือแค่อยากอุ่นใจ คำสั่ง /rollback พร้อมช่วยคุณเสมอ

ลองใช้ในเซสชันถัดไปของคุณ — คุณอาจพบว่ามันกลายเป็นส่วนสำคัญของเวิร์กโฟลว์คุณก็ได้

📖 เอกสารทางการ

この記事は Hermes Agent のเอกสารทางการに基づいています:เอกสารทางการ › user-guide/features/credential-pools