TrajDebug:长时序智能体轨迹错误生命周期追踪与关键故障定位

TrajDebug:长时序智能体轨迹错误生命周期追踪与关键故障定位

TrajDebug:长时序智能体轨迹错误生命周期追踪与关键故障定位

论文原网页:https://arxiv.org/html/2608.06346v1

摘要

基于大模型的智能体可完成软件研发、科学发现、多轮客服等复杂长时序任务,但执行轨迹极易产生级联错误,调试定位难度极高。关键错误检测目标是在整条失败轨迹中,找到根源性最早错误步骤——修正该步即可让任务完整成功。当前领域存在两大核心痛点:

  1. 长轨迹上下文海量冗余,判定单步错误所需证据分散在相隔数十步的指令、观测、历史上下文,全局一次性诊断极易幻觉误判;
  2. 单条失败轨迹内会并存大量局部错误:部分后期修复、部分无实质影响、仅少数会持续传导至最终失败,无法简单以时序先后判定根源故障。
    本文提出TrajDebug错误生命周期追踪框架,依托多粒度轨迹压缩、证据约束式错误识别、错误状态分类、候选导向因果归因四阶段流水线,完整追溯每条局部错误的演化全过程,精准定位导致任务失败的关键错误。配套构建TrajErrBench标准评测基准,包含486条人工标注失败轨迹,取自τ²-Bench交互场景、SWE-Bench Pro长代码开发场景。在多套主流智能体基准上对比现有诊断基线,TrajDebug全局定位性能最优;落地应用实验证明,Traj输出的诊断结论可直接用于智能体迭代优化,重执行任务平均成功率提升10.8%,历史故障沉淀为经验库后泛化任务提升5.7%。全部代码、标注数据集开源。
    关键词:智能体轨迹调试、长时序智能体、错误归因、故障溯源、轨迹压缩、自动化诊断

目录

1 引言
2 先导试点研究
2.1 关键错误检测任务形式化定义
2.2 上下文增长带来的定位难度量化
2.3 局部错误演化动力学分析
3 TrajDebug完整框架
3.1 多粒度轨迹分层压缩
3.2 证据约束错误触发器检测
3.3 错误实例生命周期状态分类
3.4 候选集导向因果归因
4 TrajErrBench评测基准构建
5 完整对照实验
6 讨论与局限性
7 结论
参考文献
附录A 人工标注完整规范
附录B 框架核心实现Python代码
附录C 全套提示词模板
附录D 消融实验完整结果
附录E 案例轨迹完整运行示例

1 引言

LLM智能体执行轨迹可长达上百步,包含规划、推理、工具调用、环境反馈多轮交互。一处早期错误会沿后续步骤持续传导,最终任务整体失败。关键错误检测的核心目标:定位整条轨迹中决定性最早错误,仅修改该步动作、其余步骤不变,整条轨迹即可正常完成。
现有方法分为两类:

  1. 分类约束式诊断:全局一次性让模型遍历全轨迹标记错误,长上下文下准确率断崖下跌;
  2. 因果反事实归因:建模步骤依赖关系,但无法区分“已修复错误/无害局部错误/根源故障”,多错误共存时归因模糊。

两大核心行业痛点

  1. 长上下文证据分散:判断单步违规的约束、事实可能出现在轨迹最开头,长序列下模型极易丢失远距离证据,凭空编造错误判定;
  2. 多局部错误混杂干扰:一条失败轨迹平均7~8处局部错误,大部分会被后续步骤修复、或不影响最终结果,只有少数持续传导为终端故障,简单时序先后无法区分根源。

本文四大核心贡献

  1. 提出TrajDebug四阶段生命周期追踪框架:分层压缩、错误触发检测、状态分类、因果归因,全程以原文可查证证据为约束,杜绝无依据幻觉诊断;
  2. 量化长轨迹错误演化规律,区分四类错误生命周期状态(完全修复/高代价修复/显性持续故障/潜伏无害错误),仅筛选传导型故障进入归因;
  3. 构建TrajErrBench开源评测基准,486条双领域人工标注失败轨迹,提供标注一致性Fleiss κ指标用于标准化对比;
  4. 落地两类工程应用:单任务前置诊断优化、故障经验库泛化迁移,验证框架可切实提升智能体任务成功率。

图1 CSV导出任务典型级联错误:早期违反“禁止修改core序列化文件”约束,虽后续打补丁但约束冲突持续存在,属于Manifest Active显性关键错误。

2 先导试点研究

2.1 任务形式化定义

设完整轨迹τ = ( x 1 , x 2 , . . . , x N ) \tau=(x_1,x_2,...,x_N)τ=(x1,x2,...,xN),每一步x t x_txt包含推理、动作、环境返回观测。轨迹判定失败即终端状态不满足任务目标。
决定性关键错误:若仅替换x t x_txt动作、前置步骤不变、后续步骤正常执行,整条轨迹由失败转为成功,则x t x_txt为决定性错误;关键错误步骤是时序最早的决定性错误。

