ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

自研上下文管理熬到崩溃,Claude Agent SDK真香

自研上下文管理熬到崩溃,Claude Agent SDK真香 文章目录1 先唠唠我为啥把LangGraph给弃了1.1 一开始的想法有多美好1.2 现实就有多打脸2 我找到的救命神器五级上下文压缩2.1 第一级大文件自动存硬盘2.2 第二级长结果掐头去尾2.3 第三级过期内容自动清走2.4 第四级历史对话折叠成摘要2.5 第五级终极压缩救大命3 我的研报Agent架构长啥样3.1 MCP工具6个就够多了没用3.2 7个Skills把流程拆明白3.3 用提示词做编排比画状态图爽多了4 踩过的那些坑个个都能给我整emo4.1 环境变量的坑差点给我整破防4.2 Agent总干一半跑路怎么办5 跑通之后的真心话5.1 不崩的感觉真的太爽了5.2 别没事自己造基础设施P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看 传送门https://blog.csdn.net/HHX_011 先唠唠我为啥把LangGraph给弃了1.1 一开始的想法有多美好前段时间折腾一个金融研报自动生成的项目。最开始用LangGraph搭的配的qwen3-max。想法很简单让Agent自动抓三家公司的三年财务报表算指标、画图表最后组装成完整研报。我当时都想好了等做出来直接解放双手上班摸鱼都有底气了。1.2 现实就有多打脸结果刚跑起来就给我浇了盆冷水上下文直接炸了。256K的上下文窗口听着像个大平层。结果三家公司的三年三张报表一塞直接变群租房连下脚的地方都没有。一家公司一年的资产负债表就上百个字段。乘三家乘三年再算上Agent的推理记录token直接指数级往上窜。别说写研报了连原始数据都装不下。合着我充的token全用来听模型报“溢出”了是吧当时我还不信邪自己手搓了一套节点间的文件传递逻辑。每个节点算完存本地文件上下文只留路径。听起来简单对吧实际操作起来边界情况多到离谱。不是读不到文件就是传错路径天天跟bug打架。那阵子我天天怀疑人生我到底是写Agent的还是专门修数据管道的2 我找到的救命神器五级上下文压缩后来偶然摸到了Claude Agent SDK。看到它自带五级渐进式上下文压缩的时候我差点当场泪目。这不就是我熬了好几个夜手搓的东西吗人家直接做进SDK里了还比我完善一万倍。2.1 第一级大文件自动存硬盘工具返回的结果超过5万字符系统自动把完整内容存到磁盘。上下文里只留个文件指针告诉你东西在哪。就像你办公桌放不下厚文件自动给你塞抽屉桌上只留个便签。以前我得自己写代码塞抽屉现在人家自动帮你收拾省老事了。2.2 第二级长结果掐头去尾对于不算特别长但也占地方的输出自动保留头部和尾部中间省略。就像看长帖子只看开头和结尾。重点信息没丢还省了不少空间。2.3 第三级过期内容自动清走给历史工具结果设了保质期超时的直接清空内容只留个标记。相当于工作台只留最近用的文件更早的都收去储物柜。桌面永远清爽不用你自己收拾。2.4 第四级历史对话折叠成摘要把之前所有的推理、工具调用记录压缩成一段简短的摘要。就像聊天记录太长了给你生成个重点回顾。不用翻几百条消息找信息一眼就能看明白之前干了啥。2.5 第五级终极压缩救大命真到了极端情况直接fork个子Agent。用大模型把整个历史消息浓缩成高度摘要永久替换原上下文。这招破坏力最强但架不住救命啊总比直接溢出崩了强。这五级策略层层递进SDK后台自己管理开发者完全不用操心。我当时就一个想法早知道有这东西我之前熬那几个夜图啥啊3 我的研报Agent架构长啥样顺着这个SDK我搭了个叫FinScribe的项目。整体架构很清晰分三层工具层、技能层、编排层。3.1 MCP工具6个就够多了没用首先是数据层我封装了6个MCP工具。5个是AKShare的财务数据接口1个是联网搜索。工具这东西真不是越多越好。你给Agent塞一堆工具它先得花一半上下文认工具正事都没精力干了。就像你上班背一书包工具真要用的时候找半天还不如就带几样常用的。这里有个核心细节工具只返回文件路径不返回完整数据。要是直接把整张表的内容返回瞬间就能把上下文塞满。返回路径Agent需要的时候自己读压缩机制自动接管稳得很。还有异常处理千万别抛异常全在函数内部接住返回错误文本让Agent自己判断。不然一个接口崩了整个Agent直接停摆那才叫亏大了。3.2 7个Skills把流程拆明白工具解决了“拿数据”的问题研报的完整流程我拆成了7个标准化的Skill。从竞争对手研究、数据采集、指标计算到可视化、估值、写报告、最终组装一步一个Skill。Skill是按需加载的平时不在上下文里占地方。需要执行哪个任务就把对应的操作手册调出来。这就像办公室有个文件柜平时关着不占地需要哪本拿哪本。比把所有说明书都摊在桌上强多了不然桌子上全是纸你连键盘都摸不到。每个Skill的描述一定要写清楚。Agent就是靠描述判断什么时候调用这个Skill写得模模糊糊的Agent根本认不出来等于白写。3.3 用提示词做编排比画状态图爽多了以前用LangGraph我得画状态图定义节点定义边各种条件跳转跟画工程图似的。现在倒好直接把四阶段的工作流写进系统提示词里让Agent自己调度。金融研报这流程本来就是固定的线性流程没必要搞那么重的编排。简单直接才是王道省下来的时间喝杯奶茶不好吗当然这里也有坑后面踩坑部分细说。4 踩过的那些坑个个都能给我整emo4.1 环境变量的坑差点给我整破防这个SDK兼容Anthropic协议所以国产模型都能接切换靠环境变量就行。我最开始用setdefault设置变量结果死活不生效。排查了半天才发现这函数只在变量不存在的时候设置。已经存在的话直接静默跳过连个提示都没有。合着我搁这敲了半天代码人家根本不理我跟我玩沉默是金呢后来直接改成直接赋值管你有没有直接覆盖世界瞬间清净了。4.2 Agent总干一半跑路怎么办最早的版本Agent启动完第一阶段的两个任务直接说一句“请稍候”就结束回合了。后台任务跑完了Agent也没影了后面三个阶段直接没人管了。合着我雇了个项目经理开了个头就打卡下班了是吧后来我在提示词里硬加了一句不许中途结束回合每个任务做完、验证完产物存在再进下一阶段。加完之后Agent终于老老实实在原地等着干活了。还有个小技巧让Agent每个阶段结束都检查一下输出文件有没有生成。不然Agent有时候会幻觉以为任务做完了实际上脚本早崩了白等半天。5 跑通之后的真心话5.1 不崩的感觉真的太爽了我拿青岛啤酒测了一下分析2024和2025年的数据。整个流程跑下来Agent执行了三百多条消息。生成了56个CSV文件还有图表和最终的完整研报。从头到尾一次上下文溢出都没出现。换以前LangGraph那套光这56个CSV的原始数据就把窗口撑爆了根本跑不完。5.2 别没事自己造基础设施项目跑通之后我最大的感受不是这个SDK有多牛。是真的别自研基础设施。上下文管理这种事本来就是SDK该干的活。你一个写业务的再怎么搓也搓不过人家专门的工程团队天天迭代。就像你开个餐馆没必要自己去造冰箱买个现成的不好吗省下来的精力好好研究菜谱、打磨菜品不比啥都强。把精力集中在业务逻辑上才是正经事。P.S. 无意间发现了一个巨牛的人工智能教程非常通俗易懂对AI感兴趣的朋友强烈推荐去看看传送门https://blog.csdn.net/HHX_01
返回列表