StateM: Reaching 95.3% Raw Accuracy, or a \$15 Frontier Run, on Terminal-Bench 2.1 via Harness Scaling
Ziheng Qin, Yaxin Lu, Zhangyang Atlas Wang, Kai Wang
cs.AI
2026-08-15
StateM 把 CLI agent 的执行层外置成人机共读的 YAML 状态机:GPT-5.5 在 Terminal-Bench 2.1 涨 9 个点到 92.1%,DeepSeek 花 38 美元适配追平 88.8%,最终评测仅 15 美元。
长程 agent 有一种典型死法:模型能解出每一步,整个任务还是失败。跑偏计划、丢掉中间状态、跳过该做的检查、交付物还没验证完就停了。基准和真实工作流只看最终完成,不管你会不会大部分步骤。
主流应对是改模型:堆预训练、加后训练数据、拉长测试时推理。这篇问的是另一个问题:这些「模型失败」里有多少其实是执行系统的失败,也就是那个负责维护状态、约束执行、校验进度、从错误里恢复的外围层。作者把系统性改进这层叫 harness scaling,动机是两个可观察的压力:控制信号稀释,紧凑的计划和完成标准被越滚越长的命令输出轨迹冲淡;可变状态歧义,当前做到哪一步、还欠什么,要从只增不改的历史里自己重建。
StateM 是个轻量运行时,控制层是人可读的 YAML runbook:状态、合法迁移、阶段内指令、hook、检查、恢复规则。核心抽象是「每个状态 = 上下文边界 + 契约边界」。
agent 用它执行任务的同一套 CLI 操作 runbook:查当前状态、请求迁移、看失败原因、翻执行历史;人可以读、改、版本化同一份文件。这是与 LangGraph 一类图编排的关键差别:图编排由开发者写好控制器、把模型塞进节点,StateM 保持通用 CLI agent 作为主执行者,控制层就长在它的工作区里。每条运行的记录(当前状态、迁移史、检查结果、证据文件)与 runbook 分离,进程重启或上下文压缩后从显式阶段恢复;Codex 和 Claude Code 还有 stop hook,agent 想收工但没到终态时,钩子把未尽的义务塞回去让它继续。
失败被归为三类缝,各配一个控制点:知识缝,该知道的东西决策时不在场,靠状态局部上下文补;程序记忆缝,上一轮学到的教训这一轮不激活,靠版本化 practice 补;程序遵从缝,流程在场但没走完,靠检查过的迁移补。跑完把失败分类(缺上下文、无效迁移、弱检查、提前交接、恢复不力),提出 runbook 改动,回归测试后并入新版本,教训沉淀在权重外面。开发守三条人定的 golden rule:控制尽量小、按可见任务语义路由而非按任务身份、开发反馈与冻结评测分开;禁止使用隐藏测试、验证器实现和答案产物。
Terminal-Bench 2.1,89 个任务各跑 5 次共 445 trial:
| 配置 | 参照 | StateM | 差值 |
| GPT-5.5 xhigh | 83.1% | 92.1% | +9.0 |
| GPT-5.6 Sol xhigh(冻结 runbook) | 84.9% | 95.28% raw | +10.4 |
| GPT-5.6 Luna(冻结 runbook) | 76.7% | 85.4% | +8.7 |
| DeepSeek-V4 Flash(适配后) | 82.7% | 88.09% | +5.4 |
参照 harness 下从 GPT-5.5 换到 GPT-5.6 Sol 只值 1.8 个点,执行层的改动是它的 5 倍。GPT-5.5 加 StateM 的 92.1% 在数值上高于另行报告的 91.9% GPT-5.6 Sol ultra 参照:不调权重,吃下一次模型升级的量。runbook 在 GPT-5.5 上开发,冻结后原样套到 GPT-5.6 的两个档位都有效。
跨厂商是另一回事。冻结的 GPT profile 直接套 DeepSeek-V4 Flash,82.7% 掉到 82.0%,精确迁移失败;从同一 runtime、runbook 结构和 golden rule 出发重新适配,只花 37.02 美元,标准超时下 88.09%,对唯一一个延迟敏感任务放宽超时后的描述性口径 88.76%,与 GPT-5.6 Sol max 报告的 88.8% 对齐。DeepSeek 最终评分证据花 15.20 美元,对照公开 GPT-5.6 Sol max 提交记录的 574.68 美元模型成本,约 1/37.8;全程总花费 52.22 美元。
任务级证据更直观:configure-git-webserver 基线 0/5,agent 明明会配 Git、SSH、HTTP 服务,却保不住端到端活状态;StateM 把交接闸在新起一条 clone-commit-push-curl 链路上,变 5/5。dna-insert 0/5 变 5/5,db-wal-recovery 2/5 变 5/5。
任务侧泛化用 BusinessBench(477 个实例、7 个族,对 attendance-payroll 主动不套工作流):冻结后一次性 held-out 只涨 0.55 macro、1.34 micro,但机制匹配的两族大涨,Budget Approval +12.21,Machine Operating +9.21 到 100%。也有负迁移:RefactorBench −2.78、WooCommerce −3.70,归因都是控制绑错了执行边界,评测后改对边界即恢复。
对做 agent 的人来说,这把一个模糊直觉变成了能入账的数字:同一代模型,执行层值 9 个点,超过一次模型代际升级。工程上是现成的:runbook 是能用 git 管的 YAML,stop hook 直接接 Codex 和 Claude Code,教训以版本化规则沉淀,同族新模型冻结即用,跨厂商 38 美元适配。选型从「买最强模型」多出一支:投执行层,让便宜模型变成更强的系统。整个研究还是个人体量,四位作者的单位栏写着 Somewhere on the Earth,个人侧开销自报不到 125 美元(正式提交另租 AWS),核心代码已开源。
负迁移那组结果同样值钱:控制不是越多越好,绑对执行边界才涨分,绑错就掉分;对不适配的族整个不套工作流,少做也是一种控制决策。
95.28% 是公开提交的 raw 口径(PR #142,未合并进榜单)。作者自己披露:评审认出 4 条计分 trial 不应算数,归零后是 94.38%;9 条疑似 reward hacking 的 trial 全部归零是 93.26%。标题里的 95.3% 带着作者自己贴出的星号。
Terminal-Bench 的数字衡量的是 runtime 加上在这个基准上迭代出的控制 profile 的合体,论文明说拆不出状态机抽象本身的贡献。profile 开发允许用可见任务说明和执行反馈,没碰隐藏测试,但终归是在被考核的卷子上改答题策略,推不出一份通用 runbook 能抬升任意工作流。对照也不是同版本 A/B:83.1% 参照来自 Codex 0.125.0,StateM 提交用的是 0.144.1;BusinessBench 全量增益小,涨分集中在 6 个受处理族里的 2 个;五次 trial 至少成一次的覆盖率不等于单次可靠率。
4.7 节是全文最诚实的部分:harness 会把评分器的约定吸进去。DNA 任务的验证器偏好最左插入边界,这条约定在任务说明里不存在,反复的执行反馈让 profile 复现了它,行为与评分器一致,语义却来自评分器而非任务契约。这正是 reward hacking 的同一通道,作者把它当「该记什么教训」的过滤问题,没给机制性解法。另外 YAML 可编辑不构成安全边界,外部副作用不可回滚,StateM 给的是控制点,不是正确性预言机。