前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
返回 AI 情报前线
All News · 全部资讯9321
  • 多模型API退出测试:成本账本才是选型关键
  • 为什么不能只用Claude做所有事
  • Axonius多租户AI Agent隔离方案实践
  • 用LiteLLM将Claude Code路由到DeepSeek节省成本
  • Claude Code支持AGENTS.md跨工具标准配置
  • Coding Agent 账单省 50-70%:利用 sticky routing 保住 Prompt Cache 命中
  • AI Agent 为何还在用 while(true) 循环——工程陷阱深度剖析
  • SEO Agent 选 MCP 还是 REST?一份实用决策框架
  • SGLang深度解析:如何高效服务DeepSeek-V4-Pro
  • FlakeFixer: 用Agent自动分析Flaky Test
  • AI编码Agent记忆系统设计的四个教训:删除不是过期
  • 盲人开发者为视障群体打造AI描述应用ScribeMe
  • AI代码审查员的验证悖论:声称完成≠真正完成
  • LLM API多租户安全清单:tenants-safety essential
  • AI Agent不应持有你的钥匙:权限最小化原则
  • Claude 多智能体系统上演自复制恶意软件攻防战
  • MCP Server 开发避坑指南:工具描述比 TypeScript 更难
  • 生产级 Solana Agent 交易生命周期深度解析
  • 5分钟让AI助手读懂你的代码库
  • 用Python构建AI简历筛选器
  • Agent上下文满了该丢什么:长对话记忆管理实战
  • Warp推出Factories:一站式AI软件开发工厂基础设施
  • AI Agent试点到生产:成本暴涨700倍的教训
  • Cursor发布Origin功能:AI编程上下文管理
  • TryHackMe 提示词注入 CTF 实战攻略
  • 面向 Agent 的运维队列:失败自动转Ticket
  • 四个静默失败的 CI 检查:它们都是绿的,但什么都没做
  • AI 编码工具会读取 .env:本地 DLP 代理 Anonmyz 在prompt边界截流
  • Google 开源 SAM:零配置的 AI Agent P2P 发现与调用网络
  • Cursor Skills完全指南:格式规范与跨Agent迁移实测
  • OpenAI Codex Skills规范详解:目录结构与官方文档未记载的细节
  • 用Gitea自建Claude Code内部插件市场,团队Skill统一分发
  • Claude Skills规范深度解读:从格式到团队协作
  • 2026年LLM应用架构实战:摆脱if/else链式判断
  • Anthropic CEO:AI天然趋向集中,开源只是转移权力
  • 微软 Copilot 隐藏参数漏洞可被利用窃取密码
  • LangChain 揭示:Agent 效果不佳时换模型是误区,换 Harness 才是关键
  • 三阶段工作流让 AI Agent 保持精准:Research-Plan-Implement
  • 小米MiMo桌面应用即将上线,AI编程助手6月已开源
  • Agent成熟度记分卡:追踪AI Agent可靠性的五个核心维度
  • 模型趋同时代:系统架构比选模型更重要
  • 代码审核功能默认关闭的教训
  • 程序员用 Claude 为 Windows 专用 HP 打印机编写 macOS 驱动
  • NIST AI风险管理框架生产级RAG实战
  • Codex自动探索优化技能:研究-测试-评判闭环
  • AI协作UML编辑器:代码臭味一目了然
  • AI API成本降低95%的实战经验
  • 不同模型Tokenizer成本差异的技术解析
  • 我用低价模型替代OpenAI:生产迁移实录
  • Anthropic单token成本是Vercel均值4.4倍,使用量却占65%
  • career-ops: 在AI编程CLI里做求职管理
  • 已加载 51 / 9321
8.0
热点
AI SCORE
技术实践2026-08-18 22:00

Agent上下文满了该丢什么:长对话记忆管理实战

dev.to · AI#AI Agent#上下文管理#长对话
Editor brief · 编辑速览

当Agent运行超过40分钟、上千轮请求后,上下文窗口触达上限时,历史数据按"长短和新旧"驱逐,导致刚读过的堆栈信息被丢弃,下个回合被迫重新跑测试。Favur团队实测单次任务消耗上万次模型请求,记录可公开查阅。

文章思维导图
Knowledge map
拖拽缩放
Full translation

完整中文译文

一个 Agent 在任务进行到四十分钟时,已经读取了三个文件、运行了两次测试套件、捕获了一个栈追踪,并写出了一份修复计划。此时上下文窗口填满了,紧缩(compaction)运行以驱逐历史记录来腾出空间,而栈追踪因其在长度上靠前且时间上靠后而被清除。下一轮就需要重新运行测试来恢复 Agent 原本已经拥有的信息。

