前言¶
寫長篇時,常見做法是桌面寫作軟件加外掛 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 爲準。