dsh-novelsupport:用纯文件存储的长篇小说 DSH 工作区

前言

在 DeepSeek Harness(DSH)里写长篇小说,常见做法是另开编辑器、自建目录,或依赖把设定存进数据库的插件。数据一旦锁在专有格式或本地库里,用 Git 做 diff、用任意编辑器手改、或在 agent 与界面之间共享同一份 canon,都会多一层摩擦。下面介绍社区维护的客户端插件 dsh-novelsupport(仓库 DJ-STONE36/dsh-novelsupport),它把「人侧界面」和「AI 侧技能」绑在同一套项目内 novel/ 文件上,面向长篇小说创作。

这是什么

dsh-novelsupport 是面向长篇小说创作的 DSH 组合包(声明了 dsh.bundle)。维护者为 DJ-STONE36,在 SkillHub 插件目录 中归类为客户端。包描述为:在项目中以纯文件存放设定、大纲、章节与视图,并提供三栏 UI、地图、时间轴、人物/地点/物品/组织关系网、章节编辑、全书导出与纯文本导入等能力(见 package.json 的 description)。

同一仓库里装三样东西:

  1. DSH 插件(lib/ + client/)——作者用的界面与项目读写
  2. 三个技能(.dsh/skills/)——novel-writer、novel-consistency、novel-style
  3. 作品数据(novel/)——插件与技能共读共写,只在本机,默认不纳入该公开仓库的 Git

插件 id 仍为 dsh-novel(路由前缀、写头、技能命名空间);npm 包名与仓库名均为 dsh-novelsupport。

核心功能

数据模型:项目下的 novel/

设定、大纲、章节正文与视图摆位都在项目目录的 novel/ 下,以 JSON + Markdown 组织,例如:

  • novel/setting/:世界、地点、人物、组织、物品、地图
  • novel/outline/:时间轴、剧情大纲
  • novel/draft/:章节正文(Markdown + YAML front matter)
  • novel/views/:关系网、地图的手工摆位

结构细节见仓库内 docs/data-model.md。校验器会检查悬空引用、成环、时间区间等问题;写入支持 expectedMtimeMs,冲突时返回 409 document-changed,避免静默覆盖。

客户端界面

README 写明客户端提供三栏界面,并包含地图、时间轴、关系网等视图;离线自测中客户端相关检查为 248 项。界面改动的设定与章节,经 HTTP API 落盘到 novel/;AI 通过技能读写同一目录,无需改宿主 sessionController.prompt 或打 app.asar 补丁——「交给 agent 写这一章」走 resolveAgent + followup。

与生态里其他小说插件的差异(README 自述)

  • 纯文件,不是数据库:另一实现(如 npm 上的 dsh-novel@0.1.1)把 canon 存进 .dsh-novel/pglite;本包刻意不叫 dsh-novel 包名,避免与那份实现混淆。
  • peerDependencies 为空:不依赖宿主内部包,兼容性检查无额外 peer 约束。
  • 不依赖给宿主打补丁 来驱动 agent。

安全与边界(使用前应知晓)

插件与宿主同进程;/dsh-novel/** 由插件自行注册,并实现自己的 Host/Origin 栅栏、路径 resolveInside(含 junction 防护)、写请求头 x-dsh-novel: 1 等。README 中有完整「安全模型」与 tools/security-check.mjs 的复验方式。安装插件即授予其以 当前 DSH 进程权限 读写你配置的项目根目录;安装前请阅读源码与 MIT 许可证。

安装与启用

这是一个 DSH 组合包,用 dsh plugin 安装到指定 profile(命令以 README 原文为准):

# 从 npm(推荐:预构建产物,不需要构建授权)
dsh plugin --profile desktop add dsh-novelsupport

# 从 GitHub(仓库已带构建好的 lib/ 与 client/client.js,无需构建)
dsh plugin --profile desktop add github:DJ-STONE36/dsh-novelsupport

# 从本地 checkout 或 tarball
dsh plugin --profile desktop add ./dsh-novelsupport
dsh plugin --profile desktop add ./dsh-novelsupport-0.1.0.tgz

安装完成后重启 DSH。健康检查:GET /dsh-novel/health 应返回 {"ok":true},侧栏应出现「小说」入口。

若不用 CLI,可按仓库 tools/package-plugin.mjs 生成的 INSTALL.md 手工解包到 <profile>/node_modules,目录名必须为包名 dsh-novelsupport。

当前 npm 包版本在清单中为 0.1.0(以你安装时解析到的版本为准)。

典型用法

  1. 安装并重启后,从侧栏进入「小说」,在 DSH 工作区内选择或创建绑定了 novel/ 的项目根目录。
  2. 在界面中维护设定(人物、地点、组织等)、大纲与时间轴,在 draft/ 下编辑带 front matter 的章节。
  3. 在会话中启用技能(novel-writer / novel-consistency / novel-style),让 agent 读写同一 novel/ 树;界面保存与 agent 写入应互相可见。
  4. 需要核对 agent 一次运行改了哪些文件时,仓库提供 tools/snapshot-novel.mjs 等离线工具(见 README「目录结构」)。

新建项目的规划由宿主端 scaffold.js 等逻辑支持;若中途创建失败,README「体检发现」一节提到 /project/create 在部分失败场景下可能留下半成品,重试需注意 project-exists 等情况——以当前仓库文档为准。

适用场景与注意

适合:希望在 DSH 内用可 Git 管理、可手改的纯文件 canon 写长篇;需要地图、时间轴、关系网与章节编辑同一工作区;希望 agent 与 UI 共享数据且尽量不绑死某一版宿主内部 API 的作者。

注意:

  • novel/ 默认被该插件仓库 .gitignore 忽略,作品版本请用私有仓或单独工作树,勿误提交到公开插件仓。
  • 插件路由暴露在 loopback/可信 Host 模型下,仍应在可信环境使用,并按 README 做安全复验。
  • SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系;星标与维护节奏以 GitHub 页面为准。

结尾

dsh-novelsupport 把长篇小说的人机协作收拢到 DSH 客户端与三个写作技能,并以项目内 novel/ 纯文件作为唯一事实来源。目录页:SkillHub — dsh-novelsupport;源码与安装说明:github.com/DJ-STONE36/dsh-novelsupport。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye