省 Agent 的钱,大头不在换便宜模型,在少跑几轮。这周几篇帖子各说各话,凑一起是同一个判断:Agent 不是模型,是模型外面那层反复调用、来回传上下文、猜来猜去的架构。要省先量——把“轮数 × 每轮上下文长度”这条乘式测出来,再决定动哪。prompt 也别压太狠,压狠了模型开始猜,返工更贵。
省钱的大头,不在选便宜模型
Agent Is Not the Model 标题就够直接。我的经验也这样:换便宜一档的模型,单价省了;可同一件事来回跑好几轮,每轮还把历史原样带回去,省下的单价全被重传重算吃掉。钱不是花在模型上,是花在控制流和上下文搬运上。
三个杠杆,都在模型外面
真正值得动手的三个杠杆,都跟模型无关。
第一,确定性步骤从模型手里拿走。Domain-Driven Agents 说得对:校验、格式、状态流转,本来就不该让模型做决定。写成代码,几毫秒出结果,不耗 token,还不会出错。模型只该处理真正需要语义理解的那一段。
第二,缓存工具结果。Agentic Context Management 把记忆和成本直接当架构问题写——别每轮把历史原样塞回去,该缓存缓存,该压缩压缩。工具调用结果能复用就别让模型重复调。
第三,长上下文换结构化摘要。同一个话题落到实操:别喂又长又糊的原始内容,提炼过、带结构的东西,token 省得明显,效果反而更稳。
三个杠杆动的是同一个乘法里的两个因子——轮数和每轮上下文长度。换模型只改单价,救不了乘法。
prompt 压太狠,模型开始猜
反面也得说。省 token 省上头,prompt 压到极限,模型就开始猜。
agent.md 最有意思的是:给代码助手写约束文件,目的是减少猜测、钉死行为。但约束跟 prompt 是同一枚硬币——指令砍得只剩骨架,省下仨瓜俩枣的 token,模型在细节上开始发挥,猜错了就是返工。返工不是一轮两轮,是一串带着完整上下文的修复对话,省下的那点全得吐回去。
Headlong 方向对——给持久化 agent 一个微 harness,不用每次从头加载上下文。持久化本质就是少跑几轮。但它也有代价:记忆压缩过头,模型记不住细节,照样瞎猜。省上下文和省 prompt 一样,都得留出让模型确认“我没猜错”的余地。
先量这个数:轮数 × 上下文长度
所以别急着动手。先把账量出来:单次任务轮数 × 每轮上下文长度。这两个数在 trace 日志里——大多数框架本来就记录,只是没人看。量出基线,才能判断大头在轮数(去查为什么退避、重试、反复拉工具结果),还是在上下文长度(去查是不是重复传历史)。
量完再动。大部分场景,省钱是少跑一轮、每轮少带点上下文,不是换更便宜的模型。按我现在看,省 Agent 的钱,功夫全在模型外面。这话不太浪漫,但工程本来就是这种笨活。