Fable 5 vs. GPT-5.6 Sol on an NP-Hard Problem: Does /goal help?
AI 深度解读
背景
这是一项针对两个前沿 AI 模型——Claude Fable 5 和 GPT-5.6 Sol——在 NP-hard 优化问题上的对比测试。测试者来自 Hacker News 社区,本人曾用 C++ 花一周时间实现过该问题的求解器,因此拥有可靠的人类基线。问题 KIRIO 是一个光纤网络设计问题,最初在 2018 年作为工程学生项目提出,并在一次黑客松中用于考核学生。测试的核心目的是评估模型原生 /goal 模式(一个用于持续追踪目标的指令)是否能够显著提升求解质量。
核心内容
问题定义
KIRIO 问题要求求解器根据给定的格勒诺布尔、尼斯和巴黎三个城市的有向距离矩阵,使用环(loop)和短链(short chain)连接分配点(distribution points)和终端(terminals),同时满足多项结构约束。目标是最小化总电缆长度。一个有效网络由以分配枢纽为根的多余环组成,环上有塔(towers),每个塔必须恰好出现一次,且电缆段的方向反转会改变成本。
搜索空间规模
搜索空间极大,无法用单一封闭形式表达。仅以巴黎为例:忽略排序和分支,只将 532 个终端分配给 11 个分配枢纽,就有 11^532 种可能。一个更严格的下界来自一种刻意受限的有效解族:恰好 19 个环,每个环含 28 个终端(无分支),覆盖全部 532 个终端。此时搜索空间约为 (532! / 19!) × 11^19 ≈ 10^1223。
测试设置
主要实验设计为:
- 每个模型在无提示(no-hint)条件下运行 30 分钟,分别测试是否使用
/goal模式。 - 先对所有模型进行一次配对(30分钟无提示,每对模型一次),其中 Fable 5 和 Sol 为旗舰对比,其余模型各一对。
- 随后对 Fable 5 和 Sol 进行三次重复匹配运行(三对有/无
/goal的配对)。
结果
| 模型 | 无 /goal 平均分 | 使用 /goal 平均分 | 无 /goal 范围 | 使用 /goal 范围 |
|------|-------------------|---------------------|-----------------|-------------------|
| Fable 5 | 33,809 | 33,918 | 319 | 1,734 |
| GPT-5.6 Sol | 35,684 | 35,902 | 1,958 | 1,871 |
- 负值表示
/goal更好(即分数更低,因为目标是最小化长度)。在六次试验中,/goal赢了四次(胜率 67%),但均值却更差:Fable 的/goal均值比无/goal高 109 分,Sol 的/goal均值比无/goal高 218 分。 - Fable 5 整体更强:其无
/goal均值比 Sol 低 1,875 分,/goal均值低 1,984 分。更重要的是,Fable 无/goal的分数范围仅 319 分,而 Sol 达 1,958 分。Fable 使用/goal时得到了最佳干净分数 31,934,但无/goal是最安全配置。
对 /goal 命令的深度分析
相同命令,不同实现
Claude Code 和 Codex 都暴露了 /goal,但底层机制完全不同。
- Claude Code:将
/goal实现为会话级别的 Stop hook。每次主模型回合后,由一个小型评估模型(默认 Haiku)读取目标和对话,返回 yes/no 并附理由。评估器无法使用工具或检查文件,仅能根据对话记录判断。这可以捕捉到早期退出,但无法了解是否值得继续迭代。Anthropic 的文档也证实了这一点。 - Codex(评测版本 0.144.4):将目标视为持久化的线程状态。TUI 保存目标,SQLite 存储状态和预算记录。工作模型获得
create_goal、get_goal、update_goal工具。当线程空闲且目标仍激活时,Codex 注入一个延续回合,包含目标及完成审计。因此,Codex 让工作模型自己声明完成,并在持久化目标未清除时恢复执行;Claude 则委托另一个模型评判,但只看到对话记录,而 Codex 能看到文件和工具,但实际上是自我评分。
为什么 /goal 能赢多数试验却仍可能成为糟糕的默认选项
在普通编码任务中,进度通常是可见的:额外回合可以修复测试或完成迁移。但优化不同:一旦智能体选择了求解器,额外时间可能放大好的决策,也可能放大坏的决策。这正是本次测试中发生的情况:当 /goal 帮助维持了 Fable 快速的编译型解集或 Sol 成功的链重新分区时,它有益;当 Fable 构建了一个慢速求解器或 Sol 投入 exhaustive anchor sweep 时,它有害。中位数向正确方向轻微移动,但坏尾向错误方向移动得更远。
局限性
- 只测试了一个未公开的 NP-hard 任务,并非通用编码排行榜。
- 仅有 Fable 和 Sol 各有三组干净配对。
- 其他模型的比较混杂了提示词、包装器版本和时间限制,且试验通过订阅服务顺序运行,可能存在漂移。
- 容器暴露了 8 个 CPU 尽管任务元数据声明为 1,这有利于 Fable 的并行解集。
- 每个有评分的 Fable 和 Sol 输出都是有效的,部分原因是包装器要求早期检查点和最终验证。
- 基准测试测量的是完整系统:模型、CLI、提示词、订阅服务、测试框架。
复现方法
所有代码、提示词、结果表格、排除项和轨迹记录均在 CLIArena 仓库中。主要命令为:
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...
关键要点
- Fable 5 在 NP-hard 优化问题上的表现远超 GPT-5.6 Sol:其无
/goal分数范围仅 319 分,而 Sol
