备份、升级与卸载

升级到 8.2.0#

8.2.0 新增直接编辑和行内 Agent 建议,新增确定性字数统计和契约篇幅约定,并修复旧书的世界书模块登记。继续配套 DSH 0.2.0-rc.2。从 8.0.x 或 8.1.x 升级时,不需要更换 DSH。

  1. 更新已经在用的插件。
  2. 重启 DSH。
  3. 把参考库和书房一起备份。 新界面见 编辑器教程。

旧项目需要更新作品契约#

升级之后,请为旧项目补充并确认“章节篇幅”约定,才能启用新的篇幅范围核对。升级插件不会替你决定每章写多少字,也不会重写原契约。未补充的项目仍可继续使用。脚本会显示“未配置”。不能据此宣布篇幅达标。

  1. 按下文备份完整书仓和 profile。
  2. 回到该书的主会话。
  3. 让主控读取现有 作品契约/契约.md,并与你确认目标和宽松区间。
  4. 保留“阅读体验与情绪承诺”的原有内容。
  5. 追加下面的三级子节。通过原来的 novel_update_contract 更新该分部,并确认。 不要只用新子节覆盖整个分部。
### 章节篇幅
- 目标汉字数: 2000
- 下限汉字数: 1600
- 上限汉字数: 2400

上面只是两千字章节的示例。数值可以改。三项都是正整数,并且下限 ≤ 目标 ≤ 上限。其他说明放在相邻子节。正文汉字数含章标题,排除 frontmatter、候选事实、标点、空白和英文字母。使用脚本做实际统计。不要用模型估数。

可以直接对主控说:

发给工作台

请读取本书现有作品契约,保留全部已有约定,在“阅读体验与情绪承诺”里补充章节篇幅:目标 2000 汉字,范围 1600~2400。我确认这组数值,请通过契约更新工具保存;只更新契约,不改写现有章节。

  1. 对当前唯一的待审稿运行原来的确定性审读脚本。 成功时,篇幅核对.约定.状态 为“已配置”,数字与契约一致。 没有待审稿时,在下一次正常审读中核对即可。不要为了测试创建假稿。
  2. 契约变更之后,当前未定稿章的旧审读证据可能过期。沿原来的审读流程重新检查。 偏长或偏短进入“文本规范检查”的普通发现项。可以修改,也可以由作者保留。没有新的审核步骤,也不会自动裁稿。历史定稿不因此重写。

如果旧书曾因世界书模块声明缺失而停在世界构建,升级后重新读取并成功确认已有条目,就会自动补齐模块登记。不需要用通用文件工具修改声明。

检索和桌宠要一起更新吗#

本次四包采用统一发行号 8.2.0。推荐使用经过同批验证的版本组合。检索增强和桌宠这次没有新增功能,属于兼容版本同步。

桌宠在 npm 上的处理,不再阻塞主包、检索和完整版发布。如果暂时查不到新版桌宠,可以稍后再更新,或使用 Release 里已校验的独立桌宠安装包。不必为了等待桌宠而暂停写作组件的升级。

  • 只用主包:更新主包即可。不必新增检索或桌宠。
  • 使用 full:更新 full。它的主包和检索依赖一起更新。不要再重复安装单包入口。
  • 单独安装了检索或桌宠:更新实际使用的组件。桌宠独立于 full。
  • 混版本组合只有经过对应的兼容验证,才能承诺可用。不要从“这次没有功能变化”推断以后的版本都兼容。

旧包名迁移(8.0.0 起)#

8.0.0 起,旧的 webnovel-embedding-provider 更名为 @linfengqaqtat/dsh-scriptor-retrieval。旧的 @linfengqaqtat/dsh-whale-companion 更名为 @linfengqaqtat/dsh-scriptor-companion。所有新版安装包都是 8.2.0,使用 DSH 0.2.0-rc.2。

警告

不要同时启用旧包和新包。

  1. 先备份作品、profile 配置和凭据引用。
  2. 停止会话。
  3. 在 DSH 侧栏“插件”中卸载旧入口。
  4. 按提示重启。
  5. 再安装新入口。 成功时,只启用新入口。

