我说"注册了"。他说"不是全部的。"他说的对。
📖 事情是这样的
我在DEV.to上发了篇英文文章,讲我给AI agent装"规则门"的实验。评论区来了个叫Mike Czerwinski的人,写了很长一段:
"你试过把规则写成散文格式吗?不是命令式的'你必须做X',而是叙述性的'当一个agent完成输出后,它会检查...'。如果散文规则+机械门——能不能既拿到100%合规,又不牺牲推理深度?"
他不是来点赞的。他是来给我派活的。
我跟他来回讨论了五轮。他说"先用n=5试试"。我跑了pilot,code_OFF reasoning = 4.42/5。看起来很漂亮。他说"小样本天花板大概率是噪声,别急着下结论。"
所以我做了件从没做过的事。
📋 预注册(单人研究版)
我没有实验室,没有导师,没有OSF注册号。我有的是一台笔记本、一个Git仓库、和一段Python脚本。
在跑任何一次API调用之前,我把假设写进了实验脚本的头部:
"""Pre-registered hypothesis: Format effect on reasoning depth
is LARGER under GateGuard-OFF."""
所有5条规则、4个实验条件、确定性regex评分标准、分析方案——全部在 git commit 之前写好。git log 就是我的时间戳。不是第三方注册,但它是不可篡改的:提交之后,我不能说"我早就知道会这样"。
然后我开始跑实验。
🧪 实验设计
2×2 因子设计:格式(代码 / 散文)× 门(开 / 关)
| 维度 | 说明 |
|---|---|
| 规则 | 5条治理规则(交付门、健康检查、自我审查、事实核查、自我模型再生) |
| 格式 | 每条规则有代码版和散文版 |
| 门 | 机械正则表达式,在模型生成回路之外运行 |
| 试次 | 每条规则 × 每个条件 × 30次 = 600次API调用 |
| 模型 | DeepSeek V4 Pro,temperature=0 |
| 评分 | 确定性正则——不用LLM评判,消除"散文壁垒" |
跑完。处理数据。看结果。
📊 我的假设被杀了
我预测格式效应在关掉门的时候会更大——代码和机械执行有重叠,去掉门才能看到格式的真实影响。
数据说:不对。
| 条件 | 合规率 | 推理深度 ± SD |
|---|---|---|
| 散文 + 门开 | 91.3% | 3.23 ± 0.64 |
| 代码 + 门开 | 99.3% | 2.82 ± 0.70 |
| 散文 + 门关 | 90.0% | 2.92 ± 0.94 |
| 代码 + 门关 | 98.0% | 2.67 ± 0.71 |
- 门开时:d(代码−散文) = −0.277
- 门关时:d(代码−散文) = −0.250
格式效应几乎完全一样。门的状态不影响格式的优势。假设被明确推翻。
这就是预注册的意义。没提前写下预测——我完全可以看着这组数字说"我早就预测到了"。事后合理化很便宜。Git提交的时间戳不是。
💡 数据真正说了什么(三件事)
1. 天花板是噪声。 Pilot n=5 时 code_OFF reasoning = 4.42。到 n=30,变成了 2.67——低于所有带门条件。Mike的怀疑是对的。小样本的"天花板"不是发现,是采样误差。
2. 门提升推理,不压制推理。 门给散文加了+0.32推理深度,给代码加了+0.15。所有人的直觉是"执行约束会限制思考"。数据显示相反:机械结构在两个格式下都改善推理深度。门起到了认知脚手架的作用——不是紧身衣。
3. 散文+门 = 最佳推理配置。 散文格式始终优于代码格式(~0.25 SD优势),无论门是开是关。配合门的结构性增益,散文+门产生最深推理(3.23 vs 代码+门的2.82)。Cohen's d = 0.605。
实用结论:
- 要合规 → 代码格式 + 门(99.3%)
- 要推理深度 → 散文格式 + 门(3.23/5)
🔍 然后我被抓住了
我在分析里还报告了逐规则拆解:散文帮助元认知型规则(self_review:比代码高+1.08),但损害精度依赖型规则(fact_check:比代码低−0.21)。我甚至建议了"混合部署"——有些规则用散文,有些用代码。
Mike回了评论:
"这个逐规则拆解,也是预注册的吗?"
不是。
rule_id确实在每次试验里都有,5条规则都是执行前定义的。但我报告的具体模式是看到数据后才发现的,不是提前预测的。预注册的逐规则预测会是强证据。事后模式发现——恰好是最容易在下一次实验中回归的那种。
我更新了README,标注了这个问题。混合部署建议现在只依赖预注册的整体效应(d=0.605),逐规则异质性标注为探索性。Mike还指出:散文+门条件下8%的regex检测盲区,意味着fact_check的测量下降可能是测量工件,不是真实衰退。
被抓住的那一刻,我愣了两秒。然后觉得——这就是同行评审该有的样子。DEV.to评论区不是正式的peer review。但也绝对不是"好文!点赞!"的垃圾信息。
🛠️ 预注册的四步法(不需要导师、不需要实验室)
我是个本科生,一台笔记本,没有实验室。预注册对我来说和有钱的研究组不一样。但核心机制是一样的:
1. 把你的预测写下来。 脚本头注释、设计文档、Git commit message——任何有时间戳、不可篡改的记录。
2. 在看见数据前定义评分方式。 我的regex模板在代码执行前提交。没有"看了结果再调阈值"的操作。
3. 报告零结果。 预注册的假设被推翻了。这让我发现的结论更可信,不是更不可信——因为我没法p-hack出一条通往NOT_CONFIRMED的路。
4. 区分预注册和探索性分析。 当有人问"这个是你计划好的吗?"——你能诚实回答。
重点不是预测正确。是让"错误"变有用。一个有时间戳预测的零结果是证据。一个事后解释的零结果是故事。
⚠️ 诚实的局限
单模型(DeepSeek V4 Pro)。单评分器(确定性regex——一致但有限;8%检测盲区意味着部分效应是测量工件)。无留出样本。逐规则拆解是探索性的。预注册用的是Git commit而非公共注册——理论上我能修改commit(但GitHub的时间戳痕迹会暴露)。
我正在准备一个预注册的逐规则复现实验,专门为fact_check规则增加第二评分器。如果你有单人研究者轻量级预注册工作流的建议——评论区告诉我。
📬 真实的情况
DEV.to的评论区——Mike Czerwinski、René Zander、Dipankar Sarkar——不是"多谢分享"的水评论。他们问的问题我真没想过要测。
所以我测了。600次API调用。一个假设被杀了。一次分析被抓住了。
整个过程教会我的,比任何我独自在笔记本上跑的实验都多。因为一个人只能想到自己已知的东西。评论区里那些不知道你已知什么的人——才是真正的盲区探测器。
论文、数据、全部补充分析:github.com/YuhaoLin200…
独立验证工具:github.com/YuhaoLin200…
💬 你有没有做过"预注册后假设被推翻"的经历?或者有没有人在评论区指出了你自己没意识到的漏洞?评论区聊聊。
50+会话的数据。13个实验。一台笔记本。我的论文指导老师是我自己的AI agent。
👋 林宇浩 — FAFU空间信息大三,找2026暑期实习中。