我让 Agent 批处理 5000 条数据,发现上下文压缩根本行不通
我让 Agent 批处理 5000 条数据发现上下文压缩根本行不通做了上下文压缩、摘要、滑动窗口——全试了Agent 反而越来越笨。最后发现不是压缩算法的问题是 Agent 的执行模式和压缩天然互斥。起因想做一个能自己读 Excel 的智能 Agent项目需求很简单门店有几千行不规范的商品数据需要用 AI 匹配到总部标准库或者标准化后输出。最初的想法很直觉——给 Agent 装几个工具让它自己搞定工具 - read_excel(path) → 读文件 - search_products(query) → 搜索总部商品 - web_search(query) → 联网搜商品信息 - write_excel(data, path) → 输出结果 Agent 拿到任务把这个 Excel 里的所有商品标准化第一步就爆炸了。Excel 有几千行Agent 一次性读完上下文直接撑爆。于是改成让 Agent 分批读取文件再到后来发现分批之后会膨胀用压缩来处理。压缩上线后Agent 的行为变得诡异引入中间件压缩之后Agent 的行为开始变得无法理解明明搜到了正确结果最终输出却是空的某些行的商品名写到一半就开始编最诡异的是处理到第 300 行左右Agent 突然重新搜索第 17 行的商品——那条数据一个多小时前就处理过了Agent 在失忆而且它自己知道自己在失忆于是陷入了一个死循环上下文膨胀 → 压缩 → 信息丢失 → 发现不对 → 重新搜索 → 更膨胀 → 再压缩 → 更多丢失...翻日志找到了根因仔细看了几轮完整执行的日志后发现了一个和预期完全不同的执行模式。我想象中 Agent 应该这样做逐行完成行 1: 搜索 → 处理 → 输出 ✓ 行 2: 搜索 → 处理 → 输出 ✓ 行 3: 搜索 → 处理 → 输出 ✓Agent 实际上是这样做的按工具并发read_batch(第 1 批, 50行) → search_products(行1) search_products(行2) ... search_products(行50) 50 个向量搜索同时发出 → search_by_barcode(行1) search_by_barcode(行2) ... search_by_barcode(行50) 50 个条码搜索同时发出 → web_search(行1) web_search(行2) ... web_search(行50) 50 个联网搜索同时发出 → LLM 尝试在一条消息里生成 50 行的结果...Agent 的并发工具调用机制倾向于把一批数据里所有行的同一个工具一次调完。这个执行模式对压缩是致命的压缩算法只能判断一条消息在对话里的位置是否靠前无法判断它是否已经被充分使用过。当中间件按时间顺序压缩旧消息时行 1 的搜索结果被压缩时行 1 还没有完成。它只做完了搜索还没轮到综合和生成。压缩之后行 1 丢失了具体搜索内容。剩下的摘要可能是行 1 搜索完成有 3 个候选——但具体是哪 3 个、每个的规格是什么全丢了。Agent 无法继续处理行 1。信息不全它要么跳过这一行要么重新搜索。但此时上下文早已面目全非。经过多次压缩后Agent 已经不记得它原本要处理的是这 50 行商品数据上下文被稀释成了零散的语义片段。深层矛盾在这里上下文压缩的隐含假设是早期消息对当前决策不再关键——这在对话里成立10 轮前的你好不重要。但批处理场景里每行数据的中间结果对产出最终输出都至关重要——压缩等于把没完工的东西的施工图纸扔了。解决方案不压缩直接消灭上下文既然压缩怎么调都失败换个思路——不让上下文积累for 每一行 in Excel: agent 新建 Agent(thread_idfitem-{i}) # 全新上下文 result agent.invoke(处理这一个商品: {row}) save(result) # agent 销毁 → 上下文消失 → 零累积用ThreadPoolExecutor并发跑四个这样的单行 Agent。核心洞察不是在 Agent 内部管理上下文让它不膨胀而是从外部杜绝上下文的积累。每行的 Agent 只见过一件商品开始时空的结束时销毁。不需要压缩因为根本没有需要压缩的东西。那对话 Agent 的上下文压缩能用吗当然能用。对话 Agent 的上下文管理有成熟的套路方案做法适用场景滑动窗口只保留最近 N 轮旧消息直接丢弃闲聊、简单问答LLM 摘要对旧消息做总结把摘要拼到新消息前面需要长程记忆的对话结构化记忆维护事实列表用户偏好、关键决定等每次只更新列表有明确用户画像需求的场景混合方案摘要 窗口旧消息摘要最近几轮完整保留最常用这些方案之所以能工作是因为对话里每轮的产出是自包含的完整回答——压缩掉第 10 轮的对话不会让第 11 轮的对话变成半成品。总结数据批处理 Agent 的上下文问题解决办法不是更好的压缩而是隔离。Agent 的并发工具调用虽然是性能红利但也让它天然不适合逐行完成的批处理模式。如果你需要保证每行完全处理后才能开始下一行把这个保证放在 Agent 外面——用外部循环调度一个个只有单行上下文的小 Agent。系列文章第一篇Agent 批处理中上下文压缩为何失败本文第二篇给 Agent 的工具加了默认参数它反而更笨了第三篇从 LLM-only 到 Agent一个商超项目的架构选型完整项目代码GitHub

相关新闻

Linux错误代码解析:从系统排错到程序员系统性成长指南

