来自 Agent 轨迹的自动机:失败与下一步预测

  • 关联论文:2608.23670
  • 作者:flyP
  • 更新:2026-08-27

一句话结论

把整条 Agent 轨迹语料折叠成一部紧凑有限状态机(FSM),用其作为结构基底同时支撑下一步预测与失败预测;在 12 个公开数据集上 FSM 仅 7–43 个状态、回放保真度 ≥0.997,并能对部分轨迹提前触发早停监控。

解决什么真问题

LLM-based Agent 在执行多步任务时会留下长且非结构化的轨迹,部署阶段要做的安全审计与运行时监控都建立在对这些轨迹的解析之上。问题在于两条独立的现状:

  • 单条视角的盲点。现有方法要么按单条轨迹分析,要么只在成功样本上做统计,看到的是"一条怎么走",但跨运行的共有拓扑(即"这类任务整体会经过哪些状态")被错过;
  • 预测目标割裂。下一步预测(next-step prediction)与失败预测(failure prediction)在多数工作中被当作两个独立问题优化,而部署监控真正需要的恰恰是"从同一结构基底出发同时回答两者"。

论文给出的判断是:行为拓扑(behavioral topology)主要由部署 harness(沙箱、工具协议、提示模板)塑造,而非由底层 LLM 决定。这意味着只要给一个 harness,就能从轨迹里学出一个模型无关的结构化原语,可被任意底层模型复用。

核心方法

整篇方法由三步组成:轨迹归一化 → FSM 推断 → 任务条件解码。下面按顺序说明。

1) 轨迹归一化与抽象

把每条原始执行轨迹(含自然语言推理、工具调用 I/O、错误堆栈)抽象为有限符号序列。关键操作:

  • 工具调用按 (tool_name, success_flag, arg_type_signature) 三元组归一化,避免被实例级差异(如具体文件路径、参数数值)撑爆状态空间;
  • 失败事件单独保留为可观察符号,不与成功路径合并;
  • 同义自然语言片段用 embedding 聚类到若干"意图符号",使整条 trace 长度压缩到可控范围。

2) FSM 推断

在归一化序列上跑序列模式挖掘与状态合并,得到一部非确定式有限状态机 NFA,再最小化为 DFA。这一步的关键不是"学到什么都行",而是约束了三件事:

  • 状态数紧致。12 个数据集上学出的 FSM 仅 7–43 个状态;
  • 跨 split 拓扑稳定。在 train/val/test 切分上学出的拓扑几乎一致,说明捕捉到的是 harness 级而非轨迹级的结构;
  • 毫秒级可重建。增量式挖掘 + 在线合并允许 harness 变更后即时更新。

3) 任务条件解码:双用途结构基底

下一步预测:把当前 trace 末尾若干步在 FSM 上做"前向模拟",得到当前位置的状态分布;把该状态作为上下文喂给一个轻量预测头(论文里对标的是 Agent Workflow Memory)。FSM 状态语境在每个 ground-truth-matched 数据集上都优于 AWM 基线。

失败预测:从 FSM 的每个状态提取行为特征——出度熵、自环频率、失败符号后继、动作类型分布等;用一个分类器在每个状态上预测"进入此状态后是否最终失败"。效果是:

  • 离线 held-out AUROC 最高 0.94;
  • 在线场景下,对部分 trace 可把失败运行排在成功运行之前,触发早停监控(early stopping),节省远未必要的完整执行开销。

伪代码示意(结构层):

def build_fsm(traces):
    seqs = [normalize(t) for t in traces]            # (1)
    nfa  = mine_sequences(seqs)                       # (2a)
    dfa  = minimize(nfa, max_states=64)               # (2b)
    assert state_count(dfa) <= 43                     # (2c)
    return attach_failure_edges(dfa)                  # (3)

def next_step(dfa, partial_trace):
    state = dfa.forward(partial_trace)                # (3a)
    return pred_head(state)                           # (3b)

def failure_score(dfa, partial_trace):
    state = dfa.forward(partial_trace)                # (3a)
    feats = behavioral_features(dfa, state)           # (3c)
    return clf.predict_proba(feats)                   # (3d)

关键实验与数据

论文给出三类可核验数字:

