DSH-Nightwrite: AI-Led, Human-Directed DSH Workbench for Novel Writing

前言

在 DSH 里做长篇小说,常见做法是聊天窗口里一段段续写,大纲、人设、待改稿散落在笔记或另一个工具里;agent 能写,但「这一轮能不能开写」「改稿要不要人拍板」往往靠自觉。DeepSeek Harness 的插件模型允许把 UI、数据层和 RPC 收进一个包:dsh-nightwrite(社区名 长夜)把「今天能不能写 → 大纲 → 派单 → 正文 → 验收」串成一条可重复的工作流,数据落在本地目录,agent 通过同名 RPC 与界面读写同一份库。

下面介绍它是什么、核心页面与护栏、如何安装,以及使用前需要留意的权限与版本要求。事实以 GitHub 仓库 README 与 SkillHub 目录页 为准;SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-nightwrite 由维护者 qinyuan1017 发布,在 SkillHub 分类为 工作流。定位是:AI 主写、人类当导演 的 DSH 小说工作台——长夜不替你在界面里「偷偷改已定稿」,而是通过派单、队列、验收台把写、审、改分开,人类在关键节点拍板。

接入方式:

  • 侧栏「插件」里 🌙 图标,中心列 main 槽位,key='nightwrite'。
  • 数据目录默认 ~/.dsh/data/dsh-nightwrite,可用环境变量 NIGHTWRITE_ROOT 覆盖。
  • 读写统一走同源 RPC:POST /nightwrite/api,body 为 { op, payload }。
  • 同时注册工具 nightwrite_op,让 agent 与 UI 操作同一套 119 个 op。

当前 package 版本 0.2.0,许可证 MIT,要求 Node >= 22.19.0。

八个页面与一条工作流

导航在底栏居中胶囊(.nw-dock)里,共八个入口;顶栏一行展示品牌、状态、待验收/队列/本月花销等,不把「今天有多少活」藏进深层菜单。README 说明早期十页经两次合并为八页:流水线上下段合成 派单,「能不能写」与「今天写什么」合成 今天。

页 key 作用(摘自 README)
今天 today run 状态条(确认/打回/收尾)+ 今天该写什么
正文 read 只读正文,字号行距、阅读位置、J/K 换章,可切编辑
大纲 plan 方案 → 卷章骨架 → 可把「第几回 + 意图」送去派单
派单 dispatch 11 个岗位与在途工单,上下文包、指令单、队列
验收台 review 逐章拍板(含提案/问题单视图)、读者视角、历史版本
世界库 world 人物/地点/伏笔/事件/术语/规则/高光/冲突等账本
侦察 scout 拆文、扫榜、资料研究、封面
设置 settings 作品参数、分场景写作原则、质量门、预算、数据位置

典型流水线(README 原文逻辑):

今天 → 大纲 → 派单 → 正文 → 验收台

写作原则按场景分条:project.settings.writePrinciple 为通用句,project.settings.principles = [{name, text}] 最多 12 条;派单时按模板名与意图匹配场景,只把相关原则带给模型(pickPrinciple() → dispatch()),可在设置页修改。

尚无作品时,八页不显示,改为三步建书向导(project.create → outline.save → outline.generate);任一步失败不回滚已建目录,但会说明哪一步未落盘。

派单、岗位与 agent

