前言¶
在 DeepSeek Harness(DSH)裏用模型寫連載或系列短篇,常見做法是散落的 Markdown 或通用文件工具。人物設定容易在多集之間重複粘貼,某一集改了名字或關係,另一集仍引用舊稿;模型若直接改文件,也很難保證用戶看到的是即將落盤的終態。LeeGuanWei-a 維護的 serial-story-writer(npm 包名 @leeguanwei/dsh-serial-story,GitHub:LeeGuanWei-a/serial-story-writer)把工作區收成 .serial/ 下的固定項目格式:一個世界觀、多部獨立短篇集、共享人物檔案用穩定 id 跨集引用,寫入一律走 Harness 原生一次性審批。下面介紹它是什麼、能做什麼,以及如何安裝與使用。
這是什麼¶
短篇集作家是面向 DSH 的工作流類插件(當前版本 0.1.1,README 標明目標運行時 dsh 0.2.0-rc.2)。它提供「世界觀 → 多短篇集」結構:世界觀持有共享人物與共享設定;短篇集(collections/<slug>/)是同一世界觀下的獨立作品,各有藍圖、時間線與章節。同一角色可在多集出演,身份通過穩定 id 引用,不復制、不重定義檔案。對標形態是「同一批角色在多個獨立短篇裏出演」—— README 以偶像大師閃耀色彩爲例說明關係,而非單線長篇。
Host 根入口只聲明 workspaceRegistry 依賴,不掛模型面工具;模型側走 ./agent(V1),瀏覽器側走 ./client 只讀工作臺。V2 提案入口 ./agent-v2 已實現但尚未掛進預設。
核心功能¶
項目文件層¶
工作區根下爲 .serial/ 目錄,主要資產包括:
project.json:世界標識與創作方針(如worldId、worldName、language、tone、creativeStrategy、writingRules等)characters.json:世界觀級共享人物檔案world.json:共享設定(必填setting/locations/notes等)inbox/:非權威提案收件箱(一條一文件)collections/<slug>/:各短篇集,含blueprint.json、timeline.json、chapters/(NNNN-blueprint.json與NNNN.md)
worldId 不可更改;短篇集身份是目錄名 collections/<slug>/,藍圖 JSON 內不存 slug,讀取時由目錄注入。
併發與寫入¶
- 每個非空資產的修訂號爲規範化 UTF-8 字節的 SHA-256;替換時只帶「上次讀到的修訂號」,模型不必複述權威舊文本。
- JSON 經嚴格 schema 校驗後按 2 空格縮進 + LF 序列化;正文 LF 歸一化,避免排版差異造成假衝突。
- 任何寫入經 Harness 原生一次性審批;瀏覽器工作臺不提供改稿通道。
模型面工具(V1,已掛預設)¶
serial_read(按 kind):
| kind | 作用 |
|---|---|
asset |
單資產文本 + 修訂號 |
world |
共享人物 + 短篇集藍圖(可選 slug 收窄) |
appearances |
某人物在哪些集/章出場 |
threads |
故事線來源與推進章節 |
audit |
跨集結構巡檢 |
chronicle |
人物編年史(有時間錨的集按時間排序) |
serial_apply_change:initialize(僅 NOT_INITIALIZED 後)與 replace(單資產 + baseRevision)。非法內容在審批門前以 deny 返回,不彈審批卡片。
設計強調:出場與故事線推進只認藍圖,不認正文;應先寫章節藍圖再寫正文。audit 會標出「有正文沒藍圖」的章。
只讀工作臺(Client)¶
側欄「短篇集工作臺」與預設「短篇集作家」共用同一 .serial/ 項目:左樹瀏覽項目/世界觀/人物/提案/各集章節,右側看設定、出場、故事線軌跡、正文預覽與修訂號(瀏覽器用 WebCrypto 復刻 Host 的 SHA-256,與模型側一致)。面板不改稿。
非權威提案(V2,未進預設)¶
serial_propose_change 可把一條建議寫入 .serial/inbox/,收據 authoritative: false;要真正改項目仍須原生審批。當前無預設掛載 ./agent-v2。
尚未落地(README 明示)¶
面板內改稿(刻意不做)、批量跨集寫作業、人物狀態跨集累計(缺承載字段)、./agent-v2 未掛預設。
安裝與啓用¶
插件以當前 dsh 進程權限運行;安裝前請自行查看 GitHub 倉庫 源碼與 LICENSE。
官方安裝步驟(來自 README):
dsh plugin --profile web add @leeguanwei/dsh-serial-story
dsh --profile web
插件通過 cordis.patch.yml 內聯預設 preset-short-story-writer。在會話預設選擇器中選 「短篇集作家」 即可。該預設只掛 persona、agent-instructions 與 ./agent,不掛 shell、通用文件讀寫、文本替換或 Code Mode。
典型用法¶
1、初始化與讀寫資產¶
未初始化時先用 serial_apply_change 的 initialize 分支;之後對任意資產用 serial_read kind="asset" 取內容與修訂號,再用 replace 提交變更(帶 baseRevision),在審批卡片中確認規範化後的終態。
要寫 world.json 等完整正文,須先 kind="asset" 拿 revision;kind="world" 是投影,不含 world.json 正文與修訂號。
2、先藍圖後正文¶
爲章節創建 chapters/NNNN-blueprint.json,再寫 chapters/NNNN.md。否則該章的出場與故事線推進不會被記錄。
3、跨集一致性檢查¶
定期調用:
serial_read kind="audit"
一次列出結構問題(如未聲明人物/故事線、缺藍圖/缺正文、未使用的建檔人物等)。巡檢是報告,不會讓讀取失敗。
需要按時間線梳理人物站點時:
serial_read kind="chronicle"
4、人側瀏覽¶
啓動 dsh --profile web 後,在側欄打開「短篇集工作臺」只讀查看;改稿仍在會話內通過 serial_apply_change 與原生審批完成。
配置與限制¶
- Host 入口:無配置項。
- Agent(V1):
assetBytes/workingSetBytes(默認 512 KiB)、queryMatches(默認 20)、maxProposalBytes/maxPendingProposals(默認 2 MiB / 20)。越界在加載時報錯。 - Agent-v2:
maxProposalBytes/maxPendingProposals。
Client 依賴 Typert Remote 的 workspaceFiles 只讀命名空間,Host 不註冊自建 HTTP 通道(與 dsh 0.2.0-rc.2 上第三方 HTTP 通道註冊缺陷有關,見上游討論 #5926)。
適用場景與注意¶
適合:同一世界觀下多部獨立短篇、共享角色跨集聯動、希望模型改稿必經審批、需要 audit/chronicle 做結構與人事梳理的創作者或智能體工作流設計者。
注意:
- 插件分類爲社區工作流插件;SkillHub 目錄頁 爲獨立生態站點,與 DeepSeek / 幻方無官方從屬關係。
- 星標與版本以倉庫爲準(資料抓取時 GitHub 星標爲 0,包版本 0.1.1)。
- 勿指望 V2 提案或面板內直接改稿;當前權威寫入路徑只有 V1 + 原生審批。
結尾¶
serial-story-writer 把「世界觀 + 多短篇集 + 共享人物 id + SHA-256 修訂號 + 一次性審批」收成可落地的 DSH 插件:模型側用 serial_read / serial_apply_change,人側用只讀工作臺對照同一 .serial/ 樹。