Skip to content

Latest commit

 

History

History
436 lines (333 loc) · 22.3 KB

File metadata and controls

436 lines (333 loc) · 22.3 KB
name humanize-chinese
description 中文去 AI 腔一整套(装完即用,零 API Key —— 装了本 skill 的 agent 自己就是那个 LLM)。 六个流程:① 生成即去 AI —— 写中文时按本 skill 的写作指南落笔,初稿就不带 AI 腔; ② 复查改写 —— 产出后对照本 skill 的清单再过一遍,定点拆模板句式; ③ Python 词语替换 —— ./humanize replace 按文体自动路由词表(学术 120+ 条 / 通用 220+ 条),只做短语级、只在子句边界替换,改完自动核对数字/专名/段落; ④ Claude 腔转中文 —— 把 Claude 助手腔的中文改写成平实中文, 规则提炼自 gvzdv/claudish-to-english 并本地化; ⑤ 去水印 —— ./humanize watermark 扫清零宽字符/双向控制符/同形替身, 并对照 guillaumemeyer/watermarks-remover 说明统计水印的边界; ⑥ 纠错顺句 —— 修错词、病句、标点,拗口和用词不准处轻手顺一顺;改动范围有硬校验。 另有检测(0-100 分)、风格转换、学术降重等 CLI。 Use when user says: "去AI味", "降AIGC", "人性化文本", "humanize chinese", "AI检测", "AIGC降重", "去除AI痕迹", "文本改写", "论文降重", "知网检测", "维普检测", "AI写作检测", "让文字更自然", "detect AI text", "humanize text", "make text human-like", "去ai化", "改成人话", "去机器味", "长文本改写", "小说改写", "写一篇", "claudish", "去claude腔", "助手腔", "去水印", "watermark remover", "remove watermark"
allowed-tools
Read
Write
Edit
exec

Humanize Chinese AI Text v6

一整套中文去 AI 腔流水线。装完直接用:你(agent)负责 ①②④⑥,Python 脚本负责 ③⑤。

流程 什么时候 怎么做
① 生成即去 AI 用户让你中文时 按下方「流程 ①:写作指南」落笔,初稿就不带 AI 腔
② 复查改写 拿到初稿(自己写的或用户给的) 按下方「流程 ②:改写清单」定点过一遍,只动踩线的句子
③ 词语替换 ② 完成后 ./humanize replace 稿.txt -o 出稿.txt --compare —— 自动识别文体路由词表,离线
④ Claude 腔转中文 稿子带 Claude 助手腔(对话残留、客套、解释癖) skills/declaude-cn/SKILL.md 照做,规则来自 gvzdv/claudish-to-english 的中文本地化
⑤ 去水印 要清文本里的 AI 水印 ./humanize watermark inspect/clean/survive,边界见「流程 ⑤」
⑥ 纠错顺句 ③ 完成后 按下方「流程 ⑥:纠错清单」修错词、病句、标点,拗口处轻手顺一顺,其余不动

中文主线是 ①→②→③→⑥,顺序执行;稿子带 Claude 助手腔就在 ② 之后加跑 ④;⑤ 独立,需要时随时跑。 人味在 ① 产生,② 只能修不能补,③ 是机械替换,⑥ 纠错顺句、动作最轻。 为什么是这个顺序:实测从零写能把句长节奏做进人类区间(变异系数 0.62 vs 人类 0.52), 而事后改写只能到 0.31 —— 节奏补不回来,必须落笔时就有。

CLI Tools

统一 CLI(推荐)

./humanize replace 文本.txt -o 改后.txt --compare    # 流程 ③:按文体路由的词语替换(离线)
./humanize replace 论文.txt --scene academic         # 显式指定文体(auto/general/academic/social/novel)
./humanize rewrite 文本.txt -o 改后.txt              # 离线断句节奏
./humanize rewrite 文本.txt --llm -o 改后.txt        # 用外部 API 跑 ②+③(可选,需 OPENROUTER_API_KEY)
./humanize write "写一篇讲复利的科普" -o 出稿.txt      # 用外部 API 跑 ①→③(可选,需 key)
./humanize rewrite 文本.txt --legacy                 # 旧版全量改写器(降分多但会写病句)

# 检测与其它
./humanize detect 文本.txt -v                        # 检测 + 详细(分数怎么看见下方说明)
./humanize academic 论文.txt -o 改后.txt --compare    # 学术降重
./humanize style 文本.txt --style xiaohongshu        # 风格转换
./humanize compare 文本.txt -a                       # 前后对比

