Releases 已收录于 npm MCP Registry Glama

文风,可量化

21 个工具,将「这一章与原著不一致」转化为可对照的量化指标。
全部推理在本机完成——无 token 消耗,正文不外传。
出错时还能自己拿到一份 可安全分享的诊断报告——顺带体检书库根、数据目录、语义引擎与开关状态;只含元数据,不含正文,可直接贴进 issue。

$ dsh plugin --profile web add dsh-novel-writer
21
个工具
6
维文笔基线
12
维氛围光谱
24MB
本地中文模型
0
token 消耗

适用场景

写作流程中的六类典型问题

每一项均对应明确的工具输出。本插件不代写正文,仅对既有稿件进行量化测量。

续写章节与原著文风存在偏差

文笔六维基线:从句法复杂度、修饰密度、抽象度、动作密度、不确定性、留白指数六个维度计算原著的 μ±σ 基线,新章逐维对照,偏离项以 ⚠ 标注。基线范围可按书指定:默认取全书,也可只取你认作标杆的那几章(例如你亲手写的前 30 章)——正在检查的那一章永远排除在外。

文风确有变化,但难以定位到具体维度

风格自检:输出与全书其他章节的风格指纹相似度及偏差清单(句式配比、句长分布、主导情绪变化),并附三条原著锚段供逐句比对。

调用在线模型进行文本分析会产生持续费用

全本地推理:约 24MB 中文语义模型随包分发,语义检索与情感量化均在本机 CPU 完成,无 token 消耗。

伏笔埋设后遗漏回收

伏笔登记表:以 add / list / scan / done 维护状态,自动记录每条伏笔被提及的章节,未回收项持续保留在清单中。

人物设定与既有章节相互冲突

设定五张表与连贯性审计:人物、地点、道具、时间线、世界观用语规范五张表,配合衔接、OOC、大纲走偏三路审计。

分析结果可读性不足,难以据此修改

结构化数据与原文引用:每条结论均附其所依据的原文片段,可直接用于编辑沟通或存档留证。

能力概览

21 个工具,覆盖设定至成稿的完整流程

测量与判断分离:插件仅输出测量数据,不生成风格结论;判断结果可回传存盘,用于保持续写一致性。将光标停留在任一能力项上约 1 秒,可展开详细说明。

文笔六维基线

以原著为基准建立可复用的写作标尺,用于续写与原创过程中的自我校准。

  • 句法复杂度
  • 修饰密度
  • 抽象度
  • 动作密度
  • 不确定性
  • 留白指数
  • 基线范围(按全书 / 按部分)
用途
为整部作品建立统一的度量标准,使续写章节可与原著的统计特征直接比对。
度量项
句法复杂度、修饰密度、抽象度、动作密度、不确定性、留白指数,逐章统计后归总为全书 μ±σ 基线带。
基线范围
按书指定基线取哪些章:默认按全书(=旧行为),也可切按部分、只用勾选的标杆章(例如你亲手写的前 30 章);正在检查的那一章永远排除,勾中的章少于 3 章时容差自动放宽到至少 ±25%。自检、开写包、改稿台、风格画像与建章共用同一范围。
输出
基线带,以及新章逐维对照结果(带内 ✓ / 出带 ⚠)。容差可按维度自定义,推荐值为原著章节波动的 1.5 倍 σ。

风格自检

定位新章节与既有内容之间的具体差异,而非仅给出「相似或不相似」的结论。

  • 规则与语义双维度
  • 偏差清单
  • 原著锚段
用途
在定稿前定位风格漂移的具体来源,避免仅凭阅读印象反复修改。
方法
规则统计与语义向量双维度比对,覆盖句式配比、句长分布与情绪走向。
输出
风格指纹相似度、可执行的偏差清单,以及三条原著锚段(对话 / 心理 / 描写各一条)供逐句对照。

本地语义检索

以自然语言检索全书相关段落,适用于线索回溯与设定核对。

  • 本机 CPU 推理
  • 语义风格距离
  • 隐性情感载体
