☰
如何证明一个工具本身不AI味?avoid-ai-writing的PROOF.md自扫描与CI预算机制深度剖析
2026/9/25 14:37:05 网站建设 项目流程

如何证明一个工具本身不AI味?avoid-ai-writing的PROOF.md自扫描与CI预算机制深度剖析

【免费下载链接】avoid-ai-writingSkill that audits and rewrites content to remove AI writing patterns. Use it with your favorite agents including Claude Code, OpenClaw, Codex, and Hermes.项目地址: https://gitcode.com/gh_mirrors/avo/avoid-ai-writing

avoid-ai-writing 是一款专治"AI 味"的写作检测与改写技能(skill):它能审计文本、标出 70 多个 AI 写作模式,并支持"只检测"与"原地编辑"两种用法。它最妙的一笔,是用同一套检测器扫描自己的文档,把分数、缺陷和预算全部公开——这就是 PROOF.md。本文拆解这套"自扫描 + CI 预算"机制:一个揪别人 AI 味的工具,如何证明自己的写作也干净。

为什么"自证清白"是这个项目的命门

一个会把"delve"、"leverage"、"seamless"标成 AI 味的检测器,如果自己的文档里全是这些词,说服力就归零了。所以 avoid-ai-writing 立下了一条原则:揪别人 AI 味的工具,必须先活过自己的那一关,而且要把不光彩的结果也放出来。

PROOF.md的开头就写得很直白:这一页就是detector/patterns.js扫完整个仓库文档的结果,"包括那些难看的部分"。

一条命令复现自扫描:先看机制全貌

不用装任何依赖,克隆仓库跑一行命令即可(Node ≥ 18):

git clone https://gitcode.com/gh_mirrors/avo/avoid-ai-writing && cd avoid-ai-writing node scripts/self-scan.js

脚本 scripts/self-scan.js 对 8 个核心文档(README.md、SKILL.full.md、CHANGELOG.md等)各扫两遍,输出一张四列表:

文档词数原始分 (Raw)豁免分 (Exempt)预算 (Budget)
README.md5,27358130
SKILL.full.md18,13677925
CONTRIBUTING.md1,3451115
detector/README.md1,1741115
detector/CATEGORIES.md1,6151015
examples/README.md9311110
CHANGELOG.md11,915573440
PROOF.md1,163131220

(v3.34.0,2026-09-13 实测;0 分最干净,100 分最"AI")

双分数:为什么两个都要公布

  • Raw(原始分):每个命中都算,包括文档为了讲解规则而引用的示例词、整张 112 条词汇表。SKILL.full.md原始分高达 77,因为"目录里装满了它要检出的词"。
  • Exempt(豁免分):先机械地执行SKILL.md早已声明的免责规则——引号内示例、代码块、表格、引用块不参与评分——再打分。

只公布好看的那个分数,正是这个项目存在的原因所批判的行为。所以两个都发。

豁免机制如何工作:把规则变成可执行代码

SKILL.md早就用文字写过一条规则:讨论 AI 写作模式时,引号内的示例词应豁免。但在那之前,它只是给模型看的一句话。scripts/self-scan.js 里的applyExemptions()是它的可执行版本:

  1. 先抹掉围栏代码块(因为它可能包含任何内容,顺序不能反)
  2. 再抹掉行内代码
  3. 抹掉 GFM 表格行
  4. 抹掉引用块(blockquote)
  5. 抹掉引号包裹的片段

关键细节:抹掉时用空格替换而不是删除,保持每个字符的偏移量不变,这样检出位置仍指向源码的正确位置。长文档(超过约 9500 词)还会按段落切成 4000 词的块逐段评分,取最差块作为文档分数——"一篇文档有多像机器写的,就看它最差的那一段"。

自扫描抓到了什么:4 个公开认领的真实缺陷

