前言¶
在 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 強調三條「丟了就真沒了」的防護:
- 覆蓋正文前留底:
chapter.save前把舊正文寫入chapters/history/,每章保留最近 20 版;chapter.restore回滾,回滾操作本身也留底。 - 刪章可恢復:
chapter.delete移到chapters/.trash/,可chapter.recover;chapter.purge才永久刪除。 - 採納前先點數:
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(若設置)指向可寫目錄。
典型用法(可復現路徑)¶
- 新建作品:無書時走三步向導,填書名與創作意圖,選體量,可選「建完先把全書骨架排好」;提交觸發上述三個 create/outline op。
- 今天頁開工:查看 run 狀態條,確認上一輪已驗收或收尾後再開新輪;頂欄快動作含「續寫一章 / 連更 3 章 / 體檢」等(以當前 UI 爲準)。
- 大綱 → 派單:在
plan維護方案與卷章骨架,必要時outline.generate回填摘要/鉤子,再把「第幾回 + 意圖」送入派單。 - 派單執行:在
dispatch查看崗位、工單、隊列;agent 可通過nightwrite_op與同一隊列協作。 - 正文與驗收:
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 安裝後在 🌙 入口建第一本書,再沿今天 → 大綱 → 派單 → 驗收走一輪。