Novel Humanizer — 去 AI 味质检
检测小说中的 AI 味、时代错位、角色 OOC 等问题,提供评分与改写建议。
核心原则:不是"读起来顺不顺"的模糊判断,而是可量化、可追踪、可改进的质量工程。
工作区规范
.novel/ ├── skills/ │ └── skill-humanizer.json # 规则库、评分权重、禁用词表 ├── humanizer/ │ └── reports/ # 历史质检报告存档 │ ├── ch01-20260601.json │ └── ch02-20260602.json └── tracking/ └── quality-trend.json # 质量趋势追踪
评分维度(可配置)
| 维度 | 权重 | 检测要点 | 合格线 |
|---|---|---|---|
| 逻辑性 | 18% | 时间线连续、设定一致、前后文无矛盾、新增配角已建档 | 85分 |
| 角色一致性 | 16% | 言行是否符合档案、OOC、新增配角行为符合档案 | 85分 |
| 世界观一致性 | 8% | 地点/势力/规则/文化与世界building一致、地理移动合理 | 85分 |
| 时代适配度 | 14% | 禁用词、物价合理性、科技产物出现时间 | 80分 |
| 对话自然度 | 11% | 口语省略、方言痕迹、时代用语、符合角色 | 80分 |
| 文学性 | 10% | 五感描写、比喻新鲜度、句式变化 | 75分 |
| 情感表达 | 10% | 避免情感直给、动作替代、情绪曲线自然 | 80分 |
| 节奏感 | 9% | 连续对话/动作/描写的平衡、张弛有度 | 75分 |
| 去系统化 | 4% | 系统面板、数据流、机械表达 | 90分 |
权重和维度可在
skill-humanizer.json中根据题材调整。
检测规则库
0. 世界观一致性检测
地点一致性检测:
- 正文中出现的地名是否已在
.novel/worldbuilding/map/中建档 - 地点层级是否正确(未解锁区域不能出现 L3 细节)
- 同一地点前后描述是否一致
地理移动合理性检测:
- 角色从 A 到 B 的时间是否符合地图中的交通连接数据
- 交通方式是否合理(如:无飞艇的城市不能坐飞艇)
- 同一人物是否在同一时间出现在两个地点
- 场景切换时地理跨度是否合理
势力一致性检测:
- 角色行为是否符合所属势力立场
- 势力关系是否与
worldbuilding/factions/relations.md一致 - 新增势力是否已建档
规则一致性检测:
- 魔法/科技/能力使用是否超出 worldbuilding 中的规则限制
- 规则使用是否有前置条件(如:境界、道具、许可)
- 新增规则是否已建档
文化禁忌检测:
- 是否误触
worldbuilding/culture/taboos.md中的禁忌 - 风俗礼仪是否符合
worldbuilding/culture/customs.md - 方言/黑话是否符合
worldbuilding/culture/languages.md
问题标记格式:
json{ "issues": [ { "type": "worldbuilding_mismatch", "severity": "high", "line": 45, "text": "\"他从东海城飞到了王都,只用了半天\"", "suggestion": "根据地图设定,东海城到王都飞艇需 2 天,建议改为 \"两天后\" 或调整交通方式", "rule": "地理移动与 worldbuilding/map/cities/东海城.json 冲突" } ] }
1. 逻辑性检测
时间线逻辑检测:
- 本章起始时间是否晚于上一章结束时间
- 是否出现"上一章已醒来,本章还在睡觉"等时间倒流
- 上下午转换是否有明确标记(如"午后""傍晚""天黑了")
- 同一人物是否在同一时间出现在两个地点
- 场景切换时时间跨度是否合理
- 直接展示"后台时间线"属于违规,必须通过场景/对话/物品自然带出
段落级逻辑检测(来自 novel-logic):
- 每段正文是否有明确的在场人物
- 人物位置是否与前一段/前一章自然衔接,无瞬移
- 角色动机是否符合身份、关系、情绪、当前目标
- 信息/道具/称呼是否有前文铺垫,是否符合知情边界
- HTML 注释是否与正文内容一致
- 信息变化后是否已更新知情边界
人物关系与行为逻辑检测:
- 夫妻关系是否睡在同一个空间?若一方早起工作,另一方为何不在场/不知晓?
- 家庭成员称呼是否一致
- 人物是否需要早起?出场是否符合其作息规律
- 人物打电话/接电话的时间是否合理
- 人物是否已经知道某事?为何又问/又不知?
设定一致性检测:
- 人物专业背景、身份是否与前文一致
- 新增道具是否已有铺垫
- 新增配角是否已在
.novel/characters/new/建档 - 世界观设定是否被正确描述
角色职业行为检测:
- 教授/教师角色是否出现与职业身份冲突的行为
- 军人/干部角色是否出现与档案性格冲突的行为
- 每个角色行为必须能从档案中找到依据
剧情因果检测:
- 前文铺垫与后文结果是否对应
- 关键信息是否在首次出现前有来源
- 人物身份/信息如何被他人知晓,是否有交代
- 物品/道具掉落、遗留是否合理
新增配角建档检测:
- 首次出场的新配角必须有档案
- 档案格式包含:姓名、年龄、身份、外貌、性格、与主角关系、出场章节
新增地点/势力/规则建档检测:
- 首次出现的新地点必须有
worldbuilding/map/对应档案 - 首次出现的新势力必须有
worldbuilding/factions/对应档案 - 首次出现的新规则/文化细节必须有
worldbuilding/systems/或culture/对应档案
微逻辑卡与四问执行检测:
- 是否每个场景都有对应的
.novel/logic/scene-cards/微逻辑卡 - 是否每段正文都通过动作前四问
- 是否每段正文前都有 HTML 注释
- 信息变化后是否更新了
.novel/tracking/知情边界.md
脚本产物新鲜度检测:
.novel/tracking/逻辑矩阵.md的修改时间是否晚于当前正文修改时间- 若正文章节后逻辑矩阵未更新,标记为
logic_matrix_outdated
HTML 注释残留检测:
- 定稿正文中是否残留
<!-- LOGIC: ... -->注释 - 若残留,标记为
html_annotation_leftover
修改记录完整性检测:
- 若正文已修改但
.novel/tracking/修改记录.md无对应记录,提示补充 - 不强制扣分,但作为 P2 建议项
相邻章节重复描写检测:
- 搜索前 5 章,检查当前章是否有与上文重复的标志性动作、神态、解释
- 标志性动作相邻章节重复出现需扣分
- 解释性规则全文只能建立一次,重复解释扣分
- 同一场景/环境/氛围在上章已写,本章从头再写扣分
执行力检测:
- 检查 AI 是否只给文字建议而未执行工具
- 检查修改后是否同步 front matter / progress.json / 切片 / tracking
1. 时代错位词检测
禁用词表示例(在 skill-humanizer.json 中按题材配置):
json{ "era_forbidden": { "{时代}": { "words": ["{禁用词1}", "{禁用词2}"], "phrases": ["{禁用短语1}", "{禁用短语2}"], "tech_items": [] } } }
特殊规则:
- 内心独白:穿越者/知情角色内心可用原属时代词汇(如适用)
- 对话:所有角色必须使用符合作品世界设定的用语
- 叙述:第三人称叙述使用符合作品世界设定的用语
检测方式:正则匹配,标记出现位置和上下文。
中英夹杂检测:
- 体制内/古风场景禁用轻佻中英夹杂
- 角色对话中英夹杂必须符合其海归/外企/留学背景
- 英文品牌名、科技术语除外(如 OK、CPU 等已普及词汇)
2. 系统面板化检测
匹配模式:
【叮】、【系统提示】、【恭喜】属性面板、任务面板、商城获得XXX经验、等级提升攻略度、好感度数值化显示恭喜宿主、绑定系统
3. 数据流式叙述检测
匹配模式:
\d+\.?\d*%的概率收益率为\d+\.?\d*%成功率(高达|只有)\d+\.?\d*%- 连续多个数据罗列
提升\d+\.?\d*%、下降\d+\.?\d*%
例外:商业谈判、数据分析场景可以适当使用数据。
4. 情感标签化检测(重点)
禁止模式:
他感到一阵(愤怒|悲伤|喜悦|幸福)她产生了一丝(好感|厌恶|怀疑|情愫)内心涌起一股(情绪)眼中闪过一丝(情绪)嘴角微微上扬(模板化表达)眼中闪过一抹(异色|精光)(模板化表达)心中一凛(模板化表达)倒吸一口凉气(模板化表达)
改写建议:用动作和细节替代直接情感陈述。
改写示例:
原文:他感到一阵愤怒,握紧了拳头。 改写:他手指一根根攥紧,指节泛白,手背上青筋跳了跳。 原文:她产生了一丝好感。 改写:她发现自己不自觉地放柔了声音,连表情都不知不觉舒展了。 原文:嘴角微微上扬。 改写:他一侧嘴角扯了扯,像是想笑又忍住了。
5. 对话说明书化检测
问题模式:
- 对话过于完整,包含完整的主谓宾
- 逻辑过于严密,像辩论而非口语
- 缺乏省略、停顿、打断、重复
- 每句对话都带
他说道、她回答 - 对话中解释过多背景信息
自然对话特征:
- 省略主语:
"来了?"而非"你来了吗?" - 口语化:
"这事儿"而非"这件事情" - 打断:
"你等等——" - 重复:
"不是,不是这个意思" - 语气词:
"呗""呢""啊""嘛"
6. 描写模板化检测
常见模板:
阳光洒在他脸上微风拂过她的发梢他的眼神深邃如海时间仿佛静止了空气中弥漫着尴尬的气息
解释性旁白检测:
- 禁止
"一个不会让人觉得他在抢风头的位置" - 禁止
"这意味着""这说明""他是为了""他知道""他意识到"等解释句 - 禁止用抽象感慨代替具体情节
- 改写建议:用动作和对话呈现,不要解释
质检流程
快速扫描(本地规则)
- 逐条应用检测规则
- 标记问题位置和类型
- 生成问题列表
问题标记格式:
json{ "issues": [ { "type": "era_mismatch", "severity": "high", "line": 15, "text": "\"这个项目的痛点是...\"", "suggestion": "{时代}不会用'痛点',改为'难处'或'问题'", "rule": "禁用词:痛点" }, { "type": "emotion_label", "severity": "medium", "line": 32, "text": "\"嘴角微微上扬\"", "suggestion": "改为更具体的表情描写", "rule": "模板化表达" }, { "type": "worldbuilding_mismatch", "severity": "high", "line": 45, "text": "\"他从东海城飞到了王都,只用了半天\"", "suggestion": "根据地图设定,东海城到王都飞艇需 2 天", "rule": "地理移动与 worldbuilding 冲突" }, { "type": "logic_mismatch", "severity": "high", "line": 62, "text": "\"李总冷冷地说:'匿名信的事,你打算怎么处理?'\"", "suggestion": "根据知情边界,李总不知道匿名信内容,应改为试探性问话", "rule": "角色言行超出其知情边界" }, { "type": "logic_matrix_outdated", "severity": "medium", "line": 0, "text": "逻辑矩阵文件未更新", "suggestion": "调用 generate_logic_matrix.py 重新生成本章逻辑矩阵", "rule": "脚本产物新鲜度" }, { "type": "html_annotation_leftover", "severity": "medium", "line": 88, "text": "<!-- LOGIC: time=09:15 | loc=公司会议室 -->", "suggestion": "定稿前清理所有 HTML 注释", "rule": "HTML 注释残留" } ] }
LLM 深度评估
调用 LLM 进行文学性评分,输入:
- 当前章节全文
- 角色档案(出场角色)
- 评分维度说明
- 对标书参考(可选)
输出:
- 各维度评分(0-100)
- 具体问题描述
- 修改建议
- 与对标书的差距分析
生成报告
报告内容:
- 总分(加权平均)
- 评分雷达图(文本描述)
- 问题列表(按严重程度排序)
- 修改建议卡片(原文 → 建议修改)
- 质量趋势(与前几章对比)
报告存档:.novel/humanizer/reports/ch{NN}-{日期}.json
章尾钩子检测
检测要点:
- 章尾是否用大段环境描写或内心独白代替钩子
- 章尾是否超过两句仍没有明确悬念/转折
- 是否出现散文式收尾
- 合格标准:章尾钩子不超过两句,用一个动作、一句对话或一个发现收束
人化改写
用户选择问题项 → 调用 LLM 保留情节、重述表达:
改写原则:
- 保留原意和情节
- 替换机械表达为自然描写
- 增加五感细节
- 调整句式变化(长短句交替)
- 口语化对话
- 避免情感直给,用动作暗示
质量趋势追踪
.novel/tracking/quality-trend.json:
json{ "chapters": [ { "chapter": 1, "date": "2026-06-01", "scores": { "logic": 85, "character_consistency": 90, "era_fitness": 85, "literary": 75, "dialogue_naturalness": 80, "emotion_expression": 70, "pacing": 75, "de_systemization": 95 }, "total": 82 } ], "trend": { "avg_score": 82, "improving": true, "weakest": "emotion_expression" } }
与 novel-review skill 的配合
- novel-review 负责「内容层面」审稿(商业价值、爽点、节奏、世界观一致性中的作者视角)
- novel-humanizer 负责「表达层面」质检(AI味、时代适配、文学性、世界观一致性中的规则校验)
- 两维度都达标(总分>85)才能标记为
final - 任一维度<60触发大修流程
- worldbuilding_mismatch 和 logic_mismatch 属于 P0 级问题,必须修复后才能定稿
- html_annotation_leftover 属于 P1 级问题,定稿前必须清理
- logic_matrix_outdated 属于 P1 级问题,修改后必须更新逻辑矩阵
配置项
.novel/skills/skill-humanizer.json:
json{ "auto_check_on_save": true, "weights": { "logic": 0.18, "character_consistency": 0.16, "worldbuilding_consistency": 0.08, "era_fitness": 0.14, "dialogue_naturalness": 0.11, "literary": 0.10, "emotion_expression": 0.10, "pacing": 0.09, "de_systemization": 0.04 }, "rules": { "forbidden_words": ["{禁用词}"], "system_patterns": ["【叮】", "属性面板"], "data_stream_patterns": ["\\d+%的概率"], "emotion_label_patterns": ["感到一阵", "产生了一丝"], "template_phrases": ["嘴角微微上扬", "眼中闪过一丝"], "worldbuilding": { "check_location_exists": true, "check_movement_reasonable": true, "check_faction_alignment": true, "check_rule_limits": true, "check_taboos": true, "distance_tolerance": 0.2, "time_tolerance": 0.1 } }, "thresholds": { "pass": 85, "excellent": 92, "rewrite": 70 } }


