
huangziyuan-general/dsh-novel-forge
dsh-novel-forge
dsh-novel-forge is a community DeepSeek Harness plugin. Read the repository README before installing.
Install
npx @deepseek-ai/dsh plugin --profile web add npm:dsh-novel-forgeRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-novel-forge)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from huangziyuan-general/dsh-novel-forge, cleaned of badges and images.
dsh-novel-forge · 小说锻炉
中文文档 | English
如果这个项目帮你把长篇写稳了,顺手点个 ⭐ 支持一下 —— 你的 star 是继续维护的动力: github.com/huangziyuan-general/dsh-novel-forge
DeepSeek Harness(DSH)的小说创作插件。设计主线只有一条:
代码强制 > 提示词自觉。 凡是"靠模型自觉"的约束都会失效—— 一致性、门禁、审计必须是工具层/数据层的硬约束。
为什么不是又一个「提示词合集」
多数写作插件的约束写在系统提示里——模型心情好就守,赶进度就绕。本插件把约束放进代码,三条可验证的事实(每条都能在仓库里对着源码核):
- 三条入口共用一份判定链:面板「💾 保存」、
novel_write_chapter、REST 写入走同一套门禁代码(机审/账本冲突/内容门禁/细纲契约)——没有旁路;唯一的放行开关显式记审计。 - 模型无法自批提案:修订提案模型只能登记、不能应用——「应用」是面板里用户的主权动作(模型侧没有 apply 工具);细纲批准记录批准通道,看板统计「工具自批占比」(真机实证某连载本曾 168/168 全自批,正是大纲漂移的第一缺口)。
- 审计零 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 写作通病 | 本插件的硬约束 | 落点 |
|---|---|---|
| 设定/战力崩坏 | 事实账本:同章改值=冲突拒绝;世界书关键词自动注入 | 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%、或连写 |
…

