一名工程师把自己2018年读工程时接触的一道NP-hard光纤网络设计题,重新丢给了Claude Fable 5和GPT-5.6 Sol,各跑三轮完整配对测试,外加双方各自的持久化执行模式/goal。当年他用C++手写代码,花了一周才解出这道题。
没有悬念的部分是:Fable 5三轮均分全面压过GPT-5.6 Sol。有悬念的部分是,/goal在六次配对里赢了四次,却把两个模型的平均成绩都拖低了。这个反差决定了一件事:/goal该不该在Claude Code、Codex这类工具里当默认开关。
Fable 5 三轮跑赢 Sol,赢在方差更小
测试题目叫KIRO,来自作者2018年的一门工程课:给定格勒诺布尔、尼斯、巴黎三座城市的有向距离矩阵,要求用环形和短链把配电中心与终端连起来,目标是总布线长度最短。仅巴黎一个实例,若限定用19个28节点的环覆盖全部532个终端,可行解数量下界就有10^1223个,穷举没有意义。
测试统一给了30分钟优化预算,每个模型开到最高推理档位,跑在Harbor 0.1.43容器里。作者先让Fable 5、Opus 4.8、Sonnet 5、GPT-5.6 Sol、Terra、Luna六个模型各跑一轮探路,再把Fable 5和GPT-5.6 Sol拉出来各重复三次完整配对。
| 指标 | Fable 5 | GPT-5.6 Sol |
|---|---|---|
| 无 /goal 三轮均分 | 32,386 | 34,261 |
| 开 /goal 三轮均分 | 33,145(+759,变差) | 35,129(+868,变差) |
| 三轮波动区间 | 319分 | 1,958分 |
| 三轮最佳成绩 | 31,934(该次开 /goal) | — |
Fable无/goal均分32,386,比Sol的34,261低1,875分(分数越低说明布线越短,成绩越好)。更值得记的是波动:Fable三次成绩挤在319分的区间里,Sol的区间宽达1,958分,摇摆是Fable的六倍。
作者当年手写C++花了一周才解出这道题,这段经历只能当背景参照,算不上正式对照分数。但模型在30分钟内跑出比手工调一周更紧凑的解,至少说明这不是随手刷榜级的基准。
赢面四比二,均分反而更差:/goal 是放大器不是纠错器
三轮配对下来,/goal让两个模型的均分都变差了:Fable从32,386掉到33,145,Sol从34,261掉到35,129。但只看单次胜负,/goal在六次配对里赢了四次。
矛盾出在分布形状上。/goal通常带来几百分的小幅提升,偶尔造成两千到五千多分的大幅回退。中位数往对的方向挪了一点,坏尾巴却往错的方向挪得远得多,均值就被拖下去了。作者没有公开逐次运行日志和具体失败案例,这个解释目前只能从分数分布倒推,还不能坐实是不是真的沿着错误策略跑得更久。
两种/goal的实现本身也不是同一回事。Claude Code的/goal靠一个独立评估器,默认用Haiku:每轮主模型作答后,这个小模型读对话记录判断目标是否达成,它拿不到工具、看不到文件,只能靠转录文本猜。Codex的/goal完全不同——目标被持久化进SQLite,工作模型自己拿到create_goal、get_goal、update_goal这几个生命周期工具,线程空闲时Codex自动注入续跑指令,评估者和执行者是同一个模型。
胜率四比二,均值却更差,说明赢局多不代表这个开关值得默认打开。它更像放大器:策略对了多赚一点,错了就错得更久。
这个结论能用在哪:单题测试的边界
这次测试只覆盖一道未公开的NP-hard题,只有Fable 5和GPT-5.6 Sol凑齐了三组干净的配对样本,Opus 4.8、Sonnet 5、Terra、Luna每个都只跑了一轮探路,样本量支撑不起横向排行。
测试容器给了8个CPU核心,任务元数据却只声明1个,这对偏爱并行搜索的策略天然占便宜。各轮测试还是顺着订阅制服务依次跑的,中间可能存在服务端漂移,不是严格隔离环境。
对用Claude Code或Codex跑长时间优化任务的开发者来说,更现实的做法是:先跑一次不开/goal的完整流程,看代理自己选的策略稳不稳、有没有中间验证。如果任务是一步走错就回不了头的搜索问题——比如布线、排班这类NP-hard优化——更该先看策略质量,而不是看胜率。
接下来该盯的是样本量。如果换成几十道题、几十次配对,/goal的均分是不是还会继续跑输;现在只有两个模型三组样本,这次的回退到底是策略问题还是运气差,还看不清。
