Wink Pings

同一个模型,输出token差了89%:Agent变啰嗦,锅不在提示词

两套harness跑同一个模型、同一个任务,一套烧了8711个token,另一套只用944个。原因跟提示词写得好不好关系不大,在于工具调用怎么拼、prompt前缀怎么维护。

一个Agent跑15到20次工具调用的多步任务,系统提示里写着“保持简洁”“不要重复”,通常跑到一半就压不住了。模型开始在每次工具调用前先narrate一遍计划,把文件内容原样贴回对话,步骤之间塞满过渡句。

有人做了对照实验:同一个模型 gemini-3.8-flash,两套不同的agent harness,跑完全相同的任务。一套解决多文件配置bug输出了8711个token,另一套解决同一个bug只用了944个,生成的文本量掉了89%。

差别跟系统提示词的措辞关系不大,起作用的是prompt和工具循环的拼装方式,具体是两处结构选择。

一,工具步骤和用户回复混在同一个对话流里

当内部工具调用和面向用户的回复共享一条对话流,模型会把每次工具调用都当成一条发给人的消息,于是自动裹上一层礼貌性解释。把静默的工具轮次和对外回复拆开,这个习惯立刻消失。

二,每轮都在改prompt顶部

时间戳、动态状态块每轮都变,会破坏prefix caching(前缀缓存,让模型复用已计算的开头部分,避免重复计费和重复推理),逼模型在嘈杂的上下文上重新锚定。前缀严格保持只追加,总输入token砍半,prompt缓存命中率超过55%。

多数人调Agent的时间花在改提示词措辞上,措辞是表面。真正吃token的是harness的结构。

完整的benchmark表格和prompt结构写在原文链接,作者另外还放了一套技能包和专用提示词的组织方式。

发布时间: 2026-11-11 01:08