Hermes Agent提供五种备份与恢复方案:一、手动备份SQLite数据库;二、Git集成自动检查点;三、文件快照模式;四、CLI rollback命令回滚;五、checkpoint工具高级操作(list/restore/diff)。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您正在运行Hermes Agent,但遭遇会话中断、状态丢失或SQLite数据库损坏,则可能是核心状态数据未被妥善备份。以下是针对Hermes Agent数据备份与恢复的多种可行方案:
一、基于SQLite数据库的手动备份
Hermes Agent的核心会话状态、工具调用记录和响应数据全部持久化在本地SQLite数据库中,路径为~/.hermes/state.db。定期复制该文件可实现最基础、最可靠的状态备份。
1、打开终端,确认数据库文件存在:
ls -la ~/.hermes/state.db
2、创建带时间戳的备份副本:
cp ~/.hermes/state.db ~/.hermes/state.db.backup.$(date +%Y%m%d_%H%M%S)
3、将备份文件同步至安全位置(如加密U盘或远程服务器):
rsync -avz ~/.hermes/state.db.backup.* user@backup-server:/backups/hermes/
二、利用Git集成的自动检查点备份
当Hermes Agent工作区位于已初始化的Git仓库中时,系统会自动启用Git集成模式,在每次工具调用或关键文件修改后,将变更提交至专用临时分支hermes/checkpoints/<session>,形成可追溯、可回退的版本快照。
1、确保当前项目根目录已执行git init并至少完成一次git commit
2、验证Git配置是否启用检查点功能:
cat ~/.hermes/config.yaml | grep -A 5 "checkpoint"
3、手动触发一次检查点生成:
hermes checkpoint --mode git --session-id "manual_$(date +%s)"
4、查看所有检查点分支:
git branch --format="%(refname:short)" | grep "hermes/checkpoints/"
三、启用文件快照模式备份非Git环境
在未使用Git的工作环境中,Hermes Agent默认采用文件快照模式,将每次会话的更改文件打包为tar归档,并存于~/.hermes/checkpoints/<session_id>/目录下。该机制不依赖外部版本控制系统,适用于隔离沙箱或容器化部署。
1、确认检查点目录结构:
ls -d ~/.hermes/checkpoints/*/ 2>/dev/null || echo "No checkpoints found"
2、查找最近一次会话的快照包:
find ~/.hermes/checkpoints/ -name "*.tar" -type f -printf '%T@ %p\n' | sort -n | tail -1 | cut -d' ' -f2-
3、解压指定快照以恢复文件(需先清空当前工作区):
tar -xvf $(find ~/.hermes/checkpoints/ -name "*.tar" | head -n1) -C ./workspace/ --strip-components=1
四、使用CLI rollback命令执行状态回滚
hermes rollback命令直接读取本地检查点元数据,列出所有可用恢复点,并支持交互式选择目标检查点进行原子级状态还原。该操作同时恢复SQLite状态与关联文件快照,确保一致性。
1、列出所有可回滚的检查点:
hermes rollback bash
2、从输出中识别目标时间戳或session_id(例如:20260413_152248_session_xyz)
3、执行精确回滚:
hermes rollback --session-id "20260413_152248_session_xyz"
4、验证回滚结果:
hermes status --verbose
五、调用checkpoint工具执行高级恢复操作
Hermes Agent内置checkpoint工具提供list、restore、diff三类原子操作,可嵌入脚本或自动化流水线,实现无人值守的数据恢复流程。该工具直接对接底层检查点索引,绕过CLI交互层,适合集成到cron定时任务或CI/CD中。
1、列出全部检查点及其元信息:
hermes checkpoint list --all
2、比较当前工作区与指定检查点的文件差异:
hermes checkpoint diff --session-id "20260412_093411_session_abc"
3、强制覆盖还原至指定检查点(含state.db与文件快照):
hermes checkpoint restore --session-id "20260412_093411_session_abc" --force


