2.2 上下文长度对定位精度影响

采用WhoAndWhen、AgentDebugBench数据集,按轨迹长度分组测试主流大模型全局诊断准确率:

  • 1~10短轨迹:平均44%定位精度
  • 11~30:24%
  • 31~60:14%
  • 61步以上长轨迹:不足2%
    结论:上下文越长,远距离约束证据丢失越严重,全局一次性诊断完全失效。

2.3 局部错误演化统计

采样50条失败轨迹人工标注,总计381处局部错误,单条平均7.62处,仅1处为关键根源错误:

  1. 61.9%局部错误:后续步骤完全修复,无终端影响;
  2. 31.4%持续存在,传导至最终失败;
  3. 6.6%潜伏错误:存在但后续决策完全不依赖该错误,无危害。
    现有方法无法自动区分三类错误,大量无害局部错误干扰根源定位。

3 TrajDebug整体框架

输入任意失败轨迹,流水线四阶段依次执行:多粒度压缩→错误触发器检测→错误实例状态分类→候选因果归因,最终输出唯一关键错误步骤与完整证据链。

3.1 多粒度轨迹分层压缩

为平衡证据完整性与上下文token开销,对每一步构建三层结构化视图:

  1. 高细粒度视图:完整原始指令、动作、观测、本地推理片段,用于单步错误证据核验(不压缩);
  2. 中粒度视图:精简单步核心意图、动作、状态变更,保留关键事实;
  3. 粗粒度视图:仅记录任务进度、核心实体、未解决承诺,远距离上下文使用。
    诊断不同阶段自动选用最低粒度视图,长历史仅加载极简摘要,本地核验步骤加载完整原文,大幅降低长上下文负担。

3.2 证据约束错误触发器检测

错误触发器e = ( t , c , p , q w , q r ) e=(t,c,p,q_w,q_r)e=(t,c,p,qw,qr):t为错误步数,c为冲突类型,p为执行阶段,q w q_wqw当前错误承诺,q r q_rqr被违背的原始参考事实。
硬性约束:q w q_wqwq r q_rqr必须在轨迹原文中可逐字检索,不满足直接丢弃该错误判定,杜绝幻觉。

四类冲突参考来源c
  1. 任务冲突:违背顶层任务约束(如图1禁止修改文件要求);
  2. 历史冲突:与之前工具输出、已确定事实矛盾;
  3. 单步内部冲突:同一步推理前后自相矛盾;
  4. 环境异常:动作合理但环境返回错误(非智能体决策错误)。
执行阶段p

规划/推理/动作执行/观测读取/结果校验五大类,用于细粒度错误根源分析。
单步可检测多条触发器,全部基于本地高粒度视图+近两步中粒度+远距离粗粒度历史。

3.3 错误实例生命周期状态分类

将同一条参考对象O OO下所有触发器聚合为错误实例E = ( E , O ) E=(\mathcal{E},O)E=(E,O),避免同一违规行为多次触发造成重复统计。
双维度判定实例生命周期:

  1. 是否被后续步骤完整修复;
  2. 是否留下终端可观测痕迹(不可逆修改/持续约束冲突/过半轨迹开销修复)。
四类标准化错误状态
  1. Clean Resolution 完全修复:后期步骤覆盖错误,无任何终端影响,直接剔除候选;
  2. Costly Resolution 高代价修复:虽修复但消耗过半轨迹步数,属于候选故障;
  3. Manifest Active 显性持续:错误全程未修复,终端结果直接受影响,核心候选;
  4. Latent Active 潜伏无害:存在错误但所有后续决策不依赖,不纳入候选。
    筛选规则:仅Costly Resolution、Manifest Active两类实例进入最终归因候选集F ( τ ) \mathcal{F}(\tau)F(τ)

3.4 候选集导向因果归因

不再遍历整条轨迹,仅对筛选后的少量故障候选实例做因果判断。输入每个实例的首错误步、状态标签、完整原文证据,由LLM对比各实例对终端失败的因果贡献,输出时序最早的决定性关键错误。
优势:候选集规模极小,无需加载整条长轨迹,归因精准度大幅提升。

4 TrajErrBench评测基准

数据集构成

总计486条人工标注失败轨迹:

  1. τ²-Bench(400条):多工具交互、客服长流程,平均29.3步;
  2. SWE-Bench Pro(86条):代码仓库开发长轨迹,平均119.7步(超百步极端长序列)。

标注规范

3名独立标注员逐条标注,少数服从多数生成真值标签:

  1. 定位时序最早决定性关键错误;
  2. 区分局部修复/持续故障;
  3. 标注冲突类型、错误发生阶段。
    一致性指标:τ²-Bench Fleiss κ=0.91(高度一致);SWE长代码轨迹κ=0.67(中等一致)。

热力图可见:各类场景关键错误大量分布在轨迹中段,智能体前期收集信息、中后期做出决定性违规动作,简单“取第一步错误”基线完全失效。

