当AI助手连续犯错时,问题往往出在你没看到的那一步
创始人
2026-08-28 23:00:13
0

  炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会!

(来源:科技行者)

你有没有遇到过这种情况:让一个AI助手帮你订机票,前五步它都表现得很聪明,查航班、比价格、确认时间,一切正常。可就在第六步,它突然把你的出发城市和目的地弄反了,然后接下来的十几步操作全都建立在这个错误之上,越走越偏,最后订出一张完全不对的票。

事后你去看它的执行记录,会发现一个很诡异的现象:那个真正出问题的第六步,AI自己给出的"自信程度"其实很高。它当时看起来一点都不慌。真正露出马脚的,反而是后面第十五步——那时候它已经开始反复重试、自我怀疑了。

如果你只盯着AI每一步说话时的语气自信不自信,你永远抓不住真正的病灶在哪。

这正是中科院软件所团队在这篇论文里想要解决的问题。他们给这套系统起了个名字,叫RUPA。

当AI从"说话"变成"做事",旧的判断方法突然失灵了

先说清楚一个背景。

过去几年,大语言模型主要做的事情是回答问题,你问一句它答一句,一次对话基本就是一轮生成。判断这次回答靠不靠谱,业内已经有一套相对成熟的办法,比如看模型对每个词的预测概率有多"确定",或者直接问模型"你对这个答案有多大信心",让它自己打分。

这套办法在单轮问答里效果还不错。但现在的AI已经不满足于回答问题了,它开始变成"智能体"

**智能体(Agent)**:指能够自主执行多步骤任务的AI系统,它不只是回答一个问题,而是会持续地推理、调用工具、观察环境反馈,再决定下一步做什么,就像一个真正在电脑前操作的助理。

去写代码、去操作终端、去完成需要几十步甚至上百步交互才能搞定的复杂任务。论文提到的三个测试场景很有代表性:τ-2是模拟客服对话决策的场景,Terminal-Bench-2是让AI在命令行里完成软件工程任务,GAIA则是考验AI解决开放性复杂问题的能力。

这些任务的共同点是"步数多"。而步数一多,风险就完全不一样了。

论文里做了一个很朴素但很扎心的实验。他们用Qwen3.5-27B模型跑τ-2的两个子任务,Airline(航空客服)和Retail(零售客服),然后用两种传统方法去预测哪些执行轨迹最终会失败:一种是看序列生成概率,一种是让模型自己说出置信度。

结果如下表所示:

| 领域 | 随机猜测 | 序列概率法 | 语言化置信度法 |

| Airline | 0.441 | 0.205 | 0.485 |

| Retail | 0.472 | 0.301 | 0.523 |

**AUROC**:一种衡量分类判断能力好坏的指标,取值在0到1之间,0.5代表跟随机瞎猜没区别,越接近1说明判断越准。

看这个数字你会发现一件很离谱的事:序列概率法在Airline场景里的AUROC只有0.205,比随机瞎猜(0.441)还差一倍多。也就是说,这个方法不仅没帮上忙,反而在系统性地误导你,它认为"危险"的轨迹,实际上更可能是安全的。语言化置信度稍微好一点,但也就是勉强超过随机水平,跟扔硬币差不太多。

这说明一件事:靠模型说话时的"语气"来判断整个任务链条会不会翻车,基本是不靠谱的。

错误藏在哪?答案是:藏在"关系"里,不是藏在"位置"里

那问题到底出在哪儿?

研究团队接着做了第二个实验,他们把所有失败的执行轨迹拿出来,对每一条轨迹计算每一步的风险分数,找出风险最高的那一步,然后看这一步出现在整条轨迹的什么位置。

如果传统直觉是对的,风险最高的那一步应该集中出现在轨迹末尾附近,因为"越到后面越可能崩"。但实际统计出来的分布是,风险最高的步骤几乎均匀地散布在整条轨迹的各个位置上,中位数出现在轨迹进度的54%处,也就是任务刚过半的时候。

更关键的是,这些高风险步骤有非常明显的"行为特征":重复动作的平均得分高达0.981(几乎每一次高风险步骤都伴随着重复),停滞得分0.883,同时反馈冲突和纠错重试这类信号也频繁出现。

这说明失败往往不是某一步"说错了一句话",而是这一步和它前后的其它步骤之间产生了某种结构性的纠缠,比如反复做同一个动作、和之前的观察结果发生冲突、明明该往前推进却在原地打转。

