Automaton 备份与恢复:数据库备份、Git 状态版本化与灾难恢复清单
2026/9/23 22:50:20 网站建设 项目流程

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数据库容易踩坑的地方:

  1. WAL 检查点:先执行PRAGMA wal_checkpoint(TRUNCATE),把未合并的写日志全部落盘到主文件,避免备份出"半个数据库"
  2. 原子拷贝:整体复制数据库及-wal-shm附属文件
  3. 完整性校验:对备份文件运行integrity_check,校验失败会自动删除损坏的备份文件
  4. 安全回退:恢复前先自动保存当前数据库为.pre-restore快照,误恢复也能再退回

💡 小建议:把backup命令加入定时任务,每天跑一次,备份文件放到其他磁盘或云存储。


Git 状态版本化:每次自我修改都是一个提交

这是 Automaton 备份体系中最巧妙的设计——它的整个状态目录~/.automaton/本身就是一个 Git 仓库

核心逻辑在 src/git/state-versioning.ts:

  • 初始化initStateRepo会为状态目录git init,并写入.gitignore排除敏感文件(wallet.jsonconfig.jsonstate.db等),保证私钥和数据库永远不会进入版本库
  • 自动提交:任何自我修改都会触发带说明的提交,并按类别打前缀:
    • soul:人格定义(SOUL.md)更新
    • skill:技能安装/移除
    • heartbeat:心跳配置变更
    • config:其他配置变更
  • 历史查询getStateHistory可列出最近的提交记录

配合 src/git/tools.ts 中封装的gitStatusgitCommitgitLog等工具,智能体的整个身份演变史都是可回放、可审查的。想查看它"最近改过什么"?

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 失败)

  1. 验证当前库:./scripts/backup-restore.sh verify ~/.automaton/state.db
  2. 找到最近的备份文件(如state-backup-20260922120000.db
  3. 执行恢复:./scripts/backup-restore.sh restore <备份文件> ~/.automaton/state.db
  4. 脚本会自动校验恢复结果,成功后重启 Automaton

场景二:状态文件被篡改或想"回到昨天的人格"

  1. cd ~/.automaton && git log --oneline找到问题提交之前的版本
  2. git checkout <提交哈希> -- <文件>恢复单个文件
  3. 若需整体回退:git reset --hard <提交哈希>(敏感文件不在版本库中,不受影响)

场景三:整个~/.automaton/目录丢失

  1. 从外部 tar 包解包恢复整个目录(定期执行tar czf automaton-backup-$(date +%Y%m%d).tar.gz ~/.automaton/就是为此准备的)
  2. 启动后检查数据库完整性,必要时再走场景一的恢复流程

场景四:实例不健康

Automaton 的复制子实例拥有独立生命周期状态机alive -> unhealthy -> recovering -> dead(见 src/replication/lifecycle.ts)。主实例故障时,健康的副本可以接管服务——这相当于系统自动帮你做了一份"活体备份"。


总结

Automaton 的备份与恢复体系可以概括为"三层防护":

  1. 数据库层backup-restore.sh提供带完整性校验的一键备份/恢复
  2. 状态层:Git 版本化让每一次自我修改都可追溯、可回滚
  3. 复制层:子智能体副本提供活体容灾

三层各司其职:数据库备份保"记忆",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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询