上周我在 Hacker News 上看到一个帖子:有人专门搭了个一次性网站,往里塞假统计数据,就为了看大模型把这些数字当事实引用。帖子拿到 295 分、168 条评论。它戳中了很多人的神经,因为我自己也遇到过更温和的版本——AI 助手递来一份草稿,里面理直气壮地写着"73% 的开发者……",还附了链接,而我没有任何快速办法去确认那个链接里到底有没有 73%。
我找到的现成引用核查工具,回答的其实是另一个问题:"这条参考文献存在吗?"它们面向学术文献目录,多数还是付费的网络服务。我要的东西更窄、也更本地:被引用的那个页面里,到底有没有这些数字。于是我把它做了出来。
factfence 是什么
factfence 是一个零依赖的 Python 命令行工具。把它指向任意 markdown 或文本文件——博客草稿、文档、AI 生成的报告——它会做这几件事:
- 抽出所有量化断言(百分比、金额、大额计数、倍数、比例),并跳过代码块,这样 retries = 99 不会被当成一条"断言"。
- 每个不重复的引用只抓取一次(礼貌的 user-agent、8 秒超时、1.5MB 上限),把页面压缩成规范化纯文本。
- 对每条断言给出五种判定之一。
五种判定分别是:SUPPORTED(被引页面里确实有这些数字)、UNVERIFIED(页面能打开,但不含这些数字——这是最典型的 AI 幻觉形态)、BROKEN(所有被引链接都抓取失败)、UNCITED(一个硬数字,完全没有引用)、CITED(一句"研究表明……"式的断言,链接有效,但没有可交叉核对的数字)。
跑起来是什么样
拿一段 AI 写的样例文字实测,输出是这样的:
[✓ SUPPORTED] 据 2026 年 DevTools 调查,73% 的开发者表示 AI 生成的代码在合并前需要人工审查。HTTP 200,匹配到 73%。
[? UNVERIFIED] 有团队声称 99.9% 的 AI 建议可直接上生产,引用了一份内部研究。HTTP 200,被引页面抓到了,但不含该断言的任何数字。
[! UNCITED] 常有人说 2027 年前 60% 的代码将由 AI 编写,但没人给出出处。量化断言无引用,需人工核实。
汇总一行:共检查 6 条断言,2 条支持、1 条有引用、1 条未验证、1 条链接失效、1 条无引用,3 条需要复核。
退出码对 CI 友好(0 表示干净,1 表示需要复核,2 表示出错),加 --json 可以拿到机器可读的输出,直接接进流水线。
怎么用
克隆仓库、进入目录,用 python3 -m factfence your-draft.md 跑你的草稿。不需要 pip install,只用标准库,要求 Python 3.10 以上。
它故意不做什么
它检查的是引用是否支撑断言,不是断言是否为真。一条 SUPPORTED 的断言,如果来源本身是错的,它照样可能是错的——这个工具抓的是更常见的那种失败:数字说得斩钉截铁,引用却是死链、不相关或者干脆没有。
数字匹配是文本层面的,"73%"和"接近四分之三"对不上;需要登录的页面抓不到;工具目前以英文为主。这些都在 README 里作为局限写明,而不是藏起来。
如果你要发布任何有大模型参与写作的内容,把草稿过一遍。它标出来的那三句话,恰好就是值得你再读一遍的三句话。
仓库地址:github.com/techdevfun/factfence,MIT 许可,欢迎提 issue 和 PR。
热门跟贴