SKILL.state:用显式状态取代对话历史,Google将长程Agent复杂度降至O(T)
SKILL.state: Scalable Long-Horizon Agent Skills

在构建自主智能体(Autonomous Agent)时,业界几乎默认遵循一种“对话式上下文累积”的运行范式:智能体每执行一步,就把环境观察、思考链(CoT)、工具调用参数和执行返回值,线性追加到上下文末尾。只要执行步骤变长,Prompt 就会像滚雪球一样迅速膨胀。这种追加模式不仅导致每次推理的 Token 成本呈二次方飞涨,还会让模型深陷冗长的陈旧日志中,频繁遭遇注意力分散与“上下文中毒”(Context Poisoning)。
ArXiv URL:https://arxiv.org/abs/2608.26263v1
来自 Google 与普渡大学(Purdue University)的研究团队在一篇新论文中提出了 SKILL.state。这项研究从底层执行语义入手,试图打破这一长期被视为理所当然的追加式传统。作者认为,Agent 执行长程程序性任务本质上是一个“系统状态机工程”,而非一个需要不断回溯历史的“多轮聊天会话”。
SKILL.state 的核心思想非常直接:用一个显式、结构化且可变的执行状态(Execution State),彻底取代单调递增的对话历史。 在每一步执行中,大模型只需要接收不可变的技能规范、当前的结构化状态以及最新的单步环境观察。一旦模型完成推理并生成校验合规的状态增量,对应的中间推理过程就会被系统立即丢弃。
这一转变直接重构了系统的计算复杂度:Prompt 大小在每个执行步被锁定在严格的 $\mathcal{O}(1)$ 常量级别,而整个长程任务的累计 Token 消耗也从传统方案的 $\mathcal{O}(T^2)$ 陡降至线性的 $\mathcal{O}(T)$。在涵盖合成诊断环境(SkillExecBench)、Linux 终端攻防(InterCode CTF)和真实业务客服流程(Sierra $\tau$-Bench)的广泛测试中,SKILL.state 不仅大幅削减了显存和推理成本,更在解决长程任务时展现出远超传统对话式运行时与上下文压缩算法的鲁棒性。
为什么说“对话式上下文”是长程 Agent 的设计缺陷?
目前绝大多数主流 Agent 框架(如经典的 ReAct 范式)都将大模型视为一个有状态的对话者。即便接入了外挂记忆机制或 RAG,主流做法往往仍是把总结后的摘要或检索出的历史片段,以文本形式重新拼接进上下文中。
这种机制在执行短平快的多轮问答或几步之内的简单工具调用时运行良好,但在面对几十步甚至上百步的真实工程任务时,弊端会呈指数级放大。
首先是计算复杂度的不可持续。假设长程任务需要 $T$ 个交互步,单步追加的历史长度为 $\mathcal{O}(t)$,那么整个执行流程的累积上下文消耗就是 $\sum_{t=1}^{T} \mathcal{O}(t) = \mathcal{O}(T^2)$。随着步骤拉长,Agent 的响应延迟以可感知的速度变慢,调用成本也极其高昂。
其次是信息冗余与上下文污染。在长程运维、自动化编程或复杂业务流中,中间步骤产生的海量终端输出、临时报错和试错分支,在完成当前步骤之后往往就失去了保留价值。然而在追加式架构中,这些陈旧信息永远残留在上下文窗口内。大模型在后续每一步做出决策前,都必须被迫在成千上万 Token 的历史杂讯中重新识别出当下的真实系统状态。一旦出现状态转移(例如一个文件被反复重写、或者某个资源在中间步骤被释放),模型极容易产生幻觉,混淆“当前状态”与“历史尝试”。
现有方案大多尝试通过统计压缩(如 LLMLingua)或滑动窗口截断来控制上下文膨胀。但研究团队指出,这类方案治标不治本:滑动窗口会暴力截断早期的关键状态定义,而统计压缩往往会根据信息熵无差别地剔除看似冗余、实则决定业务逻辑的精确标识符(如特定的 Slot ID、Git Commit Hash 或订单编号),导致后续状态计算出现灾难性偏差。
核心机制:以状态增量驱动的运行时架构
SKILL.state 提出的解法,是彻底将任务执行的“计算过程”与“系统状态”解耦。在 SKILL.state 的运行时中,大模型不再是回溯历史的叙述者,而是一个纯粹的“状态转移函数”。
系统将输入严格收束为三元组:
\[A_{t} = (P, \Sigma_{t}, O_{t})\]其中,$P$ 是不可变的技能规范(Procedural Specification),用于描述当前技能的目标、可用动作及其接口约定;$\Sigma_{t}$ 是结构化的执行状态(Structured Execution State),它完整刻画了当前世界对于后续决策而言必须掌握的有效事实;$O_{t}$ 则是环境对于上一步动作返回的最新观察结果(Observation)。
在每一步 $t$ 中,模型基于这三个输入进行条件推理,并输出一个三元组:
\[(R_{t}, \Delta\Sigma_{t}, a_{t})\]这里 $R_{t}$ 是模型针对当前步骤生成的思维链(CoT)推理过程;$\Delta\Sigma_{t}$ 是拟对系统状态进行的结构化更新增量(Patch);$a_{t}$ 则是下一步准备在环境中执行的具体动作。
当大模型给出输出后,系统的运行时框架会立即介入,接管后续流程:
-
模式校验与状态更新:运行时在确定性代码层对 $\Delta\Sigma_{t}$ 进行 Schema 约束和合法性校验。校验通过后,通过状态叠加算子更新系统状态:$\Sigma_{t+1} = \Sigma_{t} \oplus \Delta\Sigma_{t}$。如果模型输出了不合法的补丁,状态不会被污染,而是由系统触发回滚重试机制。
-
立即丢弃中间推理:一旦状态完成转移,临时的思维链 $R_{t}$ 便完成了它的使命,会被运行时环境无情丢弃,绝不向下一步传递。
-
动作执行与观察获取:动作 $a_{t}$ 被下发给真实环境,产生新的观察 $O_{t+1}$。
此时,在执行第 $t+1$ 步时,Prompt 依然仅包含 $(P, \Sigma_{t+1}, O_{t+1})$。无论整个任务执行了 10 步还是 200 步,传入模型的上下文永远只反映当前的客观全局状态与最新局部动作反馈。
| 这种设计使得单步 Prompt 大小被限制在 $ | P_t | = \mathcal{O}( | P | + | \Sigma | + | O | )$ 的常数空间内。只要状态模式的设计合理,系统就能实现真正的 $\mathcal{O}(1)$ 提示词开销,进而将整个任务执行周期的累积 Token 消耗锁定为纯粹的线性关系 $\mathcal{O}(T)$。 |
值得注意的是,定义这种结构化 Schema 的成本并没有想象中高昂。SKILL.state 并不要求为每一个微观任务单独编写模式,而是按“领域”进行一次性定义。例如在 InterCode CTF 涉及的全部 100 个 Linux 渗透挑战中,系统只复用了一个包含 5 个核心字段的静态 Schema(涵盖已发现 Flag、已验证假设、活跃文件、工作目录、执行命令摘要),便足以承载所有复杂场景下的状态转移。
实验评测:在合成长程环境与真实业务流中打破魔咒
为了全面验证显式状态架构的有效性,研究团队不仅构建了用于严密受控诊断的基准 SkillExecBench,还在两个极具代表性的公开基准上进行了实测:涉及复杂 Linux 终端交互与代码漏洞挖掘的 InterCode CTF,以及模拟企业复杂数据库操作与用户多轮业务流的 Sierra $\tau$-Bench。
在基准大模型上,研究选用了 Google 的 Gemini-3-Flash 作为主力评测模型,并在部分消融实验中引入了开源权重模型 Gemma-4-31B。
在 SkillExecBench 的受控长程评测中,任务被扩展至极端考验记忆与逻辑的深度执行场景(如密集依赖的 Git 仓库操作与仓储流转)。实验将执行步长从 $T=10$ 一路拉长至 $T=200$。结果显示,常规的追加式基线在 $T \ge 50$ 之后,由于 Prompt 剧烈扩张,开始高频出现动作遗忘、前后逻辑打架和超时失败。而 SKILL.state 在长程扩展下的单步 Token 开销始终维持在固定基线水平,任务准确率显著优于所有对比基线。经成对 t 检验,在 $T \ge 50$ 的长程任务中,SKILL.state 带来的性能提升具有显著统计学意义($p < 0.01$)。
针对现实世界中极其常见的干扰信号,研究人员进一步在 $T=50$ 的环境中进行了背景噪音鲁棒性测试。在长程执行中,系统往往会抛出密集的后台遥测日志、不相关的并发事件或警告。实验在每个回合分别注入 5、20 甚至 50 个干扰事件。在传统对话式框架中,这些海量噪点迅速挤占上下文窗口,大模型的任务完成率出现断崖式暴跌;而 SKILL.state 凭借显式状态的过滤屏障,仅将与当前状态补丁相关的有效变更写入持久状态 $\Sigma$,中间噪音随观察和推理过程的丢弃被就地物理隔离,展现出极强的抗噪稳定性。
更为关键的一组对比发生在预算受限(Budget-Matched)的对照实验中。有人可能会质疑:SKILL.state 的性能提升,仅仅是因为它碰巧输入了更短的 Prompt 吗?
为了排除 Prompt 长度带来的干扰,研究团队在仓储管理任务($T=100$)下,将所有传统上下文压缩基线的 Token 上限强行压缩至与 SKILL.state 相同的水平(约 1,800 Tokens)。结果显示出极具戏剧性的对比:
-
采用滑动窗口截断(Sliding Window Truncation)的基线,得分断崖式跌落至 0.18,原因是窗口滑动时将执行初期关键的初始资源分配记录整体削除;
-
采用统计压缩方案 LLMLingua 的基线,得分同样崩塌至 0.22,因为算法基于困惑度与熵值过滤掉了大量看似重复出现、实则承载精确外键与槽位标识符的文本;
-
与之形成鲜明对比的是,SKILL.state 在同样约 1,800 Tokens 的约束下维持了 0.94 的超高得分。
这组对照有力地证明:SKILL.state 的胜出绝非简单的“上下文裁剪”,而是由于其结构化状态精确保留了跨步骤的实体关系网络,成功规避了任何统计学压缩都无法避免的信息损耗。
在公开真实基准 Sierra $\tau$-Bench(涵盖零售与航空领域的多轮客户支持,涉及高频的 SQLite 事务操作、退款与航班改签业务规则)和 InterCode CTF 上,SKILL.state 同样在取得最高任务成功率的同时,大幅压低了端到端运行的累积 Token 消耗。
局限性与开放权衡:显式状态真的万能吗?
尽管 SKILL.state 在多个长程任务中交出了近乎理想的系统级答卷,但作者在论文末尾的探讨展现了非常严谨的系统设计取舍。将一个交互系统重构为状态机,其背后有一个根本性前提:执行状态必须能够成为后续执行的“充分统计量”(Sufficient Statistic)。
换句话说,如果过去发生的一切事情,只要对未来决策有用,就能在事发当下立刻被识别并精确写入状态 $\Sigma$,那么丢弃历史上下文就是纯粹无损的。然而,在以下三种极端场景中,这种假设会面临挑战:
-
未知模式与动态结构发现:在任务开始前无法预先定义领域 Schema,系统必须在高度不确定的探索中动态沉淀其状态模型;
-
延迟认知价值(Delayed Recognition):某个在早期看似完全无关紧要的细微环境观察,在数十步之后突然成为解开关键分支的线索。如果在观察发生的当下未能将其转录进 $\Sigma$,该信息一旦随单步推理被物理丢弃,便再也无法找回;
-
历史轨迹本身即任务目标:例如代码审计、追溯排错、合规取证或向人类解释决策因果。在这些场景中,历史交互日志本身就是需要交付的核心产物,而不是运行时的系统开销。
此外,当研究团队在开源小模型(如 Gemma-4-31B)上测试长程任务时,发现性能出现了明显下滑($T=100$ 时得分仅为 0.42)。然而深入的错误日志归类分析揭示了一个关键细节:小模型的大多数失败并非源自任务逻辑规划缺陷,而是由于输出的 JSON 补丁格式偶发格式错误,导致状态校验失败并陷入频繁的回滚重试。
这也为长程 Agent 的工程演进指明了一个明确方向:由于 Schema 的定义与校验完全驻留在确定性的运行时环境中,未来只要在推理引擎端引入语法受限解码(Grammar-Constrained Decoding,如 GBNF 或 Outlines),就能在底层从数学上杜绝结构性语法错误,让体量较小的模型也能专注在语义本身的状态流转上。
结语
长程 Agent 正在迅速从早期的提示词技巧探索,过渡到严谨的系统架构与状态机工程阶段。SKILL.state 给出了一种跳出常规的思考路径:既然大模型的强项在于单步条件推理,而不是充当低效易损的动态内存,那么就应当把“状态维护”的主权重新交还给系统运行时。
通过将单步推理变成纯粹的无状态计算,SKILL.state 证明了显式执行状态可以在大幅削减算力与开销的同时,为复杂长程任务带来远超传统对话机制的确定性。这种架构级重构,或将成为未来各类自动化编码、长程运维及企业级 Workflow Agent 运行时演进的重要蓝图。