dsh-novel-studio · 小说创作工作台
DeepSeek Harness 的小说创作插件:当你想写小说时主动询问是否启用,给出创作模板,驱动「设定卡 → 大纲 → 章纲 → 正文 → 多子智能体审稿 → 改写复扫」的完整流水线,并用确定性扫描压低 AI 味与晦涩度,最后在可视化故事图谱里回看整本书的结构。
安装
方式一:从 GitHub 安装(普通 web profile)
dsh plugin --profile web add github:ggghhh-11/dsh-novel-studio
然后重启 dsh web。仓库里的 cordis.patch.yml 会自动注册插件行,不需要手改 profile 补丁。
方式二:DSH Desktop(desktop profile)
desktop profile 由应用独占管理,CLI 的 dsh plugin --profile desktop ... 会被拒绝。可以:
- 克隆仓库到本地:
git clone https://github.com/ggghhh-11/dsh-novel-studio.git
- 在 DSH「设置 → 插件 → 安装本地 bundle」里选择克隆目录;或让
plugin_manager用install_bundle指向该目录。
安装后刷新一次页面,让 Client 半加载:侧边栏「插件」按钮正下方出现小说图标;也可以直接回到对话里说「我想写小说」。
使用
路径 A:对话自动触发
在会话里说「我想写小说」「帮我写部小说」「开个新坑」等,插件会在模型调用前弹出询问:
- 选「启用」:进入工作台,展示创作模板精简版;
- 选「暂不启用」:不创建任何文件,按普通对话继续,本会话不再询问。
已有项目时会询问「继续该项目 / 新建项目 / 暂不启用」。
路径 B:侧边栏手动启用
点侧边栏小说图标 → 点「启用小说创作工作台」。若当前只有一个活跃会话,插件会直接把启用通知送进该会话;否则登记启用请求,下一回合生效。
面板里还可以:
- 查看最近项目;
- 调整审稿轮次(0–4)、每章字数(800–8000)、AI 味阈值(50–95);
- 开关「生成后自动打开图谱」「启用时自动显示说明」;
- 打开故事图谱与使用说明。
首次启用问卷(平台 → 自动搜索 → 偏好)
选「启用」后(包括从侧边栏手动启用),插件分两次提问:
第一次:书名 + 发表平台(已有项目时只问平台)
- 平台:番茄 / 起点 / 晋江 / 知乎盐选 / 纯文学 / 暂不指定。
确定平台后,插件自动联网检索该平台的公开信息(热门题材、新书榜、潜力赛道),把来源与素材摘要写入上下文;随后问第二次:
- 篇幅、每章字数、审稿子智能体、跳脱值(这些与题材方向无关,才用平台默认值预填)。
题材和文风不再给预设方向:插件把检索素材交给模型,模型必须:
- 先问用户是否调用「平台趋势分析师」子智能体(用户同意就用
subagent跑); - 基于检索素材 + 自己的判断,给出该平台当前的热门方向与有潜力方向(区分事实与判断,不编造榜单);
- 再让用户确认题材 / 文风;
- 调用
brief保存设定卡。
若用户跳过第一次问卷,模型会按同一清单补问;已有平台的项目再次启用时不会重复问卷。
模板怎么填
模板只保留作者能主观决定的内容。作者生平、创作意图、读者接受史、批评史、市场与版本传播、文学史定位等,已从模板中剔除。
可以:
- 选一个或多个路线预设(都市现实 / 悬疑推理 / 玄幻修仙 / 科幻思辨 / 言情 / 规则怪谈 / 纯文学);
- 按编号回答维度(例如
A1 朴素、冷峻;B1 第三人称限知); - 用自己的话描述;
- 直接提供你写好的大纲(
novel_studio(action='brief', outlineText=...)或outlinePath=...)。
冲突(第一人称 + 全知、纯文学平台 + 爽文题材、短篇 + 超长单章等)会被标出来,交给用户裁决。
工具
novel_studio
| action | 作用 |
|---|---|
status |
项目阶段、章节进度、下一步 |
list |
列出工作区里的项目 |
start |
创建/载入项目,返回模板精简版 |
template |
模板(full=true 返回完整版) |
brief |
保存设定卡(路线/维度/自由描述/自带大纲/字数/轮次) |
outline |
返回全书大纲的生成指令与落盘路径 |
chapter_outline |
批量章纲:from + count(1–500,任意章数),如一次 30 章 |
draft |
正文生成指令:chapter,可 count(1–3),chapterWords |
review_plan |
本轮审稿角色、完整提示词、workflow 并行脚本、整合规则(默认用面板勾选的角色集) |
record |
记录一轮审稿结果到 reviews/ |
chart |
提交故事图谱数据(章节/人物/关系/指标) |
hooks |
记录/回收钩子:hooks 数组 + resolved id 列表;右栏「钩子」视图可自查 |
custom_review |
用户多轮后仍不满意:按 issue 生成专项审稿子智能体提示词 |
resume |
读取暂停检查点,返回是否在 5 分钟窗口内与询问选项 |
checkpoint |
保存当前进度(checkpoint.md/json),下次说「继续写」恢复 |
discard |
放弃本次写作并删除项目目录(需 confirm=true 二次确认) |
output_done |
登记刚写入的 TXT(file + kind),触发右栏文本预览并记录版本 |
settings |
读写面板快捷设置(含输出方式/目录/自动预览/主题/跳脱值) |
novel_scan
确定性扫描(不调用模型):
- 套话命中(带行号);
- 平均句长、句长标准差、短句/长句占比、对话占比;
- 四字成语密度、比喻标记密度、指代密度;
- 可读性指标:>60 字长句占比、嵌套、生僻词、指代;
- 综合 AI 味得分(0–100,越高越好)、可读性得分、必须重写段落、字数与目标偏差。
每次改写后都应复扫,直到得分达到阈值。
长度控制
- 每章字数:默认 2500,范围 800–8000;章纲按它分配情节点密度,正文按它 ±10% 生成,扫描会检查偏差。
- 章纲数量:任意(1–500),例如「一次生成 30 章」「一次 100 章」;插件会把整批写进一个 TXT。
- 批量正文:1–3 章,默认 1;批量正文会稀释质量,插件会提示。
- 总量规划:大纲阶段可给总字数/总章数,自动反推卷章规模(例如 100 万字 ÷ 2500 字 ≈ 400 章)。
输出与预览
- 大纲/章纲/正文自动写成 TXT(
大纲.txt、第001-030章-章纲.txt、第001章.txt)。 - 默认保存到项目目录;面板「保存目录」或
outputDir参数可自定义到工作区内的任意位置。 - 登记输出后优先在右侧栏的「小说创作」标签页打开文本视图(图谱/钩子/文本/说明四个子页);右栏不可用时才退回弹窗。
- 「输出方式」选「对话直出」时,文本仍保存 TXT,但模型会把全文贴回对话框。
钩子自查
- 生成章纲/正文后,模型会把本章埋设与回收的钩子提交给
novel_studio(action='hooks')。 - 右侧栏「钩子」页按「未回收 / 已回收」分组展示:章号、类型(悬念/伏笔/反转/谜题)、内容与状态。
- 面板统计卡显示「钩子 未回收/总数」,方便在长线连载里防止伏笔烂尾。
跳脱值(反套路)
- 启用工作台或面板里可设 跳脱值 0–100(默认 30):0 稳定遵循类型预期,100 强烈反套路但要求每个反转都有伏笔支撑。
- 生成大纲/章纲/正文时会把该值写进指令,控制桥段选择与反转力度。
- 保护机制:≥85 时,正文登记后会提示「跳脱值偏高,注意甄别」,并给用户选项是否检查内容;检查即在右侧栏打开全文,用户提出修改意见后再进入审稿。
暂停、恢复与放弃
- 写作中途暂停(中断回合)时,插件保留检查点;仅当距上次操作在 5 分钟内 才给出选择,否则直接继续。
- 下次说「继续写小说 / 继续上次进度」:模型调用
novel_studio(action='resume')并询问:- 放弃本次写作(
discard,需二次确认,会删除项目目录); - 补充信息(等用户输入后继续);
- 继续生成;
- 当前结果够用;
- 下次再来(
checkpoint保存进度,下次恢复)。
- 放弃本次写作(
checkpoint会把进度写入项目目录的checkpoint.md/checkpoint.json,并用运行时状态记住项目与最近文件。
多轮后仍不满意
- 继续下一轮审稿:再调
review_plan(round递增)。 - 或指出具体问题:
novel_studio(action='custom_review', issue='...')会生成「专项修改顾问」子智能体提示词(独立视角比主模型自审更客观),返回后由主模型整合改写。
审稿角色(32 个)
用户提供的 30 个平台/运营角色,外加两个专属角色:
- 通顺度与可读性审校员:查逻辑断裂、指代不清、跳跃、晦涩长句、术语堆砌;
- AI 味猎手:查套话、空泛抒情、机械转折、比喻堆砌、总结陈词、句式整齐划一。
每次审稿必须包含这两个角色。默认子集:
- 大纲:签约编辑、赛道评委、竞品分析、差异化、逻辑、生命周期、AI 味、通顺度;
- 章纲:标题钩子、爆款节奏、追读率、合规、读者心理、AI 味、通顺度;
- 正文:签约编辑、爆款节奏、逻辑、追读率、合规、读者心理、读者体验、标题钩子、双受众、AI 味、通顺度。
可选 lean(降本)、standard(默认)、all(32 个全开),或显式指定角色 id。纯文学路线会自动剔除付费/算法/运营类角色。
自由选择角色:侧边栏「小说创作」面板里有「审稿角色(自由勾选)」区块,按平台/商业/工艺分组勾选;勾选结果作为之后 review_plan 的默认角色集:
- 不勾选(清空)= 使用默认子集;
- 「全选」= 32 个全开(成本最高);
- 两个工艺角色(通顺度与可读性审校员、AI 味猎手)无论怎么选都会保留,避免漏掉最关键的检查;
- 也可以直接对模型说「这轮只用逻辑、合规、读者体验和 AI 味猎手」。
审稿流程:主模型写稿 → review_plan → 用 workflow 工具并行子智能体 → 主模型整合(同一问题 ≥2 角色提出或合规/逻辑硬伤 = 必修)→ 改写 → novel_scan 复扫 → 未达标则下一轮。轮次默认 2,可设 0–4。
并行审稿
review_plan 返回的 workflow 脚本使用 parallel() 同时启动全部审稿子智能体并等待全部完成,不是逐个串行。注意:
- 只有
workflow工具能这样 fan-out;subagent是单次调用,逐个调会串行; - 并发调用过多可能触发模型供应商的速率限制,失败由重试策略处理;被限流时用
roleSet='lean'或把角色分两批; - 若会话没有
workflow工具,只能降级为逐个subagent(串行),插件会在返回里说明。
故事图谱
生成数据后(novel_studio(action='chart'))自动在右侧栏打开,也可以在面板点「查看故事图谱」:
- 故事线 / 情绪曲线:张力折线 + 章末钩子标记 + 低张力提醒;
- 人物关系图:节点大小=出场量,连线粗细=关系强度,虚线=对立;
- 节奏与篇幅:每章字数柱状 + 钩子折线;
- 审校指标:AI 味/可读性随轮次变化 + 阈值线。
右侧栏「小说创作」标签页内含图谱 / 钩子 / 文本 / 说明四个子页,可点 tab 或「‹ ›」按钮循环切换;右栏不可用时自动退回弹窗(同样支持 tab 与「上一个 / 下一个」)。
右侧栏
插件注册了独立的 novel-studio-panel 右栏标签页(在宿主右栏的 tab 列表里可见):
- 图谱、钩子、文本、说明都在这里,不占对话;
- 生成后自动打开的是这个标签页;
- 侧边栏工作台面板的「图谱 / 文本 / 钩子 / 说明」按钮都指向它;
- 右栏服务不可用(旧宿主)时退回系统弹窗。
配置
在 cordis.patch.yml 的插件行 config 中调整:
- id: dsh-novel-studio
config:
enabled: true
autoAsk: true # 对话里主动询问是否启用
defaultRounds: 2 # 默认审稿轮次
roleSet: standard # lean | standard | all
scanThreshold: 70 # AI 味得分阈值
projectDir: novel # 项目根目录
maxChaptersPerOutline: 500
autoChart: true # 生成后自动打开图谱
autoHelp: true # 启用时自动显示说明
language: zh
数据位置
<工作区>/novel/<项目>/
project.json 项目状态(含 outputs/outputVersion)
template.md 完整模板
brief.md 设定卡
outline.md 旧版大纲(兼容)
chapters/ 旧版章节文件(兼容)
charts.json 图谱数据
reviews/round-N-*.json
history/ 改写前旧版
<输出目录(默认项目目录)>/
大纲.txt
第001-030章-章纲.txt
第001章.txt
插件自身运行状态(侧边栏设置、输出方式、激活请求)保存在 profile 目录的 .novel-studio/runtime.json。
开发与测试
node --test --test-isolation=none test
(沙箱环境禁止测试运行器 spawn 子进程,因此用单进程隔离模式。)
已知限制
- 故事图谱/钩子数据由模型在生成后归纳提交,插件不解析正文;数据缺失时显示空状态。
- AI 味扫描是启发式的,给的是修改方向,不自动改稿。
- 右栏标签页依赖宿主提供
sidebarRight服务;旧宿主会自动退回弹窗。 - 暂停恢复只在「中断/保存进度后」的下一次继续消息里询问,不会主动打断对话。
- 插件安装或更新后需要刷新一次页面才能看到 Client 入口。
License
MIT
No comments yet. Be the first to write one.