AI代理分析器——衡量代理成本、缓存浪费与上下文膨胀
原文:https://dev.to/rguiu/ai-agent-profiler-measure-agent-cost-cache-waste-and-context-bloat-p86
我构建了一个本地优先的性能分析器,它作为透明反向代理位于你的编码代理(Claude Code、OpenCode)和LLM提供商之间,记录每个请求且不增加延迟。这就像是你的代理的perf工具——精确显示你的token去向。
实时演示(包含示例数据的只读仪表板)。
分析我自己的会话后揭示的问题
- 我的API成本中只有约60%是实际提示词。其余是我从未见过的代理开销——子代理探索(搜索)、上下文压缩、当我离开时的接续摘要,以及会话标题生成。该分析器将每个请求分类为11种类型(主请求、搜索、压缩、接续、标题、子代理、网页抓取、配额、工具结果、指南、未知),并显示"按类型分类的成本"表格。当我告诉代理"彻底探索"时,仅搜索子代理就消耗了约25-30%的token。
- 5分钟缓存TTL惩罚是真实且昂贵的。Claude Code放置了
cache_control: {"type": "ephemeral"}标记,但没有明确的TTL——因此你的缓存前缀(系统提示、工具、消息历史)在大约5分钟不活动后过期。离开去阅读文档或喝杯咖啡,回来后下一个请求就要为可能超过200K的token支付完整的缓存写入费用。在Opus模型上,缓存写入是你回来后第一个请求的巨大乘数。分析器检测冷重新生成,用严重性徽章标记它们,并精确显示每个空闲间隙的成本。 - 长会话会加剧这个问题。每一轮都会增加缓存前缀,因此冷刷新成本线性增长。一个3小时的会话每次过期时可能重新写入超过200K的token。分析器跟踪上下文随时间增长,并在工具定义本身在每个调用中重新发送10-15K token时发出标记。
- 我尝试优化但基本失败了。我构建了一个完整的优化层(修剪过时的工具结果、压缩系统提示、移除未使用的工具)并进行了基准测试。早期数字看起来惊人——但它们是错误的。跨会话缓存预热膨胀了基线,而成本模型最初忽略了缓存写入token。一旦两者都修复,节省就消失了。编辑缓存前缀会将廉价读取变成昂贵写入,而客户端每轮仍然重新发送完整的历史记录。我在仓库的
docs/optimization/FINDINGS.md中写了验尸报告。
如何尝试
npm install -g ai-agent-profiler
aap install # 种子配置
aap serve # 终端1:代理 + 仪表板在 :8080/ui
aap run claude # 终端2:通过代理启动Claude Code
支持Anthropic、OpenAI、DeepSeek、AWS Bedrock(SigV4)和Ollama。零遥测,秘密已编辑。所有指标可从原始跟踪重建。
仓库:https://github.com/rguiu/ai-agent-profiler
我希望能得到反馈
- 我遗漏了哪些分析盲点?关于你的代理,你今天无法回答什么问题?
- 有没有人尝试过代理级别的优化并遇到不同的经济效应?我是否错过了某个技巧,还是提供商缓存对于代理发送请求的方式确实接近最优?
- 知道大约40%的API账单是非用户开销,是否会改变你配置子代理或工具简介的方式?
- 是否还有其他人为5分钟缓存TTL感到困扰?你在实际使用中观察到的实际TTL是多少?
- Shell钩子与结构化输出——具有token高效结构化输出的AI原生工具是正确的解决方案,还是输出过滤就足够了?