用途
回忆某条线索出现在哪些章节,或核对同一意象在不同章节的写法是否一致。
实现
bge-small-zh-v1.5 量化模型(约 24MB)随包分发,懒加载,索引缓存在 .novel-writer/embedding/。
输出
按语义相关度排序的段落列表,含章节定位与相似度分值;模型不可用时自动回退纯规则模式。

氛围光谱 12 维

量化全书或单章的氛围分布,用于核对预期基调与实际文本是否一致。

  • 12 维强度
  • 证据词可追溯
  • 题材联动
维度
噩梦感、焦虑压抑、温馨治愈、甜宠日常、催泪虐心、黑暗残酷、悬疑神秘、热血激昂、荒诞无厘头、孤独疏离、文艺唯美、情欲暧昧。
方法
由证据词统计驱动,每个维度均可追溯至具体章节,非模型主观判断。
输出
各维度强度与支撑证据;带题材标签的作品可结合题材基线一并参考。

情感净化与量化

区分表层情绪词与实际情感走向,识别复合情绪表达。

  • 九类句式
  • 情感曲线
  • 矛盾指数
用途
排除作者用词习惯造成的干扰,还原文本实际的情感走向。
方法
强 / 弱情绪词分级与污染源检测,Valence 滑动窗口计算方差 V、斜率 Δ 与矛盾指数 C。
输出
情感曲线、预警项,以及隐性情感所依附的意象载体。结论不可采信时(高密度成人向内容 / 感官描写,或全文零情感词命中,或没有可用的 clean 情感计数)会明确标 level: unknown 与 reliable: false,并给出原因,不再给一个没有警告的顶格结论。细节密度按 v7.0.0 口径输出(词表已去噪:「一点」「痛苦」这类虚词不再计入),同一章的新旧数值不可直接比较。

伏笔与设定管理

集中管理伏笔状态,以及人物、地点、道具、时间线与世界观用语规范。

  • novel_plot
  • novel_settings
  • novel_summary
伏笔
以 open / done 维护状态,scan 可扫描全书自动记录每条伏笔被提及的章节。
结构视图
action: "graph" 对全书做跨章计算:伏笔生命周期与埋设距离、人物出场矩阵与连续缺席(≥ 5 章)、线索活跃度与最大空档、时间线登记顺序核对、大纲方向行对照。只读,不写盘。
设定
人物、地点、道具、时间线、世界观用语规范五张表按类别增删改查,并可自动判断作品的文化基准(东 / 西 / 混合)。
摘要
章节摘要按章管理,供长篇续写时快速回忆前情。

连贯性审计

在成稿前后排查跨章节的一致性问题,三路检测并行。

  • 衔接
  • OOC
  • 大纲走偏
  • 原文引用
衔接检查
检测时间硬跳、语义距离、人物延续与钩子承接四类问题。
OOC 检测
对照角色情绪基线,标记偏离既有性格的段落。
大纲走偏
比对大纲方向行与正文关键词的重合度。
输出
问题清单与对应原文引用。输出体积由内部上限控制:候选章节列表最多 5 条,数字口径候选最多 20 条。本工具没有 brief 参数(该参数属于句式分析与风格画像两个报告工具)。

开写包

把「动笔前需要读的一切」装配成一次调用,从结构上消除漏读。

  • 承接口
  • 未回收伏笔
  • 六维基线
  • 禁用清单
用途
续写一章之前,一次拿到上一章结尾原文(承接口)、上一章钩子、本章大纲方向行、应出场的人物卡、未回收伏笔及埋设距离、世界观禁用词、全书六维基线、原著锚段与句式骨架。
方法
只读装配:材料来自既有的伏笔表、设定表、创作资料与分析缓存,不新增任何测量口径,六维基线复用分章测量缓存(长书首次调用仍需读全书算一遍)。
输出
材料字段 + 三段式计划(上一章状态 → 本章目标 → 检查清单)+ 降级说明。chapter 默认「下一章」,文件尚未创建也可调用;材料缺失时返回空值并说明原因,绝不报错。