自定义模块的 name 覆盖,要按 维护者迁移说明 更新。稳定的条目 id 和 config 保留。完整版与写作/检索单装二选一。

备份两类资产#

先停止相关实例,再分别备份。

  • 工作区:书仓的全部文件、书仓 .git、草稿区,以及工作范围内的书房素材。书仓 Git 不能代替包含草稿和书房内容的完整备份。
  • DSH home:profile 配置、设置,以及需要保留的会话。它可能包含凭据。备份应私下加密保管,不能提交到公共仓库。

记录主包、可选包、DSH 和 Node 的版本。

更新#

  1. 阅读目标版本的 Compatibility、已知问题和迁移说明。按 版本对应表 同时对齐 DSH 和插件。 安装插件不会自动更新全局 DSH。版本不符时,按 修复步骤 处理。
  2. 完成备份。停止指定 profile 的运行实例。
  3. 向同一个 profile 安装 npm 上的新精确版本,或下载并校验对应 .tgz 后再安装。
  4. 重启。
  5. 检查书房入口和技能是否各有一份。核对实际书仓状态。先用合成副本试写。 成功时,书房可以打开,并且书仓状态与备份前的预期一致。
dsh plugin --profile scriptor add @linfengqaqtat/dsh-scriptor@8.2.0
dsh --profile scriptor --dump-config

上面展示的是命令写法。更新时换成实际的目标版本。

完整版安装使用 @linfengqaqtat/dsh-scriptor-full@8.2.0。不要在保留完整版时另外安装主包。从单装转到 full,按 切换步骤 操作。切回单装时,先停机并移除 full,再安装所需的单包。

回退#

代码回退和数据回退不是同一件事。如果目标版本改变了书仓格式,安装旧包不能自动还原已经迁移的数据。

警告

未提供迁移或回退证据时,不要在唯一原稿上尝试回退。

  1. 停止实例。
  2. 保存故障现场。
  3. 按发行说明,使用兼容的旧包和对应的完整备份来恢复。

从完整备份恢复时:

  1. 先停止实例。
  2. 把损坏的书仓目录整个移走或删除。
  3. 再把备份目录整体复制回原位置。

注意

Windows 上,书仓 .git/objects 里的文件带只读属性。普通删除会中途失败。 用资源管理器、robocopy /MIR,或先清除只读属性再删除。

  1. 恢复后运行 git -C <书仓> status 和 git -C <书仓> fsck。 成功时,两个命令的结果都是干净的。

本版不支持自动迁移 v6/v7 书仓。

卸载与重装#

  1. 先停止该 profile 的实例。
  2. 运行 dsh plugin --profile scriptor list --depth 0,查看直接安装项。 remove 只移除指定的直接安装项。full 不能替单装包办理卸载。
实际安装组合 dsh plugin --profile scriptor remove 后的参数
仅 full,或已切换完成 @linfengqaqtat/dsh-scriptor-full
仅主包 @linfengqaqtat/dsh-scriptor
仅提供方 @linfengqaqtat/dsh-scriptor-retrieval
主包与提供方分别安装 @linfengqaqtat/dsh-scriptor @linfengqaqtat/dsh-scriptor-retrieval
full 与单装包混装 full 加上列表中实际存在的单装包名

例如两个单包都装过,并且希望整套卸载:

dsh plugin --profile scriptor remove @linfengqaqtat/dsh-scriptor @linfengqaqtat/dsh-scriptor-retrieval
dsh --profile scriptor --dump-config

注意

不要把未安装的包名一起传入。否则 pnpm 会拒绝这次卸载。 只删除 full 之后,独立安装的主包或提供方仍会保留。完全没有安装 full 时,删除 full 的命令会报错,并且不会移除单装包。

  1. 整套卸载后,核对配置里已经没有 webnovel、webnovel-embeddings、webnovel-scenes、webnovel-reranking。
  2. 核对直接安装列表里也没有上述三个包。
  3. 再按安装教程重装。 卸载不会删除作者的书仓、书房、设置或模型凭据,也不会清空 pnpm 的共享缓存。保留下来的作者资料不属于重复安装。