Claude Code:"MEMORY.md over its 200-line read limit" 怎么解决
返回博客
文章inteligência artificialtecnologiaautomação

Claude Code:"MEMORY.md over its 200-line read limit" 怎么解决

Mafra2026年10月12日阅读约 4 分钟

Claude Code 忘了你昨天教给它的东西,而对话记录里出现了:Error: this write left the memory index at MEMORY.md at 214 lines, over its 200-line read limit。这表示自动记忆的索引超出了读取上限,第 200 行之后(或 25KB 之后)的内容不会再进入会话。

本文说明确切的上限是多少、如何用一条命令测量文件,以及如何在不丢失任何内容的前提下重写索引。所有内容已于 2026年10月12日 对照 Claude Code 官方文档核对。

"over its 200-line read limit" 是什么意思?

意思是 Claude 写入了 MEMORY.md,并让文件超出了两个读取上限之一:200 行或 25KB。写入本身成功了,但会话启动时只会加载文件的开头部分。官方文档中的消息如下(省略的部分说明末尾的条目已经不可见):

Error: this write left the memory index at MEMORY.md at 214 lines, over its 200-line read limit. The write succeeded, but everything past the limit is silently dropped each time the index is loaded [...] Rewrite it to under 140 lines now: keep one line per entry, move detail into topic files, and merge or drop stale entries.

Claude Code 会在写入之后把这个错误交给 Claude,而不是在终端里显示横幅。所以你往往只能在对话记录里看到它,或者在智能体忽略了它早已学会的偏好时才察觉。

MEMORY.md 的确切上限是多少?

Claude Code 会加载 MEMORY.md 的前 200 行或前 25KB,以先到者为准。其余内容仍保存在磁盘上,但不会进入对话开头。

项目行为起始版本
MEMORY.md(自动记忆索引)最多加载 200 行或 25KB,以先到者为准当前文档中的上限
超出上限时的提示写入后立即向 Claude 返回错误v2.1.210(之前是静默截断)
YAML frontmatter 和块级 HTML 注释测量前会被去除,不计入v2.1.211
主题文件(user_role.md 等)启动时不加载,Claude 需要时再读取一直如此
CLAUDE.md4 MiB 以内完整加载;更大的文件会被跳过当前文档中的上限

200 行的上限只针对 MEMORY.md。自动记忆存放在 ~/.claude/projects/<project>/memory/,包含索引和每条记忆一个文件。

为什么最新的记忆最先消失?

因为截断发生在文件末尾,而新条目通常就追加在末尾。索引从上往下读取,到上限就停止。结果是:智能体刚学到的东西最先变得不可见。

流程图:MEMORY.md 索引超出 200 行上限,用 wc -l -c 测量行数和字节数,通过 /memory 重写索引;如果规则始终适用,移到 CLAUDE.md
从报错到精简的索引:三个步骤加一个分支。

如何检查我的 MEMORY.md 是否已经超出上限?

一次统计所有索引的行数和字节数。在 macOS 或 Linux 上:

find ~/.claude/projects -name MEMORY.md -exec wc -l -c {} +

第一列是行数,第二列是字节大小。任何超过 200 行或接近 25000 字节的文件,末尾都已经在丢失。如果你在 settings.json 中用 autoMemoryDirectory 改了存放位置,请替换命令中的路径。

要查看当前会话加载了哪些指令文件,运行 /context,查看 Memory files 下的列表。

如何解决 MEMORY.md 的上限问题?

把索引重写到远低于上限,每条一行,并把细节移到主题文件中。不会丢失任何内容:主题文件仍然保留,Claude 需要时会打开它们。

  1. 直接在会话中让 Claude 来做:
    Rewrite MEMORY.md to under 140 lines: one line per entry, detail in topic files, merge duplicate entries and drop stale ones.
  2. 想手动编辑?运行 /memory,选择打开自动记忆文件夹的选项。里面都是普通的 markdown。
  3. 再次运行 find ... wc -l -c,确认文件少于 200 行且小于 25KB。

140 这个数字来自错误消息本身:这是 Claude Code 建议的目标,为下一次截断留出余量。

必须在每个会话中生效的规则

如果某条内容是固定的项目指令("用 pnpm,不用 npm"、"提交前先跑测试"),更适合放进 CLAUDE.md,它会完整加载。只对部分代码有意义的指令可以放在 .claude/rules/,按文件类型限定范围,只有当 Claude 处理这些文件时才会加载。文档建议每个 CLAUDE.md 保持在 200 行以内以提高遵循度,但这只是建议,不会截断。

如果截断发生在旧版本上怎么办?

在 v2.1.210 之前,超出上限的索引会在加载时被静默截断,写入时没有任何提示。请更新 Claude Code 并测量文件:如果当时就超出了上限,那么末尾的条目从那时起就一直没有进入你的会话。

在 2026年10月4日 创建的 issue #99403 中,用户还报告了一条加载时的提示,格式为 MEMORY.md is 267 lines (limit: 200). Only part of it was loaded,出现在 Claude Code 2.1.286 上。这段文字来自用户报告,而非官方文档;issue 中的请求(显示哪些条目被丢弃)仍未解决。

如果你使用 Verboo Code,项目的永久指令保存在 /memory 打开的文件中;具体步骤见如何用 /memory 和 AGENTS.md 给智能体设置永久指令。

如果限制你的编程智能体的是套餐而不是记忆大小,Verboo Code 提供无限 token。

喜欢这篇文章吗?
把知识分享给你的朋友。
// 继续阅读

相关文章