SKILL 17 / WRITING · DEEP DIVE

「去 AI 味」类 Skill:它到底在删什么

25 条 / 55 条 / 八类清单 · 中文那份 zh.md · 为什么「过检测器」是你不该打的仗

2026-09-18 · BigCat

这一类 skill 的名字全叫 humanize,听上去像玄学。但打开任意一份 SKILL.md 你会发现,它干的是一件极其机械的事:拿着一张具名句式清单,逐条删。本期拆开四份能点开的实现,顺带回答那个所有人都想问的问题——它能让我过 AI 检测器吗。

前置 → Skill 16 写作类 Skills 榜单(这一类在全局里的位置)

// WHY THIS MATTERS

先说一句本期的账:路线图给这期定的主角是 Agensi marketplace 上那个 humanize-writing,但本站这次没能打开 agensi.io 的页面,既然核不了,它的安装量、榜位数字本期一个都不引。链接照给,你自己去看。真正要记住的是:humanize / humanizer / humanize-writing 不是某个 skill 的专名,是一类东西的通名。所以下面四份主角全部按 GitHub 仓库目录点名——名字对不上,装的就不是同一个东西。

// 01

它替你干掉什么:把「读着像 AI」翻译成一张可执行的删除清单

论断:它干掉的不是「润色」这道工序,是「说不清哪里不对」这个状态。审美判断在这里被降级成了模式匹配,而模式匹配你能验收。

你自己改一遍 AI 初稿,八成时间花在「总觉得别扭但说不上来」。这类 skill 把那句「说不上来」拆成了具名条目——不是「让文字更自然」,是「第 8 条:破折号当万能连接符,删」。四份实现的清单粒度不同,但结构是同一个。

实现 清单规模 独有的东西 什么时候别装 ───────────────────────────────────────────────────────────────────────────────────────────────────── blader/humanizer 25 条 · 分 A–E 五组 明写「从不编造事实」 你已经装了同类任意一份 hardikpandya/stop-slop 八类 · 带两列替换表 references/ 三份词表可直接抄 你写规范 / API 文档 Aboudjem/humanizer-skill 55 条 · 分八类 0–100 分 + 零依赖本地 CLI 你只要改一次,不要分数 gencharitaci/humanize-skills 20 种语言 × 10 种模式 中文清单 zh.md(本期唯一) 你只写英文 ───────────────────────────────────────────────────────────────────────────────────────────────────── 星数(据各自 GitHub 仓库页,2026-09):blader 49.7k / stop-slop 17.3k / Aboudjem 245 / gencharitaci 0

怎么装(命令抄自各自官方页面)

# ① blader/humanizer —— 最出名的一份,装完用 /humanizer 调
npx skills add blader/humanizer --global

# ② hardikpandya/stop-slop —— 上游在这儿(Skill 16 给的 boraoztunc 是转载)
git clone https://github.com/hardikpandya/stop-slop ~/.claude/skills/stop-slop

# ③ Aboudjem/humanizer-skill —— 唯一带可复算分数的
npx skills add Aboudjem/humanizer-skill
# Claude Code 插件版:claude plugin install humanizer@10x

# ④ gencharitaci/humanize-skills —— 冲着 zh.md 去的
npx skills add gencharitaci/humanize-skills

第一条立刻能跑的用法

别急着让模型改稿。先跑 ③ 的本地 CLI——它是纯 Node、零依赖、不出网,是这一类里唯一不消耗模型就能出结果的东西:

# 给一篇稿子打分(0–100 的 AI-tell 分数,五档评语)
node cli/index.js score examples/blog-post/before.md

# 改写前后对比,并核对数字 / URL / 日期 / 版本号 / 缩写有没有被改掉
node cli/index.js compare --before draft.md --after final.md --check-facts

拿你上周发出去的一篇稿跑一遍分数。如果分数已经不难看,这一类你整个可以不装——省下的是每次触发都要交的那份描述预算。

进阶资源 · blader/humanizer · SKILL.md(25 条的完整分组与四步流程,MIT,v3.0.0)
// 02

机制:它凭什么有效,以及两位作者给出的相反答案

论断:有效的部分全在「清单 + 自批 + 保真」这三件机械事上。而「清单该多长」这个问题,同一份代码的上下游给出了完全相反的结论——这正说明这一类没有 ground truth。

三层机制

  1. 具名清单把审美降级成检索。blader/humanizer 的 25 条分五组:A 摆姿态而不说事(「不是 X,而是 Y」「装深刻的格言」「铺垫半天才进正题」)、B 按规则造节奏(三连排比、开头句式重复、破折号当万能连接符)、C 充气与借来的权威、D 按规则排版(粗体当装饰、装饰性小标题)、E 聊天残渣(「作为 AI 我…」、知识截止免责声明)。前五条强到「见一次就改」。模型不需要判断好不好,只需要找得到。
  2. 自批是廉价的第二遍。它的输出分四步:标记 tell → 出草稿 → 回头查草稿 → 定稿。中间那道「查自己刚写的」几乎不要钱,却能捞回相当一部分——因为改写过程本身会引入新的 AI 腔。
  3. 保真层管住最贵的那个 bug。blader/humanizer 在 README 里写死:名字、数字、日期、引文、出处必须来自原文或作者,缺了就问,不许编。Aboudjem 把这句话做成了可执行的 --check-facts。改写类最恶心的失败不是改烂了,是改好听了——「同比增长 23.4%」润色成「增速接近四分之一」,读感更好,数字已经不是那个数字。
