news 2026/9/17 22:53:07

Open Agents提示词缓存:如何降低50%以上的AI API成本

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Open Agents提示词缓存:如何降低50%以上的AI API成本

Open Agents提示词缓存:如何降低50%以上的AI API成本

【免费下载链接】open-agentsAn open source template for building cloud agents.项目地址: https://gitcode.com/GitHub_Trending/op/open-agents

Open Agents 是一个用于构建云端编程 Agent 的开源模板,它的核心功能是通过提示词缓存(Prompt Caching)+ 工具结果压缩,把多轮 Agent 对话中重复发送的大段上下文变成"缓存读取",从而在长任务场景下降低 50% 以上的 AI API 成本。对于正在用 AI SDK 构建编程助手的开发者来说,这套开箱即用的上下文管理方案非常值得学习。

为什么 Agent 的 API 账单会爆炸?

先理解成本从哪来 🤔

一个编程 Agent 的工作方式是"循环":读文件 → 搜索代码 → 改代码 → 再读 → 再改……每一步,模型都要把完整的历史对话重新发一遍。会话越长,每次请求的输入 token 就越多,账单自然水涨船高。

💡 关键洞察:这些重复发送的内容里,系统提示、工具定义、历史消息每一步几乎完全一样——它们天生适合缓存。

提示词缓存是怎么省钱的?

以 Anthropic 模型为例:首次把一段内容写入缓存(写入略贵),之后每次命中缓存读取只需正常输入价格的约1/10。一个跑了几十轮的编程任务,命中比例越高,省得越多——超过 50% 的降幅就是这么来的。

Open Agents 的缓存实现:两步打标

整个机制集中在 packages/agent/context-management/cache-control.ts 的addCacheControl函数中,思路非常清晰:

第一步:给工具定义打缓存标记

Agent 注册了 read、write、edit、grep、bash 等十几个工具,工具定义每次请求都要重发。addCacheControl检测到是 Anthropic 模型时,会只给最后一个工具打上cacheControl: { type: "ephemeral" }标记——因为 Anthropic 最多支持 4 个缓存断点,多打反而会浪费额度。

第二步:给最后一条消息打标记

每轮对话的新增内容都在末尾。给最后一条消息打标后,缓存就能增量式地向前延伸:上一轮写入的缓存,这一轮直接命中读取,只需为新增部分付费。

这两步在 Agent 的每一步都被自动触发,代码位于 packages/agent/open-agent.ts:

prepareStep: ({ messages, model }) => ({ messages: addCacheControl({ messages, model }), }),

对非 Anthropic 模型,函数会原样返回消息,完全无副作用,跨模型切换也安全。

第二招:压缩工具结果,让缓存"更值钱"

缓存解决"重复发送",压缩解决"内容太长"。Agent 读文件、跑 shell 命令产生的工具结果动辄上千行,但模型真正需要的往往只是结论。

packages/agent/context-management/aggressive-compaction-helpers.ts 提供了一套"激进压缩"工具:

  • indexToolCalls:给每个工具调用建立索引;
  • findPendingCompactionCandidates:找出可以压缩的历史工具调用;
  • estimateCompactionSavings:按"约 4 个字符 = 1 个 token"估算能省下多少 token;
  • compactToolData:把过期的工具结果替换为一条简短的压缩提示。

输入更小 → 每次缓存写入更便宜、上下文窗口更耐用,这是缓存之外的第二重省钱。

如何验证省了多少钱?

不用猜,Open Agents 自带用量面板 📊

用量统计在 packages/agent/usage.ts 中区分累加cacheReadTokens(缓存命中)和cacheWriteTokens(新写入),并在 Web 端的用量洞察中计算核心指标——缓存读取比例cacheReadRatio(见 apps/web/lib/usage/compute-insights.ts 与 apps/web/lib/usage/types.ts):

cacheReadRatio = 缓存命中的输入 token ÷ 总输入 token

在 Settings → Usage 页面就能看到这个数字。经验值:该比例超过 50% 时,你的长任务输入成本通常已省下一半以上

快速上手:跑起来看看效果

  1. 克隆仓库并安装依赖(模板设计为 fork 后二次开发):

    git clone https://gitcode.com/GitHub_Trending/op/open-agents bun install
  2. 配置环境变量后本地启动:

    cp apps/web/.env.example apps/web/.env bun run web
  3. 发起一个多步骤的编码任务(例如"重构这个模块并修好测试"),结束后打开用量页面观察cacheReadRatio

更多部署细节见 README.md,整体三层架构(Web → Agent → Sandbox)介绍在 docs/agents/architecture.md。

小结:把这三点抄进你的 Agent

省钱手段位置效果
工具定义末尾打缓存标记cache-control.ts工具定义零重复计费
每条消息增量缓存open-agent.ts历史消息按 1/10 价格读取
过期工具结果压缩aggressive-compaction-helpers.ts缩短上下文、降低写入成本

提示词缓存不是黑科技,而是"只让新增内容付全价"的简单工程。Open Agents 用不到 200 行核心代码把这件事做成了可复用的模板,这正是它作为云端 Agent 模板最有价值的部分之一。

【免费下载链接】open-agentsAn open source template for building cloud agents.项目地址: https://gitcode.com/GitHub_Trending/op/open-agents

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 22:52:28

嵌入式学员项目实战:任务拆解、环境搭建与评审标准

1. 验收现场最常出现的尴尬:能演示,但答不出为什么带过几批嵌入式学员之后,我总结出一个特别扎心的规律:板子跑起来了,灯亮了,屏幕上数字跳了,但只要问一句"你这个串口为什么用DMA而不是中…

作者头像 李华
网站建设 2026/9/17 22:52:12

STM32电机控制入门:用Simulink+FOC一个月搞定秋招项目

很多准备秋招的朋友私信我,问题高度相似:“我只会ST32,没有拿得出手的嵌入式项目,电机控制岗位又那么火,现在转还来得及吗?”我的回答是:来得及,但前提是你得用对方法。电机控制听起…

作者头像 李华
网站建设 2026/9/17 22:49:44

基于用户的协同过滤工程实现:从MySQL评分矩阵到Django推荐服务

简介:本资源是一份面向计算机专业本科生的毕业设计论文,聚焦基于Python与协同过滤算法的电影推荐系统实现,适用于毕业设计选题参考、课程设计实践及推荐系统入门学习。论文完整覆盖系统需求分析、Django框架开发、MySQL数据库设计、协同过滤算…

作者头像 李华
网站建设 2026/9/17 22:49:38

高效协作新范式:模块化自治与接口化开发实践

1. 反直觉的合作悖论第一次听到"人类最有效的合作方式就是不合作"这个说法时,我正参与一个跨国研发项目。当时团队陷入典型的"三个和尚没水喝"困境——每周要开7场协调会,40%时间花在进度同步上,核心功能开发反而停滞不前…

作者头像 李华