Claude 记忆功能需要额外付费吗?
Anthropic没有单独的memory token价格。记忆文本会作为输入token重发,费用取决于每轮重放的token数量及是否命中提示缓存;Pro和Max则消耗使用额度。
Claude 的记忆功能需要额外付费吗?
Claude 的记忆功能本身不单独收费。Anthropic 公布的价格按每百万输入 token 和每百万输出 token 计算,提示缓存另有价格;其中没有任何一项称为 memory token。在 Claude API(应用程序编程接口)中,存储记忆本身不产生费用,因为 memory 工具在客户端运行,文件存储在您拥有的存储空间中。
记忆仍会影响账单,因为只有包含在 Claude 读取的请求中,记忆的事实才会影响回答。使用记忆意味着重新发送这些内容。文本会作为输入 token 发送,并按模型的标准输入价格计费。费用取决于两个因素:每轮重新发送的记忆文本包含多少 token,以及这些重新发送的内容能否通过提示缓存提供。
使用 Pro 或 Max 订阅时,您完全不会按 token 计费,因此记忆消耗的是使用额度,而不是费用。下面的机制相同,变化的只是计量单位。使用额度是有限的。因此,在决定每轮应携带多少记忆之前,建议先了解 Claude Pro 的费用,以及其限制从何处开始影响您。Claude Enterprise 的计费方式又不同,因为 它会在席位价格之外,按 API 价格计量每个 token,所以过大的记忆块会重新转化为实际费用,而不是消耗使用额度。如果清理记忆后,您的用量能够稳定低于较低套餐的上限,那么下一步可以考虑 从 Max 降级到 Pro;变更会在您已支付的当前周期结束时生效。如果您实际比较的是不同服务商,而不是 Anthropic 自身的套餐,建议从 按当前价格比较 Claude 与 ChatGPT 的套餐 开始。
每个 Claude 产品中的“记忆”含义
三个独立的产品都使用这个词。混淆它们,是这个问题让人困惑的主要原因。
Claude API 中的记忆工具。 您向 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。只要请求中存在任何工具,无论是记忆工具还是其他工具,每个请求都会支付这部分费用。
Claude Code。 每个会话开始时都会加载两种机制。CLAUDE.md 文件保存您编写的指令。自动记忆保存 Claude 为自己编写的笔记,位于 ~/.claude/projects/<project>/memory/ 下。MEMORY.md 只会加载前 200 行或 25KB 的内容,以先达到的限制为准;其旁边的主题文件不会在启动时读取,而是在需要时按需读取。启动时加载的所有内容都会成为前缀的一部分,后续每个请求都会在该会话中携带此前缀。Claude Code 如何在会话之间调用记忆 按文件说明了加载顺序。
Web 版 Claude。 在 claude.ai 上,记忆是一组 Claude 在聊天过程中编写和更新的条目,每个项目都有独立的记忆空间。Settings > Memory 会列出已存储的内容,其中的开关提供 Pause memory 或 Reset 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 在三轮之前打开的记忆文件,此后每一轮都会计入该总量。缓存前缀有效时,它计入 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 为自身系统优化额外添加的 token 不会向您收费。此外,请以您实际运行的模型为准,因为 Claude 4.7 及更高版本使用了更新的 tokenizer,对相同文本生成的 token 大约多 30%。
在 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 数值表示每轮对话都会以 cache 费率再次发送整个对话内容,包括 memory。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 重放内存的成本是多少?
提示缓存决定了同一个内存块在不同轮次的成本可能相差 10 倍。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 次即可收回缓存写入成本;有效期为 1 小时时,需要读取缓存 2 次。提示缓存的盈亏平衡点 是决定内存应放在哪里之前需要进行的计算。
这些倍数可以将重放次数转化为算术计算。下一部分基于上面公布的倍数进行计算,并非对任何实际运行中的工作负载进行测量。它以 3 种方式计算一个内存块在 100 轮会话中的成本,结果表示为按普通基础输入费率计费的等效 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。同一个内存块进行 1 次 5 分钟缓存写入并读取缓存 99 次,计费量相当于 44,600 个基础费率 token。将其缩减到原大小的四分之一并继续使用缓存后,计费量相当于 11,150 个基础费率 token。在这 3 行中,功能本身没有变化。变化的只有重放行为。这些仍然是 token 数量,而不是金额;将 token 数量换算为月度账单金额 只需将其乘以所用模型的每百万 token 费率。该费率由运行的模型决定,因此如果代理将运行在 Claude Fable 5 上,应从该模型公布的每百万 token 费率及其适用工作负载开始。
第二行假设后续 99 个请求到达时,缓存项仍未过期。大多数实际账单出错的原因就在于这个假设。
为什么中断后相同的问题成本更高?
缓存条目有生命周期,计时从写入或读取该条目的请求开始。默认值为 5 分钟。选择 1 小时会产生上文所示 2x 的写入费用。在 Claude Code 中,订阅用户的生命周期为 1 小时;开始使用用量额度后,生命周期会降为 5 分钟;使用 API key 或云服务提供商时,默认值为 5 分钟。设置 ENABLE_PROMPT_CACHING_1H=1 后,使用用量额度时仍可保持 1 小时的生命周期。
因此,您在午休前留在会话中输入了一行问题,回来后成本却很高,是因为您离开期间缓存条目已过期。系统会再次按基础输入费率处理整个前缀,包括记忆内容,并再次将其写入缓存。暂停时间的长短决定了这笔费用。
您可以验证这一点,而不必直接相信上述说明。在 Pro、Max、Team 或 Enterprise 方案中,/usage 分解会标记近期用量中占比达到 10% 或更高的行为;长上下文和缓存未命中都会以名称显示。使用 API 时,请观察 cache_creation_input_tokens:在一段空闲时间后的首次请求中,它会恢复为前缀的完整大小。
什么会悄悄使缓存失效
缓存的前缀有固定顺序:工具、系统提示、消息。在某一层发生更改时,该层及其后的所有内容都会失效。编辑工具定义会丢弃整个缓存。编辑系统提示会丢弃系统提示缓存和消息缓存。
对于将记忆保存在系统提示中、并在代理学习后不断重写系统提示的人来说,这是一个常见陷阱。每次重写都会丢弃其后的所有内容的缓存副本,因此下一次请求必须再次完整写入。应将稳定内容放在前面并保持不变,将易变内容放在消息列表的后部。这样,即使其失效,成本也较低。
还有一种更隐蔽的失效情况。每个模型都有可缓存前缀的最小长度:Claude Opus 5 为 512 tokens,Claude Sonnet 5 为 1,024 tokens,Claude Haiku 4.5 为 4,096 tokens;这些数据由 Anthropic 于 August 2026 发布。Anthropic 的文档明确说明了低于该长度时的行为:“任何尝试缓存少于此数量 tokens 的请求都会在不使用缓存的情况下处理,并且不会返回错误。”因此,标记为 cache_control 的小型 memory 文件完全不起作用,而且不会显示任何提示。您能观察到的现象是:即使 prompt 明确包含断点,cache_creation_input_tokens 仍保持为 0。
清理不再发挥作用的记忆
记忆中的每一行都会在包含它的每轮对话中消耗 token,因此需要逐行判断:它最近是否改变了回答。Claude Code 对限制给出了明确规定。建议将 CLAUDE.md 控制在 200 行以内,因为文件越长,消耗的上下文越多,Claude 遵循其中指令的可靠性越低。MEMORY.md 加载时最多读取前 200 行或 25KB,超过限制的内容会在下一次会话启动时被丢弃,因此过大的索引既消耗 token,也没有提供任何指导。
两个习惯有助于控制文件大小。将详细内容从索引移到主题文件中,Claude 会按需读取这些文件,而不是在启动时读取。将工作流指令从 CLAUDE.md 移到 skills 中,这些指令仅在调用时加载。对于已经以 frontmatter 开头的记忆文件,Claude Code 会在 2.1.214 或更高版本中,将写入时间记录在 modified 字段中,并使用 ISO 8601 时间戳;该时间戳是发现事实已经过时的最快方法。清理过时的代理记忆 更深入地介绍了审查流程。
何时检索优于将所有内容加载到上下文中
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 本身不单独收费,但某些功能确实有独立费用,了解这些费用很有必要。以下是截至 August 2026 公布的 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)上、无人值守运行的代理制定预算,那么 VPS 上 AI 代理的成本控制就是下一项需要落实的措施,因为不断增长的 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 分钟;使用 extended 设置时保留 1 小时。因此,中断后发送的第一个请求会按基础输入价格重新处理整个前缀,并再次写入缓存。第二个常见原因是前缀发生编辑:更改工具定义会使整个缓存失效,更改系统提示会使系统缓存和消息缓存失效。在订阅计划中,当某种行为占近期使用量的 10% 或更多时,/usage 明细会标明该行为。
记忆内容应该放在系统提示中,还是通过工具调用读取?
如果几乎每轮都要使用记忆内容,请将其放在系统提示中。这样它会位于缓存前缀中,并按缓存读取价格计费。如果只有部分任务需要记忆内容,请通过 view 调用读取。这样,文件只读取一次时,其 token 只计费一次,而不是每轮都计费。决定因素是重放次数,usage 对象会直接提供这个数值。
记忆功能是否计入订阅计划的使用限制?
会,但属于间接计入,因为订阅限制按每个请求携带的 token 数量消耗。Anthropic 的帮助文档说明,触发自动上下文管理的较长对话会消耗更多使用限额。记忆功能会使每个请求略微变长,而长会话会在每轮重放这部分长度。Claude 的使用限制实际如何运作介绍了使用限额何时重置。