# 水印(两层是两回事,见下方说明)
./humanize watermark inspect 稿子.txt                # 扫零宽字符/双向控制符/汉字同形替身
./humanize watermark clean 稿子.txt -o 干净.txt       # 清掉,全角标点和首行缩进原样保留
./humanize watermark survive 原文.txt 改写后.txt      # 采样水印还剩多少

水印那两层别混。 看得见的载体(零宽字符、康熙部首冒充汉字之类)能删干净也能验证, inspectclean 完再 inspect 一遍就是证明。Claude 从 2026-08-02 起用的是另一层: 拿密钥和前 4 个字算哈希去偏置采样,信号在选词里,本地删不掉也证明不了删掉了。 survive 报的是能测的那部分 —— 原文的 5 字计分窗口在改写后还剩多少个原封不动。

实测本仓库自带的学术样本(288 字):replace 剩 73%,academic 剩 54%, style 剩 44%,rewrite --llm 剩 42%。没有一档够。 真要去掉只有一条路:write,拿原文当素材重新写。跟用户说这件事的时候要说实话, 不要说「已经清干净了」——谁都没法验证这句。

离线那档很保守:只移动标点,去掉标点后前后文字必须一模一样,程序每次都校验。 找不到能安全断开的位置时它会直接说「没有可以安全修改的地方」并原样输出 —— 这是设计,不是失败。AI 写的句子结构均匀,硬断会产生残句。

需要 key 的两档走 OpenRouter: secret exec OPENROUTER_API_KEY -- ./humanize rewrite 文件.txt --llm

独立脚本形式(等价)

所有脚本在 scripts/ 目录下,纯 Python,无依赖。

# 检测 AI 模式(20+ 规则维度 + 8 统计特征,0-100 分)
python scripts/detect_cn.py text.txt
python scripts/detect_cn.py text.txt -v          # 详细 + 最可疑句子
python scripts/detect_cn.py text.txt -s           # 仅评分
python scripts/detect_cn.py text.txt -j           # JSON 输出

# 改写(默认 best-of-10,scene-aware)
python scripts/humanize_cn.py text.txt -o clean.txt
python scripts/humanize_cn.py text.txt --scene social -a   # 社交 + 激进
python scripts/humanize_cn.py text.txt --quick             # 18× 速度,纯替换
python scripts/humanize_cn.py text.txt --cilin             # 启用 CiLin 同义词扩展

# 风格转换(先自动 humanize 再套风格)
python scripts/style_cn.py text.txt --style zhihu -o out.txt

# 前后对比
python scripts/compare_cn.py text.txt --scene tech -a

# 学术论文 AIGC 降重(10 学术维度 + scene-aware academic LR + 双评分)
python scripts/academic_cn.py paper.txt -o clean.txt --compare
python scripts/academic_cn.py paper.txt -o clean.txt -a --compare  # 激进
python scripts/academic_cn.py paper.txt -o clean.txt --quick       # 快速模式

评分标准

分数 等级 含义
0-24 LOW 基本像人写的
25-49 MEDIUM 有些 AI 痕迹
50-74 HIGH 大概率 AI 生成
75-100 VERY HIGH 几乎确定是 AI

参数速查

参数 说明
-v 详细模式,显示可疑句子
-s 仅评分
-j JSON 输出
-o 输出文件
--scene(replace) auto / general / academic / social / novel,词表路由
--compare(replace) 打印改写前后检测分
-a 激进模式
--seed N 固定随机种子
--scene general / academic / novel / auto(detect_cn)—— auto 按 ≥1500 字切 longform LR
--style casual / zhihu / xiaohongshu / wechat / academic / literary / weibo / novel
--best-of-n N humanize N 次取 LR 最低(默认 10)
--compare 前后对比(学术双评分)
--quick 快速模式(跳过统计优化 + best-of,18× 速度)
--cilin 启用 CiLin 同义词扩展(humanize,38873 词,含碰撞 blacklist)
--no-humanize style 转换前不先去 AI 词
--rule-only detect 只用规则层(跳 LR 融合)
--fullwidth-latin 全角拉丁字母改半角(watermark clean,默认不动)
--keep-bidi 保留双向控制符(watermark clean,文里真夹了阿拉伯语时用)

工作流(中文主线)

# ① 写:按「流程 ①:写作指南」产出 draft.txt(agent 自己完成,无命令)
# ② 改:按「流程 ②:改写清单」定点过一遍,存 revised.txt(agent 自己完成)
# ③ 词表替换:
./humanize replace revised.txt -o step3.txt --compare
# ⑥ 纠错(agent 按「流程 ⑥:纠错清单」自己完成;走 API 也可以: rewrite --llm 已含 ⑥)
# 可选:检测 / 转风格
./humanize detect final.txt -v
./humanize style final.txt --style zhihu -o styled.txt