改稿台

把风格偏差变成按优先级排好的待办清单,改完可复测。

  • 段落定位
  • 严重度排序
  • 复测三态
用途
不再自己把「数据」组织成「行动」:直接拿到带段落行号的待办清单,改完还能复测。
方法
复用风格自检的测量结果(句式偏离、情感过直、抽象度过高、留白异常、禁用词、语用不符、衔接缺失、伏笔未回收),按严重度降序、改写代价升序、行号升序排序。
输出
每项含类型、原文定位与节选、现值与目标区间、可照改的原著锚段,以及一句改写方向;action: "verify" 给「已回到带内 / 仍偏离 / 新增偏离」三态。
边界
只给改写方向,不生成改写后的正文句子——正文仍由作者完成,插件不做替代。

原创模式与创作资料

从零开始创作时,先确立设定再推进正文,避免剧情跳跃与角色走形。

  • 多书独立设定库
  • 钩子记录
  • 创作状态卡
流程
创作设定 → 剧情大纲 → 钩子记录,按 10 / 20 / 30 章动态分批推进。
创作设定
世界观、角色、禁忌、主线、题材与额外要求,留空则由模型自行决定;多部作品各自独立。
输出
位于 novels/创作资料/<书名>/ 的资料库与创作状态卡。

侧边栏开关面板

按需启用工具与功能,控制分析范围与资源占用。

  • 总开关
  • 分组开关
  • 运行状态
开关
总开关、21 个工具的分组开关与 10 项功能开关,均可独立控制。
入口
v5.2.0 起走 DSH 官方席位:入口是左栏主导航区的一行(就在「插件」「任务看板」旁边),面板则是主栏的全局面板——行盒子、选中态、折叠提示、深浅主题全由宿主负责;老版本宿主自动回退旧的侧栏挂载方式。
外观
v5.5.0 起按官方设计体系统一:全部颜色改为 --dsw-alias-* 语义 token(不再自带色值),边框走官方 0.5px 发丝线,圆角走官方 R4/R8/R12/R16/R20/R28 尺度,开关与分段控件改用官方 UI primitives,设置卡片走官方卡片材质——浅色、深色、跟随系统三种主题都与官方界面同源。
随后又按官网式重构收敛了一轮:强调色统一为 DeepSeek 蓝(state-business-primary,源自 deepseek-500;brand-primary 实为近黑,不能当强调蓝用),主面板重排为「品牌光晕头部 + 分区 kicker + 图标卡 + 状态 pill」,内容卡由描边改为软阴影与悬停抬升,二级页标题与按钮家族统一,各级页面宽度恒定一致。
v6.1.0 沿用重构后的界面:源码分块 + 构建链装配(构建失败不写盘)、6 个统一组件与单一行模式(PreferenceRow)、分组卡片贯穿全部开关页、19+5 枚线图标、阈值 slider 辅助输入、页面级 push-pop 过渡动画(零 state / 零 hook,本版修复席位声明时序与重复启用问题)。
v6.3.0 沿用同一套界面:词表面板的三层视图(合并 / 本书 / 全局)改用官方分段控件,表单与列表改用与其它面板一致的组件——纯换皮,交互与数据契约不变。
v6.7.0 面板视觉改版:删掉每页的大 Hero 卡与子页的蓝色胶囊标题,主页只在标题下留一行副标题;分区标题改成 12px 灰色小标签;开着的开关不再整行变蓝、也不再贴「已开启」(开关本身就是状态);工具 ID 与参数退出主文案,只写「对你有什么用」;文件路径、数据目录与 state.json 统一收进页面底部的「存储位置」折叠区;标题、按钮与分组名不再使用彩色 emoji,改为 52 枚线性图标(每个工具行一枚专属图标);容差行不再带 slider,每维只留「低于 / 高于」两个百分比输入框与 ? 说明。功能面完全不变(8 个视图 / 21 个工具 / 后端路由零改动),设计规格全文见仓库内 tools/UI-REDESIGN.md(16 KB)。
状态
页面底部的「存储位置」折叠区显示数据目录占用与开关状态文件 state.json;首页「功能与工具」的「语义模型」一行显示语义引擎运行状态,便于判断是否需要重建索引。
附加
首页「写作资料」卡底部一行书库概况(「书库 N 部 · M 章 · X 字」,点开是每本书的章数、字数与「7 天未动」标记);「记录与维护」里的体验演示(内置示例,不写入磁盘)、报告历史(按书分组)与诊断报告。