Favur 是一个 Agent 团队,它接收一份书面规范并从中构建软件,自主进行规划、编码、审查和测试,无需任何人驱动。任务运行时间足够长,以至于这成了常态而非边缘情况。本月有一个任务在完成前发出了超过一万次模型请求,其完整公开记录在此。

问题:紧缩机制一无所知

当紧缩触发时,它面对的是四百条毫无区分的文本。有些是 Agent 一次性消费过的工具结果。有些是它写下的计划。有些是某人输入的指令。没有任何东西能把它们区分开来。

唯一剩下的属性是长度和最近程度,而这两者都与真正重要的东西负相关。栈追踪既长又旧,而下一轮正需要它;目录列表既短又新,却已经被消费过了。

这个领域的大部分工作都集中在让那个判断更加精准。给模型一个工具来剪掉它自己的历史。训练一个小模型来给相关性打分。分层摘要。所有这些都是真实的工程,而且都接受了一个前提:判断发生在窗口已满的时刻——而这正是系统对自己历史了解最少的时刻。

我们的解决方案:在追加时分类

每条消息都通过特定的调用点到达,出于特定的原因。在那个瞬间,没有任何东西是模糊的。代码知道它正在记录一个供即时消费的工具结果,或者持久化一个计划,或者记录一条指令。然后它保留了文本而丢弃了原因,一小时后不得不从毫无区分的文本中重建它。

所以 Favur 在追加时就给消息分配一个保留类别。有三个类别,名字本身就承载了整套方案。Forgettable(可遗忘)、Fuzzy(模糊)、Strict(严格)。调用点选择其中一个,因为调用点是系统中唯一知道的那个部分。

进度报告——Agent 写给自己的日志,然后读回来以恢复自己的状态——以 strict 追加。这使得日志在早期的压缩轮次中仍然可用,而这正是 Agent 最可能需要它的时候。但 strict 不是豁免。在最高层级,日志同样会被丢弃。注入到运行中 Agent 的指令也是以 strict 追加的,原因相同。

这样紧缩就不需要任何判断了。在压力下,它不是读取消息,而是读取消息分类。

各层级的实际作用

第一层(通常占用 5%)对 forgettable 和 fuzzy 素材进行摘要,不删除任何东西。历史变短了;所发生事情的整体形状以压缩形式保留下来。

第二层(10% 占用)丢弃那些素材,并开始对 strict 进行摘要。日志和指令仍然存在,只是变小了。

第三层(25% 占用)丢弃所有三个类别。我们通常将窗口占用限制在 50%——超过这个比例 Agent 就会失败。

回到栈追踪的例子——它以 strict 追加,所以下一轮需要它时栈追踪仍然在那里,因为 strict 在第二层之前不会被摘要,到第三层才会被丢弃。而目录列表以它应得的方式追加,在第一层之后变成摘要,在第二层之后消失,这对目录列表是正确的,对这里却是错误的。两种结果都不是紧缩的判断。都是在追加时决定的。

各层级的阈值是配置项而非常量。固化在客户端中的触发器只是关于对话何时运行足够长的一声意见,适用于该客户端将运行的所有任务,而两小时重构任务的正确值并非六轮问答任务的正确值。

设计的代价

把决策移到信息最充分的时刻,也意味着把它移到调用点最多的时刻。

一个紧缩例程是一段代码,错在一个可以找到的地方。保留类别是截然相反的权衡。每一条追加消息的代码现在都要做一个小区分,而一个错误的区分是静默的——因为一条以 forgettable 追加的消息不会宣告它本应是 strict。它在一个没人监视的任务中比预期更早地离开某一层级,而很久以后才浮出水面的,是一个看起来忘记了某些东西的 Agent。

这个方案的效果也取决于其最不经心的调用点。层级按意图分类,但前提是每条消息都携带意图,而一条没有类别的消息又会回到按长度和最近程度分类的状态,尽管周围的一切都分类得当。这不是一种可见的失败。它是历史中某个区域悄然回归到本设计所要取代的行为。

紧缩何去何从

紧缩被当作摘要问题来处理,而它实际表现像个标注问题。那些标注在有任何东西去查找它们的时候根本不存在。

把判断移到追加阶段,那么在压力下运行的进程就完全不需要智能。这样产生的结果不是一个拥有更大窗口的 Agent。而是一个其窗口按某人选择的顺序清空的 Agent。

在我们的产品网站上阅读更多内容。

Favur Evals,公开基准,这些运行在此评分

Favur 本身目前是邀请制。如果你想给它一个你自己的规范,等待名单在此

Original source

本文由 AI 翻译整理自 dev.to · AI,原文版权归原作者所有。

阅读英文原文
上一篇
用Python构建AI简历筛选器
下一篇
Warp推出Factories:一站式AI软件开发工厂基础设施