novel_books
列出小说章节库中的全部作品(novels 文件夹下的子目录),含章节数与总字数。**只读**。
root
io.github.siweina由 GitHub 帳號 siweina 發布v7.1.0更新於 Nov 8, 2026
Offline 21-tool Chinese web-novel style, plot and continuity audits, plus per-book cleanup.
在本機離線執行的 MCP 伺服器,替中文網路小說的文風、劇情與連貫性做檢查,並支援依書清理。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
參照 儲存庫 中的啟動說明。
English | 中文
[npm version] [npm downloads] [License: MIT] [Node] [DSH] [GitHub stars] [siweina/dsh-novel-writer MCP server]
21 个工具,覆盖「动笔前取材料 → 写完量化自检 → 改稿按优先级复测 → 跨章结构体检 → 收尾清理与诊断」整条流程。 动笔前一次调用取齐 16 项材料(漏读一样就漂移);改稿不再只丢给你一堆数字,而是按严重度排好的待办(带原句行号、当前值与目标值、原著锚段,只给方向不代写);跨章层面能查「线断了、人丢了、伏笔忘了」。 句式 / 情感 / 语义全部在本地算:24MB 中文模型随包分发,零 API 花费、正文不出本机。 为 DeepSeek Harness(DSH)打造;同一套能力也可作为 MCP 服务器给 Claude Desktop / Cursor 使用。
官网 · 技术文档(21 个工具的参数与示例) · 安装 · 写作流程 · 60 秒上手 · 看看输出 · 21 个工具 · MCP 服务器
完整版本变更见 CHANGELOG.md。
全程本地、只读优先:开写包与结构视图不写任何文件;改稿台只写自己的清单文件、从不改正文,也不代写正文;语义检索与情感分析零 token。
方式一:npm(推荐)
(需要指定配置时加 --profile <名称>,如 --profile desktop。)
方式二:从 GitHub 安装
方式三:MCP(不用 DSH 也能用) —— 见 MCP 服务器
要求 Node ≥ 22.3。安装后重启 DSH(桌面端 / Web),左栏主导航区出现「写作助手功能」入口(DSH 0.2.0+ 官方席位;更早宿主自动回退旧挂载)。
然后在对话里依次说(这就是完整的一章):
novel_chapter_brief 一次给齐 16 项输入(等于替你跑了 6~8 个工具,且不会漏读)novel_new_chapter 建文件时还会附上基线 μnovel_style_check 给出相似度、偏差清单与六维对照novel_fix_plan 给出按优先级排好的待办;改完再 verify 复测三态想让基线对着你亲手写的那些章、而不是全书?面板「风格基线」里把「范围」切到 按部分、在「挑选章节」里勾出标杆章,再点「保存范围」即可:上面这条链上的自检、开写包、改稿台与风格画像都会改用这几章当基线(按书生效;默认「全书」=旧行为,不动它就跟以前完全一样)。建章(
novel_new_chapter)时附的 μ 摘要与锚段用的是同一份范围。
只想先看看家底,就说 「用 novel_style_report 给我的小说做一次风格画像」:
开写包(novel_chapter_brief,动笔前一次调用):
改稿台(novel_fix_plan,把诊断变成排好序的待办):
风格自检(新章 vs 全书基线):
语义检索(自然语言,本地向量):
段落结构:共 34 段(对话 5 / 心理 0 / 混合 15 / 叙述 14)
致非中文用户:本插件为中文小说分析写作而设计——句式、情感、意象等核心能力以及内置的语义模型,全部针对中文语料构建与调优。在深耕中文的同时兼顾英文等其他语言,确实超出了我目前的能力范围。若因此给您带来不便,我深感抱歉,恳请谅解。
novel_chapter_brief 开写包——动笔前一次调用取齐材料(上一章承接口 / 本章方向 / 相关人物 / 待回收伏笔 / 用语规范 / 风格基线 / 锚段与骨架 / 禁用清单 / 开写清单,两档 budget:compact / full),取不到的材料进 degraded 并说明原因,只读不写盘;novel_fix_plan 改稿台——把风格诊断变成按优先级排好的待办(原句行号定位 + 当前值与目标值 + 原著锚段 + 改写方向),plan / verify / mark 三态复测,只给方向、不生成正文;novel_plot { action: "graph" } 结构视图——伏笔埋设跨度 / 人物连续缺席 / 剧情线空档 / 时间线顺序 / 大纲对照。另有场景化提示词(general / writing / revising / auditing / setup,general 即旧行为)。.novel-writer/style-reports/),续写保持风格一致。novel_semantic_search 自然语言搜全书语义相关段落(带章节定位),语义级风格对比、语义隐性情感,懒加载 + 自动回退。complexity.level 标为 unknown,并附 reliable: false 与 reliabilityNote 说明原因,渲染文本里也会单独一行写出这句警告;score 保留数值便于跨章对比。成人向内容 / 感官描写密集的文本,情感维度本就不适用,建议改用节奏、爽点、对话密度等维度。PreferenceRow 承载,开关本身就是状态(开着的开关不再整行变蓝、也不再贴「已开启」),描述只写「对你有什么用」,工具 ID 与参数不进主文案。颜色全走 --dsw-alias-* 语义 token(三主题与官方同源)、控件用官方 UI primitives、DeepSeek 蓝只留给「唯一主操作」与需要注意的状态,各级页面等宽。lib/client.js 渲染层重写、视觉系统 CSS 4.6 KB → 19.4 KB、52 枚线图标(每个工具行一枚专属图标),文件路径 / 数据目录占用 / state.json 统一收进页面底部的「存储位置」折叠区,首页「功能与工具」的「语义模型」一行显示引擎状态;功能面完全不变(8 个视图 / 工具集 / 后端路由在 6.7.0 内零改动),设计规格见仓库内 tools/UI-REDESIGN.md。--check 校验源与产物一致)、统一组件(PreferenceRow 单一行模式、GroupCard 分组卡、StorageDisclosure 存储位置折叠区等)、页面级 push-pop 过渡动画(零 state / 零 hook)。novel_style_report 输出基线带,novel_style_check 对照新章偏差(带内 ✓ / 出带 ⚠);面板「风格基线」页的「文风六项指标」分区可自定义每维 ±% 容差(每维一行:指标名 + 「低于」「高于」两个百分比输入框;推荐值 = 原著章节波动的 1.5 倍 σ,自动取整、限 ±10%~100%;输入框留空即用推荐)——原创/续写时主题自由、写法保持在基线带内。<书库根>/.novel-writer/baseline/<书名>.json),换书互不影响。novel_continuity_check 扩展——①衔接检查(chapter 参数:时间硬跳/语义距离/人物延续/钩子承接四路检测,带原文引用)②OOC 检测(ooc 参数:角色情绪基线偏离)③大纲走偏(outline 参数:方向行 vs 正文关键词重合);报告工具支持 brief 精简模式。7 天未动,以及每本书旁的删除整本书…快捷入口);首页第一个分区里还有一行「删除整本书」——点进去是独立页面:选书 → 看清清理清单 → 勾选执行,页面下方就是回收站(恢复 / 彻底删除)。原来独立的「书库统计」卡已并入书库概况这一行;「记录与维护」里有体验演示(内置示例不落盘跑六项文风指标,不保存任何内容)、报告历史(已保存的句式分析与风格报告,按书分组,每份都可单独删除——删除走回收站,仍可恢复)与诊断报告(统计窗口 + 一键复制诊断包,用于贴进 issue);错误提示带解决步骤;工具说明压缩省 token。rawWriting,默认关闭,6.9.0 重做):一个写作约束开关,不是模型能力开关;开启需双重确认 + 承诺输入。开启后分三层工作——动笔前:开写包多出【非净化模式·目标带】(原著「把场面绕过去」的写法密度,处/千字,启发式;本章目标带;一条硬约束:留在场景里 / 细节密度对齐原著 / 不用省略号或跳场带过 / 不用总结代称 / 不插评论与免责);动笔时:模型若在开头就自我刹车(「这一段我不展开」这类),llm/stream 那一层会丢弃这次输出并只重试一次(重试只在系统消息尾部追加写作指令,不改你的输入);写完后:novel_style_check 给出「本章 X 处/千字 vs 原著 Y 处/千字」与一句结论(clean / new / similar / softer / much-softer / more-explicit)——干的是「有没有被绕过去」的核对,不是评分。已知边界:直白度量是启发式(只数明确的淡化写法);重试只一次且只认三类自我刹车特征;这一层依赖宿主 llm/stream,服务缺失时安静跳过并在日志留痕;效果取决于模型本身,插件不保证产出。每个工具的参数、返回结构与示例,见在线工具手册。
包里自带一个 stdio MCP 服务器(mcp/server.mjs),把 21 个工具原样暴露给任何 MCP 客户端,
例如 Claude Desktop、Cursor。它是跑在你自己电脑上的本地进程,不需要服务器、不需要联网、不需要常驻。
客户端配置示例(claude_desktop_config.json / Cursor mcp.json):
书库根目录优先级:--root > 环境变量 DSH_NOVEL_WRITER_ROOT > 当前工作目录。
细节见 mcp/README.md。
<书库根>/.novel-writer/:plots(伏笔)/ settings(设定)/ summaries(摘要)/ analysis(分析报告)/ audits(连贯性审计 + 改稿清单 fix-plan-*.json)/ embedding(语义索引)/ style-reports(风格画像)/ baseline(风格基线)/ lexicon(必用词表,_global.json 为全局层)/ trash(按书删除的回收站,<书>-<时间戳>/ + manifest.json)。
回收站不自动清理:trash/ 里的内容仍占磁盘(这正是"还能恢复"的代价),所以删书后面板的「数据目录」体积会变大而不是变小;确定不要了就用 novel_delete_book action="purge" 或手动删掉对应子目录。
事件日志不在这里:它写在状态文件旁——~/.dsh/dsh-novel-writer/logs/events.jsonl(受 DSH_NOVEL_WRITER_STATE 覆盖),512 KB 轮转、保留最近 3 份。之所以不放书库根:最常见的故障恰恰是"书库根不对",那时 .novel-writer/ 根本不存在或不可写,偏偏最需要留下证据。日志以元数据为主(时间 / 工具名 / 书名 / 章号 / 状态 / 耗时 / 计数 / 路径 / 错误 code),但自由文本字段(错误消息等)经收敛后至多保留一句(≤160 字)——本机日志里因此可能出现被错误消息回显的输入片段(实测:novel_lexicon 找不到词条时会把传入的词条名回显进 detail)。日志文件不出本机;要贴给别人(issue / AI)请用 novel_diagnose 的报告或面板「复制诊断包」——那条路走分享层,自由文本整体剔除。
运行时依赖(npm install 自动安装,均为公开包):
onnxruntime-web ^1.24.3 —— 本地 ONNX 推理(WASM 后端),用于语义检索与语义风格距离;@huggingface/tokenizers ^0.1.0 —— 中文分词(WASM);react ^18.2.0(浏览器端复用 DSH Web GUI 自带的 React,不额外打包)。本地模型:lib/models/ 随包分发 bge-small-zh-v1.5 量化模型(约 24MB,ONNX)与分词器
(tokenizer.json.gz,加载时解压)。全部推理在本机 CPU 完成,不上传任何文本。
权限与外部服务:
novels/ 与其数据目录 <root>/.novel-writer/,
以及插件自身的开关文件 ~/.dsh/dsh-novel-writer/state.json。例外一处:novel_import 的 src
按设计可以指向任意目录(用于把别处的旧稿导入书库),mode:"apply" + move:true 会删除源文件——
删改范围由调用方决定,请只在明确知道源目录内容时使用。例外仅此一处:MCP 服务器默认把这个 src
也限制在书库根内(见下方 MCP 一节)。ctx.skills 注册自带 novel-writing 技能,只读取包内
skills/novel-writing/SKILL.md,不写入任何技能目录、不需要改宿主配置;宿主没有 skills 服务时静默跳过。allowLanState 默认关闭,局域网访问默认拒绝。日志与诊断都在本机:事件日志写在
~/.dsh/dsh-novel-writer/logs/events.jsonl(512 KB 轮转、留 3 份),以元数据为主(时间 / 工具名 / 书名 / 章号 / 状态 / 耗时 / 计数 / 路径 / 错误 code),但自由文本字段(错误消息等)经收敛后至多保留一句(≤160 字)——所以本机日志里可能出现被错误消息回显的输入片段,该文件不出本机;
novel_diagnose 与面板「复制诊断包」走分享层,自由文本整体剔除后才输出(任何离开本机的内容都不含自由文本);分享层是默认行为
(readLogEvents 只有显式 forShare:false 才返回带自由文本的本地层,其余一律脱敏——隐私边界的默认值偏向"少给")。mcp/server.mjs):工具参数里的 root 必须落在启动时 --root 指定的书库根之内,
越界会被拒绝并回退;novel_import 的 src 默认也限根内,确需导入外部目录时用
--allow-external-src 显式放开。单行报文上限 4 MiB,超限整行丢弃;stderr 默认只记一行错误摘要,
不回显正文与堆栈(需要完整堆栈用 DEBUG=1);长任务可用 notifications/cancelled 取消。详见
mcp/README.md 第 0 节。api.github.com)检查新版本——3 秒超时、24 小时缓存、
失败静默降级;请求不含任何书籍内容。explorer / macOS open / Linux xdg-open),
以数组参数直调、不经 shell。失败边界:
ENOENT)才说「尚未初始化 / 未登记 / 尚未保存 / 无创作资料」;文件存在却读不出来(损坏 / 无权限 / 编码识别不了)时只说事实并给出路径与原因,并说明不必去 init——同时记一条事件日志,可用 novel_diagnose 查真因;scanChapters 里那句 if (!entry.isFile()) continue 会静默跳过它——该章从章表消失(novel_chapters 少一章)、novel_diagnose 的「读不出来的文件」计数为 0、novel_chapter_brief 的 degraded 里也没有「读取章节失败」。也就是这一条路径上「读不到」仍被讲成「没有」;遇到「章数莫名少了一章」时,先确认该书目录下是不是有一个叫章节名的目录;兼容范围:Node.js >= 22.3(engines.node);DSH >= 0.1.1-rc.2(dsh.engines.dsh)。
來源:README.md,提交 a343a3b
列出小说章节库中的全部作品(novels 文件夹下的子目录),含章节数与总字数。**只读**。
root列出某部作品的全部章节:章号、标题、字数、行数、更新时间。**只读**;若存在同章号多文件,列表末尾会给出撞号分组提示。
book必填root阅读某部作品的某个章节,返回带行号的正文(含字数统计)。可用 offset/limit 分段读取长章节。**只读**:不写任何文件、不改动任何数据。
book必填rootlimitoffsetchapter必填统计某部作品(或单个章节)中出现频率较高的关键词:中文相邻二字/三字词组与英文词(novel_keywords 输出不含单字)。
topbook必填rootchapter为某部作品创建新章节文件(默认自动取下一个章号)。可指定标题与初始正文。
book必填planroottitlechaptercontent开写包:一次调用装配出「写这一章需要的一切」——上一章结尾原文(承接口)、本章大纲方向、相关人物卡、待回收伏笔(含埋设距离)、世界观用语规范、六维风格基线、原著锚段与句式骨架、本章禁用清单与开写清单。只读不写盘(仅复用既有分析缓存)。**写新章前应先调它**,而不是逐个工具去翻。
book必填rootbudgetchapter必用词表:登记「某场景必须使用的专有名词 / 作者习惯用词」,让 AI 优先用表内词写作,而不是退回自己惯用的通用说法。两层存储(书级同名覆盖全局):全局层 _global 放跨书惯用词,书级层放本书专名。action:list=查看(默认合并两层)/ add=批量登记(terms 数组或 text 文本,一次可几百条)/ update=改单条(含改名 newTerm、单条停用)/ delete=删除(terms 指定,或 all=true 清空某层)/ import=文本批量导入(text=每行一条:`词` 或 `词|类型|场景|替身1,替身2|备注`,可用 replace=true 整层覆盖)/ scan=从本书正文提取候选词供挑选 / audit=成稿用词审计(必用词覆盖率 + 通用替身词命中的行号与原句,只读)/ export=导出词条 JSON / toggle=开/关某一层。字段:term 词条、kind 类型(专名/偏好词/称呼/场景词/口头禅/其他)、scene 适用场景(本章大纲方向行含该词时优先注入)、avoid 通用替身词(正文里出现它即等于没用必用词,审计据此定位)、aliases 等价写法(算命中)、note 用法说明、priority=high 高优先。**开关「必用词优先」(lexiconFirst)默认开启;开启且词表非空时,开写包会把它作为硬清单注入。**写完一章用 action=audit 复核。**职责边界(v6.4.0):audit 只审「必用词表」(覆盖率与通用替身词),与世界观禁用词(novel_settings category=worldview 的 bannedWords / speechStyle)毫无关系——看到「覆盖率 100%」不代表没有禁词命中;查禁用词请用 novel_continuity_check(不带 chapter 参数审全书,带 chapter 只审该章)。**
allbookkindnoteroottermtextavoidforcelimitqueryscene另有 11 個批量导入原稿件:扫描文件夹自动识别书名/章号并分组,可复制/移动到 novels/<书名>/ 分类存放(scan 预览 / apply 执行)。
src必填bookmodemoverootfilesrecursive句式模式分析:统计某部作品(或单章)的句式分布(陈述/环境/心理/对话/疑问/反问/感叹/祈使/省略留白九类)、句式排列规律(转移、高频模板、段首段尾、按章节的压缩节奏序列)、段落结构、句长分布、情感曲线、风格指纹与节奏建议,用于快速掌握作者的写作习惯、主观情感并参考其叙事节奏。【问「这本书是怎么写的」时用它】——它与 novel_style_check(问「我这一章写得像不像」)、novel_style_report(问「这本书是什么风格」)共用同一套引擎与缓存,三者是不同的问题、不是重复的工具。受 UI 开关控制,可先用 novel_sentence_config 查看状态。
topbook必填rootbrieffreshchaptermaxSentencescurveSegments查看或修改句式模式分析的开关状态:enabled(分析功能是否可用)、autoAnalyze(分析作品时是否主动使用)、systemPromptMode(系统提示词档位 off/brief/full)、promptScene(提示词场景 general/writing/revising/auditing/setup,决定完整档下注入哪一套流程)与 leanWorkflow(精简工作流:打开后只按需调用工具,省 token)。
toolsactionenabledfeaturesautoAnalyzepromptSceneleanWorkflowstyleTolerancecreationProfilecreationProfilessystemPromptMode风格自检:对比某章节与全书其他章节的风格指纹(句式分布/句长/情绪),输出相似度与偏差清单。【问「我这一章写得像不像全书」时用它】——要可执行的改稿待办请接着用 novel_fix_plan,要全书风格画像用 novel_style_report,要看写作手法用 novel_sentence_analysis。
book必填rootchapter必填改稿台:把风格诊断变成按优先级排好的待办清单——每条含原句位置(行号区间 + 原文)、当前值与目标值、可参照的原著锚段、以及改写方向。action=plan 生成清单 / verify 对当前正文复测(看哪些已回到带内)/ mark 标记单项(需 itemId + state)。**只给方向不给句子**:本插件不生成正文。
book必填rootstateactionitemIdchapter必填伏笔/剧情线登记表:维护某部作品的伏笔与剧情钩子(open 待回收 / done 已回收)。
idbook必填noteroottypeactionstatuschaptercontentprioritylocationspayoffCondition另有 2 個设定管理(五张表:人物/地点/道具/时间线/世界观用语规范),list/add/update/delete/scan 按 category 维护,detect 自动判断文化基准。
daybook必填namerootaliasbasiseventnotesowneractionritualstatus另有 11 個风格画像报告:聚合 6 维测量数据(指纹/词汇/题材/情感/氛围 12 轴/语义距离)供 AI 判断风格。【问「这本书是什么风格」时用它】——它给的是全书画像而非单章判定(那是 novel_style_check),也不是写作手法拆解(那是 novel_sentence_analysis)。
book必填rootbriefactionaiJudgment章节摘要(模型生成、插件存储):读摘要回忆剧情、避免重读。add/update/get/list/delete 按章节管理。
book必填rootactionchaptersummarykeyEventskeySettings连贯性审计:对照设定表扫描全书,输出矛盾候选(数字口径/人物缺场/别名/设定重复/用语与语用冲突)供修正。传 chapter 做与上一章的衔接审计,**并同时给出该章的用语/语用命中**(世界观禁词与 speechStyle 规范,独立放在 styleCandidates);outline / ooc 是各自独立的哨兵模式(三者互斥)。返回体的 checklist 列出本次审计覆盖与未覆盖的维度(未登记语用规范、未启用大纲对照等盲区都会写明)——「0 条候选」不等于没问题。
oocbook必填rootchapteroutline语义检索(本地 embedding,0 token):自然语言检索全书语义相关段落,无关键词也能命中。
topbook必填rootquery必填维护原创小说的创作资料(novels/创作资料/<书名>/):创作设定/主要人物/次要人物/剧情大纲/钩子记录/创作状态卡的初始化、读取与更新。
bodybook必填filenameroleroottitleaction必填numbercontentdescription诊断报告:读本地事件日志 + 体检书库根与数据目录,把「平时看不出来的问题」讲成人话——近期工具调用/降级/失败的聚合、高频失败类型、书库根与目录结构是否正常、以及可执行的建议。用于排查「面板列不出书」「某个功能好像没生效」「报错但看不出原因」这类问题。**报告只含元数据(工具名/书名/章号/状态/耗时/计数),绝不含正文。**
bookdaysrootaction按书删除/清理(含回收站):删掉一本书的正文、创作资料、设定库条目与关联资料(伏笔/设定表/摘要/必用词表/风格基线/分析缓存/改稿与审计报告/风格画像/语义索引,以及旧版本遗留的平铺伏笔表)。**默认只预览**(列出将清理的位置与体积,不动磁盘),`action:"apply"` 才执行;`keys` 可只清理其中几处(例如只清报告历史与缓存、正文留着)。默认**移入回收站**(数据目录下 trash/,可用 action=restore 原样恢复,action=purge 才彻底删除)。只处理所选书籍:全局词表、插件设置、事件日志与其他书的文件一律不动。
bookkeysrootactiontrashId已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
dsh plugin add dsh-novel-writerdsh plugin add github:siweina/dsh-novel-writer#mainmkdir -p novels/我的小说 # 把章节文件放进去(第01章.md、第02章.md …)全书 1329 字:六维基线 μ=句法复杂度:2.3 修饰密度:35.6 抽象度:0.5 动作密度:101.7 不确定性:2.1 留白指数:7.0推荐容差 25%/35%/100%…目标:第 8 章《(无标题)》(尚未创建,文件名推导为 第08章.md)
【上一章结尾原文·承接口】…(上一章末尾 300 / 600 字,按 budget 档位)【待回收伏笔】 - [mu5kjla…] 琥珀色齿轮怀表的来历与停摆的指针(high|第 1 章埋下,已过 6 章) - [mu5kjlb…] 海图上红铅笔圈的礁区坐标(high|第 3 章埋下,已过 4 章)【相关人物】- 林昭:守码头的女人,父亲失踪后回到旧宅 - 沈砚:随船出海的人【世界观用语】欧式中世纪沿海城邦;点烛不烧香|禁用:上香、烧香、时辰、老夫【风格基线】complexity μ=2.42 modifierDensity μ=22.2 abstractDensity μ=10.06 actionDensity μ=122.45 …(取样范围:全书除本章外的 7 章)【原著锚段·照这个味道写】[对话] … [心理] …【上一章自检】第 7 章六维对照:全部维度在容差带内 ✓【本章禁用清单】- 禁词:上香(建议改用:点烛) - 禁词:时辰(建议改用:钟点)【开写清单】□ 先读锚段再动笔 □ 承接上一章结尾 □ …(共 8 步)【降级/提示】- 钩子记录里没有第 7 章的钩子(上一章钩子未回填)改稿台:共 13 项待办(严重度降序 → 难度升序)。抽象度过高 ×3、衔接缺失 ×1、禁用词 ×3、语用不符 ×5、句式偏离 ×1。备注:留白指数 虽出带但差值 8.36 < 门槛 12,已按「无量级差异」忽略 ← 不误报的绝对量级闸
- [抽象度过高] 严重度 5 / 难度 2(第 5 行) id:fix-abstract-5-c2c156d4 现状:abstractDensity 47.9 目标:0.55~6.95 原句:林昭大概说不清那种感觉。她隐隐觉得… 方向:抽象度偏离:全章 47.9(基线 3.75,偏差 +1177.3%),本段 74.38。这句抽象词过密,改成具体动作或物件。 锚段:林昭把它捏在掌心,翻过来看背面。背面刻着一行小字,被磨得只剩半边。她认出了父亲的名字。 - [语用不符] 严重度 4 / 难度 2(第 15 行) 现状:客套禁词「承蒙」(第 15 行) 目标:避免该类客套表达 方向:「承蒙」属世界观说话方式规范里明确不用的客套表达(honorBad)。这是说法层面的替换,不要顺手改剧情。相似度 0.946 · verdict: high偏差清单:心理占比略多 · 对话占比略少 · 短句占比略少 · 主导情绪由 anger 变为 joyfixAnchors:3 条原著锚段(对话 / 心理 / 描写各一条,供逐句对照修正)查询「与那盏没有点的灯有关的段落」→ 第02章.md 0.619 对街那盏灯,亮了。 第01章.md 0.593 阿澈的目光越过老周的肩膀,落在对街那栋小楼上…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", "/你的小说库路径"] } }}- id: novel-writer config: root: 'D:/我的小说库' allowLanState: false # true=局域网访问 GUI 时也允许保存开关