条数不是越多越好,而且没人知道多少算对:blader/humanizer 的 v3.0.0 版本说明写着「把 35 条合并成了 25 条」;而它的 fork jooray/humanizer(据 GitHub 仓库页,2026-09 为 49 星,上游 49.7k)明确拒绝跟进这次合并,理由是合过来「就会丢掉 #26–54」,于是手工挑着移植、保留全部 54 条,另加了斯洛伐克语和捷克语。同一份代码的作者与分叉者,对「清单该多长」给出了相反答案,而两边都拿不出证据。这一类的所有清单都是某一时刻的观察快照,不是语言学定律。

那 stop-slop 凭什么最轻

hardikpandya/stop-slop(据 GitHub 仓库页,2026-09 为 17.3k 星,v2.0.0、SKILL.md 内标注更新于 2026-03-17)把内容拆成 SKILL.md + references/ 三份(phrases.md 词表、structures.md 句式、examples.md 前后对照)。它的八类是:清嗓式开头、强调拐杖、商业黑话、副词、元评论、表演式强调、告知而非展示、空泛断言。关键在 phrases.md 是一张两列替换表(navigate → handle / address),所以它不装也能用——把表抄进你的 prompt 就是了。它另给一套五维打分(直白、节奏、可信、真实、密度,各 1–10),低于 35/50 才动手,这是 blader 那份没有的停止线。

// 03

真实用法与边界:中文稿怎么办,以及把 voice 编进去的三条路

论断:上面三份清单几乎全是英文句式,对中文稿基本不生效。这是中文写作者最该先知道的一条,也是本期唯一一个「非它不可」的条目所在。

中文的 AI 腔是另一张表

「删掉所有 -ly 副词」「少用破折号」搬到中文稿上是空转。gencharitaci/humanize-skills(CC BY 4.0,0 星)是本期唯一带中文清单的:references/languages/zh.md,同目录还有 ja / ko / ar 等 20 份,外加 modes/ 十种用途模式。它的中文条目具体到能直接当检查表用:

装之前先看一眼:zh.md 的词表以繁体写成,简体写作者要么自己转一遍,要么接受它偶尔漏判。另外这仓 0 星、3 次提交——它值钱在那张表,不在它是个成熟项目。真正稳妥的用法是把 zh.md 读一遍、挑你真犯的十条抄走,而不是整份挂上触发链。

把个人 voice 编进去:三条路,别选错

「让它写得像我」和「让它别像 AI」是两件事。后者靠清单,前者靠样例,而放在哪一层决定了它什么时候生效:

判据一句话:「我每次都要重新说一遍」的放 output style,「偶尔要做一次」的放 skill,「这个仓库才成立」的放 CLAUDE.md。把语气默认值写成 skill,等于把它交给触发器决定生不生效——而文风每次不一样,比一直不对更糟。

三条硬边界

进阶资源 · Claude Code · Output styles(文件位置、frontmatter 字段、与 CLAUDE.md / skill / subagent 的分工表,2026-09)
// 04

代价与替代品:如果你的目标是「过检测器」,这仗你不该打

论断:检测器测的从来不是「谁写的」,是「这段文字够不够平淡」。humanizer 天生是它的对抗样本——所以这个用法一定有效,也一定不稳定,而且把你的交付标准挂在了一个两年就翻盘的东西上。

三份可查的证据

失败模式:用 humanizer 刷检测器分数,会把你推向「越写越不像自己」。因为它优化的是句长起伏和词汇分布这些统计量,不是你的判断。更糟的是它会同化你——连着用三个月,你会开始默认那 25 条是写作真理,而它只是某个人 2026 年对英文散文的观察。

不装它你还能怎么办

// 一页选购卡

只装一个的话:npx skills add blader/humanizer --global(25 条清单 + 四步自批 + 明写不编造事实,英文散文的默认选择)。要一条能复算的停止线就换 Aboudjem/humanizer-skill,装完先跑 node cli/index.js score <你上周那篇>——分数不难看就别装了。

按场景加:写中文 → 只取 gencharitaci/humanize-skills 的 references/languages/zh.md(繁体,先转简体,挑十条抄走)· 想零触发成本 → 把 hardikpandya/stop-slop 的 references/phrases.md 两列表搬进 ~/.claude/output-styles/ · 要的是「像我」而不是「不像 AI」 → 走 output style + 三对样例(brand-guidelines 的路子)。

明确别装:blader/humanizer + stop-slop + Aboudjem/humanizer-skill 同时挂(抢同一触发面,文风每次都变)· 在技术文档仓库里常开(它删的副词正是你的精确性)· 为了过 AI 检测器而装(见第 04 节三份证据)· 搜到名字就装——jooray/humanizer 与 blader/humanizer 同名同描述,星数差一千倍,清单还不是同一份。

装完三件事:/skills 确认同类只剩一个 · 带数字的稿子跑 --check-facts 或不让它碰 · 给自己定停止线(Aboudjem 的分数,或 stop-slop 的 35/50),否则这一类可以无限改下去。

// 术语表

AI tell(AI 痕迹)
模型高频产出的可识别句式。这一类 skill 的清单列的就是它,从 8 类到 55 条不等。
perplexity(困惑度)
模型对一段文字「意外程度」的度量。检测器的核心特征之一:越平淡越像机器——非母语者写作也平淡,误报由此而来。
burstiness(句长起伏)
句子长短的波动幅度。人类写作起伏大,模型偏均匀。humanizer 优化的正是这个统计量,所以它天然是检测器的对抗样本。
false positive(误报)
把人写的判成 AI 写的。Liang 等人 2023 年在非母语者作文上测到平均 61.3%。
output style(输出风格)
Claude Code 的一层配置:改的是默认指令本身、随每个请求发出。与按需触发的 skill 是两回事。

// 延伸阅读