Linux错误代码解析:从系统排错到程序员系统性成长指南

1. 项目概述:从Linux错误代码到程序员的系统性成长最近在社区里看到不少朋友,尤其是刚入行的新人,被各种Linux错误代码搞得焦头烂额。一个简单的Permission denied或者神秘的Error code 1004就能卡住半天,更别提那些更复杂的网络或…

2026/7/27 6:19:59 阅读更多 →
改进鲸鱼优化算法在水库防洪调度中的应用与优化

改进鲸鱼优化算法在水库防洪调度中的应用与优化

1. 项目概述水库防洪优化调度一直是水利工程领域的核心难题。传统方法往往依赖人工经验或简单线性规划,难以应对复杂多变的洪水过程。我在参与某流域防洪系统升级时,首次接触到鲸鱼优化算法(WOA)在水库调度中的应用,发…

2026/7/27 6:19:59 阅读更多 →
Python RPA开发实战:从环境配置到自动化流程优化

Python RPA开发实战:从环境配置到自动化流程优化

1. 为什么选择Python作为RPA备选方案?在企业自动化流程开发领域,传统RPA工具如UiPath、Blue Prism等虽然功能强大,但存在授权费用高、学习曲线陡峭等问题。Python凭借其丰富的库生态和简洁语法,正成为越来越多技术团队的第二选择。…

2026/7/27 6:19:59 阅读更多 →

最新新闻

DSP/BIOS软件中断(SWI)原理与应用:实时系统任务调度的核心机制

DSP/BIOS软件中断(SWI)原理与应用:实时系统任务调度的核心机制

1. 项目概述:软件中断在实时系统中的角色定位在嵌入式实时系统(RTS)的开发中,我们常常面临一个核心矛盾:如何平衡硬实时事件的即时响应与软实时或非实时后台任务的有序执行。硬件中断(HWI)能提供…

2026/7/27 6:33:05 阅读更多 →
AI 驱动桌面自动化,OpenClaw 完整搭建与多渠道联动配置教程(含安装包)

AI 驱动桌面自动化,OpenClaw 完整搭建与多渠道联动配置教程(含安装包)

OpenClaw v2.7.9 可视化部署实操,打造本地电脑自动化工作流 工具基础信息 支持系统:Windows10/11 64 位、macOS 12 及以上系统 当前版本:v2.7.9(虾壳云适配版本) 工具优势:整体采用可视化交互模式&#x…

2026/7/27 6:33:05 阅读更多 →
深入解析TMS320C6455 DSP架构:从VLIW核心到系统级性能优化实践

深入解析TMS320C6455 DSP架构:从VLIW核心到系统级性能优化实践

1. 项目概述:为什么我们需要深入理解C6455的架构在通信基站、高清视频编码器或者医疗成像设备里,你总能找到一颗或几颗数字信号处理器(DSP)在默默工作。它们不像通用CPU那样广为人知,却是这些设备实时处理海量数据流的…

2026/7/27 6:33:05 阅读更多 →
AI 桌面自动化工具 OpenClaw v2.7.9 搭建指南,环境零配置实操教程(含安装包)

AI 桌面自动化工具 OpenClaw v2.7.9 搭建指南,环境零配置实操教程(含安装包)

AI 桌面自动化工具 OpenClaw v2.7.9 搭建指南,环境零配置实操教程 工具基础信息 适配系统:Windows10/11 64 位、macOS 12 及以上系统 当前版本:v2.7.9(虾壳云适配版本) 工具特点:采用可视化操作模式&…

2026/7/27 6:33:05 阅读更多 →
DSP/BIOS中QUE与RTDX模块:实时数据流与调试通道的实战解析

DSP/BIOS中QUE与RTDX模块:实时数据流与调试通道的实战解析

1. 项目概述与核心价值在嵌入式实时系统开发,尤其是基于德州仪器(TI)DSP平台的深度开发中,数据的高效、安全流转是系统稳定性的生命线。无论是任务间的消息传递、中断服务程序(ISR)与后台任务的数据交接&am…

2026/7/27 6:33:05 阅读更多 →
C++项目文档现代化:用Moxygen将Doxygen XML转为Markdown的完整指南

C++项目文档现代化:用Moxygen将Doxygen XML转为Markdown的完整指南

1. 项目概述:当C文档遇上Markdown的优雅解法如果你和我一样,长期在C项目的泥潭里摸爬滚打,那你一定对API文档这件事又爱又恨。爱的是,一份清晰、准确的文档是团队协作和项目传承的生命线;恨的是,维护文档的…

2026/7/27 6:32:04 阅读更多 →

日新闻

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于SpringBoot的社区智能垃圾管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →
SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

SPI实战指南:从时钟模式到寄存器配置,解决嵌入式通信难题

1. 项目概述:从寄存器手册到实战指南 如果你手头有一份类似德州仪器(TI)TMS320x240xA系列DSP的SPI模块技术手册,看着里面密密麻麻的寄存器位定义、时序图和公式,是不是感觉头大?这份资料虽然权威&#xff0…

2026/7/27 0:00:54 阅读更多 →
【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

【JAVA毕设源码分享】基于springboot的水果购物管理系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/27 0:00:54 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/27 4:33:59 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/27 6:31:56 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/27 4:01:12 阅读更多 →

月新闻