dsh-novel-generator
Novel generator: builds a world snapshot along a story timeline and, from the latest snapshot and the most recent chapters, deduces the next chapter. Requires DSH >=0.2.1-rc.2.
Install
dsh plugin --profile web add dsh-novel-generator
Sandbox test results
| Stage | Result |
|---|---|
| 1 install | ✓ |
| 2 list | ✓ |
| 3 mount | ✓ |
| 4 boot | — |
Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).
README
小说工坊 · dsh-novel-generator
中文 · [English](README.en.md)
DSH 的常驻插件:在时间线上写小说。每个作品绑定一个普通会话,章节正文与世界快照都由那个会话里的 Agent 生成,全部内容以 Markdown 存在你的工作目录里。
截图
 · 
作品列表:每行「模型 / 预设 / 前置 / 设置 / 提示词 / 导入章节 / 重建会话 / 改目录 / 删除」 · 时间长河与世界快照
 · 
章节故事页:同步章节大纲、提取行文风格、AI 修改 · 章节大纲页:梗概、字数范围、时间长度、AI 修改梗概
四张图也在 screenshots.json 里声明了顺序,插件市场详情页按此展示。
功能一览
位置 · 能做什么
作品列表 · 创建 / 打开 / 删除作品;给单个作品换模型、预设、前置提示词、设置、导入章节、重建会话、改目录
时间长河 · 拖动时间线看任意时刻的世界观、角色、势力、关系、物品、事件;改快照间隔;生成 / 重新生成 / 重置世界快照;每章天数统计图
章节故事 · 编辑正文并保存;同步章节大纲;提取行文风格;AI 修改正文
章节大纲 · 改标题、时间长度、字数上下限、梗概与梗概最低字数;自动推演;生成章节故事;AI 修改梗概
作品设置 · 前文参考程度(前一章全文 / 后一半 / 不参考)
提示词一览 · 只读查看插件发送的 9 个提示词模块
安装
dsh plugin --profile web add dsh-novel-generator # 或直接装仓库:dsh plugin --profile web add https://github.com/XiaoOu2024/dsh-novel-generator
也可以在 DSH 的 设置 → 插件 里安装。装好后刷新页面,界面左下角出现「小说工坊」按钮。
需要 DeepSeek Harness 0.2.1-rc.2 或更新的 0.2.x:插件调用 sessionController(create / selectModel / prompt / resolveAgent)、workspaceRegistry(create / resolveByPath / attachSession)与 agentPresets,这些在 0.2.1 之前不存在或不稳定。依赖以 peerDependencies: { "@deepseek-ai/dsh": "^0.2.1-rc.2" }(optional)声明。
打开方式
界面左下角(设置按钮旁)的 小说工坊 按钮,点开即作品管理界面;右上角「关闭」退出。
使用流程
1. 创建作品:选工作目录(只能通过「选择」调系统目录选择器,不能手填)、模型、预设。创建动作本身会调用 sessionController.create 开一个会话,作品与会话一对一;会话照常出现在左侧列表,可以直接进去对话。
2. 写大纲:进入作品 → 时间长河 → 「章节大纲」填梗概、字数范围、故事时间长度。可以「创建空章节」,也可以「自动推演」一次拿到梗概、标题与完整正文。
3. 生成正文:大纲保存后点「生成章节故事」。
4. 结算快照:故事推进到网格点时自动生成世界快照,也可以手动生成、重新生成或重置。
未保存保护:正文或大纲有未保存修改时,任何离开动作(回时间线、翻章、进大纲、回列表、关闭工作室)都会先确认,可选「不保存离开 / 保存并离开」;大纲不完整时保存会被拒绝并提示。
世界快照怎么来
- 时间线以「天」计(0 = 创建作品那天)。「快照间隔」(7 / 15 / 30 / 90 / 180 / 365 天,可手输)决定一条网格:第 15、30、45… 天。
- 手动:把时间线拖到网格点上,标题栏出现「生成世界快照 · 第 N 天」;该点已有快照时变成「重新生成快照」,会替换旧的那份。都先弹确认。
- 自动:只要故事时间被推进到新的网格点就触发——新建章节(含只有大纲的空章节)、自动推演、生成正文、手动保存正文都算。判定幂等:已存在的点不会被普通保存重复生成。
- 每个点收录哪些章节(
[上一份快照日, 本点)半开区间): - 只收录结束时间严格早于本点的章节——结束在本点那一天的那一章不算,它正是这次快照要为之而拍的那段;
- 也不收录上一份快照已收录过的章节,所以每一章恰好被一份快照收录一次。
- 例:间隔 30、章节各 10 天 → 第 30 天快照收录第 1、2 章;第 60 天快照收录第 3、4、5 章。
- 空段落点不调用模型:某个点没有可收录的章节时(例如一章占满整个间隔),直接沿用上一版快照并注明,既省一次调用,也避免模型凭空编造世界设定——那会污染后续所有章节。
- 同一部作品同一时间只跑一个快照任务。
- 重置:时间线右上角「重置快照」清空全部快照,再按当前间隔从第 1 格重建到故事末端。
- 物品 / 事件:快照除世界观、角色、势力、关系外,还有物品(名称 + 下落/用途)和事件(故事天数 + 标题 + 一句话),事件按时间从新到旧。
- 生成依据:先找本章之前最近的那份快照。若「本章起始日 − 快照落点 > 当前间隔」,判定过旧,直接拒绝并提示先去更新快照;否则自动推演用「最近快照 + 快照落点之后、本章之前各章梗概」,写正文再加一段「待生成的本章梗概」。
章节故事页
- 正文可直接编辑、保存。工具条上还有三个按钮:
- 同步章节大纲:把当前正文交给模型,按这一章的实际内容重算整份大纲——梗概、故事时间长度、最低字数、最多字数、梗概最低字数,然后保存覆盖旧大纲(正文不动)。
- 字数范围一定把正文实际字数包在里面;梗概下限不超过新梗概本身的长度。
- 提取行文风格:模型读这一章,提炼视角与人称、句式、用词、节奏、描写比例,输出条目式说明(≤600 字)。
- 分析期间整个工坊被锁定;正文不足 300 字时按钮不可点,接口返回 400。
- 完成后弹面板:只读文本 +「复制」+「写入前置」。「写入前置」会先确认并说明要用 AI 整理:模型把这段风格与你现有前置合并成一段统一约束(≤2000 字)后保存。
- AI 修改:填修改意见,模型按意见重写整章;结果只放进编辑区,不自动保存。
- 正文为空时按钮不可点,接口也返回 400;修改意见为空同样拒绝。
时间线顺移(重要)
只要「故事时间长度(天)」发生变化,后面所有章节的起始日都会整体顺移,保持首尾相接。触发场景:
- 在大纲页手动改时间长度并保存;
- 同步章节大纲(模型测出的天数被采纳);
- 导入章节时勾选「自动同步章节大纲」;
- 对已有章节重新自动推演。
顺移后弹窗列出每章的新位置,并提示:世界快照不会跟着移动,请到时间长河把受影响的落点重新生成。
章节大纲页
- 自动推演:先问「将覆盖现有内容」,确认后按当前字数与时间长度重新生成梗概 + 标题 + 整章正文并保存。作品的第一章没有快照和上一章可依据,禁用。
- 生成章节故事:先问「是否以当前故事梗概生成故事」,确认后重写正文。
- AI 修改梗概:只改故事梗概,依据是「原梗概 + 你的修改意见」,不动正文与标题;结果填回梗概框并标记未保存。
刻意的差别:「同步章节大纲」会覆盖保存(读的是已写定的正文);「AI 修改梗概」只改草稿(它改的正是你用来生成正文的依据)。
前文参考程度(作品设置)
作品列表每行的「设置」,控制自动推演与生成章节故事时带多少前文:
选项 · 提示词里带什么
前一章(全文)(默认) · 上一章整章正文,用来接住语气、场景与最后一句
前一章的后一半 · 从上一章中间那句话开始给到结尾
不参考正文 · 只靠世界快照与各章梗概推进
- 上一章正文超过 8000 字时只取最后 8000 字(衔接看结尾)。
- 「上一章」按起始日排序取本章之前最近的一章;它没有正文时该块省略。
- 参考块出现在「已发生的章节梗概」之后、「本章梗概」之前。
- 同步大纲、提取风格、世界快照不带前文正文(测量/结构化任务,带前文只会干扰判断)。
前置提示词(作品级)
作品列表每行的「前置」给一本书设定前置:内置「第三人称全知(默认)/ 第三人称限知 / 第一人称 / 自定义」,选中即填入文本框,可自由改写(最多 2000 字)。新建作品默认带「第三人称全知」那段 6 条,可以直接改或清空。
- 生成正文、自动推演、AI 修改正文、AI 修改梗概、提取行文风格、整理前置时,这段文本以「【本书前置设定】…」放在提示最前面;世界快照与同步大纲不带。
- 保存后下一次生成就生效,不必重建会话。
- 同时写进
作品信息.md文末,便于外部查看与备份。留空即不设置。
导入章节
作品列表每行的「导入章节」把现成的 .md 导进作品:选来源 → 看匹配结果 → 确认。
- 认
第1章、第007章、第十二章三种编号,后缀也可以是回/节;扩展名.md/.markdown/.txt; - 从选定起点按
1, 2, 3…(或「上一章编号 + 1」)顺序配对,配不上就停,后面的文件不导入; - 起点选「从第 1 章开始」时,作品里已占用的章号会跳过(不覆盖、不重复);
- 标题取编号之后的部分(
第3章.md没有标题,用「第 3 章」)。 - 匹配结果显示:将导入的每一条(
文件名 → 第N章 标题 · 字数)、被跳过的章号、没连上的文件、认不出章号的文件、疑似乱码标记。 - 导入后正文写进作品并导出成
第NN章 标题.md;勾选「自动同步章节大纲」时逐章调用模型(进度可见、可停止);推进到网格点会顺带触发世界快照。导入时填的「每章天数」是初值,同步后以模型实测值为准并顺移后续章节。
提示词一览(只读)
作品列表每行的「提示词」打开只读面板,列出插件会发送的 9 个提示词模块,每块标明触发时机,可复制全文:
模块 · 什么时候发
本书前置设定 · 写正文 / 自动推演 / AI 修改正文 / AI 修改梗概 / 提取行文风格 / 整理前置
写章节正文 · 「生成章节故事」,或「自动推演」的写正文一步
自动推演大纲 · 「自动推演」
世界快照 · 「生成世界快照」或自动触发
同步章节大纲 · 「同步章节大纲」或导入时自动同步
AI 修改正文 / AI 修改梗概 · 两个「AI 修改」
提取行文风格 / 整理进前置 · 两个风格相关按钮
- 只读,活数据用
{…}占位:面板不读取、也不回显你作品里的真实内容。 - 渲染方式:Host 用一份占位数据(虚构章节与快照)跑真实的提示词构造函数,结构与实际发出去的逐行一致,不会随代码演进而过期。
- 面板会跟随作品状态走同一分支:作品还没有快照时显示「(暂无世界快照…)」与「开篇到上一章」;有快照时以该作品最新快照日为起点。
- 底部显示当前设置摘要(前文参考程度、前置是否已设置、快照间隔、最新快照日)。
「小说工坊 · 作者」预设(随主插件一起装)
本插件把配套包 dsh-novel-author-preset 列为依赖,cordis.patch.yml 因此声明两行:
插件列表里的行 · 是什么
dsh-novel-generator(小说工坊) · 工坊本体:时间线、章节、快照、前置提示词
dsh-novel-author-preset(小说工坊 · 作者预设) · Agent 预设:激活时注册,关掉即注销
- 两行都挂在小说工坊下面,可分别启停:关掉预设行只是把它从预设列表隐藏,工坊照常工作;关掉工坊本体,预设随之消失。
- 预设行显示的是配套包自己的标题与说明,而不是
@deepseek-ai/dsh-agent-preset的通用文案。 - 装了它之后新建作品默认用这个预设;预设被关掉或缺席时,重建会话自动退回 profile 默认预设,作品不会坏。
预设内容刻意做得很薄:三句人设(你是小说写作者/只输出正文/文风视角篇幅以用户要求为准)+ 关闭运行时上下文 + 不挂任何工具 + 只保留上下文压缩。所有文学倾向交给作品级前置提示词。
数据存放
- 索引:
<DSH_HOME>/novel-studio/projects/<项目id>/project.json(DSH_HOME缺省~/.dsh)。时间线、大纲、快照字段都记在这里;dataDir配置可改位置。 - 正文、梗概、快照全部写到工作目录下以作品名命名的文件夹里:
<工作目录>/<作品名称>/ ├── 作品信息.md 作品参数总览 + 章节一览表 + 前置提示词 ├── 第01章 章节名.md 章节正文(纯正文) ├── 章节大纲/ │ ├── 第01 …(truncated)
Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::42,最后更新 2026-10-31