mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-27 12:53:35 +00:00
背景:旧版 Add 整串 sanitize 名字、逐段 sanitize 建目录,留下 tech/_go_/note、
Tech/Upper、a/b with space 这类「知识名与盘上目录不一致」的目录。修复后
normalizeName 要求二者逐字一致,故需一次性改名。
- 迁移逻辑放在 internal/knowledge/migrate_names.go(PlanMigration/
ApplyMigration),CLI 与 homed 启动**共用同一份实现**,避免口径漂移。
- 三条硬约束:
1. 默认只报告(-apply 才真改名)—— 批量 os.Rename 不可逆。
2. 检出目标名冲突(两条迁到同一目标 / 目标已存在)则**整批拒绝**,
不做部分迁移:半迁移状态比不迁移更难收拾。
3. 逐条失败不中断,最后统一报告;执行前重查冲突(计划生成与执行之间
可能有人改过盘上状态),并校验目标不越出知识根。
- homed 启动在 initKnowledgeStore **之前**调 initKnowledgeMigration:改名后
扫盘一次到位,避免先以旧名建索引再改名造成内存键与盘上目录短暂不一致。
defaultApply=false ⇒ 启动只扫描+报告+打印可执行命令行,不替人决定。
单次改名上限 200 条,防失控目录规模拖住启动。
实测:报告模式零改动;冲突场景整批拒绝且盘上原封不动;迁移后 Store
正确载入 4 条并可按规范名逐条删除。