# ④ Claude 腔转平实中文:agent 读 skills/declaude-cn/SKILL.md 直接改,无命令
# ⑤ 去水印(独立,随时可跑):
./humanize watermark inspect 稿子.txt
./humanize watermark clean 稿子.txt -o 干净.txt

HC3-Chinese 基准测试

阈值基于 HC3-Chinese 300+300 人类/AI 样本的 Cohen's d 校准,scene-aware LR 在 500+500 训练:

  • 句长变异系数 CV: d = 1.22(最强单信号)
  • 短句占比 (< 10 字): d = 1.21
  • 段落长度 CV: d = -1.49(v5 长文本新信号)
  • 段内句长 CV: d = -2.08(v5 长文本最强信号)
  • 跨段 trigram 重复: d = +1.13(v5 长文本新信号)
  • 困惑度: d = 0.47
  • GLTR top-10 bucket: d = 0.44
  • DivEye skew / kurt: d = 0.41 / 0.29
  • 逗号密度: d = -0.47

⚠️ 上面这些效应量测于 HC3(2022 年的 ChatGPT 语料)。2026-08 用五个当前模型重测,同题同长度对照下:区分 2024 年模型准确率 96%,区分今年的模型只剩 64%(瞎猜 50%)。这些 d 值对 HC3 仍然成立,但不能外推到今天的模型。

v6 实测(三模型通顺度评审 1-5 分;结果存疑时加跑一轮取并集)

仓库五份样例(刻意夸张的 AI 腔样本):

通顺度中位数 多数票病句
v6 三段流水线 4.0 - 5.0 未发现
旧版纯规则改写 2.0 5 - 17 处

2026-08 新语料里的真实模型产出(更接近实际输入): 社交 350 字 → 5.0 / 未发现;学术 736 字 → 5.0 / 未发现;科普 571 字 → 4.0 / 1 处。 写「未发现」不写「0 处」是有意的:评审对真实病句存在漏报,「未发现」只说这一轮没抓到,不承诺不存在。 三篇里两篇干净,样本太小不能当合格率,但真实文本确实比夸张样本难改。

旧版被三个评审各自独立点出的句子,例如「智能评估系统能够各个层面地评判学习者的综合素质」 「整合人工智能与教育教学已成为更好地推进的必由之路」—— 这些不是中文。


流程 ①:写作指南 —— 生成时就别写出 AI 腔

用户让你写中文时(而不是改现成的),先读 skills/write-cn/SKILL.md,照那份备忘落笔。它讲四件事:动笔前先凑齐真材料,带参照的数字、能点名的人事物、反直觉的事实、真场景、会有人不同意的判断,凑不齐就问用户要,材料必须是真的,宁可空泛不可捏造;有些话整套都不能说,按语姿绕开而不是按词躲;句长要有起伏、段落别等厚、用词从材料里取而不是顺着上一个词接;还有几条英文圈教条在中文里方向是反的,别照抄。写完自查一遍,再反着查有没有洗成白开水。

流程 ②:改写清单 —— 拿到稿子后定点过一遍

对 ① 的产出或用户给的任何稿子,读 skills/deai-rewrite/SKILL.md 照做。要领是定点修改不是重写:没踩线的句子一个字不碰,数字专名引文一个不动,原文没有的内容一个不加。见到抬轿子的句式就拆,贴金的词换成后果或删掉,空转的过渡直接删。改完过四道核对——事实、信息(排除关系不改成正面断言,相关不升级成因果,犹疑不改成确定)、通顺、反向查平庸化——一道不过就回滚。

先扫一遍:检测 AI 写作模式

扫描文本中的以下模式,按严重程度分类:

🔴 高危模式(一眼就能看出是 AI)

三段式套路:

  • 首先…其次…最后
  • 一方面…另一方面
  • 第一…第二…第三

机械连接词: 值得注意的是、综上所述、不难发现、总而言之、与此同时、由此可见、不仅如此、换句话说、更重要的是、不可否认、显而易见、不言而喻、归根结底

空洞宏大词: 赋能、闭环、数字化转型、协同增效、降本增效、深度融合、全方位、多维度、系统性、高质量发展、新质生产力

🟠 中危模式

AI 高频词: 助力、彰显、凸显、底层逻辑、抓手、触达、沉淀、复盘、迭代、破圈、颠覆

填充废话: 值得一提的是、众所周知、毫无疑问、具体来说、简而言之

