dsh-nightwrite:AI 主寫、人類當導演的長篇小說 DSH 工作臺

前言

在 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 安裝後在 🌙 入口建第一本書,再沿今天 → 大綱 → 派單 → 驗收走一輪。

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

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

小夜