Chat Reducer:让 AI 对话突破上下文限制 一句话简介 Microsoft.Extensions.AI 的 Chat Reducer 通过智能压缩策略,在保持对话质量的前提下,有效控制上下文长度 核心价值 ✅ 突破限制:解决 LLM 上下文窗口限制(如 GPT-4 的 8K/32K tokens) ✅ 成本优化:减少输入 token,显著降低 API 调用成本 ✅ 性能提升:缩短上下文长度,加快模型推理速度 在多轮对话场景中,我们面临三大挑战: 挑战 问题 Chat Reducer 方案 上下文限制 超出模型限制导致请求失败 智能压缩到安全范围 成本失控 输入 token 越多费用越高 过滤冗余,只保留必要信息 SummarizingChatReducer(摘要压缩器) 利用 AI 自动生成摘要压缩历史对话。 核心特性: 超过阈值时自动调用 AI 生成摘要 摘要存储在 AdditionalProperties 中 渐进式压缩(新摘要包含旧摘要) 保留完整语义上下文 适用场景: 医疗咨询(完整病史重要)
这就是上下文压缩要解决的核心问题:在保留关键信息的前提下,把输入token从几万降到几千,甚至几百。 二、什么是上下文压缩?上下文压缩(ContextCompression)是指在保证回答质量的前提下,减少输入上下文的token数量的技术。 :普通摘要:把长文本压缩成短文本,目的是给人阅读上下文压缩:把上下文压缩成更适合大模型推理的形式,目的是提高推理效率和质量三、上下文压缩如何工作过滤型技术过滤型技术的核心是相似度计算,把不相关的内容直接删掉 解决方案:根据上下文长度和延迟预算选择压缩策略短文本(<2000字):不用压缩中等长度:用Embedding过滤超长文本:用递归摘要延迟敏感:用快速过滤,牺牲一些准确率上下文碎片化问题:检索出来的5个文档片段 上下文压缩的技术演进,从简单的截断到智能的语义压缩,本质上反映了我们对"信息价值"理解的深化。
这使得上下文管理与压缩技术成为提升多轮对话性能的关键因素。 本教程将深入探讨2025年多轮对话上下文管理与压缩的最新技术进展,包括核心算法原理、实现方法、性能优化策略以及实际应用案例。 2.3 上下文管理的核心挑战 在实际应用中,多轮对话的上下文管理面临多重技术挑战: 信息选择性保留:如何识别和保留关键信息,过滤冗余内容 语义连贯性维护:在压缩上下文的同时确保对话语义连贯 实时性能平衡 3.2 上下文压缩技术 上下文压缩是在有限token预算内保留关键信息的核心技术。 量子计算加速:利用量子计算处理超大规模对话历史 7.2 新兴研究方向 7.2.1 理论研究热点 上下文理论模型:建立更完善的对话上下文理论模型 信息压缩极限:探索语义信息压缩的理论极限 认知启发架构: 总结与展望 多轮对话的上下文管理与压缩是构建高质量AI交互系统的关键技术。随着LLM技术的快速发展,上下文管理技术也在不断创新和演进。
论文核心摘要: 提出上下文光学压缩新范式 - 首次验证通过视觉模态压缩文本的可行性,在10倍压缩比下实现97%的解码精度 设计DeepEncoder创新架构 - 通过串联SAM-CLIP和16倍卷积压缩 - 光学压缩的渐进模糊特性为模拟人类遗忘机制、解决长上下文挑战提供了创新思路 这些贡献为VLM和LLM的长上下文处理提供了全新的技术路径。 这为历史长上下文压缩、大语言模型记忆遗忘机制等研究方向展现了可观潜力。 视觉-文本压缩研究我们选择Fox基准测试[21]来验证DeepSeek-OCR对文本丰富文档的压缩-解压缩能力,以初步探索上下文光学压缩的可行性与边界。 这些实验结果进一步揭示了上下文光学压缩的边界,这可能为VLM中视觉标记优化、LLM中上下文压缩及遗忘机制的研究提供有效的参考。4.3. 定性研究4.3.1.
这是因为大模型有上下文长度限制,对话越长,历史消息越多,就越容易超限。结合我的理解,这篇文章分享一下如何实现上下文压缩,让你的 AI 应用既能"记住"关键信息,又能节省成本。 为什么需要上下文压缩? 面对上下文压缩,我们有三种主流策略: 摘要压缩:让 AI 把历史对话总结成一段摘要。适合长对话场景,比如客服机器人、知识问答。优点是信息损失小,缺点是需要额外 API 调用。 return callAI(prompt) } 什么时候触发压缩? 可以设置一个阈值,比如对话超过 15 轮时触发。也可以根据 Token 数量判断,超过总上下文的 70% 就压缩。 压缩前先估算当前上下文大小,别等到报错了才处理。 写在最后 今天我们介绍了三种 AI 对话上下文压缩策略: 摘要压缩:让 AI 总结历史,保留语义完整性。适合长对话场景。 滑动窗口:只保留最近 N 条,简单高效。适合实时性要求高的场景。
1、网络压缩原理 网络压缩的原理是消耗CPU资源,减少文件在公网传输的大小,提高响应速度。 二、网络压缩 此部分所有的压缩内容在浏览器端都会还原,特别需要指出的是图片,图片在网络间是压缩状态传输的,到达浏览器后是会被还原的。 技术实现依托gzip压缩,仅仅在服务器与客户端网络传输时对静态资源进程压缩,文件的大小在压缩前与还原后保持不变。 图片压缩分为两类:一是等比压缩;二是固定宽高压缩。根据应用场景的不同也分为两类:一是固定参数;二是动态参数。 此部分图片压缩后到达浏览器不会被还原。 (一)等比压缩 使用关键词resize实现等比压缩,指定宽度或者高度即可在原尺寸图片的基础上等比率压缩图片。如果同时指定宽度和高度,只有一个参数生效。
随着对话轮次增加,token消耗迅速逼近模型上限,导致:新消息无法加入上下文关键历史信息被截断智能体“失忆”或逻辑断裂传统解决方案如“滑动窗口”或“简单摘要”虽能缓解问题,却以牺牲信息完整性为代价——一旦压缩 1.1传统压缩方法的致命缺陷方法原理问题截断(Truncation)丢弃最早消息丢失关键前提(如“用Python写”)滑动窗口仅保留最近N轮上下文碎片化,无法回溯LLM摘要让模型生成总结信息失真、细节丢失 二、核心技术:DAG+增量压缩=无损上下文2.1对话即图:构建语义依赖DAGLCM将整个对话历史建模为一个有向无环图(DirectedAcyclicGraph):节点(Node):每条用户/助手消息边( (继续10轮优化)850接近阈值(如900)15“现在改成用pandas实现”870触发压缩:•将前14轮构建DAG•压缩冗余交互•生成摘要节点(token=150)16AI返回pandas版本280上下文总 LCM执行DAG构建与增量压缩压缩后的上下文仍支持/resume、/review等操作这意味着:高级控制命令+无损压缩=可信赖的长期智能体六、性能与兼容性项目说明支持模型所有OpenClaw支持的模型(
该框架采用八叉树结构,通过收集点云中兄弟节点和祖先节点的信息以无损方式编码八叉树符号序列,从而实现点云的压缩。 引言 基于八叉树的压缩点云的模型对分辨率具有鲁棒性,并且它还利用比基于体素的模型更广泛的上下文。然而,先前基于八叉树的方法忽略了兄弟节点(即同一八叉树级别中的节点)的特征信息。 为此,作者提出了新的基于八叉树的点云压缩方法 OctAttention。作者将点云编码为八叉树,并将当前节点的祖先节点、兄弟节点以及兄弟节点的祖先的特征纳入上下文。 上下文模型 作者提出了扩展的大规模上下文以预测更准确的上下文占用分布情况。首先以广度优先的顺序遍历八叉树。 它证实了注意力机制可以利用大规模上下文中兄弟节点的相似特征来预测占用率。 结论 作者提出了新的基于八叉树的压缩模型 OctAttention,通过利用大规模上下文来进行稀疏和密集点云几何压缩。
所以业务上下文变更需要慎之又慎。 运行程序上下文 大家应该对一句话有印象:(进程/线程)上下文切换开销很大。这里的上下文一般指的就是运行程序的上下文。 这里的通信问题就是进程上下文切换开销大的缘故。 方法/类所在的上下文(作用域) 方法上下文可以理解为方法所在的作用域。类亦如此。 还有一些比较特殊的概念实际上也是和方法上下文相关。 比如worker语言特性中,需要监听message事件,这实质上,就是在当前上下文监听另一个上下文的状态。再比如回调函数。实际上是因为上下文变更后,对原有上下文访问的一种编程手段。 从这个角度看,闭包实质上也是对上下文的一种操作手段:返回一个函数,该函数在当前上下文可以操作闭包上的上下文。 执行上下文:当函数或方法被调用时,它会创建一个执行上下文,这个上下文包括了局部变量、参数、返回地址等信息。在JavaScript等语言中,执行上下文还包括this的值。
Linux 压缩解压命令 zip/unzip,文件后缀名为zip 压缩: zip 123.zip *.txt # 将所有的txt文件压缩成123.zip文件 zip -r test.zip 压缩: bzip2 1.txt # 将1.txt压缩成1.txt.bz2 解压: bunzip2 1.txt.bz2 bzip2 -d 1.txt.bz2 bzip2 -dk -z: 调用gzip/gunzip进行压缩解压操作,后缀名是.tar.gz -j: 调用bzip2/bunzip2进行压缩解压操作,后缀名是.tar.bz2 -C: 指定解压位置 Copy 注意:tar 只是用来打包和解包的工具,它本身是没有压缩和解压缩的功能。但是,通过添加参数,可以调用gzip或者bzip2进行压缩解压操作。 tar -z: 使用 gzip方式打包并压缩文件,后缀名为 .tar.gz,可以简写为 .tgz tar -j: 使用 bzip2 方式打包并压缩文件,后缀名为 .tar.bzip2,可以简写为
2025 年 11 月 27 日,agno 发布了 v2.3.3 版本,本次更新带来了多项新功能、性能改进以及 Bug 修复,尤其是在上下文管理、内存优化、文件搜索和异步支持方面有了显著增强。 上下文压缩(Context Compression) • 新增运行时压缩工具调用结果的功能,有助于在智能体运行过程中对上下文进行管理。 • 该功能可以帮助智能体保持在上下文窗口范围内,避免触发速率限制或响应质量下降。 • 功能为 Beta 版,可参考官方文档获取更多信息。 2. • 引入记忆优化与工具调用压缩功能。 • 优化 AWS Claude 兼容性及 API 密钥支持。 • 增加 Gemini 文件搜索支持。 • 修复测试用例中异步知识访问的稳定性问题。 五、总结 代码地址:github.com/agno-agi/agno agno v2.3.3 版本是一次 功能与性能的双重提升 更新,尤其在 上下文压缩、内存优化、文件搜索能力 方面有重大改进,同时增强了
这一版本相较于此前版本在“思考(thinking)模型”的解析逻辑、上下文压缩机制、云模型上下文限制、以及集成接口的兼容性层面都有了实质性的优化。 新增上下文长度(Context Length)支持: 当使用 ollama launch 启动时,系统支持自动压缩适配上下文,提升长文本推理能力。 3. (二)新的上下文长度支持与压缩机制 1. 支持上下文压缩(compaction) 命令行工具 ollama launch 现在可以根据模型定义的上下文长度进行压缩计算。 这一机制允许系统在长上下文对话中动态压缩历史轮次,将上下文保持在最佳 token 范围内,确保推理完整性与响应速度。
第六章ContextCompact(上下文压缩)s01>s02>s03>s04>s05>[s06]|s07>s08>s09>s10>s11>s12“本专栏基于开源项目learn-claude-code的官方文档 ,仅保留关键信息优势:自动化处理,确保智能体永远不会因上下文过长而失效Layer3:compacttool(手动压缩)触发方式:智能体主动调用compact工具使用场景:当智能体意识到需要重置上下文或聚焦特定任务时优势 通过四个阶段实现智能上下文压缩:1、扫描并收集所有工具调用结果;2、然后基于保留策略判断是否需要压缩;3、构建工具ID到名称的映射关系以维持语义完整性;4、将冗余的历史结果替换为简洁的占位符,从而在保持对话连贯性的同时显著减少 信息没有真正丢失,只是移出了活跃上下文。 四、相对s05的变更组件之前(s05)之后(s06)Tools55(基础+compact)上下文管理无三层压缩Micro-compact无旧结果->占位符Auto-compact无token阈值触发Transcripts
复习一下图片的压缩知识,今天来做一个总结。 什么是质量压缩? 图片的质量压缩,会改变图片在磁盘中的大小(File文件的大小),不能改变图片在加载时,在内存中的大小。 image.png 质量压缩 那我们就先看bitmapCompress()这个质量压缩的方法。 /** * 这里我们生成了一个Pic文件夹,在下面放了我们质量压缩后的图片,用于和原图对比 * 压缩图片使用Bitmap.compress(),这里是质量压缩 */ 我们看一眼原图片和压缩目录(Pic)下有没有文件: 原文件: ? 压缩后的文件: ?
我一直也在做上下文相关的事情,现在我们就拨开虾外壳,看看它内部详细是如何调味的(进行上下文窗口管理的)。 03 第二层:Compaction(基于 LLM 的主动压缩) 这是 OpenClaw 最核心的上下文压缩机制——用另一次 LLM 调用来生成对话历史的摘要,用摘要替代原始消息。 它不只是简单地做摘要,而是一个完整的信息保留+压缩 pipeline: session_before_compact 事件触发 │ ├── 1. 如外部 API 返回的原始数据),防止 prompt injection 04 第三层:溢出后恢复 文件:src/agents/pi-embedded-runner/run.ts 即使有了预防性裁剪和主动压缩 │ └── 是 → 增加 overflowCompactionAttempts 计数 │ └── 直接重试 prompt(不再额外 compact,避免重复压缩)
而物理存储主要是考虑是否要启用表的压缩功能,默认情况下,所有表都是非压缩的。但说到压缩,总会下意识地认为压缩会导致 MySQL 数据库的性能下降。这个观点说对也不对,需要根据不同场景进行区分。 n 的值越小,压缩比越高,消耗的 CPU 资源也越多。 注意:32K 或者 64K 的页不支持压缩。启用压缩后,索引数据也同样会被压缩。 启用表的页压缩功能后,性能有明显损失,因为压缩需要有额外的开销。主要原因是一个压缩页在内存缓冲池中,存在压缩和解压两个页。 ,会将为压缩页的数据重新写入到压缩页中。 内存不足的时候,MySQL 会将对应的未压缩页踢出去。因此如果你启用了压缩功能,你的 buffer_pool 缓冲池中可能会存在压缩页和未压缩页,也可能只存在压缩页。
进程的上下文 用户级上下文: 正文、数据、用户堆栈以及共享存储区;寄存器上下文: 通用寄存器、程序寄存器(IP)、处理器状态寄存器(EFLAGS)、栈指针(ESP);系统级上下文: 进程控制块task_struct 它们都是 CPU 在运行任何任务前,必须的依赖环境,因此也被叫做 CPU 上下文。 进程上下文切换 ? 每当内核压入一个新的系统上下文层时,它就要保存一个进程的上下文。 特别是当系统收到一个中断,或一个进程执行系统调用,或当内核做上下文切换时,就要对进程的上下文进行保存。上下文切换情况: 一个进程结束,需要从队列中重新选择一个进程运行。 从逻辑上讲,新上下文层的核心栈不同于前一上下文层的核心栈。 这些指令恢复前一上下文层的寄存器上下文和核心栈,使它们和中断发生时的情况一样,并恢复该上下文层的运行。
-p 与-c 参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换。 -t 检查压缩文件是否正确。 -u 与-f 参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中。 -v 执行是时显示详细的信息。 -z 仅显示压缩文件的备注文字。 -a 对文本文件进行必要的字符转换。 -C 压缩文件中的文件名称区分大小写。 -j 不处理压缩文件中原有的目录路径。 -L 将压缩文件中的全部文件名改为小写。 -M 将输出结果送到 more 程序处理。 -X 解压缩时同时回存文件原来的 UID/GID。 [.zip 文件] 指定.zip 压缩文件。 [文件] 指定要处理.zip 压缩文件中的哪些文件。 -d<目录> 指定文件解压缩后所要存储的目录。 -n 特定字符串 不压缩具有特定字尾字符串的文件 -o 将压缩文件内的所有文件的最新变动时间设为压缩时候的时间 -q 安静模式,在压缩的时候不显示指令的执行过程 -r 将指定的目录下的所有子目录以及文件一起处理
tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个 下面的参数是根据需要在压缩或解压档案时可选的。 压缩 tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成tar.jpg tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后 ,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2 压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2 tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,
在Linux解压数据包时经常使用命令行,但是各种压缩包需要使用不同的命令压缩、解压,本文汇总相关命令。 命令汇总 压缩包格式 解压命令 压缩命令 .tar tar xvf FileName.tar -C target_dir tar cvf FileName.tar DirName .gz