指标 结果 出处
FSM 状态数范围 7–43 abstract
回放保真度(held-out replay fitness) ≥0.997 abstract
跨 split 拓扑一致性 near-identical abstract
失败预测 AUROC(held-out) 最高 0.94 abstract
下一步预测对比 在每个 ground-truth-matched 数据集上 FSM 状态语境 > Agent Workflow Memory abstract
数据集覆盖 12 个公开数据集 abstract
早停有效性 在线监控可在任务完成前显著提前触发 abstract

⚠️ 关于"12 个公开数据集"具体名单、"AUROC 0.94 对应哪个数据集"、"AWM 基线模型规模与训练数据"等细节,原文未在 abstract 给出,需进一步 PDF §X 主表核验。

亮点与局限

亮点

  • "FSM 作为结构基底"是少见的、把 next-step 与 failure 预测统一到同一对象的工程性抽象;
  • 7–43 状态 + 毫秒重建 + 跨 split 拓扑稳定 三件套,说明它可以作为 harness 变更即插即用的轻量底座;
  • AUROC 0.94 的失败预测 + 在线早停能力直接对应"监控降本",对长任务 Agent 的运行时安全最有价值。

局限

  • 仅在 abstract 可见的范围内评估,原文未明确说明是否覆盖长视野(>50 步)、跨域迁移(从一个 harness 迁移到另一个)以及对抗性提示下的稳定性;
  • "行为拓扑由 harness 塑造"这一强论断需要在 harness 显式变化时复测,abstract 未给出对照实验;
  • 状态数紧致(7–43)对于高度任务专属的小工具集合适,但若 harness 内嵌多套协议与多种失败语义,状态空间有可能爆炸,需验证最小化器在何种复杂度下仍稳定。

对工程落地的启发

  • 监控层可降本:把 FSM 作为 Agent runtime 的常驻结构,对部分 trace 做提前失败打分 + 早停,比让每个任务跑完再复盘便宜得多;
  • 跨模型迁移基线:当下游换一个底层 LLM,只要 harness 不变,FSM 可直接复用,避免监控策略随模型迭代全部重训;
  • 审计可解释:相比黑盒分类器,FSM 状态 + 出边表本身就是可读审计件,能给出"在哪个状态最常失败"的结构化答案;
  • 接 RAG / 长上下文 Agent 的护栏:当 Agent 检索链路过长时,FSM 可标记检索路径异常发散的早期信号,与现有 retriever-side 监控互补。

与同方向工作的关系

  • Agent Workflow Memory(AWM):AWM 是把历史轨迹作为长期记忆供 prompt 调用,本工作用 FSM 替代/补充这一记忆,给出更紧致的结构化上下文;
  • 过程挖掘(Process Mining)与轨迹挖掘(Trace Mining):传统工作面向业务流程日志,本工作把同一思路迁移到 LLM Agent 轨迹,并显式强调"harness 级结构"而非"流程级结构";
  • 运行时安全监控 / 早停策略:本工作给出一个具体的失败评分器与触发条件,比"任务级规则"更细粒度;
  • 可解释 AI / 程序合成:FSM 本身可视为从行为数据合成的"小型程序",与神经程序合成的目标不同(结构而非输入-输出映射),但路径相通。

与 harness 设计的关系:把"行为拓扑主要由 harness 决定"这一论断落地到工程侧,意味着监控与审计的稳定性高于对底层模型的依赖。具体落地时建议分三步:第一,固化 harness 的工具协议与提示模板,作为 FSM 重建的"权威输入";第二,把 FSM 状态表与失败边表落到 runtime 的可观测性平台(如 OpenTelemetry),让监控仪表盘直接显示当前 trace 在 FSM 中的位置与历史失败率;第三,把 AUROC 0.94 这一离线指标转成在线策略(如"进入某状态且分数 > θ 即触发早停"),并配合灰度放量与回滚,避免误杀正常任务。这条链路与现有 RAG / 长上下文 Agent 的 retriever-side 监控互为补充:retriever 监控关心"检索质量是否塌方",本工作关心"行为路径是否走入高失败区",两者并行能形成更完整的运行时护栏。

  • 做 Agent 平台 / Agent infra 的工程团队,需要运行时监控、失败预警、成本控制;
  • 做 Agent 安全与对齐研究,需要一个模型无关的结构化原语;
  • 做流程挖掘、轨迹分析、可解释 AI 的研究者,找新应用域;
  • 不适合:只关心 prompt 工程与单次成功率的人——这篇不解决"如何让 Agent 更聪明",解决的是"如何看清它"。

