来自 Cursor 团队
@ericzakariasson
一份把 “agent 降本” 当系统工程来做的完整方法论。优化对象不是模型的行为,是 harness 本身:系统提示词、工具定义、请求组装、缓存布局、压缩与检索、多智能体分工。
目标函数只有一句话:降低“每个完成任务”的、按计费类型加权后的 token 成本,且任务质量无可测下降。参考成绩是一轮完整优化降低总成本约 7%。
# 计量模型:全文的基础
Agent 的每一轮请求都会重发完整前缀,工具定义、系统提示词、历史对话。由此推出两条铁律:
· 按任务计价,不按请求计价。 一个让单次请求变小、却让轮数变多的改动,总成本可能不降反升。
· 按计费类型分开记账。 输出、未缓存输入、缓存输入三者定价悬殊,混在一起算就是盲算。
这决定了所有手段的优先级:静态前缀在每一轮、每一个任务里重复计费,先砍它;运行时增量次之;多智能体和模型路由最后。
# 五条原则
1. 改 harness 发送的内容,不逼模型省着用。 原文里有个真实反例:某 harness 让模型“注意别浪费 token”,结果模型变得不敢接有难度的任务,甚至罢工说自己不该浪费 token。
2. 强模型需要定义,不需要命令。 "DO NOT / You must / IMPORTANT"式指令大多可改写为对工具行为的平实描述。一个团队据此砍掉约三分之二的系统提示词,且跨模型族有效。只在模型无法自己知道的事情上写指令:产品、环境、用户流程,以及 transcript 里真实见过的怪癖。
3. 静态上下文只放多数轮次都需要的,其余按需可发现。预置内容越少,自相矛盾的信息也越少。
4. 预期删除获胜。 为弱模型写的护栏、变成瓶颈的协调步骤、模型如今天然就会做的行为,都是纯成本。
5. 真实使用说了算。 Evals 偏向难题,会错失真实请求的分布。
# 分层手段
系统提示词:逐条打标签:保留 / 重写 / 删除 / 迁移。 保留模型无法推断的知识与真实见过的怪癖;把命令改写为平实描述(某团队据此砍掉约 2/3 的提示词,跨模型族有效);删除模型默认会做的、防御未见过行为的、与工具描述重复的、可能压过用户指令的内容;日期、环境、技能清单等易变项迁到缓存边界之后。两个细节:模糊量词改成区间,“生成 20–100 个任务”比“生成许多任务”更能激发激进行为;开放式工作不要给检查清单,模型会只优化清单项。
注入上下文:预期删除获胜。 目录树、预检索片段、每次编辑后的 lint 注入、每轮工具调用上限,全部删掉;只留 OS、仓库状态、打开的文件这类小而高价值的事实。
工具定义:按使用频率分流。 schema 随每个请求同行,但核心集之外的多数工具在不到 20% 的会话中被用到。移出静态上下文使工具描述 token 降 60%;MCP 集成工具照此处理(名字留在上下文,完整 schema 归档供按需检索),相关会话总 token 降 46.9%。保留标准:高频、模型在缺席时也会尝试调用的、模式依赖的。
缓存布局:前缀逐字节稳定。
工具定义 → 系统指令 → → 设置消息 → → 对话。
工具顺序与序列化确定化,时间戳和 ID 放到边界之后,除压缩外不改写历史。中途换模型等于扔掉整个缓存,且新模型拿到一份自己没写过的历史——正确做法是让别的模型作为全新上下文的子智能体运行。这套布局使冷缓存未命中降 20%。
运行时上下文:大输出外置,格式挤水分。 命令和日志写文件、只回路径加短尾:截断丢数据,内联撑大之后每一轮。每行重复开销值得抠:行号从每行编号改为每 10 行编号,缓存读 token 降 1.6%(每个行号值 3–5 个 token,一个会话读上万行)。语义检索与 grep 并用,问答准确率升 12.5%。工具错误分类治理(未知错误视为 harness bug),一次专项让意外错误降 10 倍。
长跑与多智能体:压缩要短,树要整棵算账。 压缩提示词一行即可:自训练模型产出约 1k token 摘要,错误率只有“长提示词产出 5k+ token 摘要”方案的一半。多智能体运行中 worker 占至少 69%(多数超 90%)的 token;前沿规划器加便宜 worker,效果相当,成本约为前沿模型全包的八分之一,但更便宜的规划器可能让 worker 花几倍 token,必须整树计量。简单轮次路由到便宜模型,满意度持平,成本低 41–68%。API 返回的 reasoning items 必须回传:丢弃让某推理模型在编码基准上掉 30%,还烧 token 重建计划。
按模型适配。 编辑格式用模型训练时的那种,不熟的格式多花推理 token 且更易出错;shell 优先的模型用 shell 名字命名工具;字面化模型要去掉上限和强调;有些模型需要字面触发器(“实质性编辑后用 lint 工具检查最近编辑的文件”)。每加一条指令都要绑定它修复的 transcript 行为,换模型时重审。
# 三级授权:工程纪律的核心
1. 直接改,各自独立可回滚:遥测、确定性序列化与工具顺序、易变内容移出缓存前缀、显式缓存断点、大输出写文件、回传被丢弃的 reasoning items、频发工具错误修复
2. 挂 flag 测试:系统提示词改动、工具卸载、输出格式、压缩逻辑、子智能体提示
3. 只提案:模型选择、路由、推理强度默认值、跨 agent 分工
划分逻辑清晰:纯机械、不改变模型所见信息的改动直接上;改变模型所见的必须可实验;改变“谁来做、用什么做”的只做建议。
# 陷阱与验证
陷阱清单里最值得记住的:不要让模型省 token、不要截断工具输出、不要丢 reasoning items、不要让易变内容或漂移的工具顺序污染缓存前缀、不要卸载首轮就要用的工具、不要强行压输出格式(输出 token 变少可能意味着思考变少、结果变差)、不要按原始 token 数而非成本、按请求而非任务、按 evals 而非真实使用来优化。
验证纪律:离线跑固定的真实任务集前后对比(任务要按用户真实写法,短且含糊);线上 A/B 以每完成任务成本为主指标,成功率信号、工具错误、延迟、轮数、缓存命中率为护栏。成本降了且护栏无回退才发,零结果也记录。