Claude的记忆功能需要额外付费吗?
Anthropic没有单独的记忆token价格。记忆内容会作为输入token重新发送,费用取决于每次重放的文本量,以及是否命中提示缓存;Pro和Max按使用额度计量。
Claude 的记忆功能需要额外付费吗?
Claude 的记忆功能本身不单独收费。Anthropic 公布的价格按每百万输入 token 和每百万输出 token 计算,提示缓存另有费率,其中没有任何一项称为记忆 token。Claude API(应用程序接口)不会因为存储记忆本身收费,因为记忆工具在客户端运行,文件存储在您拥有的存储空间中。
记忆仍会影响账单,因为只有包含在 Claude 读取的请求中,被记住的事实才会影响回答。使用记忆意味着重新发送相关内容。这些文本会作为输入 token 传输,并按模型的标准输入费率计费。费用取决于两个因素:每轮重新发送的记忆文本包含多少 token,以及这些重复发送的文本能否从提示缓存中提供。
使用 Pro 或 Max 订阅时,您完全不会按 token 计费,因此记忆消耗的是使用额度,而不是费用。下方机制不变,只有计量单位不同。使用额度是有限的,因此在决定每轮应携带多少记忆之前,建议先了解 Claude Pro 的费用,以及其限制何时会影响您。Claude Enterprise 的计费方式又不同,因为 它会在席位价格之外,按 API 费率计量每个 token,所以过大的记忆块会重新转化为费用,而不是消耗使用额度。如果精简记忆后,您的使用量可以稳定低于较低套餐的上限,那么 从 Max 降级到 Pro 就是下一步值得考虑的操作;变更会在您已支付的当前计费周期结束时生效。如果您实际比较的是不同服务商,而不是 Anthropic 自身的套餐,建议从 按当前价格对比 Claude 和 ChatGPT 的套餐 开始。
每个 Claude 界面中的“memory”含义
三个独立的产品都使用这个词。混淆它们,是这个问题让人困惑的主要原因。
Claude API 中的 memory 工具。 您向 tools 数组添加一项,并在自己的代码中实现文件操作。
{"type": "memory_20250818", "name": "memory"}截至 August 2026,此工具已在 Messages API 中正式提供,无需 beta header,适用于 Claude 4 及更高版本的模型。它在客户端运行:Claude 请求执行 view /memories 等操作,您的处理程序对您控制的存储执行该操作,然后在 tool_result 块中返回结果。Anthropic 不会保存该文件,因此不会产生需要转嫁的存储费用。您需要为这次往返请求付费。工具定义会在每次请求中发送,返回的文件内容从此处开始保留在对话中。
Anthropic 公布了这部分固定开销。在 Claude Opus 5 中,当工具选择为 auto 时,工具使用系统提示词包含 286 个 token,具体记录于 August 2026。只要请求中存在任意工具,无论是否为 memory 工具,每次请求都会支付这部分费用。
Claude Code。 每个会话开始时会加载两种机制。CLAUDE.md 文件包含您编写的指令。Auto memory 包含 Claude 为自己写入的备注,位于 ~/.claude/projects/<project>/memory/ 下。MEMORY.md 只会加载前 200 行或 25KB,先达到的限制生效;其旁边的主题文件会按需读取,而不是在启动时读取。启动时加载的所有内容都会成为前缀的一部分,之后该会话中的每个请求都会携带此内容。Claude Code 如何在会话之间调用 memory 按文件说明了加载顺序。
Web 上的 Claude。 在 claude.ai 上,memory 是 Claude 在您聊天时写入和更新的一组条目。每个项目都有独立的 memory 空间。Settings > Memory 会列出已存储的内容,其中的开关提供 Pause memory 或 Reset memory 选项。此界面按订阅计费,因此这里的 memory 会消耗使用限额。
为什么记忆文本按输入 token 计费
Messages API 是无状态的。它不会在调用之间保留任何内容,因此客户端必须在每一轮请求中发送完整对话,模型也会再次读取全部内容。记忆也不例外。它只是同一请求中的另一段文本。
在任何响应的 usage 对象中都可以看到这种拆分。
"usage": {
"input_tokens": 412,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 18240,
"output_tokens": 236
}input_tokens 只统计既未从缓存读取、也未用于创建缓存的 token,实际就是最后一个缓存断点之后的 token。请求的输入总量为 cache_read_input_tokens 加 cache_creation_input_tokens 加 input_tokens。Claude 在 3 轮之前打开的记忆文件,此后每一轮都会计入该总量。缓存前缀有效时,它计入 cache_read_input_tokens;缓存前缀无效时,则计入 input_tokens。文本相同,但价格可能完全不同。输入 token 和输出 token 的价格不同,而记忆始终只计入输入侧。
在哪些位置查看您自己的使用数据
不要直接采用博客文章中的数字,包括本文中的数字。请测量您自己的 memory block。Token 计数免费,并有独立的速率限制,因此测量不会产生费用。
curl https://api.anthropic.com/v1/messages/count_tokens \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "content-type: application/json" \
-H "anthropic-version: 2023-06-01" \
-d '{
"model": "claude-opus-5",
"system": "You are a scientist",
"messages": [{"role": "user", "content": "Hello, Claude"}]
}'返回结果是一个数字,例如 { "input_tokens": 14 }。将 memory 文本粘贴到 system 字段中运行一次,再不填写该字段运行一次,两次结果的差值就是该 memory 在每轮对话中产生的开销。需要注意两点。计数结果是估算值,Anthropic 为自身系统优化额外添加的 tokens 不会向您计费。此外,应以您实际运行的模型为准,因为 Claude 4.7 及更高版本使用更新的 tokenizer,同样的文本生成的 tokens 大约多 30 percent。
在 Claude Code 中,无需使用任何 curl,也可以回答同一个问题。
/context显示当前已加载的内容,包括 memory 文件,因此您可以在输入任何内容前查看它们占用窗口的比例。/memory列出您的 CLAUDE.md 文件,并打开 auto memory 文件夹。/usage输出会话总量,其中包括 cache reads 和 cache writes。- 状态行可以持续显示上下文窗口使用量,因此您可以在增长发生时实时看到变化。
/usage 会话块如下所示:
Total cost: $0.55
Total duration (API): 6m 20s
Total duration (wall): 6h 33m 10s
Total code changes: 0 lines added, 0 lines removed
Usage by model:
claude-sonnet-4-6: 1.2k input, 5.3k output, 940.0k cache read, 50.0k cache write ($0.55)请仔细查看最后一行。940.0k 的 cache read 数值表示整个会话内容,包括 memory,在每轮对话中都按 cache 费率再次发送。1.2k 的 input 数值只表示本轮新增的部分。Claude Code 根据公开价格在本地计算该金额,因此不会计入您享受的任何折扣,结果可能与账单不同。Claude Console 中的 Usage 页面才是权威数据。
然后直接运行对比。在两个全新的会话中提出相同的开场问题:一个使用默认设置,另一个关闭 auto memory。
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 claude在每个会话中运行 /context,然后比较 memory files 条目。两者的差值就是累计 memory 在每个会话开始时产生的开销,此时还没有执行任何工作。接下来建议阅读Claude Code token 使用量的完整构成,并结合这两个数字进行对照。
每百万 token 重放内存的成本是多少?
提示缓存决定了同一内存块在不同轮次的成本可能相差十倍。Anthropic 将缓存费率公布为各模型基础输入价格的倍数,因此即使美元价格发生变化,这种关系仍然成立。
The data behind this chart
[
{
"label": "Base input",
"price_multiple": 1
},
{
"label": "5 minute cache write",
"price_multiple": 1.25
},
{
"label": "1 hour cache write",
"price_multiple": 2
},
{
"label": "Cache read",
"price_multiple": 0.1
}
]读取缓存的成本是基础输入价格的 0.1 倍。写入一个有效期为 5 分钟的条目,成本是基础价格的 1.25 倍;有效期为 1 小时的条目,成本是基础价格的 2 倍。Anthropic 明确说明了盈亏平衡点:有效期为 5 分钟时,读取一次缓存即可回本;有效期为 1 小时时,读取两次缓存即可回本。提示缓存的盈亏平衡点 是决定内存应放在哪里之前需要进行的计算。
这些倍数可以将重放次数转换为算术计算。下面的内容基于上述已公布的倍数进行计算,不代表任何实际运行工作负载的测量结果。它以 100 轮会话为范围,通过 3 种方式计算一个内存块的成本,结果表示为按普通基础输入费率计费时的等效 token 数。
The data behind this chart
[
{
"label": "4,000 tokens, never cached",
"base_rate_equivalent_tokens": "400,000"
},
{
"label": "4,000 tokens, 1 write and 99 reads",
"base_rate_equivalent_tokens": "44,600"
},
{
"label": "1,000 tokens, 1 write and 99 reads",
"base_rate_equivalent_tokens": "11,150"
}
]一个包含 4,000 token 的内存块如果在全部 100 轮中都未命中缓存,计费量相当于 400,000 个基础费率 token。同一个内存块如果进行一次 5 分钟缓存写入,并读取缓存 99 次,计费量相当于 44,600 个。将其缩减为原大小的四分之一并保留缓存后,计费量相当于 11,150 个。这 3 行中的功能没有变化。变化的只有重放行为。这些仍然是 token 数量,而不是金额;将 token 数量换算为月度账单金额 只需将其乘以所用模型的每百万 token 费率。该费率由所运行的模型决定。因此,如果代理将运行在 Claude Fable 5 上,应从其公布的每百万 token 费率及适用的工作负载开始。如果尚未确定提供商,而不只是尚未确定模型,在 Claude API 和 ChatGPT 上计算相同任务的成本可以显示这种乘法在两者之间的不同结果;内存密集型代理尤其依赖输入侧的费率。
第二行假设后续 99 个请求到达时,缓存条目仍处于有效期内。大多数实际账单出错,原因就在这个假设上。
为什么中断后相同的问题成本更高?
缓存条目有生命周期,计时从写入或读取该条目的请求开始。默认值为 5 分钟。选择 1 小时的生命周期后,成本是上文所示写入成本的 2x。在 Claude Code 中,订阅用户的生命周期为 1 小时;开始使用 usage credits 后,生命周期会降至 5 分钟;使用 API key 或云服务提供商时,默认值为 5 分钟。设置 ENABLE_PROMPT_CACHING_1H=1 后,在使用 usage credits 时仍可保持 1 小时的生命周期。
因此,您在午休前打开的会话中输入一行问题,回来后发现成本很高,是因为您离开期间缓存条目已过期。包括记忆在内的整个前缀都会再次按基础输入速率处理,并再次写入缓存。暂停时间的长度决定了这次成本。
您可以通过实际观察确认这一点,而不必仅凭推测。在 Pro、Max、Team 或 Enterprise 计划中,/usage 分解会标记近期用量中占比达到 10% 或以上的行为;长上下文和缓存未命中都会按名称显示。使用 API 时,观察 cache_creation_input_tokens:安静一段时间后的首次请求中,它会恢复为前缀的完整大小。
什么会悄悄使缓存失效
缓存前缀按以下顺序排列:工具、系统提示词、消息。在某一层发生更改时,该层及其后的所有内容都会失效。编辑工具定义会丢弃整个缓存。编辑系统提示词会丢弃系统提示词缓存和消息缓存。
对于将记忆保存在系统提示词中,并随着代理学习不断重写系统提示词的人来说,这是一个陷阱。每次重写都会丢弃其后的所有内容的缓存副本,因此下一次请求必须再次完整写入。应将稳定内容放在前面并保持不变,将易变内容放在消息列表靠后的位置,这样使其失效的成本较低。
还有一种更隐蔽的失败情况。每个模型都有可缓存前缀的最小长度:Claude Opus 5 为 512 个 token,Claude Sonnet 5 为 1,024 个 token,Claude Haiku 4.5 为 4,096 个 token。这些数值由 Anthropic 于 2026 年 8 月发布。Anthropic 的文档明确说明了低于该长度时的处理方式:“任何请求缓存少于此数量的 token 都不会使用缓存处理,并且不会返回错误。”因此,使用 cache_control 标记的较小记忆文件实际上完全不起作用,而且不会显示任何提示。您能观察到的现象是:即使提示词中明确包含断点,cache_creation_input_tokens 仍保持为 0。
清理不再发挥作用的记忆
每一行记忆都会在包含它的每轮对话中消耗 token,因此应逐行判断:它最近是否改变了答案。Claude Code 对此有明确限制。建议将 CLAUDE.md 控制在 200 行以内,因为文件越长,占用的上下文越多,Claude 遵循其中指令的可靠性越低。加载时,MEMORY.md 仅读取前 200 行或 25KB,超过限制的内容会在下一次会话启动时被丢弃。因此,过大的索引既会消耗 token,也不会提供任何作用。
两种做法可以使文件保持精简。将详细内容从索引移到主题文件中。Claude 会按需读取这些文件,而不是在启动时加载。将工作流指令从 CLAUDE.md 移到 skills 中。只有调用 skill 时才会加载其中的指令。对于已包含 frontmatter 的记忆文件,Claude Code 会在 modified 字段中记录写入时间,格式为 ISO 8601 时间戳;此功能适用于 2.1.214 或更高版本。这个时间戳是发现过时事实的最快方式。清理过时的代理记忆 会更深入地介绍审核流程。
何时检索优于将所有内容加载到上下文中
memory 工具用于支持即时检索。代理不会预先加载所有内容,而是记录所学信息,仅在任务需要时读回文件。这样会改变计算方式:文件读取只在首次读取时消耗对应 token,之后会保留在缓存前缀中;而永久加载的内容则会在每一轮中产生开销。
根据上面的两张图,可以得出一个简单规则。几乎每一轮都会使用的文本,应放在稳定的缓存前缀中。每 20 轮仅使用 1 次的文本,应放在 view 调用之后。盈亏平衡点取决于重放次数,而不是 Anthropic 的收费方式。
在 API 中,还可以让平台裁剪对话。当对话超过你设置的阈值时,上下文编辑会清除较早的工具结果。
{
"edits": [
{
"type": "clear_tool_uses_20250919",
"trigger": {"type": "input_tokens", "value": 30000},
"keep": {"type": "tool_uses", "value": 3},
"clear_at_least": {"type": "input_tokens", "value": 5000}
}
]
}默认设置为输入 token 达到 100,000,并保留 3 次工具使用记录后触发。启用前请先了解缓存的交互方式:清除内容会使清除位置之后的缓存前缀失效,因此下一次请求会产生缓存写入费用。这就是 clear_at_least 的作用。它会延迟清除,直到节省的费用足以抵消写入费用。响应会在 context_management 下准确报告实际发生的情况,并包含 cleared_tool_uses 和 cleared_input_tokens,因此可以量化这项权衡,而不是停留在理论层面。管理 Claude Code 中的上下文窗口将同一思路应用于编码会话。
哪些功能会单独计费
Memory 本身不单独收费,但有些功能确实会产生独立费用,值得了解具体项目。以下是截至 2026 年 8 月公布的 Claude API 费率。有些操作完全免费,但 Claude API 没有免费层级,注册时只有少量额度,因此下面列出的费用从第一次请求开始就会产生实际支出。
- Web search:每 1,000 次搜索收费 $10,此外还需支付搜索结果加入上下文后产生的常规 token 费用。
- Code execution:每个组织每月免费 1,550 小时,超出后按每个容器每小时 $0.05 收费。与 Web search 或 Web fetch 一起使用时免费。
- Claude Managed Agents:会话运行时间按每个会话小时 $0.08 收费,此外还需支付常规 token 费用。
- Web fetch:不额外收费,只需支付获取内容产生的 token 费用。
Memory 不在上述任何单独计费项目中。它会计入输入 token 数量,而这正是您可以测量它的位置,也是您可以通过裁剪和缓存降低成本的位置。如果您要为运行在虚拟专用服务器(VPS)上、无人值守运行的 agent 制定预算,那么下一步应设置 VPS 上 AI agent 的成本控制,因为 Memory 文件不断增长且没有裁剪时,费用会在没有任何报告的情况下逐周增加。
FAQ
Claude 的记忆功能是否单独收费?
不单独收费。Anthropic 的价目表按每百万输入 token、每百万输出 token 以及提示缓存倍数计费,其中没有单列记忆功能。在 Claude API 中,记忆工具由客户端实现,因此相关文件存储在您已经付费使用的存储空间中。记忆功能增加的是输入 token;每次请求携带这些 token 时,都会按模型的常规输入费率计费。
关闭记忆功能后,Claude 的费用会降低吗?
这会减少每次请求的 token 数量,从而降低单次请求的费用。但总体是否省钱,取决于后续操作。如果 Claude 必须重新读取3个文件,并向您提问2个问题,才能恢复记忆中已有的信息,那么这些 token 的费用可能高于使用记忆功能的费用。不要凭猜测判断,应进行测量:在开启自动记忆的会话中运行 /context,再在使用 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 启动的会话中运行一次,然后比较两次完成相同任务所消耗的总 token 数。
我没有更改任何内容,为什么使用量却增加了?
最常见的原因是暂停后缓存未命中。缓存条目默认保留5分钟;启用扩展设置后保留1小时。因此,中断后发送的第一个请求会按基础输入费率重新处理整个前缀,并再次写入缓存。第二个常见原因是前缀发生更改:更改工具定义会使整个缓存失效,更改系统提示词会使系统缓存和消息缓存失效。在订阅计划中,/usage 明细会列出导致近期使用量占比达到10%或更高的行为。
记忆内容应放在系统提示词中,还是通过工具调用加载?
如果几乎每轮请求都会使用记忆内容,请将其放入系统提示词。这样它会位于缓存前缀中,并按缓存读取费率计费。如果只有部分任务需要记忆内容,请通过 view 调用加载。文件只读取一次时,其 token 只计费一次,而不是每轮都计费。决定这一点的关键数值是重放次数,usage 对象会直接提供该数值。
记忆功能是否计入订阅计划的使用限额?
会,但属于间接计入,因为订阅限额由每次请求携带的 token 消耗。Anthropic 的帮助文档说明,触发自动上下文管理的较长对话会消耗更多使用限额。记忆功能会使每次请求略微变长,而长会话会在每轮请求中重复携带这部分内容。Claude 的使用限额实际如何工作 介绍限额何时重置。