今天我在使用我自己的 Agent Dais 来理解一个项目时,发现它突然报错显示输入长度超过上下文上限,同时中转站的余额不足。
这引起了我的注意。我使用的是 gpt-5.4,有 1M 的上下文,在有 subagent 辅助读文件的情况下不应该出现上下文溢出的问题。我调了下中转站的使用日志,发现确实有连续的几个超过八十万 token 的请求,一下把账号的余额干完了。
排查过程
我导出了该任务的 message 数据后,另外开了一个任务来排查。由于 message 数据过长,我在提示词中明确说明只读开头的一小部分,让后让 agent 编写 python 脚本来找导致累计输入输出 token 大幅增长的元凶。
最后定位到原因是一个 ripgrep 调用,这个调用匹配到了项目源码中内嵌的一串 base64 超长文本,该文本本身可能就超过 1M 的字符数,导致上下文爆炸也是顺理成章。
解决方案
经过搜索,使用 ripgrep 时可以加上如下参数来限制单个匹配结果的展示长度(加上 --max-columns-preview 可以在文本溢出时保留部分文本用于预览):
rg --max-columns 300 --max-columns-preview ...
本文转自我的个人博客,你可以点此查看原文:BHznJNs' Blog
1 个帖子 - 1 位参与者