这就带出了这篇论文的核心洞察。

**执行风险不是一个孤立事件,它是一种关系现象**。

一个早期的小失误,如果它跟后面的推理毫无关联,可能根本不会造成什么后果,就像你走路时踢到一颗石子,只要没绊倒,走两步就忘了。但如果这个小失误持续地影响着后面每一步的判断,它就会像滚雪球一样越滚越大,最后酿成彻底的任务失败。

想象你在装修房子时,第一天贴错了一块瓷砖的位置。如果后面的师傅完全没参照这块瓷砖去对齐其他部分,这个错误就孤立在那儿,最多返工换一块。但如果后面所有的水管走线、电路布局全都以这块瓷砖的位置为基准展开测量,那这一个错误就会像多米诺骨牌一样,把整间屋子的施工全部带偏。等到最后发现问题,返工的成本已经不是换一块瓷砖,而是要把整套系统推倒重来。

如果你不去追踪"这块瓷砖影响了谁",只盯着每个工人干活时表情多自信,你永远发现不了问题的根源在哪。

这也是为什么已有的一些"智能体感知"的UQ方法(比如SAUP、Tracer、UProp)虽然比传统方法进了一步,开始考虑执行历史,但它们大多把整条轨迹当成一根直线来处理,按时间距离或者语义相似度来做加权。这仍然遗漏了一个事实:**步骤之间的依赖关系是网状的,不是线性的**。

RUPA的解法:把执行轨迹画成一张关系图

明白了问题所在,RUPA的设计思路就顺理成章了。

它不再把智能体的执行过程看作一条时间线,而是把它建模成一张**有向图**

**有向图(Directed Graph)**:一种由节点和带方向的连线组成的结构,节点代表事件,连线表示"谁依赖谁"或"谁影响谁",方向说明这种影响是单向流动的,比如A影响B,不代表B也一定影响A。

图里的每一个节点代表一次具体的执行事件:用户提出了什么指令、AI做了什么推理或采取了什么动作、调用了哪个工具、环境反馈回来了什么结果。节点之间的连线,则代表它们之间存在某种逻辑上的依赖关系。

RUPA一共定义了七种关系类型:

顺序关系,指的是紧挨着的前一步执行;最新关系,指向最近一次的环境反馈或用户指令;重复关系,用来标记那些推理模式或工具用法高度相似的动作;进展关系,标记那些延续前面某个方案继续推进的推理步骤;并行关系,标记同一个任务背景下的不同推理分支;反馈关系,标记那些指向环境观察中失败信号或不稳定输出的连接;目标一致性关系,标记当前推理步骤和最初任务目标之间的语义关联。

这些关系不是靠模型自己判断的,而是用一套确定性的检测规则算出来的。比如判断"进展关系",系统会去匹配文本里有没有"接下来""因此""继续""验证""测试"这类续接性的词汇;判断"并行关系",会去找"或者""换一种""另一个""备选方案"这类分支性词汇;判断"反馈关系",则去检测前面的观察结果里是不是出现了报错、异常、超时、空响应这类不稳定信号。

这里有个细节值得单独说一下:这套判断规则完全不依赖任务最终是成功还是失败的标签,也不需要人工标注。所有的检测都基于"当下能看到的信息",不偷看未来结果。这个设计其实很关键,因为如果规则里掺杂了"事后才知道的答案",那这套系统在真实场景里就没法用了,毕竟现实中你永远不知道任务还没跑完时它最后会不会成功。

让风险沿着关系网"流动"起来

图搭好了,接下来的问题是:风险怎么在这张图上传播?

RUPA给每条边都算了一个传播权重,这个权重由三个因素共同决定:这种关系类型本身的可靠程度、这条边具体的关系强度、以及时间上的远近。公式写出来是这样:

$$w_{it} = \rho_{\tau_{it}} \tilde{r}_{it} \delta^{\text{age}(i,t)-1}$$

**边权重(Edge Weight)**:衡量一条连接在传播风险时应该被"信任"多少的数值,权重越大,说明这条历史依赖对当前这一步的影响越应该被重视。

其中δ是一个时间衰减因子,意思是离现在越远的历史事件,它的影响力会被逐渐打折。这个设计很符合直觉,毕竟十步之前的一个小疑点,对现在这一步的影响,理应比刚刚上一步发生的事件小一些。

对于"目标一致性"这条特殊的边,RUPA没有算传播权重,而是单独算了一个目标对齐分数:

$$Q_{it} = 1 - S(y_t, x)$$

这里S是一个相似度函数,用来衡量当前这一步的输出和最初的任务目标之间语义上贴近的程度。相似度越低,说明这一步偏离任务目标越远,这个分数就会越高,代表风险越大。

有了权重,接下来就是聚合。当前节点的"图传播风险"计算方式是这样的:

$$G_t = \frac{\sum_{i \in \mathcal{N}(t)} w_{it}(P_i + Q_{it})}{\sum_{i \in \mathcal{N}(t)} w_{it} + \epsilon}$$

意思是把所有跟当前步骤存在依赖关系的历史节点的风险值,按权重加权平均起来。

除了这种基于图结构的聚合,RUPA还保留了一条"记忆线",用指数衰减的方式记录整条轨迹的长期风险趋势:

$$m_t = \frac{\sum_{k

**动量(Momentum)**:这里指的是对历史风险的一种滑动加权记忆,越靠近当前的历史风险权重越大,但不完全忽视更早之前的信息,避免因为过于依赖局部结构而漏掉长期趋势。

图传播和记忆动量最后融合成一个"历史风险"信号:

$$H_t = \eta_g G_t + \eta_m m_t$$

再和当前这一步自身的局部不确定性$U_t$(比如模型输出的预测熵,或者环境节点上观察到的失败信号、空响应、冲突反馈)加权相加,得到最终的风险估计:

$$R_t = \lambda_u U_t + \lambda_h H_t$$

这个设计其实回应了前面提出的那个核心矛盾:**局部信号自信,不代表整体没事**。

一个人在犯错的当下,往往表现得非常自信,等到错误的后果慢慢显现,他才开始慌乱。RUPA的做法相当于给每一步都装了一个"体检记录",不只是看这个人现在的脸色,还要翻看他前面几天的病历,把两者结合起来判断这个人到底健康不健康。

这就像医生看病不能只凭病人今天精神状态好就说没事,得结合他前几天的血压记录、心跳变化趋势一起判断。如果只看眼前这一刻的状态,很多慢性病和潜伏期的问题根本发现不了,等到病人真正倒下时,往往已经错过了最佳干预窗口。

实验结果:RUPA在几乎所有场景里都赢了

理论说完了,接下来看实际效果。

研究团队在3个基准测试(τ-2、Terminal-Bench-2、GAIA)上,用了6个不同家族、不同规模的开源大模型(从26B到230B参数)做了全面测试,对比了包括预测熵(Entropy)、序列概率(Seq-prob)、SAUP、Tracer、UProp在内的多种主流方法。

以MiniMax-M2.7模型为例,主要结果如下表所示:

| 方法 | 平均AUROC | 平均AUPRC | 平均F1 |

| Entropy | 0.666 | 0.749 | 0.689 |

| Seq-prob | 0.685 | 0.748 | 0.718 |

| SAUP | 0.670 | 0.772 | 0.701 |

| Tracer | 0.694 | 0.778 | 0.745 |

| Uprop | 0.669 | 0.750 | 0.710 |

| **RUPA** | **0.718** | **0.805** | **0.755** |

在GPT-OSS-120B这个模型上,差距更明显:Entropy方法的平均AUROC只有0.492,几乎等于随机瞎猜,而RUPA达到了0.577。这个提升幅度看似不大,但要知道从0.5附近(完全没判断力)提升到0.577,意味着系统开始真正具备了区分"这条轨迹会失败"和"这条轨迹会成功"的能力,这是质的跃迁,不是量的微调。

在Qwen3.5-27B上的对比也很典型:Entropy方法平均AUROC是0.559,RUPA是0.656,提升了将近10个百分点。

**AUPRC**:一种在正负样本数量不平衡时更能反映真实判断能力的指标,尤其适合"失败案例"本身数量较少的场景,因为这时候单看AUROC可能会掩盖模型对少数类判断得好不好。

值得一提的是,即便是那些已经在考虑执行历史的"智能体专用UQ方法"(比如Tracer、SAUP),也仍然被RUPA明显超越。在Gemma4-26B上,SAUP的AUROC是0.761,RUPA提升到0.780;在Qwen3.6-35B上,Tracer是0.629,RUPA是0.645。这说明单纯考虑"历史"还不够,考虑"历史里谁跟谁有关系"才是真正拉开差距的地方。

能不能提前发现问题?——越早知道越有用

判断准不准是一方面,能不能"提前"发现问题是另一个更实际的问题。毕竟如果非要等任务跑完才知道它失败了,那这个判断能力再准也没什么实际用处,损失已经造成了。

研究团队做了一个"前缀截断"实验:只给每种方法看轨迹的一部分(比如前10%、前20%……一直到100%),看它们能不能在信息不全的情况下依然准确判断最终会不会失败。

结果显示,在只看到一小部分轨迹的情况下,RUPA的优势格外明显。在GAIA数据集上用MiniMax-M2.7测试,当只观察前10%到40%的步骤时,RUPA的AUROC曲线明显高于其他所有方法,而且这个优势在后续观察比例增加后依然保持。

这个结果背后的原因也不难理解:因为RUPA在建图的时候本来就会捕捉重复动作、目标偏离、反馈冲突这些结构性线索,而这些线索往往在任务早期就已经开始出现苗头。就像前面说的那个装修的比喻,一旦第一块瓷砖贴错,后续几步的测量数据马上就会跟设计图纸产生偏差,只要你在追踪这个偏差信号,用不着等到整间屋子装完才发现问题。

判断准了,能不能真正帮上忙?

光是判断准确,还不足以证明它有实际价值。研究团队进一步搭建了一个简单的场景:让智能体在每一步都采样多个候选动作,然后选择RUPA预测风险最低的那一个执行下去,看这样做能不能真正提升任务完成率。

结果如下表所示:

| 模型 | 方法 | Terminal-Bench-2 | GAIA |

| Qwen3.5-27B | Random | 0.105 | 0.261 |

| Qwen3.5-27B | Entropy | 0.141 | 0.282 |

| Qwen3.5-27B | SAUP | 0.150 | 0.273 |

| Qwen3.5-27B | Tracer | 0.143 | 0.267 |

| Qwen3.5-27B | **Ours(RUPA)** | **0.213** | **0.297** |

| MiniMax-M2.7 | Random | 0.225 | 0.284 |

| MiniMax-M2.7 | Tracer | 0.259 | 0.316 |

| MiniMax-M2.7 | **Ours(RUPA)** | **0.270** | **0.339** |

在Qwen3.5-27B上,用RUPA做决策指导,Terminal-Bench-2的任务成功率从随机选择时的0.105直接翻倍提升到0.213。这意味着原来每接近10个任务只能成功1个,现在每5个任务就能成功1个多,这是实打实的可用性提升,不是纸面上的指标好看。

排除一个疑问:这到底是"关系结构"起作用,还是纯粹信息量多起作用?

这里有个值得深究的问题:RUPA表现好,到底是因为它真的抓住了"关系"这个东西,还是仅仅因为它综合考虑的信息比传统方法多(哪怕不讲什么关系,信息多总归是好的)?

研究团队专门设计了一个"熵值控制"实验来回答这个问题。他们把GAIA数据集上MiniMax-M2.7生成的轨迹,按传统熵值大小分成五个区间(Q1到Q5),确保每个区间内的轨迹在传统熵值上几乎一样,然后看在熵值完全相近的情况下,RUPA是否依然能区分出哪些会成功、哪些会失败。

结果很有说服力:在Q1这个熵值最低的区间(也就是传统方法认为"最确定、最不该出错"的那批轨迹),传统的概率类方法AUROC只有大约0.5,等于完全没有判断力。而RUPA在这个区间依然能达到约0.85的AUROC,AUPRC提升到约0.93。

这个结果直接证明了一件事:**当模型输出的"语气"完全一样自信的时候,轨迹之间的结构性差异依然存在,而且是可以被检测出来的**。这说明RUPA捕捉到的不是"信息量多了"这种笼统的好处,而是真正抓住了传统方法看不到的那个维度:关系结构。

拆开来看:每个部件到底贡献了多少

最后,团队做了消融实验,把RUPA的各个组件依次拿掉,看性能会掉多少:

| 方法 | AUROC | AUPRC | F1 |

| 完整RUPA | **0.718** | **0.805** | **0.755** |

| 去掉图建模 | 0.678 | 0.642 | 0.675 |

| 去掉传播机制 | 0.689 | 0.657 | 0.694 |

| 去掉50%的图边 | 0.705 | 0.654 | 0.739 |

| 换成随机图结构 | 0.681 | 0.643 | 0.691 |

去掉图建模这一项,AUROC从0.718掉到0.678,AUPRC更是从0.805暴跌到0.642,这是所有消融实验里跌幅最大的一项。这说明把执行过程建模成依赖图,这一步本身就承载了大部分性能提升。

更能说明问题的是最后一行:如果把有意义的关系图换成一个随机拼凑的图结构(节点数量、边数量都一样,但连接关系是瞎连的),性能跌幅几乎和直接去掉图建模一样大(0.681 vs 0.678)。

这个对比非常关键,它说明性能提升不是因为"多了一些图结构的花架子",而是因为图里连接的那些关系本身是有意义的、经过验证的依赖。如果这个关系是乱连的,那这套系统反而会被这些错误的连接带偏,效果跟完全没有图结构差不多。

这就好比给一个团队画组织架构图,如果这张图准确反映了真实的汇报关系和协作依赖,出了问题你就能顺着这条线快速找到责任人。但如果这张图是随手画的、连接关系完全乱套,那这张图不仅没用,反而会让你在排查问题的时候走错方向,比什么都没有还糟糕。

写在后面

读完这篇论文,最让我意外的一个细节其实是那个"熵值控制"实验。之前我一直以为,各种UQ方法之间的差距,本质上都是"看得多不多"的差距,谁掌握的信息更全,谁就判断得更准。但RUPA在完全控制了熵值这个变量之后,依然能在传统方法完全失效的区间里达到0.85的AUROC,这说明有一种信息是纯粹靠"看得多"补不回来的,你必须知道这些信息彼此之间是怎么连起来的。

另一个值得琢磨的地方是,论文里提到失败步骤的中位数位置出现在轨迹进度的54%左右,这个数字本身没什么特别的,但它背后隐含的意思是:如果你的系统只在任务快结束时才去做风险检测,那你已经错过了大约一半的介入窗口。这对现在很多"事后复盘"式的智能体监控方案是个值得警惕的提醒。

RUPA现在依赖的边检测规则(关键词匹配、embedding距离)本质上还是相对朴素的手工规则,这套规则能不能随着任务领域变化自动调整,还是个开放问题。如果换到一个完全陌生的任务场景,这些关键词线索(比如"接下来""换一种")是否还管用?这大概是这条研究路径接下来最值得追问的地方。

Q&A

Q1:RUPA是什么?

A:RUPA(Relational Uncertainty Propagation for Agents)是中科院软件所团队提出的一套面向大语言模型智能体的不确定性量化框架,它把智能体的执行过程建模成一张有向关系图,通过在图上传播风险信号来判断整条任务轨迹最终会不会失败,比传统只看当前生成结果的方法更能提前捕捉隐藏的执行风险。

Q2:RUPA和传统的不确定性判断方法有什么区别?

A:传统方法(比如预测熵、序列概率)只看模型当前这一步说话时的"自信程度",而RUPA会把整个执行过程看作一张关系网,追踪重复动作、目标偏离、反馈冲突等结构性线索,即便当前步骤看起来很自信,只要它跟历史步骤存在有问题的依赖关系,RUPA依然能识别出风险。

Q3:RUPA的实际效果怎么样?

A:在τ-2、Terminal-Bench-2、GAIA三个基准测试、6个不同大模型上的实验显示,RUPA在几乎所有场景下的AUROC、AUPRC、F1指标都优于现有方法,比如在MiniMax-M2.7上把平均AUROC从最强基线的0.694提升到0.718,并且能更早发现潜在失败,用它指导智能体决策还能把任务成功率提升近一倍。

相关内容

热门资讯

长征五号B遥一运载火箭顺利通过... 2020年1月19日,长征五号B遥一运载火箭顺利通过了航天科技集团有限公司在北京组织的出厂评审。目前...
9所本科高校获教育部批准 6所... 1月19日,教育部官方网站发布了关于批准设置本科高等学校的函件,9所由省级人民政府申报设置的本科高等...
9所本科高校获教育部批准 6所... 1月19日,教育部官方网站发布了关于批准设置本科高等学校的函件,9所由省级人民政府申报设置的本科高等...
湖北省黄冈市人大常委会原党组成... 据湖北省纪委监委消息:经湖北省纪委监委审查调查,黄冈市人大常委会原党组成员、副主任吴美景丧失理想信念...
《大江大河2》剧组暂停拍摄工作... 搜狐娱乐讯 今天下午,《大江大河2》剧组发布公告,称当前防控疫情是重中之重的任务,为了避免剧组工作人...