模板句式:

  • 随着…的不断发展
  • 在当今…时代
  • 在…的背景下
  • 作为…的重要组成部分
  • 这不仅…更是…

平衡论述套话: 虽然…但是…同时、既有…也有…更有

🟡 低危模式

  • 犹豫语过多(在一定程度上、某种程度上 出现 >5 次)
  • 列举成瘾(动辄①②③④⑤)
  • 标点滥用(大量分号、破折号)
  • 修辞堆砌(排比对偶过多)

⚪ 风格信号

  • 段落长度高度一致
  • 句子长度单调
  • 情感表达平淡
  • 开头方式重复
  • 信息熵低(用词可预测)

逐条拆:命中什么改什么

按以下顺序处理:

1. 砍掉三段式 把"首先…其次…最后"打散,用自然过渡代替。不是每个论点都要编号。

2. 替换 AI 套话

  • 综上所述 → 总之 / 说到底 / (直接删掉)
  • 值得注意的是 → (直接删掉,后面的话自己能说清楚)
  • 赋能 → 帮助 / 支持 / 提升
  • 数字化转型 → 信息化改造 / 技术升级
  • 不难发现 → 可以看到 / (删掉)
  • 助力 → 帮 / 推动

3. 句式重组

  • 过短的句子合并("他很累。他决定休息。" → "他累了,干脆歇会儿。")
  • 过长的句子拆开(在"但是""不过""同时"等转折处断开)
  • 打破均匀节奏(长短句交替,不要每句差不多长)

4. 减少重复用词 同一个词出现 3 次以上就换同义词。比如"进行"可以换成"做""搞""开展""着手"。

5. 注入人味

  • 加一两句口语化表达(场景允许的话)
  • 用具体的例子代替抽象概括
  • 偶尔加个反问或感叹
  • 不要每段都总分总结构

6. 段落节奏 打破每段差不多长的格局。有的段落 2 句话,有的 5 句话,像人写东西时自然的长短变化。

学术论文特殊处理(不能口语化)

当文本是学术论文时,改写规则不同——不能口语化,要保持学术严谨性:

学术专用检测维度:

  1. AI 学术措辞("本文旨在""具有重要意义""进行了深入分析")
  2. 被动句式过度("被广泛应用""被认为是")
  3. 段落结构过于整齐(每段总-分-总)
  4. 连接词密度异常
  5. 同义表达匮乏("研究"出现 8 次)
  6. 引用整合度低(每个引用都是"XX(2020)指出…")
  7. 数据论述模板化("从表中可以看出")
  8. 过度列举(①②③④ 频繁出现)
  9. 结论过于圆满(只说好不说局限)
  10. 语气过于确定("必然""毫无疑问")

学术改写策略:

  • 替换 AI 学术套话(保持学术性):

    • 本文旨在 → 本文尝试 / 本研究关注
    • 具有重要意义 → 值得关注 / 有一定参考价值
    • 研究表明 → 前人研究发现 / 已有文献显示 / 笔者观察到
    • 进行了深入分析 → 做了初步探讨 / 展开了讨论
    • 取得了显著成效 → 产生了一定效果 / 初见成效
  • 减少被动句:

    • 被广泛应用 → 得到较多运用 / 在多个领域有所应用
    • 被认为是 → 通常被看作 / 一般认为
  • 注入学术犹豫语(hedging): 在过于绝对的判断前加"可能""在一定程度上""就目前而言""初步来看"

  • 增强作者主体性:

    • 研究表明 → 笔者认为 / 本研究发现
    • 可以认为 → 笔者倾向于认为
  • 补充局限性: 如果结论段没有提到局限,补一句"当然,本研究也存在一定局限…"

  • 打破结构均匀度: 调整段落长度,避免每段都一样。合并过短的段落,拆分过长的。

流程 ④:Claude 腔 → 平实中文

稿子带着 Claude 助手腔(对话残留、客套、解释癖)时,读 skills/declaude-cn/SKILL.md 照做。 要领:日常的词、短句子;事实、名字、数字、文件路径一个不动;代码块不碰;只输出改写后的正文。 和 ② 的分工:模板句式、套话归 ② 拆,助手腔归这段;稿子带助手腔就在 ② 之后加跑这段。 规则提炼自 gvzdv/claudish-to-english(2.4k star) 的内置改写 prompt —— 那个仓库本身是个 Claude Code 显示插件(把助手消息实时改写成平实文字显示), 我们借的是它的改写规则,本地化成中文,由 agent 直接执行,不装插件。

流程 ⑤:去水印