报告示例

实际输出内容

以下均为真实输出,取自示例书《雨夜灯》(全书 1329 字)。

novel_style_report
# 风格画像报告 · 六维测量
全书 1329 字:六维基线
  μ=句法复杂度 2.3   修饰密度 35.6   抽象度 0.5
    动作密度 101.7   不确定性 2.1    留白指数 7.0
推荐容差 25% / 35% / 100%…

# 段落结构
共 34 段(对话 5 / 心理 0 / 混合 15 / 叙述 14)
novel_style_check
# 新章与全书基线对照
相似度 0.946 · verdict: high

偏差清单:
  心理占比偏高 · 对话占比偏低 · 短句占比偏低
  主导情绪由 anger 变为 joy

fixAnchors:3 条原著锚段
  (对话 / 心理 / 描写各一条,供逐句对照修正)
novel_semantic_search
# 自然语言查询 · 本地向量检索
查询「与那盏没有点的灯有关的段落」

  第02章.md  0.619  对街那盏灯,亮了。
  第01章.md  0.593  阿澈的目光越过老周的肩膀,
                    落在对街那栋小楼上…

# 无关键词亦可命中;索引缓存于 .novel-writer/embedding/
novel_continuity_check
# 连贯性审计 · 衔接 / OOC / 大纲走偏
⚠ 人物缺场:老周 已连续 3 章未出现
⚠ 数字口径:第03章「三年前」与第07章「五年前」冲突
✓ 钩子承接:第05章结尾钩子已在第06章开头承接

# 每条结论均附原文引用,可直接定位

氛围光谱

十二个维度,量化全书的氛围分布

每个维度均由可追溯的证据词支撑,不依赖模型的主观判断。

  • 噩梦感
  • 焦虑压抑
  • 温馨治愈
  • 甜宠日常
  • 催泪虐心
  • 黑暗残酷
  • 悬疑神秘
  • 热血激昂
  • 荒诞无厘头
  • 孤独疏离
  • 文艺唯美
  • 情欲暧昧

示意图:柱高表示该维度的证据强度。正式报告中每个维度均附支撑词语及其出处章节。

本地化设计

未完成的稿件,不应上传至第三方

文本分析不以上传稿件为前提。

本插件在线 AI 写作工具通用文本分析库
正文是否离开本机否是视实现而定
费用0(本地推理)按 token 计费需自建
中文小说专用是通用否
风格基线(μ±σ)提供少见无
与 DSH 集成21 个工具 + 官方席位与统一面板无无
非 DSH 用户可用可以(MCP)可以需自行封装

权限边界

文件系统

仅读写所指定的书库根目录 novels/、数据目录 <root>/.novel-writer/、插件自身的开关文件,以及状态目录旁的事件日志 logs/events.jsonl(以元数据为主:时间 / 工具名 / 书名 / 章号 / 状态 / 耗时 / 计数 / 路径 / 错误 code;但自由文本字段(错误消息等)经收敛后至多保留一句(≤160 字),所以本机日志里可能出现被错误消息回显的输入片段——该文件不出本机)。

外部网络

唯一的外部请求为检查新版本所用的 GitHub Releases API:3 秒超时、24 小时缓存、失败静默降级,请求不包含任何稿件内容。

本地 HTTP

在 DSH Web GUI 内注册 8 条路由(含诊断 diagnose),仅回环地址可访问;局域网访问默认拒绝。

子进程与生命周期脚本

无子进程(唯一例外为调用系统文件管理器)。无 preinstall / postinstall / prepare 脚本。

