分层上下文压缩,幻觉检测,错误累积概要

AI 长任务三道坎:上下文压缩、幻觉检测、错误累积

这三个词经常一起出现在 AI Agent 工程文档里,本质上它们是同一条事故链上的三环 :

AI 干的活越长,越容易「记不住 → 开始编 → 错上加错」。

这份文档只用大白话讲清楚:每道坎是什么、为什么会发生、工程上怎么破。

先说结论(一句话)

AI 干长活有三道坎:记性有限(所以要分层压缩)、嘴上没把门的(所以要幻觉检测)、一步错步步错(所以要阻断错误累积)。三者不是三件事,是一条事故链的三个环节。


〇、三者的关系:一条事故链

css 复制代码
flowchart TD
    A[任务越干越长] --> B[坎 1:上下文装不下<br/>必须压缩]
    B -->|压缩丢了关键细节| C[坎 2:AI 开始脑补<br/>产生幻觉]
    C -->|幻觉没被拦住| D[坎 3:错误进入下一步的输入<br/>越滚越大]
    D -->|带病前进| E[全盘皆输]

    B -.->|分层压缩:重要的事记牢| OK[关键信息不丢]
    C -.->|检测:对不上依据就拦下| OK2[逼它重答或认怂]
    D -.->|检查点:发现就回滚| OK3[止损重来]

一句话串起来:压缩丢信息 → 诱发幻觉 → 幻觉没拦住 → 喂给下一步 → 错误复利式放大。破法也在这条链上各插一道闸门。


一、分层上下文压缩 ------ AI 的记性问题

1. 问题是什么

AI 的「工作记忆」(上下文窗口)是有限的,就像你的手机相册存储:

  • 聊得越久,装的东西越多,又慢又贵;
  • 更坑的是:塞得太满,AI 会「顾头不顾尾」------开头和结尾记得清楚,中间的内容会被忽略(业界叫 lost in the middle);
  • 所以「多塞」≠「多记住」。

2. 最笨的办法为什么不行

最直觉的办法是砍掉最旧的对话 (截断)。但问题在于:重要的决定往往发生在早期------

比如项目一开始就约定了「预算上限 5000」。砍掉这段后,AI 后面每次都按 8000 干活,你还不知道为什么。

3. 分层压缩:近的记原文,远的记摘要,再远的记结论

像整理手机相册一样按「新旧的远近」分层处理:

层 打个比方 保留什么 丢什么
近期对话(热) 上周的照片存原图 最近几轮对话一字不差 无损
中期摘要(温) 一年前的照片压缩过 每段对话的要点和结论 细节、语气
长期事实(冷) 多年前的只留缩略图 关键结论、决定、人名实体 全部过程

再加一个外挂:云盘(检索式记忆) ------不占相册空间的东西(完整文档、历史资料)不放上下文里,要用的时候再去搜出来(就是 RAG)。

4. 核心权衡

压缩的本质是有损的 :省了空间,就必然丢信息。所以压缩策略的全部功夫在于------丢细节可以,丢关键事实不行。常见做法是压缩时强制保留:用户的原始需求、已确认的决定、不能违反的约束。


二、幻觉检测 ------ AI 的诚信问题

1. 先搞懂:AI 为什么会一本正经地胡说八道

AI 生成的原理不是「查资料再回答」,而是**「接话茬」**------根据上文预测下一个最顺口的词。

所以它产出的是「最像真话的话」,而不是「真话」。流畅 ≠ 正确,而且它自己不知道自己在编------它没有「我不知道」的天然本能。

另外幻觉分两种,人话说:

  • 把没有的说成有:编造不存在的 API、不存在的数据(事实性幻觉);
  • 把有的说歪了:材料在眼前,但曲解了意思、答非所问(忠实性幻觉)。

2. 检测思路:既然不能根治,那就「发现 + 拦截」

方法 人话解释 代价
出处核查(Grounding) 每句关键论断都问「依据是哪段原文?」,对不上就标红。像论文引用核对 必须得有源材料
多次采样一致性 同一个问题背对背问它几遍,答案飘忽不定就是心虚。像警察对证人多次问话比对细节 推理成本翻几倍
专门请裁判 另开一个 AI 专职挑刺,生成者和检查者分开,运动员和裁判不一人兼 多一次模型调用
先答再自查(Chain-of-Verify) 让它先写答案,再针对答案逐条自问「这条站得住吗」 生成量约两倍
置信度门槛 没把握就逼它说「我不确定」,而不是硬编 需要模型支持校准

