Skip to content

v0.3.4 — 紧急修复:升级用户记忆崩溃 (no such column: kind)

Choose a tag to compare

@lshhhhhhh lshhhhhhh released this 25 May 21:53

紧急修复:升级用户记忆系统崩溃(no such column: kind)

如果你从 0.3.0 之前的版本升级到 0.3.x,可能在设置里看到:

记忆模块初始化失败 / 未启用。
no such column: kind

这一版修了。 升级后记忆系统会自动恢复,你的聊天历史、好感度、提炼的事实全部都在,没有丢。

出了什么事

0.3.0 加 lore 系统时,给 episodes 表加了个 kind 列 + 对应索引。但索引的创建语句被错误地放在了建表块里(在加列的迁移之前执行)。

对于全新安装:建表时 kind 列就有,没问题。

对于从旧版本升级的用户:建表是 no-op(老表没有 kind 列),然后建索引时引用了还不存在的 kind 列 → 抛 no such column: kind → 整个记忆模块初始化崩溃。加 kind 列的迁移本来排在后面,但根本没机会执行。

讽刺的是,那段代码顶部的注释自己就写着"索引必须放在列迁移之后"——0.3.0 加 kind 索引时违反了这条规矩。

修复

  • idx_episodes_kind 索引从建表块里挪走
  • 放到 kind 列迁移之后无条件创建(幂等,兼顾全新安装和升级两条路径)
  • 加了回归测试 smoke-memory-upgrade.mjs:模拟一个 0.3.0 之前的数据库(无 kind 列),跑完整初始化路径,验证不崩 + kind 列补上 + 老数据保留为 'chat' + lore 功能正常。6/6 通过。

影响范围

只影响从 < 0.3.0 升级的用户。全新安装 0.3.x 的用户不受影响(建表自带 kind)。如果你之前看到这个报错,升到 0.3.4 后记忆自动恢复,不用手动清空或重装。