我让 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/10/14 5:15:25 阅读更多 →
改进鲸鱼优化算法在水库防洪调度中的应用与优化

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

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

2026/10/10 3:04:22 阅读更多 →
Python RPA开发实战:从环境配置到自动化流程优化

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

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

2026/10/8 20:44:46 阅读更多 →

最新新闻

从 1080P 到 4K:Video2X 的 Qt6 界面把视频超分辨率与帧插值做成四步

从 1080P 到 4K:Video2X 的 Qt6 界面把视频超分辨率与帧插值做成四步

从 1080P 到 4K:Video2X 的 Qt6 界面把视频超分辨率与帧插值做成四步 【免费下载链接】video2x A machine learning-based video super resolution and frame interpolation framework. Est. Hack the Valley II, 2018. 项目地址: https://gitcode.com/GitHub_Tre…

2026/10/14 5:16:02 阅读更多 →
用RAG盘活老师傅经验:制造业设备手册解析与故障诊断开源框架

用RAG盘活老师傅经验:制造业设备手册解析与故障诊断开源框架

制造业里攒文档的速度,永远赶不上老师傅退休的速度。我见过不少车间,设备手册摞起来半人高,故障代码表散落在三四个系统里,老师傅随口一句“这声音不对”,新来的维护工要翻半天手册才敢动手。我一直在琢磨怎么用RAG把这…

2026/10/14 5:16:02 阅读更多 →
工业AI落地制造现场:从缺陷检测到工艺优化的实战观察

工业AI落地制造现场:从缺陷检测到工艺优化的实战观察

这几年我跑了不少制造工厂,从汽车零部件、家电组装到电子产线,都待过一阵子。发现一个有趣的现象:“工业AI”这个词人人都在喊,真正把模型嵌进产线、天天跑数据的其实没多少。许多人把工业AI想象成科幻片里的机器人代替工人&#…

2026/10/14 5:16:02 阅读更多 →
C++与AI框架:从LibTorch部署到推理引擎的工程实战

C++与AI框架:从LibTorch部署到推理引擎的工程实战

1. 为什么AI圈子里C依然是硬通货在Python几乎统治了算法实验和模型训练脚本的今天,聊C与人工智能框架这个话题,听起来像是考古。但真正把AI系统推到生产环境的人,大概率都明白一个事实:Python是AI的壳,C才是AI的魂。先…

2026/10/14 5:16:02 阅读更多 →
codelin 统一 Claude Code 级别智能编程助手:UnifiedClaudeCodeAssistant 功能整合实现全解析

codelin 统一 Claude Code 级别智能编程助手:UnifiedClaudeCodeAssistant 功能整合实现全解析

人工智能大模型AI Agent代码智能体工具调用MCP 服务RAG交互助手 【免费下载链接】codelin 项目地址: https://gitcode.com/Cangjie-SIG/codelin 点击查看 免费下载 导读:本文以 codelin 智能编程助手的“统一功能整合”为主线,完整拆解其基于…

2026/10/14 5:16:02 阅读更多 →
Small Agent为何要从生成式推理转向分类式推理

Small Agent为何要从生成式推理转向分类式推理

1. 为什么“生成式推理”正在拖慢 Small Agent 的实际落地?你有没有遇到过这样的场景:一个轻量级的智能体(Small Agent),部署在边缘设备上,响应延迟要求低于200毫秒,但每次执行“判断用户意图”…

2026/10/14 5:15:02 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →