HermesAgent数据库维护:SQL备份自动化

风雪大大_7506

风雪大大_7506

2026-04-21

307人浏览

原创

Hermes Agent的SQLite状态数据库需通过Shell+Cron、Git检查点或systemd timer三种方式实现自动化备份:一、Shell脚本配合Cron每日定时拷贝;二、Git检查点模式提交版本化快照;三、systemd timer提供健壮守护式备份。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

hermesagent数据库维护:sql备份自动化

如果您正在使用Hermes Agent并依赖其SQLite状态数据库(~/.hermes/state.db)维持会话连续性与工具调用历史,但尚未建立可靠的备份机制,则可能面临因文件损坏、误覆盖或磁盘故障导致的上下文丢失风险。以下是针对该数据库实现SQL备份自动化的多种可行路径:

一、基于Shell脚本与Cron的定时本地备份

该方法通过操作系统级调度任务,在固定时间点对state.db执行带时间戳的原子拷贝,不依赖外部服务,轻量可控,适用于所有Linux/macOS部署环境。

1、创建备份脚本文件:执行mkdir -p ~/.hermes/scripts && touch ~/.hermes/scripts/backup_state.sh。

2、向脚本写入备份逻辑:使用echo '#!/bin/bash\ncp ~/.hermes/state.db ~/.hermes/backups/state.db.$(date +\%Y\%m\%d_\%H\%M\%S)' > ~/.hermes/scripts/backup_state.sh。

3、赋予执行权限:运行chmod +x ~/.hermes/scripts/backup_state.sh。

4、配置每日凌晨2点自动执行:执行(crontab -l 2>/dev/null; echo "0 2 * * * ~/.hermes/scripts/backup_state.sh") | crontab -。

5、手动创建备份目录:运行mkdir -p ~/.hermes/backups确保目标路径存在。

二、利用Git检查点模式实现版本化快照

当Hermes Agent运行于已初始化Git仓库的项目中时,启用Git检查点可将每次关键状态变更提交为独立提交,并归类至专用分支,天然具备时间线追溯、差异比对与单提交回滚能力。

1、确认Git仓库就绪:在项目根目录执行git rev-parse --is-inside-work-tree,返回true即有效。

2、启用检查点功能:设置环境变量export HERMES_CHECKPOINT_MODE=git,并确保该变量在Agent启动环境中生效。

Hermes Agent
Hermes Agent

将OpenClaw打造为具备种子工作空间规则、技能提升、反思记忆和主动维护的学习循环智能体。

下载

3、验证检查点分支生成:运行git branch --format="%(refname:short)" | grep "hermes/checkpoints/",应可见类似hermes/checkpoints/session_xyz789的分支。

4、强制触发一次检查点:向Agent发送指令如“保存当前会话状态”,观察Git日志是否新增提交。

5、备份整个Git仓库:定期执行git clone --mirror <current_repo_path> /backup/hermes-repo-mirror.git</current_repo_path>,保留全部分支与提交历史。

三、集成systemd timer实现更健壮的守护式备份

相比Cron,systemd timer支持失败重试、资源限制、依赖服务声明及日志审计,适合生产环境长期运行,尤其适配systemd管理的Hermes Agent服务实例。

1、创建timer单元文件:执行sudo tee /etc/systemd/system/hermes-state-backup.timer,内容为:
[Unit]
Description=Daily backup of Hermes state.db

[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true

[Install]
WantedBy=timers.target。

2、创建对应service单元:执行sudo tee /etc/systemd/system/hermes-state-backup.service,内容为:
[Unit]
Description=Backup Hermes SQLite state database
After=hermes-agent.service

[Service]
Type=oneshot
ExecStart=/usr/bin/cp /home/$USER/.hermes/state.db /home/$USER/.hermes/backups/state.db.$$(date +\%Y\%m\%d_\%H\%M\%S)
User=$USER
Group=$USER
Environment=PATH=/usr/local/bin:/usr/bin:/bin。

3、重载systemd配置:运行sudo systemctl daemon-reload。

4、启用并启动timer:执行sudo systemctl enable hermes-state-backup.timer && sudo systemctl start hermes-state-backup.timer。

5、验证timer状态:运行systemctl list-timers | grep hermes,确认下次触发时间与状态为“active”。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

hermes agent hermesagent

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
数据分析工具有哪些
数据分析工具有哪些

数据分析工具有Excel、SQL、Python、R、Tableau、Power BI、SAS、SPSS和MATLAB等。详细介绍:1、Excel,具有强大的计算和数据处理功能;2、SQL,可以进行数据查询、过滤、排序、聚合等操作;3、Python,拥有丰富的数据分析库;4、R,拥有丰富的统计分析库和图形库;5、Tableau,提供了直观易用的用户界面等等。

2023.10.12

4543

8

SQL中distinct的用法
SQL中distinct的用法

SQL中distinct的语法是“SELECT DISTINCT column1, column2,...,FROM table_name;”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.27

951

4

SQL中months_between使用方法
SQL中months_between使用方法

在SQL中,MONTHS_BETWEEN 是一个常见的函数,用于计算两个日期之间的月份差。想了解更多SQL的相关内容,可以阅读本专题下面的文章。

2024.02.23

1189

5

SQL出现5120错误解决方法
SQL出现5120错误解决方法

SQL Server错误5120是由于没有足够的权限来访问或操作指定的数据库或文件引起的。想了解更多sql错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

6521

10

sql procedure语法错误解决方法
sql procedure语法错误解决方法

sql procedure语法错误解决办法:1、仔细检查错误消息;2、检查语法规则;3、检查括号和引号;4、检查变量和参数;5、检查关键字和函数;6、逐步调试;7、参考文档和示例。想了解更多语法错误的相关内容,可以阅读本专题下面的文章。

2024.03.06

3283

4

oracle数据库运行sql方法
oracle数据库运行sql方法

运行sql步骤包括:打开sql plus工具并连接到数据库。在提示符下输入sql语句。按enter键运行该语句。查看结果,错误消息或退出sql plus。想了解更多oracle数据库的相关内容,可以阅读本专题下面的文章。

2024.04.07

6480

11

sql中where的含义
sql中where的含义

sql中where子句用于从表中过滤数据,它基于指定条件选择特定的行。想了解更多where的相关内容,可以阅读本专题下面的文章。

2024.04.29

8881

6

sql中删除表的语句是什么
sql中删除表的语句是什么

sql中用于删除表的语句是drop table。语法为drop table table_name;该语句将永久删除指定表的表和数据。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1210

5

sql中删除一列的命令是什么
sql中删除一列的命令是什么

在sql中,使用alter table语句可以删除一列,语法为:alter table table_name drop column column_name。想了解更多sql的相关内容,可以阅读本专题下面的文章。

2024.04.29

1052

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Hermes Agent中文文档
Hermes Agent中文文档

共0课时 | 0人学习