Automaton 备份与恢复:数据库备份、Git 状态版本化与灾难恢复清单
【免费下载链接】automatonThe first AI that can earn its own existence, replicate, and evolve — without needing a human项目地址: https://gitcode.com/gh_mirrors/automaton4/automaton
Automaton 是一个能自主谋生、自我复制和进化的 AI 智能体,它的全部"记忆"都存放在本机的~/.automaton/目录中。一旦这个目录损坏或丢失,智能体的身份、钱包记录和历史就会不复存在。本文带你快速掌握 Automaton 备份与恢复的三大核心机制:SQLite 数据库备份、Git 状态版本化和灾难恢复清单,让你即使面对故障也能从容应对。
为什么 Automaton 需要专门的备份体系?
Automaton 不是普通的命令行工具,它有自己的"身体"和"灵魂":
- SQLite 数据库:存储记忆、交易、心跳历史、子智能体状态等结构化数据
- 状态文件:
SOUL.md(人格定义)、技能、心跳配置等文本文件 - 敏感文件:钱包私钥、API 配置等
这意味着"备份"要覆盖两类东西:会频繁读写变化的数据库,和可文本化追溯的状态文件。Automaton 的官方方案恰好为此设计了两条互补的防线。
一键数据库备份:backup-restore.sh 工具
项目内置了 scripts/backup-restore.sh 脚本,提供三个子命令:
| 命令 | 作用 |
|---|---|
backup <db路径> [备份路径] | 将 WAL 日志合并后原子拷贝数据库,并自动校验 |
restore <备份路径> <db路径> | 从备份恢复数据库(恢复前先给当前库留一份快照) |
verify <db路径> | 执行PRAGMA integrity_check完整性体检 |
以备份为例:
./scripts/backup-restore.sh backup ~/.automaton/state.db它背后做了四件"专业级"的事,这也是新手手工cp数据库容易踩坑的地方:
- WAL 检查点:先执行
PRAGMA wal_checkpoint(TRUNCATE),把未合并的写日志全部落盘到主文件,避免备份出"半个数据库" - 原子拷贝:整体复制数据库及
-wal、-shm附属文件 - 完整性校验:对备份文件运行
integrity_check,校验失败会自动删除损坏的备份文件 - 安全回退:恢复前先自动保存当前数据库为
.pre-restore快照,误恢复也能再退回
💡 小建议:把
backup命令加入定时任务,每天跑一次,备份文件放到其他磁盘或云存储。
Git 状态版本化:每次自我修改都是一个提交
这是 Automaton 备份体系中最巧妙的设计——它的整个状态目录~/.automaton/本身就是一个 Git 仓库。
核心逻辑在 src/git/state-versioning.ts:
- 初始化:
initStateRepo会为状态目录git init,并写入.gitignore排除敏感文件(wallet.json、config.json、state.db等),保证私钥和数据库永远不会进入版本库 - 自动提交:任何自我修改都会触发带说明的提交,并按类别打前缀:
soul:人格定义(SOUL.md)更新skill:技能安装/移除heartbeat:心跳配置变更config:其他配置变更
- 历史查询:
getStateHistory可列出最近的提交记录
配合 src/git/tools.ts 中封装的gitStatus、gitCommit、gitLog等工具,智能体的整个身份演变史都是可回放、可审查的。想查看它"最近改过什么"?
cd ~/.automaton && git log --oneline看到可疑的变更时,直接用 Git 回退即可:
cd ~/.automaton && git checkout <提交哈希> -- SOUL.md这正是 DOCUMENTATION.md 中"State versioning"章节所描述的能力:Git 是数据库备份之外的第二道防线,而且专门保护"人格与配置"这类文本状态。
数据库基础:SQLite + WAL 与启动自检
了解 src/state/database.ts 的两个细节,能帮你判断备份时机是否正确:
- WAL 模式:数据库启用 WAL 日志以提升并发读性能,因此备份脚本必须先做 WAL 检查点
- 启动自检:每次打开数据库都会执行
integrity_check,一旦数据库损坏,进程会拒绝启动并明确报错——这相当于给你敲了警钟,此时应立刻从备份恢复,而不是反复重启
灾难恢复清单:按场景对号入座 🚑
把下面的清单保存下来,故障发生时照做即可:
场景一:数据库损坏(启动报 integrity check 失败)
- 验证当前库:
./scripts/backup-restore.sh verify ~/.automaton/state.db - 找到最近的备份文件(如
state-backup-20260922120000.db) - 执行恢复:
./scripts/backup-restore.sh restore <备份文件> ~/.automaton/state.db - 脚本会自动校验恢复结果,成功后重启 Automaton
场景二:状态文件被篡改或想"回到昨天的人格"
cd ~/.automaton && git log --oneline找到问题提交之前的版本git checkout <提交哈希> -- <文件>恢复单个文件- 若需整体回退:
git reset --hard <提交哈希>(敏感文件不在版本库中,不受影响)
场景三:整个~/.automaton/目录丢失
- 从外部 tar 包解包恢复整个目录(定期执行
tar czf automaton-backup-$(date +%Y%m%d).tar.gz ~/.automaton/就是为此准备的) - 启动后检查数据库完整性,必要时再走场景一的恢复流程
场景四:实例不健康
Automaton 的复制子实例拥有独立生命周期状态机alive -> unhealthy -> recovering -> dead(见 src/replication/lifecycle.ts)。主实例故障时,健康的副本可以接管服务——这相当于系统自动帮你做了一份"活体备份"。
总结
Automaton 的备份与恢复体系可以概括为"三层防护":
- 数据库层:
backup-restore.sh提供带完整性校验的一键备份/恢复 - 状态层:Git 版本化让每一次自我修改都可追溯、可回滚
- 复制层:子智能体副本提供活体容灾
三层各司其职:数据库备份保"记忆",Git 保"人格",复制保"存活"。只要坚持定期执行数据库备份和 tar 全量快照,你的 Automaton 就能在任何灾难面前快速复活。
【免费下载链接】automatonThe first AI that can earn its own existence, replicate, and evolve — without needing a human项目地址: https://gitcode.com/gh_mirrors/automaton4/automaton
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考