前言¶
在 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)。
同一仓库里装三样东西:
- DSH 插件(
lib/+client/)——作者用的界面与项目读写 - 三个技能(
.dsh/skills/)——novel-writer、novel-consistency、novel-style - 作品数据(
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(以你安装时解析到的版本为准)。
典型用法¶
- 安装并重启后,从侧栏进入「小说」,在 DSH 工作区内选择或创建绑定了
novel/的项目根目录。 - 在界面中维护设定(人物、地点、组织等)、大纲与时间轴,在
draft/下编辑带 front matter 的章节。 - 在会话中启用技能(
novel-writer/novel-consistency/novel-style),让 agent 读写同一novel/树;界面保存与 agent 写入应互相可见。 - 需要核对 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。