# 检测协议(去AI味 v2 第一步) 本文定义检测阶段做什么、不改什么。改写规则见 [SKILL.md](./SKILL.md)。 ## 为什么先检测再改写 两个原因,都来自实测。 一,AI 味的大部分特征是**分布特征**(句长均匀、节长均匀、用词不敢重复),单看一处看不出来,也不该逐处改。逐句"制造参差"会把文章改坏,这类特征只能整篇决策:要么用户接受结构级改写,要么不动。 二,第一版 skill 的教训:一次性改写时,模型倾向于把"感觉像 AI 味"的东西都动一遍,包括实测根本不是 AI 味的特征(序数词小标题、正文设问、比喻),改完反而更不像人写的。先交付有指标、例句和改法的报告,等用户回复后再动手,是防过度清理的闸门。 ## 三层分工 检测不是一个脚本包打天下,是三层各管一段(方法论来自 43 万次打标的实验结论): | 层 | 管什么 | 谁 | 载体 | |---|---|---|---| | 脚本层 | 数得出符号的(正则命中、标点密度、结构 CV、mtld) | detect.py | 本文件 | | 语义层 | 要理解句意的(同义重命名、衔接连环、冒号分类、同构三连) | 会话内模型 | [references/semantic-criteria.md](./references/semantic-criteria.md) | | 人审层 | 机器间共识不够的(比喻贴切度、暗喻、拟人化喻体) | 用户 | SKILL.md 人审区 | 语义层原理:脚本先抽候选(每段、每个段间接口、每个冒号句、signature 粗筛的三连组),模型对每条候选按封闭判据判标签。正则只能命中固定表面形式,命中不了「同一个意思的不同写法」;但模型判「像不像 AI」带自我偏好,所以判据必须是封闭标签集+逐条独立判断,不允许整体感觉打分。 ## 运行 ```bash python3 scripts/detect.py <文件或目录> [--max-hits 5] [--json] # 脚本层 python3 scripts/detect.py <文件> --candidates --out 候选.json # 语义层候选抽取 python3 scripts/report.py 原文 改后 before.json after.json \ [--semantic 判读后.json] --out 报告.md # 默认 Markdown 前后对比 ``` 输出一份分级报告: | 级 | 含义 | 改写策略 | |---|---|---| | **A 机械改** | 固定句式/标点,改动不触碰语义 | 模型复核误报后给出建议;用户回复后改 | | **B 建议改** | 需句式重组或换说法 | 模型逐条筛选,报告典型例句和改法;用户回复后改 | | **C 只报告** | 结构/节奏,超出白名单 | 默认不改;用户主动要求时再处理 | | **H 人审区** | 模型判不准贴切度的(拟人化喻体;比喻/暗喻同理) | 默认保留;用户主动要求时再列清单 | | **X 已否决** | 实测不是 AI 味(配对复测反向) | 永不改,报告里出现是为了防止误改 | | **F 指纹** | 分模型特征(破折号/分号/引号) | 可定位且能安全改写的命中默认建议改;保留须给具体理由,密度用于排序,见 SKILL.md 指纹节 | ## 分级依据 分级不看特征强度,看**改动风险**:改这一处会不会碰到语义、会不会需要补信息、会不会越界。 - 删「说白了」零语义损失 → A。 - 打散顿号罗列要重排成分 → B。 - 句长均匀是整篇属性,逐句改必然过度 → C,只提示。 - 序数词小标题在第一轮实测是 3.1 倍 AI 味,270 对配对复测**方向反转**(人类 8.6% vs AI 4.9%)→ X。第一版按旧数据把它列为规则 6,v2 删除。 - 概括替代曾按语义层 24.7% 列为 v2 规则 9(同段有数则恢复数值),2026-10-13 对称口径复查**净零**(AI 更含糊 24.7% vs 更具体 26.0%)→ X。整条撤销,同段有具体数值也不改。 ## X 级清单的来源(v1 → v2 的规则变动) | v1 规则 | v1 依据(629 篇不配对) | 配对复测(270 对同题同事实) | v2 处置 | |---|---|---|---| | 规则6 序数词小标题 | AI 0.19 vs 人类 0.06,3.1× | **反转**:人类 8.6% vs AI 4.9% | 降为 X,不改 | | 「这意味着」复述 | 翻译腔收录,2.6-5.3× | **反向**:人类 0.027 vs AI 0.016 每千字 | 降为 X,不改 | | 空转句引列表 | 冒号滥用之一,9.4× | **反向**:人类高一个量级(目录式长文常态) | 降为 X,不改 | | 规则8 材料密度 | 数字密度人类 2.8 倍 | 配对后 δ=−0.06 **无差异**;24.7% 概括替代后被对称口径复查否决(净零) | 再否决:v2 曾重写为"概括盖住同段数值",2026-10-13 整条撤销,降 X | | 规则4 破折号 | AI 2.38 vs 人类 0.80,3× | 分模型极端分化:GPT −0.54 / Opus +0.95 | 降级为 F 指纹;>2/千字优先处理,低密度仍逐处检查 | 其余 v1 规则(翻案腔、顿号罗列、相邻句同构、提示语冒号、拟人喻体、起手式、翻译腔四种)在配对复测中方向不变、量级相当,全部保留。 ## 报告怎么读 脚本输出是**候选数据**,不是直接发给用户的结论。模型逐条复核后,改前报告要把“本篇命中 → 研究参照 → 例句 → 改法”连起来讲清楚。复核不得静默删除候选:对第一层、第二层中能定位到句子的指标列原始命中数、有效命中数、拟改数和保留数;误报与语义判读阴性也要留下数量和理由,若输入是文件则保存逐条结果。整篇分布指标只报实测值,不强造逐句命中数。研究语料中显著,不等于单篇文章完成了统计显著性检验;不得据此判定作者是 AI。 1. **A、B 与语义层四项**:先看本篇次数、密度或门槛,再看人类参考和配对复测证据。对拟处理的项给出可定位的原句与具体改法;脚本误报要剔除。 2. **X、F 与 C/H**:说明已否决特征、模型指纹、结构指标或比喻的去向。F 不推断文章来源模型;可定位且能安全改写的命中默认建议改,保留须说明该处的具体作用。C/H 按整篇指标与人审约束处理。 3. **口径核对**:不同轮次的指标定义或分母不同时,不能混算倍数。同义词轮换的脚本命中只是启发式,精判走语义层同义重命名。 4. **用户回复**:报告给出整套建议后停下。用户回复接受或调整方案,再进入改写;不要求逐条勾选。 ## 检测层做不了、必须留给人的判断 - 比喻贴不贴切(模型间共识只有 0–40%,人审是唯一通道);暗喻、拟人化喻体 2026-10-26 起并入人审区,不做候选判读 - 三个并列案例是否在凑数(叙事推进不算,要看语义) - "参差"是否有质量——机械长短交替和自然节奏脚本分不开(v2.1 计划加句长序列自相关检查) - 段首零主语评论不再检测(2026-10-26 裁定:第三层弱信号,与已反转的「句间指代不清」同族)