godcall/MemoryCore/scripts/migrate-v2-to-v3/README_CN.md
2026-07-22 17:19:44 +08:00

3.0 KiB
Raw Blame History

数据迁移工具

使用场景

从 MemoryCore v1.x或 v0.x 升级到 v2.0.0+ 时,数据面的表结构和文件布局发生了变化,需要先运行本迁移脚本将存量数据升级到 v3 格式,再启动新版 Gateway。

受影响的数据:

  • vectors.db — 新增 team_idtask_iduser_idagent_idversion 等租户隔离字段
  • scene_blocks/persona.md.metadata/ — L2/L3 文件迁移到 profiles/ 子目录下的 scoped 路径

⚠️ 迁移前请务必备份整个数据目录,避免意外数据丢失。

前置条件

  • Python 3.8+
  • 数据目录路径(默认为 ~/.memory-tencentdb/memory-tdai/

用法

# 1. 先 dry-run 检查,不实际修改数据
python v2-to-v3-migrate.py /path/to/memory-tdai --dry-run

# 2. 确认无误后执行迁移
python v2-to-v3-migrate.py /path/to/memory-tdai

# 3. 仅迁移数据库(跳过 L2/L3 文件)
python v2-to-v3-migrate.py /path/to/memory-tdai --db-only

参数说明

参数 说明
/path/to/memory-tdai 数据目录路径,必填
--dry-run 仅检查,不实际修改
--db-only 仅迁移 vectors.db 表结构,跳过 L2/L3 文件
--no-backup 跳过自动备份(默认会自动创建 .bak 文件)

迁移内容

1. 数据库表结构升级

变更
l1_records 新增 team_idtask_iduser_idagent_idversion 字段
l0_conversations 新增 team_idtask_iduser_idagent_id 字段
l1_fts / l0_fts 重建 FTS5 索引,增加租户隔离列
memory_audit 新增审计表
skills 新增技能表
skill_fts 新增技能全文索引表

2. L2/L3 文件迁移

源路径 目标路径
{data_dir}/scene_blocks/ {data_dir}/profiles/team%3Adefault%7Cagent%3Adefault/scene_blocks/
{data_dir}/persona.md {data_dir}/profiles/team%3Adefault%7Cagent%3Adefault/persona.md
{data_dir}/.metadata/ {data_dir}/profiles/team%3Adefault%7Cagent%3Adefault/.metadata/

示例

# Hermes 场景
python scripts/migrate-v2-to-v3/v2-to-v3-migrate.py ~/.memory-tencentdb/memory-tdai --dry-run
python scripts/migrate-v2-to-v3/v2-to-v3-migrate.py ~/.memory-tencentdb/memory-tdai

# OpenClaw 场景
python scripts/migrate-v2-to-v3/v2-to-v3-migrate.py ~/.memory-tencentdb/memory-tdai --dry-run
python scripts/migrate-v2-to-v3/v2-to-v3-migrate.py ~/.memory-tencentdb/memory-tdai

常见问题

Q: 迁移失败了怎么办?

脚本默认会在迁移前自动备份 vectors.db(生成 .bak.{timestamp} 文件。L2/L3 文件采用复制而非移动,源文件不会被删除。如果迁移失败,直接用备份恢复即可。

Q: 可以重复执行吗?

可以。脚本是幂等的——已存在的字段和文件会跳过,不会重复处理。

Q: 全新安装需要跑迁移吗?

不需要。迁移脚本仅用于从旧版v1.x升级到新版v2.0.0+)的存量用户。全新安装的新版 Gateway 会自动创建 v3 格式的数据。