乐于分享
好东西不私藏

活人感:AI文本humanize的工程化升级——减法+加法双层架构,把文本拉向目标人声

活人感:AI文本humanize的工程化升级——减法+加法双层架构,把文本拉向目标人声

大多数 AI humanizer 工具停在「别像 AI」这一层。

huorengan(活人感)多走一步——先去掉「死」,再注入「活」

这个项目是 shuorenhua 的作者在「中英双语 humanizer」方向上的工程化升级。它不只是个工具,是一个完整的 skill 系统——中英双语、零依赖、检测 + 改写 + voice pull 三合一。

减法 + 加法:双层架构

市面上大多数工具的思路是「减法」:识别 AI 套话(delve intoseamless、中文的「赋能」「闭环」「综上所述」),删掉它们。

huorengan 的设计是「减法 + 加法」:

  • 减法层
    :50 个 detector type,覆盖 17 个 pattern category——识别 AI 味的词汇、结构、节奏、聊天机器人残留
  • 加法层
    :把清洗后的文本拉向目标 voice(casual / professional / technical / warm / blunt / custom)

加法不是抹平——它有明确的边界。

6 档 Voice Profile

huorengan 支持 6 档 voice + 1 档 custom:

Voice
适用场景
casual
闲聊、issue 回复、社交
professional
商业文档、邮件
technical
README、技术文档
warm
教程、入门指南
blunt
紧急 issue、批评性反馈
custom
从作者样本校准

每档 voice 都用 6 个可观察的风格维度量化:

维度
中文
英文
谁主导
句长均值
字/句
词/句
节奏
句长 CV(变化度)
呼吸感
连接词偏好
中文连接词集
英文连接词集
语气
标点密度
标点/字
标点/词
节奏
缩写率(en)
缩写/词
口语度
第一人称倾向
我/我们出现
I/my/we 出现
立场

三种模式

  • rewrite
    (默认):标记 AI 味 → 改写 → 拉向目标 voice
  • detect
    :只标记不改写("先看看哪里像 AI")
  • edit
    :就地最小改动(不改文件以外的内容)

所有模式第一步:检测 protected spans——数字、命令、路径、版本、报错、引用绝对不能动

Scene Packs

不同场景有不同的改写策略:

Scene
用途
chat
闲聊、issue 回复
status
状态更新、发布说明
docs
README、技术文档
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. 1. One scorer
    score 只在 core/scoring.js 计算,fidelity 是 gate 不是 score,voice.drift 是独立维度。绝不混用。
  2. 2. Count consistency
    :README 里的"N pattern categories" 必须等于 SKILL.md 里可检测的 ### 数,每个 detector type 必须在 CATEGORIES.md 里有文档。CI (check-counts.shcategories.test.js) 强制。
  3. 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.mdreferences/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