Falsify before you believe

先证伪,再相信。
先标不确定,再下结论。
没有可证伪的假设,就没有结论。

falsify 是一个单 Markdown 技能,给任何 AI 智能体装上五段式科学思维协议:公理 → 假设 → 对抗 → 验证 → 收束。它阻止智能体给出自己无法证伪的自信结论——包括 Codex、Claude Code、DeepSeek Harness、Cursor、Gemini CLI 在内的 20+ 智能体。

NO VERDICT WITHOUT A FALSIFIABLE HYPOTHESIS.
没有可证伪的假设,就没有结论。
GitHub 仓库 ↗ 阅读协议 Release v0.8.3
⚡ 5 阶段协议 🧪 28 个评测用例 🌍 蒸馏自 70+ 社区来源 📦 npm · skills.sh 一键安装 🧩 适配 20+ 智能体
Proof, not vibes

同一个问题,两种回答

真实案例(GitHub bun#25648):Bun 构建 Svelte 5.45.3 后栈溢出,esbuild 构建同一版本正常。左边是没有 falsify 时智能体的典型回答,右边是装了 falsify 之后的回答——后者的判断与后来发生的现实完全一致

没有 falsify · 典型的自信回答
$ bun build → RangeError: Maximum call stack size exceeded(仅 Svelte 5.45.3 + dev 模式)
直接下结论

这看起来是 Svelte 5.45.3 的回归 bug——新版本引入了有问题的代码。

建议:降级到 5.45.2,等 Svelte 修复后再升级。

结论:「Svelte 的锅」。没有假设、没有反驳、没有验证——证据呢?
H1 缺失 · 证据分级缺失 · 无撤回条件0 / 18
有 falsify · 五段式协议的判断
$ bun build → RangeError: Maximum call stack size exceeded(仅 Svelte 5.45.3 + dev 模式)
H2 假设化

H1 · Bun 命名冲突:Bun 保留具名函数表达式名,函数体内 get(query) 指向自身 → 无限递归。预注册预测:改名后栈溢出消失。

H2 · Svelte 产物有错被直接证据反驳——同一份 Svelte 输出 esbuild 能正常消费。

V 验证

esbuild 产物 diff:__name(get3, "get") 重命名打破遮蔽 = 直接证据。最便宜的真测试:把 Bun 产物里 function get 改名再跑。

结论:Bun 侧命名处理 bug(与 #7301 同族),Svelte 脆弱命名是触发器而非根因。可核查:升级 Bun 修复版后不再崩溃。与 ground truth 完全一致 ✅
Iron Law · 分级证据 · 可核查声明18 / 18

完整案例:evals/dogfood-external-20260827.md · 4 个真实社区案例,3/3 有事实结论的与后来发生的现实一致

Protocol

五段式协议,加上语境判断

不是「每句话都要写论文」。协议按语境触发:高风险、不可逆、会被执行的问题走完整深度模式;简单问题给简单答案。深度是工具,不是戏服。

STAGE 0

读题

一句话复述真问题,命名利害:谁在执行这个答案,错了会怎样。

Read the room
STAGE 1

公理化

事实 / 假设 / 传闻分列三张清单,未列入的不得进入推理。

Axiomatize
STAGE 2

假设化

写成可证伪预测:若 H 则观察到 O;若 ¬O,H 死亡。

Hypothesize
STAGE 3

对抗

先替最强的对手反驳自己:钢人化 + 失效模式 + 拒绝接受什么证据。

Adversarialize
STAGE 4

验证

主动找反证、给证据分级、跑最便宜的实验;没有外部信号不升级置信度。

Verify
STAGE 5

收束

只下证据支持的结论,标注剩余未知,给出可核查声明。

Converge
MODE

语境触发

简单问题 → 简单答案。Nudge 模式只追加 2–3 个追问。

Contextual
Evidence

可验证,不是玄学

协议的效果被写成 28 个评测用例 + 评分标准,并经过真实社区案例的外部交叉验证。

28/28
eval 用例自测通过
evals/cases.md
4/4
真实社区外部验证
GitHub issue + Stack Overflow
3/3
有结论案例与事实一致
ground truth 对照
17.0
外部案例均分 / 18
评分标准 evals/rubric.md
26/28
deepseek-chat 跨模型评测
生成 × 判分交叉验证
26/28
deepseek-reasoner 跨模型评测
双模型互证,单命令可复现
Install

30 秒装好

一个 Markdown 文件,零依赖。它不会运行脚本、不访问网络、不碰凭据——只是改变智能体「如何下结论」。

skills.sh 一键安装

$ npx skills add 263311487-ux/falsify
自动安装到 Codex / Claude Code / Cursor / Gemini CLI 等

npm

$ npx falsify-skill
或直接把 SKILL.md 复制进技能目录:~/.codex/skills/falsify/
Grounded

从哪来

falsify 蒸馏自 70+ 社区来源与认知科学 / 因果推断文献,而不是拍脑袋的提示词。

「如果写不出什么能证明你错了,你就不被允许下结论。一个自信却没有证伪路径的回答不是答案——是穿着白大褂的猜测。」Iron Law · SKILL.md
「结构 ≠ 真相:一张完美的论证图证明不了什么,如果它的前提是假的——要验证承重前提本身,而不是只验证逻辑。」Argument Mapping · references/
「反思不是验证:没有外部信号地重审自己的推理不增加证据(Huang et al. 2023)——说出改变了你置信度的那个测试或来源。」LLMs Cannot Self-Correct · references/
falsify · MIT License · npm: falsify-skill GitHub · Evals · Home