Checkpoints และ `/rollback` — ตัวช่วยความปลอดภัยสำหรับคำสั่งเสี่ยงๆ
Credential Pools — Rotate API Keys — easy-to-understand guide based on official docs
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 แยกต่างหากนี้
นี่คือขั้นตอนการทำงาน:
- Hermes ตรวจจับเมื่อเครื่องมือกำลังจะแก้ไขไฟล์ใน working tree ของคุณ
- หนึ่งครั้งต่อเทิร์นการสนทนา (ต่อไดเรกทอรี) มันจะหา project root ที่เหมาะสม
- มันจะเริ่มต้นหรือใช้ shadow store ที่ใช้ร่วมกันเดิม
- มันจะ 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