两层水印是两回事(详见上方 CLI 说明):

  • 看得见的载体(零宽字符、双向控制符、汉字同形替身):./humanize watermark inspect 扫、 clean 清,清完再 inspect 一遍验证。这层能删干净。
  • 统计水印(密钥 + 前文哈希偏置采样,信号在选词里):本地删不掉,也证明不了删掉了。 survive 报的是能测的那部分。真要去掉只有一条路:write 拿原文当素材重写。 跟用户说这件事要说实话,不说「已经清干净了」。

外部参照:guillaumemeyer/watermarks-remover (1.9w star,小红书「Claude 水印被破解」那帖说的就是它)。它比我们多两块:多厂商统计水印 (Gemini SynthID-Text、OpenAI 溯源、开源绿名单/Aaronson 系)的改写式去除,和文件级溯源元数据 清理(C2PA / EXIF / XMP,覆盖 PNG/JPEG/PDF/DOCX/MP4 等)。文本里的零宽字符用自家 watermark clean 就够;用户要清文件元数据或对付多厂商统计水印时,指向那个仓库。

流程 ⑥:纠错清单 —— 修错误、顺拗口,动作要轻

③ 跑完后把稿子再读一遍,修四类:错词/错别字(的地得、搭配错误)、 真病句(成分残缺、前后不接 —— 最小修复,改到通顺就停)、 标点(中文语境半角逗号句号、括号引号不配对、重复标点)、 拗口/语义不畅/用词不准(读出声会磕绊的,换一两个词、微调一处语序,好读即可)。 风格平淡不是错误;信息不许增删;句序段落不许动;本来就通顺的句子不碰。 判断口诀:错误要修;拗口要顺;通顺的再「可以更好」也不动。 完整版见 skills/proofread-cn/SKILL.md。实测参考:四份产出跑 ⑥, 两份零错误逐字原样返回,两份各修若干处标点和一处缺字病句,检测分不变。

改完自查 —— 验的是通顺,不是分数

中文主线四段(①②③⑥)过完,跑流程 ③ 收尾:

./humanize replace 稿.txt -o 出稿.txt --compare

改写完成后先自己读一遍,逐条过:

  1. 事实核对:原文每一个数字、单位、年份、人名、地名、专有名词,改后还在吗? 少一个就把那句还原。
  2. 信息核对:原文说过的每件事,改后还说了吗?删掉的应该只有套话。
  3. 通顺核对:改动过的每一句单独读一遍。有搭配不当、成分残缺、前后不接的, 把那句还原。宁可不改,也不写病句。
  4. 平庸化核对(反向):段落是不是变薄了?句子是不是整体变短且变齐了? 原文里锋利的判断是不是被磨成了中性说明书?中了任意一条就回滚。

想看检测分可以跑,但不要把它当验收标准

./humanize detect output.txt -s

关于检测分

这个工具带一个 0-100 的检测分。不要以压低它为目标。 它的可用性分文体差别极大

2026-08 实测:五个当前模型各 50-100 篇 vs 真人公开语料 50 篇,两侧长度对齐后算区分度 (随机取一篇模型的和一篇真人的,模型那篇分数更高的概率;0.5 是抛硬币):

文体 区分能力 怎么用
科普 / 新闻类短文 0.837 可以参考
社交笔记 0.771 可以参考
学术摘要 0.621 已经很弱,别当依据
小说 0.479 等于抛硬币,别用
长篇博客 0.155 方向是反的,用了会误判
职场汇报 无数据 没有可用的真人公开语料做对照

长文场景(博客 0.155、小说 0.479)不要用这个分数做判断。 博客那格的意思是:拿它挑「哪篇像 AI 写的」,它会更多地挑中真人写的。

另外:真人写的论文也会被判成 AI。 60 篇真实知网论文摘要(发表早于大模型), 平均 60 分,35% 落在「几乎确定是 AI」档。上面那张评分标准表的档位名称, 在学术和长文场景下不准。

外面的商用检测器也一样不稳:同一批文字有的工具给 0 分、有的给 99.9 分。

所以:把检测分当参考信号可以,当优化目标不行。 上一版为了压分去乱换同义词、 插入过渡句、打乱句序,分数确实降得多,代价是写出不是中文的句子。

配置说明

所有检测模式和替换规则在 scripts/patterns_cn.json,可自定义:

  • 添加新 AI 词汇
  • 调整权重
  • 增加替换规则
  • 修改正则匹配

外部配置字段

critical_patterns    — 高权重检测(三段式、连接词、空洞词)
high_signal_patterns — 中权重检测(AI 高频词、模板句)
replacements         — 替换词库(正则 + 纯文本)
academic_patterns    — 学术专用检测与替换
scoring              — 权重和阈值配置