serial-story-writer:在 DSH 裏用「世界觀 → 多短篇集」寫聯動短篇

前言

在 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/ 樹。

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

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

小夜