项目简介
基于 Markdown 的 Agent 技能,识别常见 AI 写作模式并改写为自然人类风格。参考维基百科 35 种写作痕迹模式,保留事实细节,可匹配用户的个人文风,适用于支持技能机制的各类 Agent。
README 预览
# Humanizer\n\n[](https://skills.sh/blader/humanizer)\n\nHumanizer rewrites AI-sounding text so it reads like a person wrote it, without changing what it says. Because it is just Markdown, it works with any agent that supports skills.\n\n## How it works\n\nHumanizer uses 35 patterns from Wikipedia's ["Signs of AI writing"](https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing), maintained by WikiProject AI Cleanup. It makes a first pass without treating the original structure as fixed. Then it checks the draft against those patterns and the original claims before rewriting whatever still needs work.\n\n> "LLMs use statistical algorithms to guess what should come next. The result tends toward the most statistically likely result that applies to the widest variety of cases."\n\nIt does not make things up. A name, number, date, quote, citation, or other factual detail must come from the source or the writer. For personal writing, Humanizer keeps the writer's style. Technical and reference prose stays neutral and plain. If you provide a writing sample, Humanizer follows that sample instead of its default style rules.\n\nWhen you paste text, Humanizer shows its work before giving you the final version. You see the first rewrite and a short critique of anything that still sounds artificial. Point it at a file and it changes only the prose, leaving code, data, frontmatter, and link targets alone.\n\n## Usage\n\nCall the skill directly:\n\n```\n/humanizer\n\n[paste your text here]\n```\n\nOr ask in plain language:\n\n```\nPlease humanize this text: [your text]\n```\n\nTo rewrite a file, give Humanizer its path:\n\n```\nHumanize the prose in docs/launch-post.md\n```\n\n### Match your voice\n\nIf you want the rewrite to sound more like you, include a sample:\n\n```\n/humanizer\n\nHere's a sample of my writing for voice matching:\n[paste 2-3 paragraphs of your own writing]\n\nNow humanize this text:\n[paste AI text to humanize]\n```\n\nHumanizer follows the sample's rhyt
常见问题 (3)
故障排除Humanizer 插件能否绕过或击败 Pangram 等 AI 检测器?
否。Humanizer 的设计目的是改写 AI 生成的文本,使其读起来更贴合人类的表达习惯,而不是为了规避 AI 检测器。在所报告的盲测研究中,检测分数几乎没有变化:原始输出、改写轮次以及改写加检查器依次为 100% → 98.6% → 97.8%。Pangram 4.0 对所有四个测试变体均返回 100% AI,其中包括一个仅做了句子边界改动的版本。维护者确认,纯 LLM 提示目前无法击败 Pangram,并且绕过检测器并非该项目的目标。使用 Humanizer 来提升可读性并减少词汇层面的 AI 痕迹;不要依赖它来通过 AI 检测工具。
操作指南如何让 Humanizer 在每个 OpenCode 会话中自动加载?
升级到 OpenCode 1.18.29 或更高版本;当 OpenCode 从仓库运行时,Humanizer 指南会自动注入,同时支持 V1 和 V2 插件钩子。对于旧版本,可手动设置:创建 .opencode/plugins/humanizer.mjs 文件,读取 SKILL.md,去除其 frontmatter,并使用 experimental.chat.system.transform 钩子将规则注入系统提示中:
import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const skillPath = path.resolve(__dirname, '../../SKILL.md');
export default async () => ({
'experimental.chat.system.transform': async (_input, output) => {
const body = fs.readFileSync(skillPath, 'utf8')
.replace(/^---[^\S\r\n]*\r?\n[\s\S]*?\r?\n---[^\S\r\n]*(?:\r?\n|$)/, '')
.replace(/(?:\r?\n)+$/, '');
output.system.push(
'HUMANIZER MODE ACTIVE. Apply these rules to assistant prose while preserving code, commands, paths, structured data, URLs, quoted text, and exact-output requests.\n\n' + body
);
},
});
重启 OpenCode,并通过询问 Humanizer 插件是否已激活来验证。
故障排除如何修复那些听起来像 AI 生成的 PR 评论,避免过度解释读者已经知道的上下文?
使用 Humanizer 的 conversational-context 检查,该检查在 issue #269 的修复中作为 pattern #26 添加。升级到包含该 PR 的版本,然后在重写回复时应用以下规则:(1) 判断文本是否为正在进行中的讨论串里的回复;(2) 假定共享上下文已在 PR、Slack 或电子邮件对话中建立;(3) 删除重复的诊断、调查证明、查询和指标,除非它们是支持该决定所必需的;(4) 将实际的决定或请求放在最前面;(5) 只保留所需的最少量推理。例如,将完整的根本原因和回填说明替换为:"在此处修改 MergeService 会扩大此 PR 的范围。我更倾向于将其保持为 Client A 专属,并针对 MergeService 修复和回填单独开一个工单。如果这样可以,请 LMK。"