前言¶
写长篇时,常见做法是桌面写作软件加外挂 AI 助手:界面在一个进程,对话在另一个窗口,作品数据还可能各存一份。DeepSeek Harness(DSH)把能力拆成插件后,可以把写作界面和 Agent 放在同一套宿主里协作。下面介绍维护者 linque0 发布的 dsh-novel-studio(目录分类:工作流):小说工坊的 DSH 插件版,当前 README 标明为实验性质,GitHub 星标为 1。
这是什么¶
dsh-novel-studio 的目标是:在 DSH 里打开小说工坊的完整界面,并让 DSH 的 Agent 代替恍然梦对作品做建议、审稿与编辑;桌面软件版与插件版读写同一份作品库。插件包名 @linque0/dsh-novel-studio,package.json 中版本为 0.2.8,要求宿主 dsh 版本 >=0.2.2-rc.1 <0.3.0。
README 中写的当前进度是 M0 骨架(作品库核心 + 静态托管 + RPC + 3 个只读工具 + iframe 客户端),同时文档也列出了 v0.2.0 能力清单与界面、数据层等后续进展说明,使用时以仓库最新 README 为准。
核心功能¶
作品库与写入语义¶
库目录由插件配置 libraryDir 指定;缺省通过共享指针读取:
%LOCALAPPDATA%/novel-studio/library.json -> { "path": "D:/Novels" }
写入只走 submit:必须带 requestId(幂等)与各 op 的 baseRevision(CAS);冲突返回 conflict.currentRevision 与当前内容,由调用方重读合并,不静默覆盖;ai.cred* 类密钥在入库前会被剔除。具体目录结构见仓库 src/core/library.js 顶部注释。
Agent 工具与技能(README v0.2.0)¶
只读:studio_works、studio_outline、studio_read、studio_search、studio_preset。
审稿:studio_review(意见需带正文唯一 quote;引用设定/人物会反查 verified)、studio_recheck(须覆盖全部原问题)。
写入:studio_propose(候选不落库)→ studio_apply { confirm: true }(作者确认后落库,含 requestId 与 expectedRevision)→ studio_undo。
技能:6 个(project / write / plan / memory / revise / review),渐进披露。
界面与入口¶
面板形态为:顶部诊断条、备份导入、整块 iframe(/api/novelstudio/app/index.html)。模块包括书架、正文、大纲、设定、人物、灵感、设置、图谱、统计、回收站、导入导出等。插件版不渲染恍然梦入口,由 DSH 自身取代。
宿主侧入口:右侧栏「开始」页卡片栏里的「小说工坊」(guide.order = 15)。插件版界面在仓库内 fork 独立前端(app/),经 npm run build:app 产出到 assets/app/;外观方案为设计稿「书架 · 流动封面(隐现)」,桌面版四套皮肤已从插件项目中移除,body[data-skin] 恒为 dsh。
与桌面版的数据关系¶
README 说明:桌面版与插件可共享作品库;M3 同步层会把 Dexie 变更批量提交到作品库并轮询增量回灌。导入软件版作品可走路径之一——面板「导入软件版备份」,或在本机仓库根目录执行:
cd dsh-novel-studio
node scripts/import-from-desktop.mjs
node scripts/import-from-desktop.mjs --keep
第二条命令在 --keep 下不关闭桌面版;脚本通过 --remote-debugging-port=9222 连接桌面版渲染进程 dump 数据。
安装与启用¶
社区目录页:https://www.skillhub.cn/plugins/linque0/dsh-novel-studio。源码与说明:https://github.com/linque0/dsh-novel-studio。
README 给出的本地挂接方式(面向 DSH 桌面 profile,非 git clone 后的开发目录内执行)如下:
node scripts/install-local.mjs
脚本会做三件事:在 C:\Users\<你>\dsh-plugins\dsh-novel-studio 建立指向本仓库的目录联接(路径无空格)、在 profile 的 dependencies 里加入 link: 依赖、在 dsh.profile.bundles 中追加 dsh-novel-studio。修改后必须完全退出并重启 DSH 才生效。 回退可恢复 profile 目录下的 package.json.bak-*。
若需自行构建插件内嵌前端,README 典型顺序为:
npm run link:app-deps
npm run build:app
构建前若联接丢失,先跑 link:app-deps;改完界面需重跑 build:app 后再重启 DSH。
开发者还可使用:
npm run contract
npm run smoke
分别做宿主契约预检与 75 项冒烟(README 描述)。
典型用法¶
- 按 README 完成
install-local.mjs并重启 DSH,在右侧「开始」打开「小说工坊」卡片。 - 配置或确认 libraryDir / 共享
library.json指向你的作品目录,与桌面版对齐时两边读写同一库。 - 在 DSH 对话中让 Agent 调用只读工具查看书目、大纲、正文,再按需走
studio_review/studio_propose/studio_apply流程;写入需作者确认与 revision 校验。 - 从桌面版迁移:导出备份 JSON 在面板导入,或在本机执行
import-from-desktop.mjs。 - iframe 空白或 SPA 报错时,可在仓库根目录用预览台排查(不依赖重启 DSH):
node scripts/preview.mjs
node scripts/preview.mjs --serve
默认端口 NS_PORT 为 18688,会写 .tmp/preview.png 与 .tmp/preview.log。
适用场景与注意¶
适合:已在用或打算用小说工坊、希望写作界面与 DSH Agent 同屏协作、并愿意接受实验阶段 API 与界面迭代的作者或工作流开发者。
注意:
- 插件在 当前 DSH 进程权限下运行,安装前应阅读源码与仓库 LICENSE,并理解其对
libraryDir与作品文件的读写范围。 - README 多次强调 完全退出并重启 DSH 后配置与前端产物才生效。
- 社区目录(skillhub.cn)与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本文事实均来自上述 GitHub README 与
package.json摘录,未核实的数据(如未在资料中出现的全局安装命令)不写入正文。
结尾¶
dsh-novel-studio 把小说工坊以 iframe 形式接进 DSH,用统一作品库和一组 studio_* 工具/skills,把「恍然梦」侧的建议、审稿、可确认写入迁到 DSH Agent。进一步细节与版本能力以仓库 README 为准。