Install
openclaw skills install @fendouai/huorenganAudit and rewrite Chinese or English content to remove AI tone ("AI-isms"), then pull it toward a target human voice. Use this skill when asked to "remove AI tone," "sound human," "去 AI 味," "说人话," "活人感," "make this sound like a real person," or "less like a template." Bilingual (zh/en), with detect-only, edit-in-place modes, scene packs, protected spans, and voice profiles.
openclaw skills install @fendouai/huorenganSubtraction + addition. First remove the "dead" (AI tone), then inject the "alive" (a target human voice). 减法 + 加法:先去掉「死」,再注入「活」。
⚠️ Stage 0 skeleton. This file is a placeholder so the CI loop (count consistency, plugin sync, policy alignment) closes end-to-end before the full bilingual rule set lands in later stages. Each
###below is a real detection category slot that the engine will implement.
This is a writing-quality tool, not a verdict. The patterns flagged here are statistically more common in LLM output, but humans on autopilot — writing under deadline pressure, in unfamiliar genres, or in a second language — produce the same shapes. Signals, not proof.
这是一个写作质量工具,不是判决。这里标记的模式在 LLM 输出中更常见,但赶稿的人、写不熟悉的体裁、或用第二语言写作的人,也会写出同样的形状。是信号,不是证据。
rewrite (default / 默认) — Flag AI tone and rewrite, then (if a voice is set) pull toward it. 标记并改写,再按目标人声拉拢。detect — Flag only, no rewriting. 只标记不改写。edit — Edit a file in place with minimal, targeted edits. 就地最小改动。Every mode runs protected-spans detection first — version numbers, commands, paths, errors, quotes must not drift. 所有模式第一步先做 protected-spans 识别。
Work like an editor, not a slogan filter. The goal is not just to delete AI-looking phrases, but to help the user end up with text they can actually send.
像编辑一样工作,不像关键词过滤器。目标不只是删掉 AI 套话,而是帮用户拿到一版真的能发出去的文本。
Default flow:
Default principles:
Detection categories below. Each
###is one category that the engine implements and CATEGORIES.md maps to a detectortype. Bilingual where the rule applies to both languages; language-specific where noted. Full phrase lists live in references/; the engine implements the regex-detectable subset (see detector/CATEGORIES.md).
Words 5–20x more frequent in AI text. Replace on sight. zh: 开场套话(值得注意的是/综上所述)、商业黑话(赋能/抓手/闭环)、小红书腔(保姆级/绝绝子)、调试腔(兜住/收口/根因)、谄媚(好问题/稳稳接住)、价值拔高(不仅仅是…更是)、无源引用(研究表明)、正能量收尾(未来可期)。en: delve, tapestry, leverage, seamless, robust, comprehensive, game-changer, "serves as", "at its core". See references/phrases-zh.md, references/phrases-en.md.
Individually fine; 2+ (short para) or 3+ (long para) in the same paragraph is the signal. zh: 然而/此外/与此同时/显著/有效/全面/持续 + 单音节命令词(补/接/核/进/顺/落/坏/跑)。en: harness, navigate, foster, elevate, nuanced, crucial, transformative, cornerstone. Keep the best-fit one, rewrite the rest.
Common words; only flag when saturated (~3%+ of text). zh: 重要/关键/核心/创新/优化/提升/推动/确保。en: significant, innovative, effective, dynamic, compelling, unprecedented. Replace some with specifics (numbers, names, examples), not all.
19 shapes from references/structures.md: binary contrast (不是X而是Y / "It's not X, it's Y"), summary closer (综上所述 / "In conclusion"), mechanical ordering (首先…其次…最后), symmetry padding (既要…又要), value inflation, positive-energy closer, psych judgment. Cross-lingual types share one type so bilingual symmetry holds.
zh-only types — English-thinking literally translated into Chinese. 被动语态堆砌(被…被…被…), 长定语结构(的…的…的…), 「基于…」开头, 「通过…来…」. No English counterpart. See references/translation-tone.md.
"I hope this helps!", "Great question!", "Certainly!", "Let's dive in!" / 好问题!希望这对你有帮助!让我来为你解释. Remove entirely. Also reasoning-chain artifacts ("Let me think step by step", "Here's my thought process").
"marking a pivotal moment", "a watershed for the industry" / 深刻的影响, 前所未有, 颠覆性变革, 范式转移. State what happened; let the reader judge significance.
"Experts believe", "Studies show", "Research suggests" / 研究表明, 数据显示, 业内人士认为, 有专家指出. Either cite a specific source or drop the attribution and state the claim directly. Don't fabricate sources.
"While X is impressive, Y remains a challenge" / 虽然…但是…. Either make both halves specific or pick a side. The balanced-sounding non-statement is the tell.
"nestled within breathtaking foothills", "a vibrant hub of innovation" / 打造, 助力, 全方位, 深度赋能. Replace with plain description. If you wouldn't say it in conversation, cut it.
"This one is worth your time:", "do yourself a favor and read this", "thank me later" / 建议收藏, 强烈推荐, 划重点. Say what the thing is and who it's for; drop the generic endorsement.
"could potentially create", "may eventually unlock" — modal + hedge adverb stacks. Each hedge cancels the next, asserting nothing. Pick one.
"In the rapidly evolving world of X…" / 在当今…的时代, 随着…的不断发展. Lead with the news/insight; context can come second.
"What surprised me most", "the most interesting part" / 你不是敏感, 你只是太久没被稳稳接住了. Tell-don't-show. If the emotion is real, the writing earns it; if not, cut the claim.
"the failure mode nobody's naming", "a concept nobody talks about" / 真正的X不是…而是…. Assume the concept isn't novel and frame accordingly.
Near-definitive single-hit signals: unfilled [Your Name] placeholders, citeturn0search0 citation markup, utm_source=chatgpt.com. Strip mechanically. Each is proof the text was copy-pasted from a specific chat tool.
Structure is the #1 detection signal. Sentence-length uniformity (CV < 0.25), uniform paragraph length, low TTR (< 0.40 at 200+ words), punctuation-density uniformity across paragraphs, cross-paragraph burstiness. zh: 句长集中在 N 字(变化小). Fix by mixing short punchy sentences with longer ones — vary, don't sand.
Before any rewrite — every mode — fence off what must never drift. See references/protected-spans.md.
When a sentence can only sound natural by changing a protected span, keep the span, accept the stiffness. Fidelity wins over style.
When voiceMode ≠ none, after subtracting AI tone, pull the result toward a
target human voice. This is huorengan's step beyond both parent projects. See
references/voice-contract.md.
Profiles (from policy/voice.toml): casual / professional
/ technical / warm / blunt / custom (calibrated from a sample).
The engine computes voice.drift (0-100, distance from target) and concrete
suggestions: "split sentence 3 at word 15", "mix in 3-8 word punchy sentences",
"swap to target connectors". zh: 「第 N 句约 X 字,考虑在 Y 字处断开」.
Hard boundary: voice suggestions must not touch protected spans. When voice
pulls conflict with fidelity, fidelity wins. voice.drift is independent of
score — a text can be clean (low score) yet far from a target voice (high drift).
rewritedetecteditAfter the first rewrite, always do one quick residual check. Look for only five things:
值得注意的是, 直接说结论, Great question)综上所述, 总的来说, In conclusion)更重要的是, 这说明了, what this shows is)意义重大, 方向是对的, pivotal, transformative)If the first pass already protects facts and reads naturally, keep the second pass light. Do not polish the life out of it.
audit-only instead of rewrite