安装部署

两种安装方式,或一行 npx 命令

运行环境要求 Node ≥ 22.3。安装完成后重启应用:DSH 0.2.0+(含桌面端)会在左栏主导航区多出一行「写作助手功能」(与「插件」「任务看板」同排),点开是主栏的全局面板;更早的宿主则挂成会话区面板。

插件形态,提供 21 个 novel_* 工具与侧边栏面板(DSH 0.2.0+ 走官方席位:侧栏一行 + 主栏页面)。

$ dsh plugin --profile web add dsh-novel-writer

直接从仓库安装 main 分支的最新版本,适用于需要跟进开发进度的用户。

$ dsh plugin --profile web add github:siweina/dsh-novel-writer#main

包内自带 stdio MCP 服务器(mcp/server.mjs),可将 21 个工具原样提供给 Claude Desktop、Cursor 等任意 MCP 客户端。该进程在本机运行,无需服务器与网络连接。

$ npx -y -p dsh-novel-writer dsh-novel-writer-mcp --root /你的小说库路径
{
  "mcpServers": {
    "dsh-novel-writer": {
      "command": "npx",
      "args": ["-y", "-p", "dsh-novel-writer", "dsh-novel-writer-mcp",
               "--root", "/你的小说库路径"]
    }
  }
}

自 v4.3.0 起,MCP 侧工具参数中的 root 必须位于启动参数 --root 指定的书库根目录之内;novel_import 的 src 默认同样限根内,确需导入外部目录时需显式添加 --allow-external-src。

快速上手

$ mkdir -p novels/我的小说   # 将章节文件放入该目录:第01章.md、第02章.md …

随后在对话中执行以下指令即可生成首份报告:「使用 novel_style_report 为我的小说生成风格画像」。

常见问题

常见问题解答

是否调用在线模型,是否产生 token 消耗?

不调用任何在线大模型,token 消耗为零。句式、情感、意象与氛围光谱均由本地规则统计与本地 ONNX 推理完成。唯一的外部请求为检查新版本所用的 GitHub Releases API,该请求不包含任何稿件内容。

是否支持中文以外的语种?

本工具面向中文小说设计。句式、情感、意象等核心能力以及内置语义模型均针对中文语料构建与调优,其他语种的支持不在当前范围内。

稿件是否会上传?

不会。全部分析在本机 CPU 完成,模型随包分发。插件仅读写所指定的书库目录及其自身数据目录;MCP 服务器默认进一步限制工具参数只能访问书库根目录内的路径。

出错时怎么排查?日志里会有我的稿子吗?

不会。插件会把每次工具调用记入本机的事件日志(~/.dsh/dsh-novel-writer/logs/events.jsonl,512 KB 轮转、保留 3 份),但日志走的是字段白名单:以元数据为主(时间、工具名、书名、章号、状态、耗时、计数、路径与错误 code),自由文本字段(错误消息等)经收敛后至多保留一句(≤160 字)——所以本机日志里可能出现被错误消息回显的输入片段(例如某个工具报错时把你的词条名回显了一遍),但日志文件不出本机。需要排障时用 novel_diagnose(或在面板的「诊断报告」页一键复制诊断包)拿到一份中文报告;任何离开本机的内容(报告、诊断包、诊断路由)都走分享层——连错误消息这类自由文本都会被整体剔除,因此可以把报告直接贴进 issue,无需先检查里面有没有稿子;但不要直接附上本机日志文件。完整说明见 novel_diagnose 技术文档。

是否具备代写正文的功能?

不具备。本工具不替代作者写作,而是对既有稿件进行量化:基线偏离幅度、句式配比变化、未回收伏笔数量、人物设定一致性与连贯性问题。写作仍由作者完成,工具提供的是可对照的数据。

不使用 DSH 时,能否在其他 MCP 客户端中使用?

可以。包内自带 stdio MCP 服务器,可将 21 个工具提供给任意 MCP 客户端,一行 npx 命令即可启动,无需常驻服务。