Claude Fable 5 vs. GPT‑5.6 Sol on KIRO NP‑Hard Fiber Network Benchmark
Claude Fable 5 vs. GPT‑5.6 Sol on KIRO NP‑Hard Fiber Network Benchmark
TL;DR
Claude Fable 5 在 KIRO 光纤网络基准上提供了最佳整体方案,其结果的稳定性也远高于 GPT‑5.6 Sol。原生的 /goal 标志在大多数单次运行中有帮助,但会提升两种模型的平均分数,表明 /goal 并不是一个可靠的通用 “更努力” 开关。
The KIRO Problem
该基准是一项运筹学任务,名为 KIRO,最初在 2018 年黑客马拉松上向学生提出。它要求求解器为法国的三个城市(格勒诺布尔、尼斯、巴黎)设计光纤网络,通过连接分配枢纽和终端并形成环路和短支路,同时遵守结构约束。目标是 最小化总电缆长度。
Search‑space magnitude
- 若不考虑顺序和支路,将 532 个终端分配到 11 个枢纽的可能性为
11^532。 - 将解限制为恰好 19 条每条包含 28 个终端的环路(无支路)时,有效配置的下界约为
10^1223。
这些数字展示了导致该问题 NP‑hard 的组合爆炸。
Experimental Setup
| Parameter | Value |
|---|---|
| Models | Claude Fable 5, Opus 4.8, Sonnet 5; OpenAI GPT‑5.6 Sol, Terra, Luna |
| Modes | Plain (no hint) and native /goal |
| Budget per run | 30 minutes of wall‑clock time |
| Outer‑agent timeout | 1 900 seconds |
| Reasoning | Maximum available for each model |
| Execution environment | Harbor 0.1.43, Docker, subscription authentication |
主要比较聚焦于旗舰组合(Fable 5 vs. Sol),每种模式各进行三次匹配运行。所有六个模型也各运行一次 30 分钟无提示配置,以获得更广阔的视角。
Results Overview
All‑model baseline (single 30‑minute run)
每个模型的单次匹配运行显示 分数越低越好。图表(此处未展示)将 Fable 5 和 Sol 放在分布的顶部,其他四个模型则居后。
Flagship comparison (three runs each)
| Model | Run | Plain score | /goal score |
Δ (/goal − plain) |
|---|---|---|---|---|
| Fable 5 | 1 | 32 197 | 31 934 | ‑263 |
| 2 | 32 516 | 32 324 | ‑192 | |
| 3 | 32 446 | 35 178 | +2 732 | |
| GPT‑5.6 Sol | 1 | 33 581 | 39 371 | +5 790 |
| 2 | 35 539 | 32 703 | ‑2 836 | |
| 3 | 33 663 | 33 313 | ‑350 |
负 Δ 表示 /goal 表现更好。
Aggregate statistics
| Model | Plain mean | /goal mean |
Mean Δ | Median Δ |
|---|---|---|---|---|
| Fable 5 | 32 386 | 33 145 | +759 (worse) | ‑192 (better) |
| GPT‑5.6 Sol | 34 261 | 35 129 | +868 (worse) | ‑350 (better) |
Interpretation:/goal 在 6 次单独运行中赢得了 4 次,但平均分数对两种模型都变差,因为少数几次的大幅回退抵消了中位数的适度提升。
Consistency comparison
- Fable 5 的普通分数在 319 分 范围内波动,而 Sol 的普通分数跨越 1 958 分。
- 整体最佳的纯净分数是 31 934(Fable 5 使用
/goal)。
How /goal Works Internally
存在两种不同的实现方式:
Claude Code (/goal as a stop‑hook)
- 在每一次模型回合结束后,一个 小型评估模型(默认:Haiku)读取对话记录并判断目标是否已达成。
- 评估模型只能看到对话内容,无法检查文件或运行工具。
- “否” 的响应会触发另一回合;“是” 则清除目标。
- 文档:Anthropic 的 goal docs。
OpenAI Codex (/goal as persisted state)
- CLI 将目标存入 SQLite 数据库,并提供 工具调用(
create_goal、get_goal、update_goal)。 - 当线程空闲时,Codex 注入一个带有目标和完成审计的续写回合。
- 工作模型可以检查文件和工具,实际上对自己的工作进行评分。
- 源代码参考: thread goal actions、SQL schema、tool spec。
Why /goal Can Win Most Runs Yet Harm Average Performance
在典型的编码任务中,进展是渐进且可见的;额外的一回合常常能修复失败的测试。面对硬核优化问题时,一旦选定求解器,额外的时间会放大已有的搜索方向。如果最初的决定把搜索引入了一个好的搜索盆地,/goal 有帮助;如果把搜索推入了一个不佳的盆地,额外时间只会加深错误。这解释了观察到的模式:中位数有适度提升,但偶尔出现的大幅回退主导了均值。
Limitations of the Study
- 只使用了一个未公开的 NP‑hard 基准;结果未必能推广到其他问题。
- 仅对 Fable 5 和 Sol 提供了三次干净的匹配运行;其他模型各只有一次运行。
- 实验在订阅服务上顺序执行,可能导致漂移。
- 容器暴露了八个 CPU,尽管元数据声明只有一个,这可能有利于 Fable 的并行组合策略。
- 所有得分输出都是有效的,因为包装器强制了早期检查点和最终验证,这意味着基准衡量的是 整个系统(模型、CLI、提示、订阅服务和测试框架)。
Reproducing the Benchmark
完整的基准代码、包装器、分析脚本、图形生成器以及证据备忘录均可在 CLIArena repository 中获取。由于体积原因,原始作业目录未随附,但备忘录记录了每个分数、城市细分、耗时、策略、排除项以及运行 ID。
主要使用的命令如下:
RUN_ID=article-kiro-YYYYMMDD-clean \
PHASE=nohint-all \
./scripts/run_subscription_article_matrix.sh
uv run python scripts/summarize_subscription_article_results.py $RUN_ID ...
uv run python scripts/analyze_subscription_article_results.py $RUN_ID ...
Community Insights
"The chart at the top is somewhat confusing. It says, “lower is better” but the y‑axis is inverted!" – tyleo
"Ultra mode could fan out parallel investigators and avoid local optima;
/goalworks better for single‑track investigations." – theptip
"Claude often forgets long‑term instructions;
/goalmay help retain the most important instruction in shorter sessions." – Tenoke
"Anthropic’s coding performance lags behind OpenAI; Codex feels faster and more flexible for large codebases." – sreekanth850
"
/goalhas replaced plan mode for many users; it forces the model to spend a fixed amount of time on a concrete objective, yielding more robust outputs." – o10449366
这些评论突出了用户对 /goal 的实际使用感受、不同模型家族之间的感知差异,以及对未来评估模式的建议。
Takeaway
实验表明 Claude Fable 5 在复杂的 NP‑hard 光纤网络设计任务上显著强于 GPT‑5.6 Sol,不仅取得了更低的分数,还表现出更紧凑的一致性。原生 /goal 标志可以提升单次运行的表现,但往往会降低平均性能,因为它会放大好坏两种搜索方向。因此,/goal 应谨慎使用,而非作为“一刀切的更努力”选项。