大多数 AI humanizer 工具停在「别像 AI」这一层。
huorengan(活人感)多走一步——先去掉「死」,再注入「活」。
这个项目是 shuorenhua 的作者在「中英双语 humanizer」方向上的工程化升级。它不只是个工具,是一个完整的 skill 系统——中英双语、零依赖、检测 + 改写 + voice pull 三合一。

减法 + 加法:双层架构
市面上大多数工具的思路是「减法」:识别 AI 套话(delve into、seamless、中文的「赋能」「闭环」「综上所述」),删掉它们。
huorengan 的设计是「减法 + 加法」:
- 减法层
:50 个 detector type,覆盖 17 个 pattern category——识别 AI 味的词汇、结构、节奏、聊天机器人残留 - 加法层
:把清洗后的文本拉向目标 voice(casual / professional / technical / warm / blunt / custom)
加法不是抹平——它有明确的边界。
6 档 Voice Profile
huorengan 支持 6 档 voice + 1 档 custom:
| casual | |
| professional | |
| technical | |
| warm | |
| blunt | |
| custom |
每档 voice 都用 6 个可观察的风格维度量化:
三种模式
rewrite(默认):标记 AI 味 → 改写 → 拉向目标 voice detect:只标记不改写("先看看哪里像 AI") edit:就地最小改动(不改文件以外的内容)
所有模式第一步:检测 protected spans——数字、命令、路径、版本、报错、引用绝对不能动。
Scene Packs
不同场景有不同的改写策略:
chat | |
status | |
docs | |
public-writing |
粘贴文本默认 rewrite;"先帮我看看哪里像 AI" 默认 detect;"只改这一段" 默认 edit。
实战示例
# 检测 AI 味得分(0-100,越高越 AI) node -e "const H=require('./detector/patterns.js'); console.log(H.analyzeText('值得注意的是,我们打造了赋能开发者的方案,助力降本增效闭环。').score)" # expected: 28 # 检测自然文本得分 node -e "const H=require('./detector/patterns.js'); console.log(H.analyzeText('今天把连接池上限从 20 调到 100,504 先压下来了。观察 24 小时,错误率 0.1% 以下就全量。').score)" # expected: 0 对比观察:第一条是典型的"AI 中文营销稿"——值得注意的是、打造、赋能、闭环 全是 AI 标志词。第二条是真人写的运维笔记——具体数字、具体动作、具体观察。
Engine API
const Huorengan = require("./detector/patterns.js"); const result = Huorengan.analyzeText("your text", { contextMode: "general", // general | technical | marketing | personal sceneMode: "docs", // chat | status | docs | public-writing voiceMode: "casual", // none | casual | professional | technical | warm | blunt | custom sample: "optional sample", // only for voiceMode: custom }); console.log(result.score); console.log(result.issues); console.log(result.voice?.drift); console.log(result.voice?.suggestions); 三个独立的维度:
score:减法层的 AI 味分数(0-100,越高越 AI) voice.drift:加法层距离目标 voice 的漂移 fidelity:rule 层的守门(不在 engine 返回里)

三个 Contract(工程纪律)
这是 huorengan 最值得学习的地方——严格的工程纪律由 CI 强制:
- 1. One scorer
: score只在core/scoring.js计算,fidelity是 gate 不是 score,voice.drift是独立维度。绝不混用。 - 2. Count consistency
:README 里的"N pattern categories" 必须等于 SKILL.md 里可检测的 ###数,每个 detectortype必须在 CATEGORIES.md 里有文档。CI (check-counts.sh、categories.test.js) 强制。 - 3. Policy ↔ engine alignment
: policy/*.toml里引用的名字必须存在于 engine enums,matrix.toml必须覆盖每个 scene×tier cell。CI (check-policy.js) 强制。
这套纪律让 huorengan 不像多数 AI humanizer 那样"写完就 commit",而是先建立 CI 闭环,再逐步添加规则。
加法层的硬边界
当 voice 建议和 fidelity 冲突时,fidelity 赢。宁可 drift 高一点,也不能让文本失真。
加法层永远不能:
改动 protected spans(数字、命令、路径、报错、版本号、引用) 补原文没有的事实、来源或判断(即使会让句式更像目标 voice) 把术语换成口语(即使术语让句子更长) 为了降 drift 而破坏信息完整性
drift 怎么读:
- 0-20
:文本基本就在目标 voice 上,加法层几乎不需要动手 - 20-50
:有距离,但减法层做完后可能自然靠近——加法层给轻建议 - 50-80
:明显偏离,加法层需要给具体的 split / vary / connector 建议 - 80-100
:风格冲突大——通常意味着选错了 voice 档,或文本本身需要先重写
drift 高不等于文本差。一篇技术文档对 casual 目标 drift 高是正常的——这时候该换 technical 档,而不是硬把文档拉成口语。
"干净了,但还不够像人"
低 score 只说明减法层干净,不说明文本已经有「活人感」。常见情况:
词都洗干净了,但句长还是一样齐 没有明显 AI 套话了,但整段没有立场、没有呼吸感 每句都正确,却都像"可接受的默认句子"
这时不要继续机械找 pattern——应该转去看 voice.drift 和 scene 是否匹配。
Voice 校准
想要"我的声音",提供 2-3 段你自己的文字样本:
/huorengan Here's a sample of my writing for voice matching: [paste 2-3 paragraphs of your own writing] Now rewrite this in my voice: [paste draft] 校准会捕捉:句长和节奏、连接词偏好、第一人称倾向。
它不会做的:
不复制你的事实或观点 不覆盖 protected spans 不试图冒充某个真实的人(只拟合可观察的风格维度)
安装和使用
git clone https://github.com/fendouai/huorengan.git cd huorengan npm test 作为 skill 包使用:
- Claude Code
:复制 SKILL.md、references/、policy/到.claude/skills/huorengan/ - Cursor
:用 cursor-rules/huorengan.mdc - Codex / OpenClaw / Hermes
:把工具指向 repo root
继承关系
huorengan 基于两个上游项目:
- conorbronsdon/avoid-ai-writing
:工程模板 + 英文规则 - MrGeDiao/shuorenhua
:中文优先的规则完整性
huorengan 的主要新增:
中英双语对称的 engine scene × tier × voice 政策作为数据 - 超越"less AI" 的 voice-pull 层
项目状态
当前焦点:
中英 detector 对称 skill 交互质量 场景感知改写行为 protected-span 安全 voice pull 建议
已知边界:
fidelity还是 rule 层 gate,不是 engine 返回字段
Stage 0 skeleton:当前 CI 闭环(count consistency、plugin sync、policy alignment)已先跑通,规则集逐步添加中。
验证
npm test 测试覆盖:
detector regression 中英对称 锁定 should-fix 和 should-not-fix 案例 README 示例锁 端到端 contract 检查
当前测试套件:140 CI checks。
AI humanizer 不只是「别像 AI」——是「像某个人」。
huorengan 走的是工程化路线:减法 + 加法双层、policy as data、CI 强制 contract、双语对称。这不是又一个包装 OpenAI 的工具,是一个真正在思考「活人感」是什么的系统。
GitHub:https://github.com/fendouai/huorengan
夜雨聆风