{"id":"f1458f36-e4d1-4358-8227-6985fc6ce480","slug":"zh-humanize","kind":"skill","name":"zh-humanize","summary":"中文写作体检：可复算的 AI 痕迹指标 + 带证据等级的改写协议（不输出 AI 率）","owner":"1506406880-a11y","repoUrl":"https://github.com/1506406880-a11y/zh-humanize","license":"MIT","licenseTier":"permissive","trust":"community","stars":0,"match":null,"fewStars":true,"format":"skill","createdAt":"2026-10-31T09:35:44.000Z","addedAt":"2026-11-01T13:49:27.944Z","logoUrl":"https://avatars.githubusercontent.com/u/341054574?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["writing"],"tags":["ai-text","chinese","cli","humanize","text-style","writing"],"runtime":"python","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-11-01T16:01:23.948Z","sample":false,"url":"https://conduits.dev/tools/zh-humanize","language":"Python","transports":["stdio"],"install":{"pypi":"zh-humanize"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# zh-humanize · 中文写作体检\n\n**先把 AI 味测准，再动手改。**\n\n一个零依赖的 Python 工具，加一份带证据等级的改写协议。它不背词表，不输出「AI 率」，也不承诺骗过任何检测器。它只做一件事：指出哪些句子带着可重复观测到的机器写作习惯，并告诉你这句该怎么改、哪些地方**不该**改。\n\n```bash\npython -m zh_humanize.cli 稿件.md\n```\n\n---\n\n## 三个反直觉的发现\n\n这个项目建立在两组中文对照实测上：629 篇同题对照，加 270 对同题同事实的配对复测。结果推翻了大部分流行做法。\n\n**一、词表基本无效。**\n「赋能、闭环、抓手、底层逻辑」的配对效应量是 δ+0.10，不显著。「首先/其次/总之」是 δ+0.02。「这意味着」方向相反——人类用得更多（0.027 vs 0.016 次/千字）。把这些词清零，不会让文章更像人写。\n\n**二、句长不必打散。**\n「AI 句子长度均匀」在配对复测里不成立。早期「均匀度是人类 50 倍」的结论来自切句缺陷，修正后只有 0.87 倍。为了凑句长方差去拆句，是这类工具最常见的破坏方式。\n\n**三、稳定信号是句法动作，不是词。**\n真正两轮同向的是：「不是 A 而是 B」（δ+0.88/+0.72）、结论提示冒号（2.1 倍）、过长前置定语（δ+0.48/+0.54）、顿号密集罗列（1.45 倍）、小标题切碎（节长方差 δ−0.91）、段段紧扣（明确承接 98.9% vs 95.2%）。\n\n还有一条方向相反的：**AI 的词汇多样性比人类更高**，因为它不敢重复用词。人类会在一段里反复用同一个名词。\n\n---\n\n## 它做什么\n\n给定一篇中文成稿，输出一份分级体检报告：\n\n| 等级 | 含义 | 处置 |\n|---|---|---|\n| **A** | 两轮实测同向、可定位到句 | 默认建议改 |\n| **B** | 条件显著或弱一档 | 复核后改 |\n| **C** | 整篇分布 | 只报告，不设目标值 |\n| **F** | 单模型指纹 | 方向随模型，不定罪 |\n| **X** | 已否决 | 计数展示，永不据此改 |\n\n每条命中都带：密度、人类参照、原文例句、为什么、怎么改。\n\n## 它不做什么\n\n- 不判断作者身份。统计显著说的是语料层面的差异，不是这一篇的判决。\n- 不输出「AI 概率」。转述就能让检测器大幅失灵，这个数字不稳定。\n- 不猜模型。破折号、分号这类指纹只能说「方向像谁」，不能反推。\n- 不自动改写。改写需要作者确认范围；工具只负责定位和复测。\n- 不处理机器判不了的东西：比喻是否贴切、案例是否凑数、论证是否成立。\n\n---\n\n## 安装\n\n需要 Python 3.8+，无第三方依赖。\n\n```bash\ngit clone https://github.com/1506406880-a11y/zh-humanize.git zh-humanize\ncd zh-humanize\npip install -e .\n```\n\n也可以不安装，直接在仓库根目录运行：\n\n```bash\npython -m zh_humanize.cli 稿件.md\n```\n\n自检：\n\n```bash\npython -m zh_humanize.cli --selftest\npython -m unittest discover -s tests -t .\n```\n\n## 用法\n\n```bash\n# 出 Markdown 报告\nzh-humanize 稿件.md\n\n# 写到文件\nzh-humanize 稿件.md --md 体检报告.md\n\n# 机器可读\nzh-humanize 稿件.md --json > report.json\n\n# 改写前后对比\nzh-humanize --compare 原稿.md 改后.md\n\n# CI：出现 A 级命中就失败\nzh-humanize 稿件.md --fail-on A\n```\n\nJSON 里每条 finding 都有 `id / grade / status / count / density / unit / threshold / evidence / examples / detail`，便于接进自己的流水线。\n\n### 作为 Agent Skill\n\n把 `SKILL.md` 复制到你的 agent 的 skills 目录（例如 `~/.claude/skills/zh-humanize/` 或项目的 `.zcode/skills/`），或者用支持 Agent Skills 的安装器：\n\n```bash\nnpx skills add https://github.com/1506406880-a11y/zh-humanize\n```\n\nSkill 的工作流是：检测 → 交付报告并等待确认 → 最小改写 → 复测对比。它明确禁止词表式乱删。\n\n---\n\n## 示例\n\n`examples/` 里有一组完整的改前、改后和对比：\n\n| 指标 | 改前 | 改后 |\n|---|---|---|\n| 正文汉字 | 663 | 564 |\n| A 级命中 | 5 | **0** |\n| B 级命中 | 2 | **0** |\n| 翻案腔 | 7.541 次/千字 | 0 |\n| 提示语冒号 | 1.508 | 0 |\n| 过长前置定语 | 9.05 | 0 |\n| 顿号密集罗列 | 10.558 | 1.773（观察） |\n| 句首连接词 | 4.525 | 0 |\n| 句长 CV | 0.516 | 0.485 |\n| 段落 CV | 0.384 | 0.426 |\n\n两个值得注意的地方：\n\n- 改后仍保留「闭环」，因为它在原文里有实际指代。工具也没有因为它是黑名单词而扣分。\n- 改后仍保留六段流程的罗列，因为那是必须完整列出的清单。工具把它记为「观察」，不是「命中」。\n- 小标题还是 4 个，但字数少了 15%，所以每千字密度从 6.03 升到 7.09。这不是结构变碎，是分母变小——任何前后对比都要同时看绝对数。\n\n改前报告：[examples/report-before.md](examples/report-before.md) ｜ 改后报告：[examples/report-after.md](examples/report-after.md) ｜ 对比：[examples/compare.md](examples/compare.md)\n\n---\n\n## 规则从哪来\n\n| 文档 | 内容 |\n|---|---|\n| [docs/01-证据.md](docs/01-证据.md) | 两轮实测设计、A/B/X 级效应量、四条方法学教训 |\n| [docs/02-改写协议.md](docs/02-改写协议.md) | 五条原则、逐条改法、保留举证、改完三查 |\n| [docs/03-误区.md](docs/03-误区.md) | 十种看着有用、实测没用的做法 |\n| [docs/04-口径.md](docs/04-口径.md) | 切分、分母、指标定义、阈值、为什么不输出 AI 率 |\n\n证据主要来自公开项目 [lieflat-less-ai-tone](https://github.com/larashero3-dotcom/lieflat-less-ai-tone)（CC BY-NC 4.0）的两轮实测。本项目引用其效应量，代码、规则表、文档为独立实现。\n\n其他参照：Wikipedia *Signs of AI writing*、HC3（arXiv:2301.07597）、Liang et al. 2023（GPT 检测器对非母语写作者的误判，DOI: 10.1016/j.patter.2023.100779）、DetectGPT（ICML 2023）。\n\n## 局限\n\n- 语料因版权不公开，效应量无法被第三方逐条复算；可复算的是切分、正则、分母和门槛，都在代码里。\n- 语义层判断由单模型完成，抽样误判率 15–30%，方向可信，精确百分点不可信。\n- 人类写作组间差异极大，扩充语料可能改变部分结论。\n- 模型持续向人类文风收敛，所有频率都是特定时点的观测。\n- 本工具只能降低**可测量**的机器痕迹。「完全像真人」不是一个可验证的目标，任何声称能做到的说法都值得怀疑。\n\n## 贡献\n\n欢迎补规则，但请遵守两条：\n\n1. 新增规则必须给对照证据：什么语料、什么分母、效应量多少、能否定位到句。\n2. 新增规则不能只靠个案观察。先抽样看 20 条命中，再谈频率。\n\n## 许可\n\nMIT。见 [LICENSE](LICENSE)。\n"}