长夜通过 派单 驱动写作,而不是在插件内独自完成全部正文。README 记载 11 个岗位 写在 agents/*.md,并与 skills/ 下 25 份 SKILL.md 配套;合并通读文件为 nightwrite-skills-all.md。流水线页把上下文装配、指令单与队列合成一页,上游是岗位与在途工单,下游进入模型执行与回写。

对 DSH 里的 agent,除 UI 外还可调用 nightwrite_op(及 README 提到的 nightwrite_dispatch 等注册)直接执行与界面相同的 op,便于在对话里续队列、查状态而不重复造数据层。

数据与安全护栏

数据层在 lib/store.js 描述的 JSON/文本布局,例如 library.json、chapters/、ledger.json、queue.json、outline.json、proposals.json、problems.json 等。README 强调三条「丢了就真没了」的防护:

  1. 覆盖正文前留底:chapter.save 前把旧正文写入 chapters/history/,每章保留最近 20 版;chapter.restore 回滚,回滚操作本身也留底。
  2. 删章可恢复:chapter.delete 移到 chapters/.trash/,可 chapter.recover;chapter.purge 才永久删除。
  3. 采纳前先点数:proposal.preview 统计 before 在正文中出现次数,大于 1 时验收台告警,避免改错位置。

提案机制:proposal.save 的 before 必须是正文逐字原文;proposal.decide 全部命中才写回,否则整单拒绝、正文不动——AI 不能绕过人类拍板改已定稿。

RPC 共 119 个 op(读 60 / 写 59),完整列表见 README;常见读 op 含 project.list、chapter.get、queue.list、run.current 等,写 op 含 dispatch.send、run.open、review.action 等。

安装与启用

在 DSH desktop profile 下从 npm 安装:

dsh plugin --profile desktop add dsh-nightwrite

本地开发可从仓库路径安装(README 示例为 Windows 路径,Linux 下改为本机绝对路径即可):

dsh plugin --profile desktop add file:C:/path/to/dsh-nightwrite

说明:lib/client.js 为入库产物,宿主装载时不跑构建;若自行改 src/*.js,需在仓库内执行 node build.mjs 再提交。改完源码后,file: 依赖不会自动热更新,README 给出了同步到 ~/.dsh/profiles/desktop/node_modules/dsh-nightwrite 的 cp 与 md5sum 核对步骤,开发时可按文档操作。

安装后重启或按 DSH 惯例加载插件,从侧栏 🌙 进入;确认 NIGHTWRITE_ROOT(若设置)指向可写目录。

典型用法(可复现路径)

  1. 新建作品:无书时走三步向导,填书名与创作意图,选体量,可选「建完先把全书骨架排好」;提交触发上述三个 create/outline op。
  2. 今天页开工:查看 run 状态条,确认上一轮已验收或收尾后再开新轮;顶栏快动作含「续写一章 / 连更 3 章 / 体检」等(以当前 UI 为准)。
  3. 大纲 → 派单:在 plan 维护方案与卷章骨架,必要时 outline.generate 回填摘要/钩子,再把「第几回 + 意图」送入派单。
  4. 派单执行:在 dispatch 查看岗位、工单、队列;agent 可通过 nightwrite_op 与同一队列协作。
  5. 正文与验收:read 阅读或轻改;review 逐章拍板,处理提案与问题单;预算超支时顶栏计量条会标明超出量(README 描述)。

成书导出、检查更新、语料池等入口在设置及相关模块(如 src/74-book.js)中,格式含 TXT/MD/EPUB/DOCX(见目录说明)。

适用场景与注意

适合:希望在 DSH 内用固定工作流写长篇、需要本地作品库与世界观账本、希望 agent 与人类共用一套 RPC 而非多套文件的作者或插件开发者。

注意:

  • 插件以 当前 DSH 进程权限 读写 NIGHTWRITE_ROOT 或默认数据目录;安装前请阅读源码与 MIT 许可证,确认可接受数据落盘位置与 RPC 面。
  • 依赖 Node >= 22.19.0 与 DSH desktop 的 web 客户端注入配置(cordis.patch.yml);与宿主版本不兼容时以仓库 engines 与 CHANGELOG 为准。
  • 社区目录显示星标为 0,不代表功能完整度;质量可参考仓库内 backend / smoke 等多套测试脚本,自行克隆仓库跑测需遵循 README,本文不展开 clone 步骤。
  • 勿将 SkillHub 目录页表述为官方应用商店;DSH 生态理念是「一切皆插件」,第三方插件需自行审计。

结尾

dsh-nightwrite 把长篇小说写作收进 DSH 的一个插件包:八页导航、119 个 RPC、派单与验收护栏、分场景写作原则,以及 agent 工具 nightwrite_op 与 UI 同源。若你要在 Harness 里做「AI 主写、人来做导演」的闭环,可从 npm 安装后在 🌙 入口建第一本书,再沿今天 → 大纲 → 派单 → 验收走一轮。

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

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

Xiaoye