基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
  • 知识卡片碎片时间过考点
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
    • AI 热点每日 AI 资讯与动向
AI 工作台
简历
旧版
AIHT
内容
精选全部 AI 动态热点榜AI 日报收藏
分类
模型行业编程产品技术观点开源
更多
Agent 接入
返回首页开发者导航
AIHT
精选 / 资讯详情
8.0
热点
AI SCORE
技术实践2026-11-10 20:33

多轮对话如何控制上下文膨胀

dev.to · AI#上下文管理#对话记忆#Gemini
Editor brief · 编辑速览

文章围绕 Gemini API 构建模块化 Python 框架,以三层混合记忆机制应对历史消息不断累积的问题。已展示的设计包括固定系统指令层,目标是兼顾对话记忆、Token 成本与响应延迟。

文章思维导图
Knowledge map
拖拽缩放
AI deep read

AI 深度解读

多轮 AI 对话越聊越贵,问题往往出在应用把所有历史消息一遍遍发给模型。作者围绕 Google Gemini API 设计了一套 Python 记忆框架:固定系统指令,保留最近对话,把更早的内容压成摘要,让长会话的输入规模更可控。

这套方案值得看,因为它把「记住用户」拆成了不同层次,也补上了重试、配置校验和成本监控。不过,原文提供的是架构思路,没有性能对照,也没有证明摘要能完整保留上下文。

为什么不能把全部聊天记录一直带上

原文的出发点是:LLM API 无状态,每次请求都需要应用重新组织上下文。开发者最容易实现的方案,就是不断往消息数组里追加用户输入和模型回答,下次请求再整包发送。

问题会随会话长度累积。输入越来越长,首个 token 的等待时间可能增加;反复传输旧消息,会增加输入费用;大量无关历史还可能干扰当前指令。作者把最后一种情况称为上下文稀释(context dilution),也就是模型能看到很多内容,却更难抓住眼前真正相关的信息。

这里要区分两个成本口径:作者说成本随轮次线性增长,更适合理解为历史不断增长时,单次请求的输入成本变化。整个会话的累计费用,还要算上旧消息被重复发送的部分,不能直接套用同一个结论。

三层记忆分别负责规则、细节和长期目标

作者在 Valentius Kryptix 的 AI 工程工作中设计了这套框架,核心是让不同信息进入不同的存储层。

第一层是系统指令锚定(System Instruction Anchoring)。角色设定、输出限制和操作边界放在固定的顶层配置中,每轮持续提供,避免这些要求随着聊天推进被遗漏。它提供稳定的规则入口,但原文没有证明这样就能保证模型始终遵守规则。

第二层是 FIFO 滑动窗口(FIFO Sliding-Window Buffer)。只保留最近的 k 轮对话原文,超出窗口的旧对话依次移出。近期代码块、追问和逐步调试记录需要精确引用,保留原文比压缩成摘要更可靠。

第三层是异步滚动摘要(Asynchronous Rolling Summaries)。移出窗口的对话不会直接丢弃,而是压缩进一份持续更新的摘要,放在系统提示之后。用户的长期目标、之前作出的决定,由这一层承接。

近期细节保留原文,长期信息保留摘要,是这套设计最有用的分工。

作者认为这样可以让输入 token 总量保持平稳。不过,这需要窗口和摘要都受到限制。如果摘要不断追加,或者某轮贴入特别长的代码,仅限制 k 轮仍然无法固定输入规模。原文没有给出 k 的取值、摘要长度上限或触发压缩的具体阈值。

记忆之外,还要看请求失败和实际账单

作者还提出三项配套措施,让客户端具备更接近生产使用的基础能力。

首先是带随机抖动的指数退避(Jittered Exponential Backoff)。遇到 HTTP 429 限流响应或 5xx 服务端错误时,自动重试,并逐步拉长等待间隔。随机抖动用于错开客户端的重试时间,减少大量请求同时再次冲击服务端的机会。

其次是独立的环境配置校验。模型参数、temperature、token 阈值和 API 凭证通过严格校验的环境配置管理,避免散落在硬编码脚本里。原文没有展示配置格式和校验实现。

最后是每轮 token 遥测(Per-Turn Token Telemetry),记录输入 token、生成开销和请求往返延迟。只有持续观察这些指标,才能知道记忆压缩是否真正控制了成本。

这里仍缺一块说明:滚动摘要本身也需要计算或模型调用。原文没有交代这部分开销是否计入遥测,也没有给出实际日志、延迟数据或费用对比。

我的判断

我赞成按信息用途拆分记忆。相比完整重放历史,它减少重复输入;相比直接截断旧消息,它保留了一条延续长期目标和决策的路径。对于持续调试、反复修改代码的会话,这个取舍有清晰的理由。

但摘要是有损压缩。一次旧的排查结论如果遗漏了成立条件,后面就可能被当成始终有效的事实。异步更新还会带来时序问题:新请求到达时,最新摘要是否已经生成?原文没有说明。

这是一份有参考价值的架构经验,效果仍需团队自己的对照测试来确认。

作者没有提供实现代码、测试集或基准数据,不能据此断言它一定更快、更便宜,或者长会话不会丢失上下文。与检索式记忆相比,它也没有展示按需找回早期原文的能力;需要精确回溯时,仅靠摘要未必够用。

能拿来做什么

  • 如果你正在做多轮 AI 编程助手,可以先把上下文拆成固定指令、最近 k 轮原文和长期摘要,并明确 k 按什么规则计算。
  • 对持续调试场景,近期代码和报错保留原文,摘要优先记录目标、已确认的原因和已作出的决定,再检查压缩是否丢掉关键条件。
  • 接入 Google Gemini API 或类似服务时,记录每轮输入 token、生成开销和往返延迟,并单独核算摘要开销,再与完整历史方案比较。
  • 实现 HTTP 429、5xx 重试时采用带随机抖动的指数退避,同时把模型参数、temperature 和 token 阈值纳入可校验的配置。
Original source

本文由 AI 通读原文后重新编写,观点部分为站内判断,细节以原文为准,来源 dev.to · AI,原文版权归原作者所有。

阅读原文
上一篇
MCP 工具返回值中的提示注入风险
下一篇
用真实命中率核算提示缓存收益

资讯速览

dev.to · AI · 2026-11-10 20:33

AI 评分 8.0 / 10

相关标签

#上下文管理#对话记忆#Gemini

继续阅读

  • 编码智能体迁移时移除监控并否认
  • MCP 工具返回值中的提示注入风险
  • 用真实命中率核算提示缓存收益
  • 用校验闭环提高大模型输出可靠性
  • 多个编程助手会话共享 MCP 服务进程