Magnitude如何节省40%的Token成本:深度解析记忆管理与Prompt缓存机制
2026/9/15 14:07:49 网站建设 项目流程

Magnitude如何节省40%的Token成本:深度解析记忆管理与Prompt缓存机制

【免费下载链接】browser-agentOpen-source, vision-first browser agent项目地址: https://gitcode.com/GitHub_Trending/magnit/browser-agent

Magnitude是一个开源的「视觉优先」浏览器 Agent(browser agent)框架:它用视觉 AI 理解网页、用自然语言驱动鼠标键盘,帮你完成网页自动化、数据提取与测试。但浏览器 Agent 每一步都要"看"截图、"记"操作,Token 消耗天然高昂——Magnitude 通过一套滑动窗口记忆管理 + Prompt 缓存(prompt caching)机制,在默认开启缓存的情况下通常可节省约 40% 的 Token 成本,且任务越长、省得越多。本文将带你从零看懂它的省钱原理。

为什么浏览器 Agent 特别"烧" Token?

一个普通的聊天请求只消耗几千 Token,而浏览器 Agent 是"长对话":

消耗来源说明
🖼️ 截图每一步操作都要给模型看一张页面截图,单张图就可能上千 Token
💭 思考与动作记录模型的每一步"思考(thought)"和动作历史都会累积在上下文里
🔁 重复上下文系统提示词、工具定义每一轮都要重新发送一遍

任务越长,上下文越长,费用呈线性上涨——这正是多数"computer use"类 Agent 成本失控的根源。

Prompt 缓存:40% 成本削减从何而来?

Anthropic 提供了 **Prompt 缓存(prompt caching)**能力:把前缀相同的提示词缓存下来,后续请求命中缓存时按更低的折扣计费。Magnitude 的使用策略是:

  1. 系统提示词永远缓存——占用 1 个 cache control 位置,整个任务期间不再重新计费;
  2. 剩余 3 个 cache control 位置循环轮换——通过"缓存写入 + 读取"滚动前进,让不断增长的上下文大部分时间都落在缓存内。

这个机制写在核心记忆类中,可以看到缓存位置上限被固定为 3(加上系统提示词共 4 个):

  • 缓存轮换核心逻辑:packages/magnitude-core/src/memory/agentMemory.ts

对新手来说只需知道两点:

  • 默认自动开启:只要使用anthropicclaude-code提供方,无需任何配置,启动 Agent 时会自动打开 Prompt 缓存(见 packages/magnitude-core/src/agent/index.ts);
  • ⚠️Bedrock 通道不支持:缓存功能在 Bedrock 上不可用,想省钱请走 Anthropic 直连。

官方文档对这一收益的原话是:"使用 prompt caching 后,Magnitude 通常比不缓存少消耗约 40% 的 Token,且任务越长收益越明显"——完整说明见 docs/advanced/memory.mdx。

滑动窗口记忆:截图只留"最新的一小撮"

Prompt 缓存解决"重复计费",而记忆管理解决"上下文无限膨胀"。Magnitude 把每次感知都抽象成一条Observation(观测),并为每条观测配置保留策略type / limit / dedupe

  • 📸截图去重 + 限量:相邻的相同截图会被自动去重(dedupe),同时只保留最近一小撮(minScreenshots选项,默认值见 packages/magnitude-core/src/connectors/browserConnector.ts);
  • 💭思考仅保留最近 20 条thoughtLimit默认 20,更早的思考会从上下文中淡出;
  • 🧊冻结掩码(freezeMask)与缓存联动:已经被缓存写过的观测保持可见状态"冻结",保证缓存前缀稳定不被破坏——这套掩码去重逻辑实现于 packages/magnitude-core/src/memory/masking.ts。

效果是:上下文长度大致随任务复杂度线性增长,而非随历史步数堆积。如果任务交互复杂、需要模型"回忆"更早的画面,可以调大minScreenshots(比如设为 3)来保留更多工作记忆,文档中有对应示例:docs/advanced/memory.mdx。

三大省钱机制速览

机制作用一句话原理
🔒 Prompt 缓存省 ~40% 计费 Token前缀命中缓存,按折扣价计费,4 个 cache 位滚动轮换
🪟 滑动窗口记忆控制上下文增速截图去重限量 + 仅保留最近 20 条思考
🧊 冻结掩码防止缓存"失效"已缓存内容保持原样,避免前缀变化导致整段重新计费

想临时关闭缓存做对照实验?只需在 LLM 选项中传入promptCaching: false(示例见官方文档 docs/advanced/memory.mdx)。

写在最后

对新手而言,Magnitude 最值得借鉴的不是某段代码,而是一种成本控制思路

  1. 能缓存的前缀(系统提示词、工具定义)永远放前面、永远稳定;
  2. 会增长的内容(截图、思考)用"去重 + 限量"的保留策略不断淘汰;
  3. 两者联动(冻结掩码),让缓存命中率最大化。

把这三招搬进你自己的 Agent 项目,长任务的账单会好看得多。更多进阶细节(如角色配置、数据提取)可继续翻阅 docs/advanced/ 目录。

【免费下载链接】browser-agentOpen-source, vision-first browser agent项目地址: https://gitcode.com/GitHub_Trending/magnit/browser-agent

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询