Warum du dich für Checkpoints interessieren solltest
Tutorial 30: Checkpoints & Rollback — easy-to-understand guide based on official docs
Warum du dich für Checkpoints interessieren solltest
Stell dir vor, du bittest Hermes, einen großen Teil deines Codes zu refaktorieren, und mitten in der Arbeit merkst du: Der neue Ansatz ist eine Katastrophe. Ohne Checkpoints wärst du gezwungen, Änderungen manuell rückgängig zu machen oder dich durch die Git-Historie zu wühlen. Mit Checkpoints tippst du einfach /rollback ein und wählst einen Wiederherstellungspunkt. Es ist wie eine Zeitmaschine für dein Projekt.
Das Beste daran? Checkpoints sind komplett optional. In v2 sind sie standardmäßig deaktiviert – wenn du sie also nie nutzt, wirst du nie merken, dass es sie gibt. Aber wenn du sie brauchst, sind sie ein Lebensretter.
Checkpoints aktivieren
Du hast zwei Möglichkeiten, dieses Sicherheitsnetz einzuschalten:
Pro Sitzung (nur dieser Chat):
hermes chat --checkpoints
Global (alle Sitzungen) – bearbeite ~/.hermes/config.yaml:
checkpoints:
enabled: true
Was löst einen Checkpoint aus?
Hermes erstellt automatisch einen Snapshot deines Projekts vor jeder destruktiven Operation, einschließlich:
- Datei-Tools –
write_fileundpatch - Gefährliche Terminal-Befehle –
rm,rmdir,cp,mv,sed -i,truncate,dd,shred, Output-Umleitungen (>), sowiegit reset/clean/checkout
Um Spam zu vermeiden, erstellt Hermes höchstens einen Checkpoint pro Verzeichnis und Runde. Eine lange Sitzung füllt also nicht deine Festplatte mit Hunderten von Snapshots.
Die Magie hinter den Kulissen
Hier kommt der clevere Teil: Hermes verwendet ein einziges gemeinsames Schatten-Git-Repository unter ~/.hermes/checkpoints/store/. Der .git-Ordner deines echten Projekts wird niemals angefasst. Alle Projekte teilen sich diesen einen Store, und das content-adressierbare Git-System dedupliziert Dateien automatisch über Projektgrenzen hinweg. Wenn also zwei Projekte ähnliche Dateien haben, werden sie nur einmal gespeichert.
/rollback in der Sitzung verwenden
Sobald Checkpoints aktiviert sind, kannst du diese Slash-Befehle während eines Chats nutzen:
| Befehl | Funktion |
|---|---|
/rollback |
Listet alle Checkpoints mit Änderungsstatistiken auf |
/rollback <N> |
Stellt Checkpoint N wieder her, unter Beibehaltung deiner manuellen Änderungen (macht auch die letzte Chat-Runde rückgängig) |
/rollback <N> --all |
Vollständige Wiederherstellung – überschreibt auch deine manuellen Änderungen |
/rollback diff <N> |
Zeigt eine Vorschau des Unterschieds zwischen Checkpoint N und dem aktuellen Stand |
/rollback <N> <file> |
Stellt nur eine einzelne Datei aus Checkpoint N wieder her |
Wenn du /rollback eintippst, siehst du etwa Folgendes:
📸 Checkpoints für /pfad/zum/projekt:
1. 4270a8c 2026-03-16 04:36 vor patch (1 Datei, +1/-0)
2. eaf4c1f 2026-03-16 04:35 vor write_file
3. b3f9d2e 2026-03-16 04:34 vor terminal: sed -i s/old/new/ config.py (1 Datei, +1/-1)
Den Store von der Shell aus verwalten
Außerhalb einer Sitzung kannst du den Checkpoint-Store inspizieren und aufräumen:
hermes checkpoints # Gesamtgröße, Projektanzahl, Aufschlüsselung anzeigen
hermes checkpoints status # Wie oben
hermes checkpoints list # Alias für status
hermes checkpoints prune # Erzwungene Bereinigung: Waisen löschen, GC, Größenlimit durchsetzen
hermes checkpoints clear # Kompletten Checkpoint-Bestand löschen (mit Rückfrage)
hermes checkpoints clear-legacy # Nur v1-Migrationsarchive löschen
Die Konfiguration anpassen
Du kannst alles in ~/.hermes/config.yaml steuern:
checkpoints:
enabled: false # Hauptschalter (Standard: false)
max_snapshots: 20 # Maximale Checkpoints pro Projekt
max_total_size_mb: 500 # Hartes Limit für die Gesamtgröße des Stores
max_file_size_mb: 10 # Dateien größer als dies werden übersprungen
auto_prune: true # Alte Einträge beim Start automatisch bereinigen
retention_days: 7 # Einträge behalten, die innerhalb dieser Tage angefasst wurden
min_interval_hours: 24 # Bereinigung höchstens einmal in diesem Intervall
Ein kluges Detail: Auto-Prune löscht niemals Waisen-Einträge (Projekte, deren Arbeitsverzeichnis nicht mehr existiert). Das liegt daran, dass ein fehlendes Verzeichnis auch einfach eine nicht eingehängte externe Festplatte oder ein noch nicht verbundenes VPN bedeuten könnte. Die Waisen-Bereinigung erfolgt nur über den expliziten Befehl hermes checkpoints prune, der vorher um Bestätigung fragt.
Wann solltest du es aktivieren?
Wenn du experimentelle Arbeit, große Refactorings machst oder Hermes lernst, schalte Checkpoints ein. Der Speicher-Overhead ist moderat (dank Deduplizierung), und das beruhigende Gefühl ist enorm. Wenn du nur einfache, sichere Aufgaben erledigst, lass es aus und spare den Speicherplatz.
Checkpoints gehören zu den Funktionen, die du vergisst – bis zu dem Moment, in dem du sie dringend brauchst. Und wenn dieser Moment kommt, wirst du froh sein, dass es sie gibt.
📖 Offizielle Dokumentation
この記事は Hermes Agent のOffizielle Dokumentationに基づいています:Offizielle Dokumentation › user-guide/checkpoints-and-rollback