1. 缘起
9 月 23 日,Cursor 的 Eric Zakariasson 在 X 上发了一份 prompt。内容是优化 Agent Harness 的 token 效率。帖子说,某团队一轮改动后整体 token 成本降了约 7%,质量没有下降。改动包括提示词精简、工具卸载、缓存布局、稀疏行号、子 Agent 调优。这是团队自述数据,用来判断量级。
它最值得抄的是方法:不看单次请求省了多少,改看完成一个任务花了多少。李博杰的开源书《深入理解 AI Agent:设计原理与工程实践》补上了另一半,这些动作为什么有效。我写过读后感。
2. 缓存:命中率与成本
2.1 价格:命中和未命中差多少
成本要按完成一个任务算,不按单次请求算。把每一轮的输入、缓存读、缓存写和输出按各自的价格加起来,才是要看的数。每一轮请求都会重发前缀,单次请求做小、任务多跑两轮,总花费可能更高。Manus 披露过生产环境里的输入输出比,约为 100:1,钱主要花在重复发送上。
同样一个输入 token,按缓存是否命中分成几个价:
- Anthropic 的缓存读约 0.1 倍,新模型低到 0.025 倍,缓存写 1.25 倍(5 分钟)或 2 倍(1 小时);
- OpenAI 的缓存读 0.1 倍,缓存写 1.25 倍,最小可缓存 1024 token,默认 TTL 30 分钟;
- Gemini 的隐式缓存默认开启,缓存部分省 90%;
- DeepSeek 的命中与未命中是 0.003 和 0.15 美元每百万 token,差 50 倍。
把命中率从 60% 提到 90%,等于让三成的输入从原价降到一折,比删掉 5% 的提示词省得多。Manus 说生产环境最该盯的就是缓存命中率,因为它同时决定延迟和成本。命中还取决于请求有没有落回同一个上游,这一点我在LLM API 中转站里写过。
2.2 机制:前缀为什么不能动
《深入理解 AI Agent》第 2 章的说法是,自回归模型做因果注意力,缓存只能复用到第一个不同的 token 之前。改动越靠前,重算和计费的 token 越多。
书里的例子:一个日均 10 万次对话的客服 Agent,在系统提示里加了一行当前时间。首 token 延迟从 0.5 秒涨到 3 到 5 秒,月度账单几乎翻倍。
几个容易踩的变体:
- 放在前缀里、按请求变化的条件会让缓存组合按指数增长,三个是/否开关就有 8 种前缀;
- 按使用频率给工具动态排序,缓存会从第一个变动的工具开始失效;
- 中途换模型等于丢掉缓存,缓存按模型和提供商隔离;
- 接口返回的思考过程要原样传回,丢掉之后模型在写代码的测评上会掉约 30%。
对应的做法:
- 同样的内容要拼成完全一样的请求,键的顺序和工具顺序都固定;
- 时间戳、余额这类会变的信息,放到前缀之外,追加到末尾;
- 服务商支持手动标记缓存位置(断点)就用上,让稳定前缀单独一段;
- 对话中途不换模型,需要别的模型就开子 Agent,用干净的上下文。
Anthropic 的缓存写入顺序固定是 tools、system、messages,能调的只有内容稳定性和断点位置。OpenAI 的显式断点可以只把稳定前缀写进缓存,每请求最多 4 个写点。
3. 静态前缀:减少固定成本
3.1 系统提示词:逐条判断去留
把系统提示词里的每条指令拎出来,按四种处置分类,只留模型不可能自己知道的东西:
- 保留:产品逻辑、环境信息、用户流程、trace 里真实见过的怪行为;
- 重写:命令语气改成平实描述,提醒改成可判定的约束,「记得写完」不如「No TODOs, no partial implementations」;
- 删除:强模型默认会做的事,为旧模型写的护栏,与工具描述重复的文本;
- 移动:日期、环境、技能列表这类按请求变化的内容,追加到末尾,不要留在前缀里。
《深入理解 AI Agent》的实验 2-4:规则内容一条不动,只打乱顺序、去掉标题层次,任务成功率下降超过 30%。Claude Code 文档的判据是逐条问:删掉这条,模型会不会犯错。不会就删。
另外不要写「注意节省 token」。有团队这么写之后,模型不敢接有野心的任务。OpenAI 在 GPT-5.1 指南里也提醒,要专门写一句让模型坚持做完。
3.2 工具定义:渐进式披露
工具定义和系统提示一起构成静态前缀,而且往往是里面最贵的一块。Anthropic 给过一组数字:接五个 MCP 服务器,58 个工具的定义约 5.5 万 token,对话还没开始就付掉了。他们见过 13.4 万的。
做法是把工具定义挪出前缀,只留名字和一句说明,完整 schema 需要时再加载。Anthropic 的 Tool Search 把开工前的上下文从约 7.7 万降到约 8.7 千 token,官方数字是降幅 85%。更彻底的做法是把 MCP 暴露成代码接口,让 Agent 写代码调工具,数字是 15 万降到 2 千 token。
Claude Code 对 MCP 工具默认延迟加载,并建议能用 CLI 就不要挂 MCP。这本书的实验:保留函数签名、删掉描述,工具调用错误率上升 45%。补上 1 到 5 个真实调用示例,准确率从约 72% 升到 90%。
完整 schema 要追加到轨迹末尾,不要插回前缀。因果注意力决定了末尾追加不影响已经算过的部分。Manus 的做法相反,保定义、只限制可选项,因为他们的缓存范围就在前缀里。选哪种取决于缓存机制,共同原则是别改会被缓存复用的那一段。
4. 轨迹:追加、压缩、隔离
4.1 只追加,不回改
滑动窗口是最常见的错法。这本书的实验显示它有两个后果:破坏前缀一致性,缓存全部失效;丢掉早期拿到的工具结果,Agent 会反复执行同一个工具调用。正确做法是把状态、进度、待办都以新消息的形式追加到末尾。
4.2 压缩:按阈值批量做
压缩不每轮做,接近上限时一次压够。压缩会改写前缀中段,让后面的缓存全部重算。压得太频繁比不压更贵。Anthropic 的 context editing 文档写了这一点:清理工具结果会打断缓存。所以他们加了 clear_at_least 参数,要么一次清得够多,要么别清。OpenAI 和 Google ADK 的压缩按上限或轮数触发。
压缩时保留四类信息:决策、约束、失败路径、来源引用。这本书的实验 2-10 对比了六种策略。不做压缩的话,第 5 次迭代就溢出失败,累计约 16.5 万 token。把当前查询意图和已积累信息带进压缩提示,只用了约 4 万 token,减少了 75% 以上,关键信息还在。
4.3 隔离:大块内容不进主上下文
能隔离就别压。派子 Agent 去读文件或搜索,主上下文只增加两条消息:一条任务描述,一条结论。
长日志、命令输出、文件内容落盘,只回传摘要和路径,需要时再读。文件读取每 10 行编号而不是每行,缓存读 token 降 1.6%,引用准确性不受影响。
两条边界。Chroma 的上下文衰减研究做过 18 个模型的对照,输入越长性能越不稳,加入干扰项还会叠加恶化。所以少放上下文不只是省钱。压缩论文的数字更激进:
- LLMLingua 最高 20 倍压缩;
- Gist Token 26 倍;
- Selective Context 砍掉一半上下文代价,BERTScore 掉 0.023。
这些方法面向长文档,机械压提示词会伤到指令本身。
上下文怎么在系统提示、知识、历史和输出空间之间分配预算,见生产级 Agent 架构。
5. 子 Agent 与模型分工
拆不拆、怎么拆,我在Agent Orchestration里写过,这里只补成本数字。
子 Agent 和模型路由能省钱,也能烧钱。大型多 Agent 运行里,干活的模型至少吃掉 69% 的 token,多数运行超过 90%。前沿模型做规划、便宜模型做执行,成本约为全用前沿模型的八分之一。
Cursor 的帖子还警告过:更便宜的规划器可能让工人多用几倍 token,整体更贵。所以要测整棵树,不能只比单价。路由同理,简单轮次给便宜模型或更低推理力度,仅在明显更好时升级,据他们的数据成本低 41% 到 68%。
隔离也要花钱。Anthropic 披露过 Agent 类任务约 4 倍聊天 token,多 Agent 系统约 15 倍。Claude Code 的 agent teams 在 plan 模式下约 7 倍。所有子 Agent 的描述合计超过 1.5 万 token 时,启动会告警。
Cognition 从反面讲了风险:拆任务会产生隐式决策冲突,各做各的子 Agent 最后拼不到一起。Agent Orchestration 里列过适用场景,研究型任务符合,多数编码任务偏串行。
6. 参考
- 深入理解 AI Agent:设计原理与工程实践 · 第 2 章的静态前缀与轨迹、KV Cache 机制、实验 2-3、2-4、2-10 的数据,代码公开可复现
- Eric Zakariasson · 2026-09-23 的帖子,按任务计成本、各项改动比例、子 Agent 与路由数据,团队自述
- Anthropic 工程博客 · 工具定义 5.5 万 token,Tool Search 降幅 85%
- Anthropic 文档、Claude Code 成本文档 · 清理工具结果会打断缓存,MCP 工具默认延迟加载
- OpenAI 文档、OpenAI 压缩文档 · 缓存读写的价格、最小可缓存长度、显式断点与 TTL、服务端压缩
- Gemini 上下文缓存、DeepSeek 定价 · 隐式缓存省 90%,缓存命中与未命中差 50 倍
- Manus · 输入输出比 100:1、缓存命中率是第一指标、工具保定义限制选项
- Chroma 上下文衰减 · 18 个模型的对照,输入越长性能越不稳
- Prompt Compression 综述 · 硬压缩与软压缩两条路线及其边界