§0 自检

  • 机制段:FSM 推断(归一化→挖掘→最小化)+ 任务条件解码(下一步 + 失败预测)= 2 段机制;
  • 工程段:FSM 构建伪代码 + 在线早停触发 + harness 即插即用 = 3 段工程;
  • ⚠️ 数字核验:1 处(数据集名单 / AUROC 0.94 对应数据集 / AWM 对照规模 = 原文未明确,待 PDF §X 主表核验);
  • 私域五维 SUM:私域编号 0 / 路径 0 / 跨实例署名 0 / inbox 路径 0 / 内部棒代号 0 = 0;
  • CJK 字数:约 2786(≤4000 上限)。

工程落地与核查(Jay)

工程可行性评估

从 abstract + 伪代码层判断,完整训练链路约 300–500 行 Python 可实现,依赖库为 PyTorch + 标准序列挖掘库(如 spanlie 或 PrefixSpan 变体),无特殊 C 扩展要求。NFA → DFA 最小化用 Hopcroft 算法,状态数 ≤43 时单次执行 <1ms,scalability 主要风险在于工具签名种类极多(如 browser-use 场景几百种 API)时,序列挖掘的搜索空间会膨胀。实现建议从单 harness、单工具集入手,先验证状态数 ≤43 的紧致假设是否成立,再扩展。

核查点清单

  • ⚠️ AUROC 0.94:abstract 数字,未附数据集名称、split 比例或失败样本数。需 fetch PDF §实验主表确认数字来源,以及验证该指标是否在 held-out test set 而非 training set 上报告;
  • ⚠️ FSM 状态数 7–43:需 fetch PDF 附录,核查各数据集实际状态数分布——是否有极端 outlier(如某数据集跑到 400+ 状态);
  • ⚠️ "12 个公开数据集"名单:abstract 未列出,代码未在 abstract 引用;建议 pull GitHub(若存在)确认 12 个数据集的来源域(code generation / web shopping / scientific reasoning 等分布是否平衡);
  • 回放保真度 ≥0.997:abstract 数字,物理意义清晰(DFA 重放轨迹与原始归一化序列的编辑距离 / 重合率),可在 GitHub 复现时直接验证;
  • ⚠️ "跨 split 拓扑 near-identical":需确认 train/val/test 比例和拓扑相似度的度量定义,abstract 未给量化指标。

坑位清单

  1. harness 耦合陷阱:FSM 学到的是特定 harness 的工具签名 + 协议抽象,若工具协议升级(增加/删除/修改工具签名),FSM 必须重建,且旧模型数据无法迁移。生产部署需要 FSM 版本控制 + 灰度切 harness 的基础设施;
  2. 训练-生产分布漂移:FSM 由训练期 harness 的轨迹构建,生产 harness 若有细微差异(如 prompt 模板改了 temperature),拓扑可能漂移。早停阈值 θ 需要在每个新 harness 上重新校准;
  3. 失败特征依赖失败样本量:AUROC 0.94 的质量取决于训练集里失败轨迹的比例;若生产环境失败率极低(如 <1%),特征分布与训练集差异大,分类器校准可能失准;
  4. 状态爆炸风险:7–43 状态在论文 12 个数据集上成立,但这些数据集大概率是结构化、工具集固定的场景。开放域 Agent(如 browser-use、游戏环境)工具签名种类极多,归一化三元组可能仍面临组合爆炸,需实际验证;
  5. 可审计性承诺:FSM 状态表本身是"可读审计件"——但若 FSM 由黑箱挖掘得到,状态语义仍需人工标注(如"状态 5 = 调用文件工具后失败"),否则出边表只是一个无解释的编号集合。

置信度

  • 机制创新:⭐⭐⭐(FSM 统一 next-step + failure 预测,概念简洁、工程可行)
  • 数字可复现性:⭐⭐(AUROC / 数据集名单 / 状态数分布均未在 abstract 验证,需 PDF 核查)
  • 生产落地成熟度:⭐⭐(harness 耦合 + 分布漂移是需要专项解决的工程问题,非开箱即用)