- ホーム
- プラグイン
- ワークフローと自動化
- dsh-novel-agent
dsh-novel-agent
good-saltfish/dsh-novel-agent
Right-sidebar novel studio that treats a chapter as a pipeline with checkable artefacts instead of one long prompt: scaffold a project, inspect the exact context pack a chapter gets, generate 2-6 parallel candidates and keep the one you pick, then run chapters in sequence with per-chapter progress on disk so it survives an engine restart. Length band, cross-chapter Jaccard and drift ratio are enforced in code rather than by model self-grading; rejections come back as repair evidence for up to two rewrites. AI-fingerprint metrics are reported against a 3956-chapter human baseline but never block, because the distributions overlap. Ships 7 agent tools. The writing engine is a separate Python package that the plugin installs on first use. Needs Python 3.10+ on PATH (or a path set in the plugin settings).
インストール
dsh plugin --profile web add github:good-saltfish/dsh-novel-agentREADME
dsh-novel-agent · 小说工坊
在 DeepSeek Harness 右栏里写长篇:新建项目 → 生成骨架 → 看上下文包 → 生成一章 → 过质量硬门 → 连写续跑。 模型不写在插件里,直接用你 DSH 里已经配好的供应商;引擎是本地 Python,首次缺包会自动装上。
它解决什么
AI 写长篇,坏在前后不一致和越写越飘,不是坏在词句。所以这个插件不做「一键生成十万字」, 它做两件浏览器里很难自己做到的事:
- 每章只有一个输入。正文生成只读 ContextPack(定位 / 主角 / 金手指 / 本章细纲 / 前章摘要 / BM25 检索命中 / 未回收伏笔 / 目标字数)。没有第二份状态,也就没有「以哪份为准」的歧义。
- 闸门是代码,不是模型自评。字数带、跨章重复度、漂移比、AI 指纹密度全在 Python 里量, 量不过就把证据回灌给模型重写,最多两次。判据常量来自人类 99 本书 3,956 章的分布,不是拍脑袋。
拆书和创作共用同一个引擎:拆出来的骨架、人物卡、伏笔账本,可以喂给创作项目当参考。
功能
| 面板 | 做什么 |
|---|---|
| 项目列表 | 列出工作区里的书,显示已写章数与游标;新建 / 删除 / 导入参考书 |
| 设定稿导入 | 新建时贴一篇 Markdown 设定稿(人物小传、世界观、章节目录都行),模型拆成定位 / 卷纲 / 主角 / 金手指 / 细纲 / 设定库。先预览再落盘;稿子里没写的东西不编,必填项缺失的部件被拒收并逐条说明原因;稿子里已有章节目录时不再让引擎重新生成 |
| 骨架 | 一键生成题材定位、卷纲、细纲(1–999 章)、主角、金手指。只有细纲是必需的,其余四个空着就是「这本不需要」,不是错误;每行都会说明不填会怎样 |
| Markdown 视图 | 项目页可切「面板 / Markdown」。Markdown 把定位、卷纲、主角、金手指、设定库、细纲(含节拍与伏笔)、已写章节一次摊平,「复制全部」直接进剪贴板;只读,改东西切回面板 |
| 设定库 | 确认过的世界观条目(世界规则 / 势力 / 人物 / 地点 / 道具 / 力量体系)按类型分组展示。它们是参考,不强制写进每一章,整本不要也能写 |
| 细纲编辑 | 项目页展开「细纲」直接改:每章标题 / 核心事件 / 开篇钩 / 章尾钩,每拍场景 / 在场人物 / 事件 / 伏笔,可加拍删拍、加章删章、上下移动。章号按位置自动重排(引擎要求 1..N 连续),保存前先本地拦空细纲与缺标题 |
| 基础信息 | 「改基础信息」展开书名 / 题材 / 一句话前提。书名受引擎限制:PATCH /api/projects/<id> 只认题材/前提/参考书,title 会被静默忽略,所以界面会如实说「书名没改成」而不是谎报成功 |
| 角色卡 / 剧情线 | 角色卡合并骨架主角与设定库「人物」类条目;剧情线把细纲节拍摊平成「第几章·场景|事件·在场人物」并标出伏笔。默认收起 |
| 章节页 | 生成一章:正文 + 结构化自检(钩子强度 / 信息密度 / 与细纲偏差);编辑保存(脏标记、去空白字数、还原、放弃前确认);查看指纹报告 |
| 模型自评 | 章节页顶部展示引擎写进 ManuscriptRecord.review 的自评:钩子强度、信息密度、是否按细纲推进、偏离了哪几处。只做记录,不自动触发重写;rule: 开头的会标成「规则判定」 |
| 设定候选 | 按当前前提生成一批设定条目(世界规则 / 势力 / 人物 / 地点 / 道具 / 力量体系)与金手指提案。生成不写盘,确认后才入库,同名同类型不覆盖 |
| 细纲候选 | 为已写好细纲的章补节拍(场景 / 人物 / 事件 / 伏笔)。确认是逐章整章替换节拍,候选没提到的章不动 |
| 笔法体检 | 拿这一章的节奏分布比 67 本真实网文 5,829 章的实测分位:破折号密度、身体外化密度、分句均字、单句段占比、段均句数。越界就给出原文例句 |
| 并行候选 | 同一章一次生成 2–6 版,摆在一起比,挑中哪版才落盘(候选只写 candidates_chNNN.json,不碰正文) |
| 连写 | 区间连写,后台任务 + 轮询进度,可暂停(暂停只置标记,不打断正在写的那章) |
| 运行台账 | 每章的尝试次数、字数、耗时、过了哪几道门、为什么被退回 |
| 导出 | 「导出 EPUB / 导出 Word」一键下载整本。只导出盘上真有正文的章;浏览器按响应头里的中文书名命名文件;一章正文都没有时按钮禁用并说明原因。面板与 Markdown 视图下都能点 |
| 设置 | 工作区、Python 解释器(非常规安装位置时填)、模型单独指定(只影响本插件,不动全局) |
Agent 工具 7 个(在对话里直接使唤):novel_projects_list、novel_project_create、
novel_accept_skeleton、novel_context_pack、novel_chapter_generate、novel_chapters_run、
novel_chapter_check。
安装
# 插件市场里点安装,或者:
plugin_manager install_bundle "dsh-novel-agent"
第一次打开面板,如果本机没有写作引擎,插件会自动装(pip install novel-deconstruct),
面板上显示装到第几步,装完自己接上,不用再点重启。
会失败的情况都写在面板上,且都给了下一步:
| 报的错 | 真实原因 | 插件怎么做 |
|---|---|---|
SSL: EOF occurred in violation of protocol | Windows 注册表里登记了一个已经关掉的代理,pip 每个 HTTPS 请求都连到没人监听的端口 | 第二轮自动加 NO_PROXY=* 绕开系统代理重试 |
Permission denied / WinError 5 | Python 装在 C:\Program Files 下,没有写权限 | 第二轮自动改 --user 装到用户目录 |
Could not find a version | 网络连不上 PyPI | 先绕代理重试,仍不通就改从 GitHub Release 下载 wheel 安装 |
装完仍 找不到 ndecon | pip 与 python 不是同一个环境(py -3 与 python 常指向不同环境) | 提示在设置里填解释器绝对路径 |
最多三轮:原样装 → 按失败类别降级(--user 或绕代理)→ PyPI 实在不通时换 GitHub 下的
同一份 wheel。绝不自己换镜像源——换源是供应链决定,不是插件该替用户做的;换到官方
GitHub Release 只是换传输通道,装的还是同一个包。
前置条件
- Python 3.10+,且
python -m pip --version能跑 - 真正的模型要你自己配:面板顶栏「模型」页选供应商填 key,或让它跟随 DSH 当前模型
- 不配模型也能用:内置 Fake 供应商离线跑通全流程,用来先看结构
数据在哪
- 书稿:
%APPDATA%\dsh-novel-agent\workspace(macOS~/Library/Application Support/, Linux~/.config/),可在设置里改到任意目录 - 日志:同目录
logs/engine.log(单文件封顶 2 MB) - 删插件不会删书稿。插件只在工作区里读写,卸载不碰你的目录
面板只监听 127.0.0.1,启动时带一次性随机令牌;令牌每进程一个、不落盘。面板不回绝对路径,
错误文案里的本机目录会被替换成 <路径>。
质量硬门(可核对,不是自夸)
| 判据 | 阈值 | 依据 |
|---|---|---|
| 单章字数 | 2600 ±15% | 人类基线中位数 |
| 跨章重复度(Jaccard) | ≤ 0.30 | 同一段落复读会越过 |
| 章间漂移比 | ≤ 2.0 | 对人类 3,956 章误杀 0.19% |
| AI 指纹(破折号 / 句号密度 / 比喻密度) | 人类 p95 | 单章只报告不拦(人类与 AI 分布重叠),跨章才拦 |
为什么单章指纹只报告不拦:人类 99 本书 3,956 章的分布和 AI 完全重叠(破折号最大 30、 句号密度最大 329),单章拿它当硬门会把人类章节判成 AI。这条是拿数据推翻的,不是设计偏好。
许可
MIT。引擎 novel-deconstruct 是 Apache-2.0。