Что такое checkpoints
Checkpoints — это автоматические снапшоты файловой системы, которые Hermes создаёт перед каждым инструментом, изменяющим файлы. Если что-то пошло не так, вы можете откатиться к любому предыдущему состоянию файлов с помощью команды /rollback.
Checkpoints превращают агента в безопасную среду для экспериментов: рефакторинг, генерация кода,批量 изменения — всё можно отменить одной командой.
Конфигурация
Checkpoints настраиваются в секции checkpoints файла config.yaml:
checkpoints:
enabled: true # включить/выключить (по умолчанию: false)
max_snapshots: 50 # максимальное количество снапшотов (по умолчанию: 50)
Установить через CLI:
hermes config set checkpoints.enabled true
hermes config set checkpoints.max_snapshots 50
Включение checkpoints
Через конфиг
Глобальное включение для всех сессий:
hermes config set checkpoints.enabled true
Через флаг CLI
Включение только для конкретной сессии:
hermes chat --checkpoints
В текущей сессии
Checkpoints активируются при запуске сессии. Если не были включены заранее, нужно перезапустить сессию с флагом --checkpoints.
Slash-команды
/rollback [N]
Восстановить файлы из снапшота. Без аргумента — откат к последнему снапшоту. С числом — откат к снапшоту N сессий назад:
/rollback # откат к последнему снапшоту
/rollback 1 # то же самое
/rollback 3 # откат на 3 снапшота назад
После восстановления агент покажет, какие файлы были изменены и какие вернулись к предыдущему состоянию.
Как работают checkpoints
- Автоматический снапшот — перед каждым tool call, который изменяет файлы (
write_file,patch,terminalс записью), Hermes автоматически создаёт снапшот затронутых файлов. - Дифф-снапшот — сохраняются только изменённые файлы, не вся файловая система. Это экономит место и ускоряет операции.
- Цепочка снапшотов — каждый снапшот ссылается на предыдущий, формируя цепочку состояний. Можно откатиться на несколько шагов назад.
- Лимит хранения — когда количество снапшотов превышает
max_snapshots, самые старые автоматически удаляются.
Практические сценарии
Безопасный рефакторинг
hermes chat --checkpoints
# Просим агента провести рефакторинг
> Рефакторинг модуля auth: вынести middleware в отдельный файл
# Если результат не устраивает:
/rollback
# Пробуем другой подход:
> Рефакторинг модуля auth: использовать декораторы вместо middleware
Эксперименты с кодом
# Пробуем разные варианты реализации
> Попробуй использовать asyncio вместо threading в модуле worker
# Результат хуже? Откатываемся:
/rollback
> Попробуй multiprocessing вместо threading
Откат неудачных изменений
# Агент внёс изменения, которые сломали тесты
> Запусти тесты
# Тесты упали? Откатываемся:
/rollback
# Или на несколько шагов назад:
/rollback 2
Цепочка экспериментов
# Шаг 1: пробуем вариант A
> Перепиши парсер на regex
# Шаг 2: пробуем вариант B поверх A
> Добавь кэширование результатов парсинга
# Результат не нравится — откатываем оба шага:
/rollback 2
# Теперь мы вернулись к состоянию до шага 1
Где хранятся снапшоты
Снапшоты хранятся в директории профиля:
~/.hermes/profiles/<name>/checkpoints/
# или для глобального агента:
~/.hermes/checkpoints/
Каждый снапшот — это директория с копиями изменённых файлов и метаданными (timestamp, tool call info). Структура:
checkpoints/
├── 20260722_143052_a1b2c3/ # снапшот 1
│ ├── metadata.json # timestamp, tool, описание
│ └── files/
│ ├── src/auth.py
│ └── config.yaml
├── 20260722_143105_d4e5f6/ # снапшот 2
│ ├── metadata.json
│ └── files/
│ └── src/auth.py
└── ...
Ограничения
- Только файлы — checkpoints отслеживают изменения файлов. Операции с БД, сетевыми ресурсами, внешними API не захватываются.
- Не покрывает terminal побочные эффекты — если
terminalзапускает команды с побочными эффектами (установка пакетов, миграции БД), откат файлов не отменит эти эффекты. - Размер хранилища — при
max_snapshots: 50и крупных проектах директория checkpoints может занимать значительное место. Регулируйте лимит под свои задачи. - Производительность — создание снапшотов adds небольшую задержку перед tool calls. Для проектов с тысячами файлов это может быть заметно.
- Нет инкрементальных снапшотов — каждый снапшот хранит полную копию затронутых файлов (не дельты). Это упрощает восстановление, но требует больше места.
- Откат только файлов — история чата, состояние агента и переменные окружения не откатываются.
/rollbackработает только с файловой системой.
Советы
- Включайте
--checkpointsпри любых задачах, связанных с изменениями кода - Для одноразовых задач используйте флаг CLI; для постоянной работы — конфиг
- Проверяйте размер директории checkpoints периодически:
du -sh ~/.hermes/checkpoints/ - При нехватке места уменьшите
max_snapshotsили очистите старые снапшоты