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 年黑客松提供給學生。它要求求解者為法國三座城市(Grenoble、Nice、Paris)設計光纖網路,透過連接配電中心與端點,形成迴路與短支線,同時遵守結構限制。目標是 最小化總電纜長度。
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 次,但兩個模型的平均分數皆因少數大幅退步而變差,抵消了中位數的 modest 改善。
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)會讀取對話紀錄,判斷目標是否已達成。
- 評估模型只能看到對話內容,無法檢查檔案或執行工具。
- 回覆 “no” 會觸發另一回合;回覆 “yes” 則清除目標。
- 文件說明:Anthropic 的 goal docs。
OpenAI Codex (/goal as persisted state)
- CLI 將目標存於 SQLite 資料庫,並提供 tool calls(
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,儘管 metadata 宣稱只有一顆,這可能有利於 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 應謹慎使用,而非作為一個全域的「更努力」選項。