บทช่วยสอน 10: Checkpoints — ปุ่มเลิกทำของ AI
Tutorial 10: Checkpoints — AI's Undo Button — easy-to-understand guide based on official docs
บทช่วยสอน 10: Checkpoints — ปุ่มเลิกทำของ AI
จำความรู้สึกใจหายตอนที่รู้ว่าคุณเพิ่งลบอะไรสำคัญไปได้ไหม? อาจจะเป็นไฟล์ที่คุณใช้เวลาหลายชั่วโมงทำ หรือการแก้คอนฟิกที่ทำให้ทุกอย่างพัง ในโลกความจริง ไม่มีปุ่ม Ctrl+Z สำหรับระบบไฟล์ของคุณ แต่ใน Hermes Agent มี — และมันเรียกว่า checkpoints
ลองนึกถึง checkpoints เหมือนจุดเซฟในเกม ก่อนที่ AI agent ของคุณจะทำอะไรที่เสี่ยง — เช่นเขียนทับไฟล์หรือรันคำสั่งที่ทำลายล้าง — มันสามารถเก็บภาพรวมของโปรเจกต์คุณไว้ได้อย่างรวดเร็ว ถ้ามีอะไรผิดพลาด คุณก็ย้อนกลับไปที่จุดเซฟนั้นได้ด้วยคำสั่งเดียว เหมือนมีปุ่มเลิกทำสำหรับทั้งโปรเจกต์ของคุณ
เปิดใช้งานระบบความปลอดภัย
ความจริงที่ต้องบอกตรงๆ: checkpoints เป็นแบบ เลือกใช้เอง ใน Hermes v2 ผู้ใช้ส่วนใหญ่ไม่เคยต้องใช้มัน และพื้นที่จัดเก็บก็เพิ่มขึ้นเรื่อยๆ ได้ แต่ถ้าคุณกำลังทำงานกับอะไรที่สำคัญ มันคือตัวช่วยชีวิต
คุณมีสองวิธีในการเปิดใช้งาน:
รายเซสชัน (เฉพาะแชทเดียว):
hermes chat --checkpoints
แบบทั่วโลก (ใน ~/.hermes/config.yaml):
checkpoints:
enabled: true
แค่นั้นเอง เมื่อเปิดใช้งานแล้ว Hermes จะเก็บ snapshot ของโปรเจกต์คุณโดยอัตโนมัติก่อนที่จะมีอะไรที่ทำลายล้างเกิดขึ้น
อะไรบ้างที่ทำให้เกิด Checkpoint?
Hermes ฉลาดในการตัดสินใจว่าจะเก็บ snapshot เมื่อไหร่ มันจะคอยสังเกต:
- การดำเนินการกับไฟล์ — เช่น
write_fileและpatch - คำสั่งเทอร์มินัลที่ทำลายล้าง — เช่น
rm,mv,sed -i,truncateและแม้กระทั่งgit resetหรือgit clean
ส่วนที่ดีที่สุด? มันสร้าง checkpoint อย่างมากหนึ่งอันต่อไดเรกทอรีต่อเทิร์น ดังนั้นเซสชันยาวๆ ของคุณจะไม่สร้าง snapshot เป็นร้อยๆ อัน
การย้อนกลับ: คำสั่ง Slash
เมื่อคุณอยู่ในเซสชันแชท /rollback คือเพื่อนซี้ของคุณ:
| คำสั่ง | ฟังก์ชัน |
|---|---|
/rollback |
แสดง checkpoint ทั้งหมดพร้อมสถิติการเปลี่ยนแปลง |
/rollback <N> |
กู้คืนไปที่ checkpoint N โดยเก็บการแก้ไขที่คุณทำเองไว้ |
/rollback <N> --all |
กู้คืนแบบเต็มรูปแบบ — เขียนทับการแก้ไขที่คุณทำเองด้วย |
/rollback diff <N> |
ดูตัวอย่างการเปลี่ยนแปลงระหว่าง checkpoint N กับปัจจุบัน |
/rollback <N> <file> |
กู้คืนแค่ไฟล์เดียวจาก checkpoint N |
ค่าเริ่มต้นของ /rollback <N> นั้นฉลาด — มันเก็บการเปลี่ยนแปลงที่คุณทำด้วยมือไว้ทั้งหมด โดยเลิกทำเฉพาะสิ่งที่ agent ทำเท่านั้น ถ้าคุณต้องการล้างทั้งหมด ใช้ --all
จัดการพื้นที่จัดเก็บจากเทอร์มินัล
นอกเหนือจากแชท คุณมีคำสั่ง CLI สำหรับตรวจสอบและจัดการ checkpoint ของคุณ:
hermes checkpoints # แสดงขนาด, โปรเจกต์, รายละเอียด
hermes checkpoints status # เหมือนกับด้านบน
hermes checkpoints list # alias ของ status
hermes checkpoints prune # ทำความสะอาดข้อมูล orphan และข้อมูลเก่า
hermes checkpoints clear # ลบทุกอย่าง (ถามก่อน)
hermes checkpoints clear-legacy # ลบไฟล์ migration จาก v1 เก่า
ทำงานเบื้องหลังอย่างไร
คุณอาจสงสัย: “อันนี้ไปยุ่งกับ git repo จริงของฉันไหม?” ไม่ Hermes เก็บ “shadow store” แยกต่างหากที่ ~/.hermes/checkpoints/store/ โฟลเดอร์ .git จริงของโปรเจกต์คุณไม่ถูกแตะต้องเลย
โปรเจกต์ทั้งหมดของคุณใช้พื้นที่จัดเก็บร่วมกัน และเนื่องจาก git เป็นแบบ content-addressable ไฟล์ที่ปรากฏในหลายโปรเจกต์จึงถูกเก็บเพียงครั้งเดียว มันมีประสิทธิภาพอย่างน่าประหลาดใจ
ปรับแต่งการตั้งค่า
คุณสามารถควบคุมปริมาณพื้นที่จัดเก็บที่ checkpoint ใช้ได้:
checkpoints:
enabled: true
max_snapshots: 20 # จำนวน checkpoint สูงสุดต่อโปรเจกต์
max_total_size_mb: 500 # ขีดจำกัดสูงสุดของพื้นที่จัดเก็บทั้งหมด
max_file_size_mb: 10 # ข้ามไฟล์ที่ใหญ่กว่านี้
auto_prune: true # ล้างข้อมูลเก่าอัตโนมัติ
retention_days: 7 # เก็บข้อมูลไว้ 7 วัน
min_interval_hours: 24 # ล้างข้อมูลอย่างมากวันละครั้ง
ฟีเจอร์ auto-prune นั้นฉลาด — มันทำความสะอาดรายการเก่าตอนเริ่มต้นระบบ แต่ไม่เคยลบรายการ “orphan” (โปรเจกต์ที่หาโฟลเดอร์ไม่เจอ) เพราะโฟลเดอร์ที่หายไปอาจหมายถึงไดรฟ์ภายนอกที่ยังไม่ได้เสียบเข้าก็ได้ สำหรับการทำความสะอาด orphan คุณต้องรัน hermes checkpoints prune ด้วยตนเอง
ปุ่มเลิกทำของโปรเจกต์คุณ
Checkpoints ให้ความมั่นใจที่จะปล่อยให้ AI agent ของคุณทำงานได้อย่างอิสระ โดยรู้ว่าคุณสามารถย้อนเวลากลับไปได้เสมอ ไม่ว่าคุณจะรีแฟกเตอร์โค้ด ทดลองคอนฟิก หรือแค่อยากอุ่นใจ มันคุ้มค่าที่จะเปิดใช้งาน
ลองใช้ในเซสชันถัดไปของคุณด้วย hermes chat --checkpoints คุณอาจไม่ต้องย้อนกลับเลย — แต่ถ้าต้องใช้ คุณจะดีใจที่มีมันอยู่
📖 เอกสารทางการ
この記事は Hermes Agent のเอกสารทางการに基づいています:เอกสารทางการ › user-guide/checkpoints-and-rollback