Hindsight 记忆备份配置指南:三步跑通自动备份与恢复链路
【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight
Hindsight 是面向 AI 智能体的持久化记忆系统,它把智能体的对话、项目知识和用户偏好沉淀为结构化的记忆单元,存放在 PostgreSQL 中。本文以内置的 hindsight-admin 为入口,讲清 Hindsight 记忆备份的机制,覆盖备份链路搭建、故障应对手册和生产部署检查清单。
Hindsight 记忆数据流全景:所有记忆数据最终落入 PostgreSQL,这就是备份的边界
🧩 核心机制拆解
数据从哪来:一份完整的表级快照
备份不是导出几条记忆记录,而是对目标 schema 里所有相关表做快照。内容包括:
- 记忆银行(bank)及其配置
- 文档与切块(documents / chunks)
- 实体及实体关系
- 记忆单元:事实、经验、观察三类
- 实体共现与记忆链接
- 心智模型与指令
- Webhooks 与文件存储
- 内部运维表:异步操作、审计日志、图维护队列等
带上内部运维表,是为了让恢复后的实例能复现一致的运行状态,而不只是"数据像,行为不一样"。
记忆写入链路:retain 操作产出记忆单元并落入存储,备份快照的就是这层数据
存到哪:一个 zip,二进制 COPY 加 manifest
每个备份是一个.zip文件。内部结构是"每表一个文件":
{table}.bin:该表的 PostgreSQL binary COPY 数据流manifest.json:记录备份版本号、创建时间、目标 schema,以及每张表的行数、字节数和列结构(列名 + 类型)
binary COPY 是 PostgreSQL 的二进制复制协议,比文本导出更快、无转义问题。manifest 的作用不只是记录信息——恢复时会先拿它做兼容性校验,不通过就直接报错退出,不会碰目标库里的任何数据。
怎么触发:admin CLI 直连数据库
备份由hindsight-admin命令行触发,它不走 HTTP API,而是直接连 PostgreSQL 执行。这意味着两点:
- 它读取与 API 服务相同的配置:环境变量或当前目录下的
.env文件,核心是HINDSIGHT_API_DATABASE_URL - 它必须运行在与数据库网络可达的机器上,通常就是 API 部署所在的宿主机或容器
⚠️ admin CLI 直接对数据库执行 COPY、TRUNCATE 等操作,仅支持 PostgreSQL(Oracle 不支持)。在 Docker 部署里,用
docker exec -it hindsight-api hindsight-admin backup /data/backup.zip进入 API 容器执行。
一致性由事务隔离级别保证:整次备份在一个REPEATABLE READ事务内完成,保证跨表快照一致——不会出现"共现表引用了备份之后才创建的实体"这类脏数据。
🧱 从零搭建:三步跑通备份链路
第一步:安装并确认工具可用
hindsight-admin随hindsight-api包一起安装。下面两条命令分别用于安装和验证环境连通:
pip install hindsight-api hindsight-admin worker-statusworker-status是一条只读命令,列出当前 processing 状态的任务。能正常返回(哪怕是空列表)说明数据库连通、配置正确。
第二步:执行首次备份
这条命令把当前库全量备份为 zip 文件,文件名不带.zip后缀时会自动补上:
hindsight-admin backup /backups/hindsight-$(date +%F).zip预期输出逐表打印进度,结束时输出类似Backed up 8321 rows across 41 tables和Backup saved to /backups/hindsight-2026-09-15.zip。
多租户部署下,用--schema单独备份某个租户,互不影响:
hindsight-admin backup /backups/tenant-acme.zip --schema tenant_acme第三步:挂上定时任务
用 crontab 让备份每天自动执行,下面是 cron 条目:
0 2 * * * /usr/local/bin/hindsight-backup.sh备份脚本的核心逻辑可以精简为三条伪代码,重点是"备份后立刻验证":
# /usr/local/bin/hindsight-backup.sh 伪代码 # hindsight-admin backup $BACKUP_DIR/hindsight-$(date +%F).zip # find $BACKUP_DIR -name "*.zip" -mtime +30 -delete # 保留 30 天预期结果:次日凌晨 2 点备份目录出现新文件,30 天前的旧文件被清理。备份脚本还应包含一步unzip -t完整性校验和失败告警,具体写法参考官方文档。
🩹 故障场景应对手册
如果备份文件损坏
- 现象:恢复时报 zip 读取失败,或 manifest 校验不过。
- 定位:
unzip -t <backup.zip>检查文件完整性;再查 manifest.json 里各表行数是否与当时库规模相符。 - 恢复:回退到上一个通过校验的备份执行 restore;损坏文件本身无法修复,丢弃即可。
- 防复发:备份脚本里紧跟
unzip -t校验,失败即告警,别让坏文件在目录里躺一个月。
如果误恢复到错误的 schema
- 现象:目标 schema 数据被备份内容整体替换。restore 的执行顺序是"校验 manifest → 单事务内 TRUNCATE 全部备份表 → 导入 → 刷新物化视图 → 同步自增序列",中途失败会整体回滚,但命令本身会先清空目标 schema。
- 定位:解包备份 zip 看 manifest.json 的
schema字段,确认这个备份对应哪个 schema;再核对 restore 命令的--schema参数。 - 恢复:找到覆盖该 schema 的最近一份完好备份,用
hindsight-admin restore <zip> --schema <原schema> --yes恢复。 - 防复发:restore 之前,对目标 schema 先做一次额外备份,把"回退到恢复前"作为兜底选项。
⚠️ restore 会删除目标 schema 中的全部现有数据。脚本化执行时虽然可以用
--yes跳过确认,但确认步骤省掉的几秒钟,可能就是生产数据。
如果跨版本恢复失败
- 现象:restore 报
Unsupported backup version,或列结构校验失败。这类错误发生在进入事务之前,目标库数据不会被破坏。 - 定位:对比备份 zip 内 manifest.json 的版本号与当前部署版本。
- 恢复:用与备份同版本的实例恢复,或把环境升级到匹配版本。注意工具对"目标库删除了某些列"这类漂移会自动丢弃对应字段,但版本不匹配不支持兼容,具体迁移路径参考官方文档。
- 防复发:备份目录按版本号归档命名,比如
hindsight-v3.2/子目录,升级时不删旧版本备份。
如果恢复后召回质量变差
- 现象:恢复成功,但 recall 查询明显变慢或结果条数偏少。原因是按银行划分的向量索引在"恢复"这类非建库路径下不会自动生成,召回会退化成全局索引 + 事后过滤。
召回管线:索引缺失时四路检索的候选质量都会下降,这正是恢复后要验证的环节
- 定位:
hindsight-admin repair-bank --all --dry-run只报告缺失的索引覆盖,不做改动。 - 恢复:
hindsight-admin repair-bank --all,用CREATE INDEX CONCURRENTLY重建,幂等,可在线执行。 - 防复发:把"恢复后跑一次 repair-bank"写进恢复 runbook,与 restore 命令并排。
✅ 生产部署检查清单
| 检查项 | 建议阈值或频率 | 不达标后果 |
|---|---|---|
| 备份频率 | 每日全量;写入高峰期叠加每小时一次 | 数据丢失窗口(RPO)超过 24 小时 |
| 完整性校验 | 每次备份后执行unzip -t | 坏备份直到恢复时才被发现 |
| 本地保留期 | 7–30 天 | 误操作发生后无近期恢复点 |
| 异地冗余 | 对象存储或异机房至少 1 份 | 宿主机故障即丢失全部备份 |
| 监控告警 | 备份成功率 100%;文件大小突变 50% 告警 | 备份失败长期无人知晓 |
| 恢复演练 | 每季度一次 | 实际 RTO 未经验证,真出事时恢复流程走不通 |
📈 规模化与进阶
多租户备份隔离:每个租户 schema 独立备份、独立恢复,--schema参数是隔离边界。一个租户的恢复操作不会触碰其他 schema 的数据。
单银行与多银行架构对比:多银行场景下备份按 schema 独立进行
分层存储(热/温/冷):最近 7 天放本地 SSD 用于快速恢复;30 天内副本放对象存储;超过合规保留期的归档到冷存储。restore 前把冷副本拉回本地即可。
跨实例迁移:换嵌入模型或向量扩展时,用export-bank/import-bank迁移单个银行。归档不含向量,目标实例会用自己的嵌入模型重新生成,避免维度不匹配。
合规:医疗(HIPAA)、金融(SOX)场景下,备份文件等同于生产数据,需同样做静态加密与访问审计,保留期跟随行业要求设定。
📊 关键指标
RPO(恢复点目标)就是备份间隔:每日全量意味着 RPO 上限 24 小时,写入密集的场景用每小时备份把 RPO 压到 1 小时。RTO(恢复时间目标)由三部分构成:备份文件就位、restore 事务(时间与数据量成正比,含物化视图刷新)、恢复后 recall 验证加repair-bank。参考取值:
- 小团队(单实例、GB 级记忆数据):RTO ≤ 4 小时,RPO ≤ 24 小时。
- 中型团队(多租户、写入量大):RTO ≤ 1 小时,RPO 1–6 小时,备份分层为每小时加每日。
结语
回到开头的问题:记忆数据都在 PostgreSQL 里,备份的边界也就在数据库这一层。hindsight-admin backup给出的是一致的表级快照,剩下的工作是把频率、校验和演练做扎实。下一步可以今天就执行:跑一次首次备份,紧跟一条unzip -t,把输出记进运维手册。
更多细节参见官方文档:docs/official.md | 源码入口:plugins/ai/
【免费下载链接】hindsightHindsight: Agent Memory That Learns项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考