skill
zh-humanize
中文写作体检:可复算的 AI 痕迹指标 + 带证据等级的改写协议(不输出 AI 率)
Set up
Skills are installed by placing their folder where your agent loads skills.
The download comes from github.com/1506406880-a11y/zh-humanize itself, not from our server, so what you get is exactly what its author published.
Install instructions come from the README
README
synced Nov 1, 2026zh-humanize · 中文写作体检
先把 AI 味测准,再动手改。
一个零依赖的 Python 工具,加一份带证据等级的改写协议。它不背词表,不输出「AI 率」,也不承诺骗过任何检测器。它只做一件事:指出哪些句子带着可重复观测到的机器写作习惯,并告诉你这句该怎么改、哪些地方不该改。
python -m zh_humanize.cli 稿件.md
三个反直觉的发现
这个项目建立在两组中文对照实测上:629 篇同题对照,加 270 对同题同事实的配对复测。结果推翻了大部分流行做法。
一、词表基本无效。 「赋能、闭环、抓手、底层逻辑」的配对效应量是 δ+0.10,不显著。「首先/其次/总之」是 δ+0.02。「这意味着」方向相反——人类用得更多(0.027 vs 0.016 次/千字)。把这些词清零,不会让文章更像人写。
二、句长不必打散。 「AI 句子长度均匀」在配对复测里不成立。早期「均匀度是人类 50 倍」的结论来自切句缺陷,修正后只有 0.87 倍。为了凑句长方差去拆句,是这类工具最常见的破坏方式。
三、稳定信号是句法动作,不是词。 真正两轮同向的是:「不是 A 而是 B」(δ+0.88/+0.72)、结论提示冒号(2.1 倍)、过长前置定语(δ+0.48/+0.54)、顿号密集罗列(1.45 倍)、小标题切碎(节长方差 δ−0.91)、段段紧扣(明确承接 98.9% vs 95.2%)。
还有一条方向相反的:AI 的词汇多样性比人类更高,因为它不敢重复用词。人类会在一段里反复用同一个名词。
它做什么
给定一篇中文成稿,输出一份分级体检报告:
| 等级 | 含义 | 处置 |
|---|---|---|
| A | 两轮实测同向、可定位到句 | 默认建议改 |
| B | 条件显著或弱一档 | 复核后改 |
| C | 整篇分布 | 只报告,不设目标值 |
| F | 单模型指纹 | 方向随模型,不定罪 |
| X | 已否决 | 计数展示,永不据此改 |
每条命中都带:密度、人类参照、原文例句、为什么、怎么改。
它不做什么
- 不判断作者身份。统计显著说的是语料层面的差异,不是这一篇的判决。
- 不输出「AI 概率」。转述就能让检测器大幅失灵,这个数字不稳定。
- 不猜模型。破折号、分号这类指纹只能说「方向像谁」,不能反推。
- 不自动改写。改写需要作者确认范围;工具只负责定位和复测。
- 不处理机器判不了的东西:比喻是否贴切、案例是否凑数、论证是否成立。
安装
需要 Python 3.8+,无第三方依赖。
git clone https://github.com/1506406880-a11y/zh-humanize.git zh-humanize
cd zh-humanize
pip install -e .
也可以不安装,直接在仓库根目录运行:
python -m zh_humanize.cli 稿件.md
自检:
python -m zh_humanize.cli --selftest
python -m unittest discover -s tests -t .
用法
# 出 Markdown 报告
zh-humanize 稿件.md
# 写到文件
zh-humanize 稿件.md --md 体检报告.md
# 机器可读
zh-humanize 稿件.md --json > report.json
# 改写前后对比
zh-humanize --compare 原稿.md 改后.md
# CI:出现 A 级命中就失败
zh-humanize 稿件.md --fail-on A
JSON 里每条 finding 都有 id / grade / status / count / density / unit / threshold / evidence / examples / detail,便于接进自己的流水线。
作为 Agent Skill
把 SKILL.md 复制到你的 agent 的 skills 目录(例如 ~/.claude/skills/zh-humanize/ 或项目的 .zcode/skills/),或者用支持 Agent Skills 的安装器:
npx skills add https://github.com/1506406880-a11y/zh-humanize
Skill 的工作流是:检测 → 交付报告并等待确认 → 最小改写 → 复测对比。它明确禁止词表式乱删。
示例
examples/ 里有一组完整的改前、改后和对比:
| 指标 | 改前 | 改后 |
|---|---|---|
| 正文汉字 | 663 | 564 |
| A 级命中 | 5 | 0 |
| B 级命中 | 2 | 0 |
| 翻案腔 | 7.541 次/千字 | 0 |
| 提示语冒号 | 1.508 | 0 |
| 过长前置定语 | 9.05 | 0 |
| 顿号密集罗列 | 10.558 | 1.773(观察) |
| 句首连接词 | 4.525 | 0 |
| 句长 CV | 0.516 | 0.485 |
| 段落 CV | 0.384 | 0.426 |
两个值得注意的地方:
- 改后仍保留「闭环」,因为它在原文里有实际指代。工具也没有因为它是黑名单词而扣分。
- 改后仍保留六段流程的罗列,因为那是必须完整列出的清单。工具把它记为「观察」,不是「命中」。
- 小标题还是 4 个,但字数少了 15%,所以每千字密度从 6.03 升到 7.09。这不是结构变碎,是分母变小——任何前后对比都要同时看绝对数。
改前报告:examples/report-before.md | 改后报告:examples/report-after.md | 对比:examples/compare.md
规则从哪来
| 文档 | 内容 |
|---|---|
| docs/01-证据.md | 两轮实测设计、A/B/X 级效应量、四条方法学教训 |
| docs/02-改写协议.md | 五条原则、逐条改法、保留举证、改完三查 |
| docs/03-误区.md | 十种看着有用、实测没用的做法 |
| docs/04-口径.md | 切分、分母、指标定义、阈值、为什么不输出 AI 率 |
证据主要来自公开项目 lieflat-less-ai-tone(CC BY-NC 4.0)的两轮实测。本项目引用其效应量,代码、规则表、文档为独立实现。
其他参照:Wikipedia Signs of AI writing、HC3(arXiv:2301.07597)、Liang et al. 2023(GPT 检测器对非母语写作者的误判,DOI: 10.1016/j.patter.2023.100779)、DetectGPT(ICML 2023)。
局限
- 语料因版权不公开,效应量无法被第三方逐条复算;可复算的是切分、正则、分母和门槛,都在代码里。
- 语义层判断由单模型完成,抽样误判率 15–30%,方向可信,精确百分点不可信。
- 人类写作组间差异极大,扩充语料可能改变部分结论。
- 模型持续向人类文风收敛,所有频率都是特定时点的观测。
- 本工具只能降低可测量的机器痕迹。「完全像真人」不是一个可验证的目标,任何声称能做到的说法都值得怀疑。
贡献
欢迎补规则,但请遵守两条:
- 新增规则必须给对照证据:什么语料、什么分母、效应量多少、能否定位到句。
- 新增规则不能只靠个案观察。先抽样看 20 条命中,再谈频率。
许可
MIT。见 LICENSE。