前言¶
在 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/ 树。