3. 核心原则

宁可让它说「我不知道」,也不能让它顺嘴编。 幻觉检测的目标不是消灭幻觉(目前做不到),而是把「编的」和「有据的」分开,把编的那部分拦在交付之前。


三、错误累积 ------ AI 的执行问题

1. 问题是什么

AI Agent 干的是多步活:第 2 步拿第 1 步的输出当输入,第 3 步拿第 2 步的......每一步的小错,都会成为下一步的错误地基------像传话游戏,也像复利,不过是负的。

关键在于错误是相乘而不是相加的:

单步正确率 连续 10 步后整体正确率 连续 20 步后
99% 90% 82%
95% 60% 36%
90% 35% 12%

单看每一步「90 分」好像挺不错,但 10 步连乘下来只剩三成胜率------这就是为什么 AI 单步演示惊艳、长任务拉胯。

2. 破法:在链路上插「质检闸门」

手段 人话解释
能一步别两步 链条越短,连乘损耗越小。先想清楚再动手,别走一步看一步
每步留可验证的中间产物 写完代码就跑测试、算完数就对合计------产出能被机器验证的步骤,错误立刻暴露,而不是攒到最后
检查点 + 回滚 每过一个验证点存档;发现错了退回上一个正确存档重来,而不是带病硬走。类似 git 的分支提交思维
关键节点人卡点 涉及花钱、删数据、不可逆操作时,停下来让人确认

3. 核心原则

错误不可能不发生,但要让它「早死」:在单步内被验证掐死,绝不放行到下一步。

最贵错误不是「出错了」,而是「错了十步之后才发现」。


四、组合拳:三道闸门怎么配合

单靠任何一招都不够,实际工程是三道闸门接力:

rust 复制代码
flowchart LR
    CTX[分层压缩<br/>保住关键事实] -->|减少"遗忘型"幻觉| HAL[幻觉检测<br/>拦住编造内容]
    HAL -->|干净的输出才放行| CHK[检查点验证<br/>错了就回滚]
    CHK -->|用干净的状态继续| NEXT[下一步]
    NEXT -.->|长任务持续循环| CTX
  • 压缩做得好 → AI 不忘关键约束,从源头减少「因为忘了所以瞎编」;
  • 检测做得好 → 编造的内容进不了下一步的输入;
  • 检查点做得好 → 就算漏网之鱼,也在最近一步被拦下回滚,损失封顶。

五、三句话带走

  1. 记性 :AI 记不住整个对话,只能「近的记原文、远的记摘要、更远的记结论、参考资料放外挂」,压缩时可以丢细节,不能丢决定;
  2. 诚信 :AI 是接话茬机器不是查资料机器,说得多顺不代表多对,所以要核对出处、多问几遍、请裁判,宁可让它说不知道;
  3. 执行 :多步任务的错误是复利式放大的(90% 单步正确率 × 10 步 ≈ 35%),所以要每步可验证、错了就回滚,让错误死在襁褓里。
相关推荐
数据掘金43 分钟前
鸿蒙统计的权限弹窗怎么适配?
前端
数据掘金1 小时前
鸿蒙统计的多设备协同数据怎么打通?
前端
尘中远1 小时前
Qwt7的曲线渲染平滑实现:高斯卷积、Savitzky-Golay 回归与特征保护
前端
Fly2 小时前
我来提需求,你带着 Codex 做项目:AI 全栈课程开始实战了
前端
集智飞行2 小时前
解决mavros2 ros2版本cpu占用高的问题
java·服务器·前端
HSunR3 小时前
ruoyi 若依 自定义注解 参数校验
java·前端·数据库
拆房老料4 小时前
ONLYOFFICE也能像Microsoft Word和WPS一样分别设置中西文字体
前端·html·word·开源软件·wps
Solis程序员4 小时前
Stripe 幂等表:把「不确定的重试」变成「查表返回」
前端·安全·bootstrap·php·agent
李纲明4 小时前
WordPress 站点变慢:按 TTFB → 缓存 → 查询 → 前端 分层排查(含配置注意)
前端·缓存·性能优化·wordpress·后端开发