dsh-novel-forge
Novel-writing guardrails: 20 novel_* tools enforce fact-ledger consistency, phase and chapter gates, machine audit with deterministic metrics, and proposal-only revisions; a right-panel workbench covers reading, TTS playback, polish, proofread, continuity checks and batch drafting, and a bypass engi
Install
dsh plugin --profile web add dsh-novel-forge
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-forge · 小说锻炉
中文文档 | [English](./README.en.md)
DeepSeek Harness(DSH)的中文长篇写作插件。它不是「提示词合集」,而是把一致性、门禁、审计做进工具层与数据层:模型负责动笔,插件负责把写坏、写歪、写穿的地方拦在落盘之前。
适合谁: 多角色 / 多卷 / 连载几十上百章、会被「设定崩了」「前文失忆」「悬念泄底」「AI 味太重」卡住的长篇作者。
一句话卖点: 关键约束全部代码化——同章改值=冲突拒绝、隐藏人物不进上下文、细纲漏写场景=拒稿、旧版永不覆盖、长篇检索零依赖本地跑。
[快速开始](#快速开始约-5-分钟) | [界面一览](#界面一览) | [功能硬约束表](#ai-写作通病与硬约束) | [23 个工具](#23-个工具)
为什么不是又一个「提示词合集」
多数写作插件的约束写在系统提示里——模型心情好就守,赶进度就绕。本插件的设计主线只有一条:
代码强制 > 提示词自觉。 凡是「靠模型自觉」的约束都会失效;一致性、门禁、审计必须是工具层/数据层的硬约束。
三条可在仓库里对着源码核的事实:
1. 三条入口共用一份判定链:面板「💾 保存」、novel_write_chapter、REST 写入走同一套门禁代码(机审/账本冲突/内容门禁/细纲契约)——没有旁路;唯一的放行开关显式记审计。
2. 模型无法自批提案:修订提案模型只能登记、不能应用——「应用」是面板里用户的主权动作(模型侧没有 apply 工具);细纲批准记录批准通道,看板统计「工具自批占比」(真机实证某连载本曾 168/168 全自批,正是大纲漂移的第一缺口)。
3. 审计零 token:机审、去 AI 味扫描、平台审稿、一致性校验、账本时点推演全部是纯本地计算——逐章审计成本为 0,数字不经过模型之手。

界面一览
右侧栏「锻炉」面板实机渲染(以下均为虚构示例数据,非真实书目):
项目列表<br><img src="assets/mockups/png/dark-1-项目列表.png" width="100%"> · 详情 · 基本信息(全书体检仪表盘)<br><img src="assets/mockups/png/dark-2-详情-基本信息.png" width="100%">
润色守卫拦下(核心卖点:代码拒绝,理由给全)<br><img src="assets/mockups/png/dark-5-润色守卫拦下.png" width="100%"> · 批量起草(并发生成·串行过门禁·断点续跑)<br><img src="assets/mockups/png/dark-6-批量起草.png" width="100%">
章节听书<br><img src="assets/mockups/png/dark-3-章节听书.png" width="100%"> · 世界书<br><img src="assets/mockups/png/dark-4-世界书.png" width="100%">
以上是lib/client.js的真实渲染(非手绘 mock):npm run preview生成预览页后跑assets/mockups/shoot-real.cjs即可复现,浅色/深色两套随宿主主题。
看完了演示觉得有用?这就是它每天在你写长篇时替你挡下的事。顺手点个 ⭐ 让更多人看见:
github.com/huangziyuan-general/dsh-novel-forge
AI 写作通病与硬约束
AI 长篇写作的通病不是玄学,每一个都有对应的工程解法。本插件把其中「有明确对错」的部分做进代码:
AI 写作通病 · 本插件的硬约束 · 落点
设定/战力崩坏 · 事实账本:同章改值=冲突拒绝;世界书关键词自动注入 · novel_ledger / novel_worldbook
模型"看不见前文" · 写前简报按预算组装上下文包(细纲→人物卡→账本→伏笔→世界书→上章结尾) · novel_briefing
口头跳阶段 · 阶段门禁:细纲未批准,novel_write_chapter 直接拒绝 · novel_outline approve
跨章复读/水文 · 8 字 shingle 与前文重复检测,超阈值拒绝保存 · novel_write_chapter 机审
章节字数失控 · 机审门槛默认 2000–4000 字(网文连载单章标准,目标 3000);写前简报带「本章字数目标」段 · novel_write_chapter / novel_briefing
章末无钩子 · 章末钩子启发式(问句/悬念/省略/感叹),缺了给警告 · novel_audit
AI 味 · 八维结构性扫描:模板句/库存词密度/情绪直写/句式模板/段落节奏方差/信息稀释/断章公式/AI 默认值词(纯本地,零模型费用) · novel_noai_scan
偷偷覆盖正文 · 提案制:修订走提案→用户确认→生成新版本,旧版永不覆盖 · novel_propose
审稿放水 · 机审与模型审分离:审计产出确定性数字,模型审稿必须引用证据 · novel_audit
悬念提前泄底 · 场景契约:隐藏人物档案不进上下文(连账本/摘要里的痕迹也擦掉),正文出现其名=内容门禁拦下 · novel_scene
写偏/漏写细纲 · 细纲契约段(必写场景 / 禁止偏离项)由代码算覆盖率与偏离度,命中禁项拒绝落盘 · novel_write_chapter
多角色千人一腔 · 语言基因卡结构化注入(句长/逻辑/口头禅/绝不说/小动作/语域),审稿核对禁忌词 · novel_character voice
长篇上下文爆炸 · 契约在场时只注入本章出场人物的卡,世界书按白名单取 · novel_briefing
设定没定就想写大纲 · 九阶段状态机:每阶段入场条件由代码判定,缺什么直接列出来 · novel_project phase
第一章就写不够字数 · 细纲按「场景数 + 拍数」估算本章能写多少(真机 151 章标定),撑不到下限就驳回并点名哪个场景只有一拍;写前简报再给逐场景字数预算
面板改稿绕过门禁 · 面板「💾 保存」与写章共用同一套判定(只豁免细纲流程门禁):短稿/占位符/死人复活/泄底一律 409 并摆出原文,需要时给一次显式「仍要保存(记审计)」 · 面板编辑区
同一章反复写不对 · 熔断:同章连续驳回 3 次即拒写(不是提醒),改完细纲/契约自动解除 · novel_write_chapter
不合平台口味 · 平台审稿五张表:起点看结构/章末钩子/移动端段长,番茄看前 1000 字爽点/打脸/憋屈时长,晋江看字数足额/开篇忌虐,七猫看强情绪快节奏/章末钩子,飞卢看极快节奏/金手指前置/爽点密度 · novel_audit platform
踩平台红线 · 敏感自查七类,命中给行号与改法 · novel_audit censor
内部工序占满主对话 · 旁路直调:润色/校对/打标/起草走独立流,不占主对话、不写会话记录;结果只出提案 · lib/engine.js
批量起草绕过门禁 · 并发生成、串行提交:每章仍过同一道门禁,单章失败不回滚整批 · draft-batch
批量起草中途断了 · 断点检查点:每章提交后落盘 .novel/batch-checkpoint.json,resume:true 从断点续跑——已落盘章自动跳过、只重试未完成的 · draft-batch resume
同一会话连写越写越短 · 会话疲劳检测(同口径):本会话首稿逐章变短(后半 < 前半 75%)、或首稿均值低于其它会话首稿 70%、或连写 ≥8 章即警示;「创建新会话并交接」一键建新会话(有归档能力就建+归档一次完成),交接摘要自动进剪贴板 · 面板疲劳横幅
写到百章后"看不见前文" · 本地检索索引:按记忆碎片把段落找回来(中文手工二元切分,零依赖) · novel_search
快速开始(约 5 分钟)
前提:已安装 DeepSeek Harness(DSH)并跑通模型;Node ≥ 22(22.19+ / 24+ 可启用检索索引,否则自动降级,不影响其他功能)。
第 1 步 · 安装插件(任选其一):
# 从 npm(0.16.0 起已发布;安装量计入 dshmarket「Most installed」榜) dsh plugin --profile web add npm:dsh-novel-forge # 从 GitHub 公开仓库(⚠️ github: 简写经 pnpm 走 SSH——机器要配好 GitHub SSH key # 且 ~/.ssh/known_hosts 里有 github.com 主机指纹,否则更新报 Host key verification failed; # 没配 SSH 就用上面的 npm 源,公共仓库拉取无需任何凭据) dsh plugin --profile web add github:huangziyuan-general/dsh-novel-forge # 本地开发(符号链接,改码即生效) dsh plugin --profile web add link:/path/to/dsh-novel-forge
第 2 步 · 重启 DSH web,然后浏览器硬刷新(客户端 bundle 在进程启动时快照,不重启等于没装)。
第 3 步 · 验证安装:右侧栏出现「🔨 锻炉」独立 tab;在会话里让模型「列出小说工具」,应能看到 20 个 novel_* 工具。同时 agent 预设「小说锻炉」已自动部署到 ~/.dsh/.agent-presets/novel-forge/(已存在则跳过,永不覆盖;DSH_NOVEL_FORGE_REDEPLOY=1 强制重铺,DSH_NOVEL_FORGE_SKIP_DEPLOY=1 关闭)。
第 4 步 · 建第一本书:在会话里直接对模型说,例如:
用 novel_project init 建一本玄幻书《示例书名》,一句话立意是「废柴觉醒了不该属于他的力量」。
第 5 步 · 跟着九阶段走:模型会按 立意→设定→人物→大纲→分卷→细纲→正文 的顺序引导,每个阶段缺什么、插件会直接列出来。写章前必须先 novel_outline approve 批准该章细纲——这是设计,不是故障。
第 6 步 · 到面板收结果:右侧栏「锻炉」tab 里阅读/听书、点润色/校对(产物是提案,你在面板点「应用」才生效)、跑全书体检、导出整本。
宿主版本要求与依赖面清单见 [COMPATIBILITY.md](./COMPATIBILITY.md)。
会话与面板的分工
- **会话里(模型 +
novel_*工具)**:一切创作动作——建书、大纲、细纲、写章、账本、审计。写章必须走会话(简报 + 多道落盘门禁是多轮闭环)。 - 面板(右侧栏「锻炉」):阅读与听书、润色/校对(旁路引擎,产物为提案)、全书体检、黄金三章诊断、批量起草(含断点续跑)、提案审批(应用/丢弃)、书卡管理(改名/删除/克隆)、会话疲劳监测与一键交接。
典型会话流:
novel_project init → novel_project phase(看九阶段看板,按提示补齐入场条件)
→ novel_outline save_book → novel_character save(建语言基因卡)
→ novel_worldbook add(固化核心设定)→ novel_project phase stage:outline/volume(分卷)
→ 循环:
novel_ou
…(truncated)Rendered from the README published on npm. Formatted only, not edited.
Versions
Published on npm::35,最后更新 2026-11-06