TwinBench 为每道题构造只改变一个控制字段的配对输入,要求两题均答对才计分,以识别依赖表面模式的回答。测试涉及配置优先级、跨来源一致性和时序核对;摘录未提供模型成绩或复现实验数据。
我构建了 TwinBench,一个用来测试 AI Agent 究竟是在遵守规则,还是仅靠模式匹配给出看似合理答案的 benchmark。
关键设计是:每个测试项都由一对孪生样本组成。两份输入完全相同,只有一个决定结果的字段不同。模型必须同时答对两个样本才能得分。如果它只是在匹配表面特征,这对样本就会让它栽跟头:输入表面上看起来一样,正确答案却发生了反转。
这个 benchmark 覆盖三个领域:
反事实规则手册(Counterfactual Rulebooks,10 对):配置优先级、合并队列排序、考虑时区的批处理、金额舍入、日志重放、版本排序、权威来源判定、重试条件控制。这些都是 Agent 一旦处理错误,就可能让生产系统出问题的任务。
反事实规则手册(Counterfactual Rulebooks,10 对):配置优先级、合并队列排序、考虑时区的批处理、金额舍入、日志重放、版本排序、权威来源判定、重试条件控制。这些都是 Agent 一旦处理错误,就可能让生产系统出问题的任务。
全局一致性审计(Global Consistency Audits,10 对):部署来源追溯、事件重放、快照谱系、变更冻结评分、发布是否具备上线条件。需要交叉核对多个事实来源,找出其中的矛盾。
全局一致性审计(Global Consistency Audits,10 对):部署来源追溯、事件重放、快照谱系、变更冻结评分、发布是否具备上线条件。需要交叉核对多个事实来源,找出其中的矛盾。
时间对账(Temporal Reconciliation,6 对):配额重放、汇率切换、VOID 级联、夏令时工资计算、schema 迁移修正。时间问题很棘手,Agent 必须精确处理。
时间对账(Temporal Reconciliation,6 对):配额重放、汇率切换、VOID 级联、夏令时工资计算、schema 迁移修正。时间问题很棘手,Agent 必须精确处理。
每对样本都采用严格的完全匹配评分。没有部分分数,也不接受“差不多就行”。你要么在两个样本上都正确遵守了规则,要么没有。
三个前沿模型,每个模型在每对样本上各运行五次:
我选择这三个模型,是因为它们是当前顶尖的推理模型。如果有模型能在反事实条件变化的压力下精确遵守规则,那应该就是它们。
筛选规则是:只有至少一个模型在五次运行中失败至少两次,这对样本才会被保留,成为正式的 benchmark 测试项。一次运行只有在两个样本都拿到满分时才算通过。这确保最终 benchmark 中的每个测试项都确实有难度,而不是仅仅因为某个模型偶尔发挥失常。
最终留下了四对样本,每一对都难得惊人。
CR-N5 和 CR-N8:所有模型在每一次运行中都失败了。也就是说,三个不同的前沿模型总计连续失败了 30 次。这些不是边缘情况,而是系统性的盲点。
最让我意外的是:
模型错得很自信。它们不会给自己留余地,也不会表达不确定性。它们给出的答案格式工整、内容详尽,却就是……错的。格式无可挑剔,推理听起来也合理,但它们漏掉了真正决定答案的规则。
模型错得很自信。它们不会给自己留余地,也不会表达不确定性。它们给出的答案格式工整、内容详尽,却就是……错的。格式无可挑剔,推理听起来也合理,但它们漏掉了真正决定答案的规则。
孪生样本揭穿了这种取巧。在好几个测试项中,模型会答对样本 A,却答错样本 B,或者反过来。如果你真的在遵守规则,决定字段的反转就不应该影响你正确应用规则。它确实造成了影响,这证明模型在做模式匹配,而不是推理。
孪生样本揭穿了这种取巧。在好几个测试项中,模型会答对样本 A,却答错样本 B,或者反过来。如果你真的在遵守规则,决定字段的反转就不应该影响你正确应用规则。它确实造成了影响,这证明模型在做模式匹配,而不是推理。
走捷径的基线方法得分为零。我构建了一些简单的启发式求解器:忽略时区转换、跳过 ABORT 逻辑、始终回答“eligible”。它们在每一对被保留的样本上都只拿到 0/10。这证实了这些测试项无法靠表面上的小技巧蒙混过关,你确实得把该做的计算和判断做完。
走捷径的基线方法得分为零。我构建了一些简单的启发式求解器:忽略时区转换、跳过 ABORT 逻辑、始终回答“eligible”。它们在每一对被保留的样本上都只拿到 0/10。这证实了这些测试项无法靠表面上的小技巧蒙混过关,你确实得把该做的计算和判断做完。
接下来我想评估:
更多模型:我很想测试 Gemini、Claude Sonnet 和开放权重模型,看看这些失败模式是普遍存在,还是与特定架构有关。
Chain-of-thought 分析:推理究竟在哪一步出了问题?是读错了规则、应用错了规则,还是在处理孪生样本时丢失了上下文?
被淘汰的样本对:六对 CR 样本太简单了,模型五次能答对四到五次。它们简单,是因为机制本身简单,还是因为干扰项不够强?
Kaggle Writeup(完整论文)。
GitHub repo(代码):竞赛评审期间为私有仓库,评审结束后会公开。
benchmark 测试框架、全部 26 对样本的实现、筛选运行器、捷径基线方法以及负对照,都在仓库里。
这个项目为 Kaggle Gemma 4 Developer Agent Paper Track 而构建。孪生样本方法是它的核心贡献:如果你的 benchmark 没有反事实孪生样本,你衡量的就是模式匹配,而不是推理。
如需进一步采取行动,你可以考虑屏蔽此人,以及/或者举报滥用行为。