扫描不是表演,它真抓到了自家写作的问题,PROOF.md逐条点名:

  1. CHANGELOG.md分数最差(豁免后 34/40):发布说明里罗列新规则要抓的词(bustling、intricate、ever-evolving……)时不加引号,检测器一眼就读出"Tier 1 词汇连击"。发布日志是人写的,却踩了检测规则的坑。
  2. em-dash(破折号)规则漏了两种形状:SKILL.md豁免了列表分隔符式破折号,但没覆盖 Keep-a-Changelog 版本标题(## [3.21.0] — 2026-07-30,共 32 处)和"加粗词带括号"的变体。137 个破折号里误计了 33 个,后来修复并用测试夹具锁死范围——是扫描发现了它,这正是"要搞扫描"这个论点的证据。
  3. PROOF.md自己也在表里,得 12 分:原因恰恰是它引用了那串 Tier 1 示例词——斜体不算豁免区间(豁免只认引号、代码、表格、引用块)。"解释发布说明会触发检测器的页面,因为点名模式而触发检测器"。其中一处是真问题:"in order to",已改为 "to"。
  4. README.md从原始分 58 掉到豁免后 1:绝大部分命中来自它引用的模式目录和示例,剩下的只是 1 个破折号 + 2 个轻微统计信号。

CI 预算机制:分数会漂移,CI 来兜底

光发布分数还不够——文档会持续编辑,分数会漂移。avoid-ai-writing 给每个文档设了一个预算(budget),本质是只能下不能上的回归上限:

  • 预算不是质量承诺,而是"从首次干净运行的实测值 + 几个点余量"定出的天花板,防止日常编辑误触 CI
  • 提高预算是一个必须写进 Pull Request、并写明新数值的决策,不能悄悄改
  • CHANGELOG.md的预算(40)故意更高,因为发布说明天然要罗列被检测的词,这个豁免够不着——预算数字本身就是文档

在 CI 侧,.github/workflows/detector-test.yml 在每次推送和 PR 上执行npm run self-scan:check(对应 package.json 里的self-scan:check脚本)。--check模式会对豁免分超预算的文档直接退出 1,构建失败:

node scripts/self-scan.js --check # 超预算 → 退出码 1,CI 红灯

注意 CI 卡的是实时扫描结果,而不是PROOF.md表格里的文字——后者只是某次提交的快照。这一设计避免了"把漂亮数字写死在文档里、实际分数悄悄上涨"的经典作弊路径。

顺带一提,这个仓库对外提供的 GitHub Action 质量门 用的是另一套口径:按"每文件确定性命中数"卡阈值(默认 6 次/文件,由 376 篇人类文档语料校准),与 0–100 综合分解耦。自扫描管自家文档,Gate 管用户项目,各司其职。

诚实声明:低分 ≠ 好文章 ≠ 人写的

PROOF.md花了一整节讲"这页不声称什么",值得所有做工具的人抄作业:

  • 低分只说明没有可被正则检出的表面模式,不代表文字好,更不代表是人写的
  • 综合分无法可靠区分机器文本与人类文本:在 corpus/README.md 公布的 875 段人类 + 779 段机器文本对照中,score >= 5时误报率 4.2%、命中率 7.2%,段落级 ROC-AUC 0.501——掷硬币水平;文档级也只有 0.623
  • 这些数字没被当头条吹出去,因为它们没过仓库自己的发布标准(每个数据格要求 n ≥ 100、置信区间、覆盖多种当代文体),而是如实留在语料报告里

检测器只测量"正则可检出子集 + 少量文体统计信号",空心但零命中的文字它是抓不到的。把边界说清楚,比假装 omnipotent 更能赢得信任。

你可以直接借鉴的 3 步清单

这套"自扫描 + CI 预算"机制不依赖 AI 检测本身,任何写文档的项目都能搬:

  1. 把纸面规则变成可执行代码:如果你的规则里有"示例/引用豁免"这类条款,就写一个applyExemptions()机械执行它,而不是靠人自觉
  2. 双分数公开:原始分和豁免分一起发,把"被抑制了什么"摆在明面上,消灭猜测空间
  3. 预算只降不升 + 进 CI:用实测值加余量定回归上限,超预算就让构建失败,提预算必须走 PR 留痕

一个揪别人 AI 味的工具,选择用最不 AI 的方式自证:分数难看也发,缺陷自己认,边界自己说。这大概就是 PROOF.md 这个名字的全部含义。

【免费下载链接】avoid-ai-writingSkill that audits and rewrites content to remove AI writing patterns. Use it with your favorite agents including Claude Code, OpenClaw, Codex, and Hermes.项目地址: https://gitcode.com/gh_mirrors/avo/avoid-ai-writing

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询