Tacheles:用正则检测 AI 写作痕迹的开源工具
一款本地运行的写作 lint 工具,基于规则识别 AI 写作痕迹并给出修改建议,支持英俄等多语言。
在大量文本由大模型生成的背景下,如何判断并修改「AI 味」过重的写作成为一个新需求。开源工具 Tacheles 给出的答案是:用规则匹配代替模型判断,在本地标记出具体的 AI 写作痕迹,让作者自行决定如何修改。
工具定位与思路
Tacheles 将 AI 生成文本的典型问题归结为两类:Bloat(冗余)与 Style(风格)。Bloat 指模型逐 token 生成时倾向于使用「最可能」的词,造成信息密度低、词汇堆砌;Style 指诸如破折号过度使用、「不是 X,而是 Y」句式、某些高频词等明显的机器痕迹。工具不做改写,只标记问题所在位置。
相比常见的「AI 概率检测器」和「Humanizer」,Tacheles 走的是第三条路:返回一个「可执行的删除清单」而不是一个百分比分数,也不是由模型重写文本。它的特点是确定性、可重复、完全离线。
核心功能
- 精确标记:每条发现都附带文件行号、问题类型和原因,输出格式类似代码 lint 工具。
- 多语言支持:内置英文(基于 Stephen King 的写作规则)和俄文(基于 Ильяхов 与 Нора Галь 的规则)语言包;希伯来文为实验性支持,德文与西班牙文计划在下个版本加入。新增语言以数据包形式扩展,不需修改代码。
- 可定制的 Profile:内置 essay-en、essay-ru、consulting-en-formal、technical-en 四种配置,用户可复制后根据自身写作习惯调校。
- 写作风格度量:提供 stylometry 功能,可对比两版稿件以验证重写是否至少精简了 10%。
- 配套的 SKILL.md:可与 Claude Code、Claude.ai 或 Agent SDK 配合,完成「检测—按规范重写—复检」循环,并可构建用户的「声音锚点」。
工作原理
工具的检测单元称为 Tell,目前共有 43 条激活规则,外加一条计划中的规则。每条 Tell 是一个命名模式(正则或统计量),在 src/tells/registry.json 中以数据形式定义,包含 id、匹配方式、提示信息和默认严重等级。检测维度分为三类:表面特征(如 s-banned-vocab 标记 delve、robust 等高频 AI 词汇)、节奏(如 r-uniform-polish 检测句子长度过于均匀)、简洁度。
严重等级分为 HIGH、MEDIUM、LOW:HIGH 触发后命令以退出码 1 结束,可直接接入 CI 或 commit hook 作为门禁;MEDIUM 与 LOW 仅报告不阻断。Profile 是一个 JSON 文件,决定启用哪些 Tell 以及严重等级阈值。
使用方式
最简单的运行方式:
npx tacheles check draft.md
或者全局安装:npm install -g tacheles,再运行 tacheles check draft.md。源码用户也可使用 Bun 直接执行。运行后会逐行列出发现的问题,例如:
- HIGH line 3 s-banned-vocab delve
- HIGH line 3 s-banned-vocab robust
- HIGH line 7 r-reframe-opener It's not about the tools you pick, it's
添加 --json 参数可输出机器可读格式,便于接入自动化流程。
Tacheles 本质上是一个规则驱动的写作质量检查器,并不依赖任何 AI 模型,所有检测在本地完成,不上传文本。对于希望保持个人写作风格、又需要使用 AI 辅助起草的作者来说,它提供了一种比「重写」更可控的修改路径。