5 完整对照实验

5.1 对比基线方案

  1. 全局一次性LLM诊断(All-at-Once);
  2. 步进式逐段排查Step-by-Step;
  3. 二元搜索定位基线;
  4. AgentRx因果诊断框架;
  5. WhoAndWhen、AgentDebug专业错误定位工具。

5.2 核心定量结果

  1. 全数据集平均关键错误定位准确率:TrajDebug 78.3%,最优基线仅56.1%;
  2. 60步以上超长轨迹:TrajDebug 71.2%,基线不足30%,长时序鲁棒性优势显著;
  3. 消融实验:多粒度压缩、证据约束触发器、生命周期分类、候选归因四模块缺一不可,任意移除指标下降10~22个百分点。

5.3 落地应用实验

场景1:失败轨迹先经TrajDebug生成针对性修复提示,重新执行任务,平均任务成功率+10.8%;
场景2:批量历史故障诊断沉淀为故障经验库,迁移至全新同类任务,平均成功率+5.7%;
证明框架输出的诊断具备工程实用价值,可直接用于智能体迭代优化。

6 局限性

  1. 仅面向单智能体串行执行轨迹,多智能体交互、并行任务暂未适配;
  2. 基准数据仅覆盖工具调用、代码开发两大领域,自动驾驶、科学计算等场景未验证;
  3. 依赖LLM完成分类与归因,极端超长轨迹仍存在token开销瓶颈;
  4. 仅定位决定性根源错误,暂不支持批量全链路错误修复方案生成。

7 结论

针对长时序智能体轨迹多错误混杂、远距离证据丢失两大调试痛点,本文设计TrajDebug生命周期追踪诊断框架,通过分层压缩降低上下文负担,以原文证据约束杜绝幻觉诊断,基于错误演化状态过滤无害局部故障,最后在小规模候选集内精准归因根源关键错误。配套开源TrajErrBench标准化人工标注基准,大量对照实验证明长轨迹场景下定位性能显著超越现有基线。工程落地验证诊断结论可有效提升智能体任务完成率,代码与数据集全部开源,为长时序智能体自动化调试提供标准化工具链。

参考文献

(完整参考文献见论文PDF原文末尾)

附录A 核心实现Python代码(框架主流水线)

importosimportllm_clientfromcore.compressimportMultiGranCompressorfromcore.triggerimportTriggerDetectorfromcore.classifierimportErrorStateClassifierfromcore.attributionimportCausalAttributorclassTrajDebug:def__init__(llm_api_key):self.compressor=MultiGranCompressor()self.detector=TriggerDetector()self.classifier=ErrorStateClassifier()self.attributor=CausalAttributor(llm_api_key)defrun_full_diagnosis(trajectory_raw):# 阶段1:多粒度三层压缩traj_view=self.compressor.build_views(trajectory_raw)# 阶段2:逐步检测证据约束错误触发器trigger_list=self.detector.scan_all_steps(traj_view)# 阶段3:聚合错误实例 + 生命周期分类,筛选候选error_candidates=self.classifier.cluster_and_filter(trigger_list)iflen(error_candidates)==0:return"No decisive critical error found"# 阶段4:候选导向因果归因,输出关键错误critical_step,evidence_chain=self.attributor.attribute(error_candidates,traj_view)return{"critical_step_id":critical_step,"all_error_instances":error_candidates,"evidence":evidence_chain}# 调用示例if__name__=="__main__":importjson raw_traj=json.load(open("traj_sample.json","r"))debugger=TrajDebug("sk-xxx")res=debugger.run_full_diagnosis(raw_traj)print(json.dumps(res,indent=2))

附录B 数据集使用说明

  1. TrajErrBench目录结构
data/ ├─ tau2_400/ # τ²-Bench交互轨迹 ├─ swe_pro_86/ # SWE长代码轨迹 └─ label_spec.md # 人工标注完整规范
  1. 加载读取脚本
importjsondefload_benchmark(root="./data"):all_samples=[]forfolderin["tau2_400","swe_pro_86"]:forfnameinos.listdir(f"{root}/{folder}"):iffname.endswith(".json"):withopen(f"{root}/{folder}/{fname}","r",encoding="utf8")asf:all_samples.append(json.load(f))returnall_samples# 每条样本字段:trajectory、gt_critical_step、error_triggers、conflict_type

附录C 完整开源资源清单

  1. 论文PDF原文:https://arxiv.org/pdf/2608.06346
  2. 项目GitHub仓库:https://github.com/THU-KEG/TrajDebug
  3. TrajErrBench完整标注数据集:仓库data文件夹
  4. 主流水线、压缩、检测、归因完整代码:src/core
  5. 消融批量训练/评测脚本:scripts/run_ablation.py
  6. 可视化绘图代码:scripts/plot_result.py
  7. 全套LLM提示词模板:config/prompts.yaml
  8. 人工标注规范文档:docs/annotation.md
  9. 案例完整轨迹样例:examples/csv_fix_traj.json