每个 Claude Code 会话都从一个全新的上下文窗口开始。两种机制可以跨会话传递知识:
- CLAUDE.md 文件:你编写的指令,为 Claude 提供持久上下文
- 自动记忆:Claude 根据你的更正和偏好自己编写的笔记
- ,使 Claude 自动记笔记
- ,当指令未被遵循时
Claude Code 有两个互补的记忆系统。两者都在每次对话开始时加载。Claude 将它们视为上下文,而不是强制配置。你的指令越具体和简洁,Claude 遵循它们的一致性就越高。
当你想指导 Claude 的行为时,使用 CLAUDE.md 文件。自动记忆让 Claude 从你的更正中学习,无需手动操作。 subagents 也可以维护自己的自动记忆。有关详细信息,请参阅 。
CLAUDE.md 文件是 markdown 文件,为项目、你的个人工作流或整个组织为 Claude 提供持久指令。你用纯文本编写这些文件;Claude 在每个会话开始时读取它们。
CLAUDE.md 文件可以位于多个位置,每个位置有不同的范围。更具体的位置优先于更广泛的位置。
工作目录上方目录层次结构中的 CLAUDE.md 文件在启动时完整加载。子目录中的 CLAUDE.md 文件在 Claude 读取这些目录中的文件时按需加载。有关完整的解析顺序,请参阅 。 对于大型项目,你可以使用 将指令分解为主题特定的文件。规则让你将指令范围限定到特定文件类型或子目录。
项目 CLAUDE.md 可以存储在 或 中。创建此文件并添加适用于在项目上工作的任何人的指令:构建和测试命令、编码标准、架构决策、命名约定和常见工作流。这些指令通过版本控制与你的团队共享,因此请关注项目级标准而不是个人偏好。
CLAUDE.md 文件在每个会话开始时加载到上下文窗口中,与你的对话一起消耗令牌。因为它们是上下文而不是强制配置,你编写指令的方式会影响 Claude 遵循它们的可靠性。具体、简洁、结构良好的指令效果最好。 大小:每个 CLAUDE.md 文件目标在 200 行以下。较长的文件消耗更多上下文并降低遵守度。如果你的指令变得很大,使用 或 文件进行拆分。 结构:使用 markdown 标题和项目符号来分组相关指令。Claude 扫描结构的方式与读者相同:有组织的部分比密集段落更容易遵循。 具体性:编写具体到足以验证的指令。例如:
- “使用 2 空格缩进”而不是”正确格式化代码”
- “在提交前运行 ”而不是”测试你的更改”
- “API 处理程序位于 ”而不是”保持文件有组织”
CLAUDE.md 文件可以使用 语法导入其他文件。导入的文件在启动时展开并加载到上下文中,与引用它们的 CLAUDE.md 一起。 允许相对路径和绝对路径。相对路径相对于包含导入的文件解析,而不是工作目录。导入的文件可以递归导入其他文件,最大深度为五跳。 要引入 README、package.json 和工作流指南,请在 CLAUDE.md 中的任何地方使用 语法引用它们:
有关组织指令的更结构化方法,请参阅 。
Claude Code 通过从当前工作目录向上遍历目录树来读取 CLAUDE.md 文件,沿途检查每个目录中的 CLAUDE.md 和 CLAUDE.local.md 文件。这意味着如果你在 中运行 Claude Code,它会从 和 加载指令。 Claude 还在当前工作目录下的子目录中发现 CLAUDE.md 文件。它们不是在启动时加载,而是在 Claude 读取这些子目录中的文件时包含。 如果你在大型 monorepo 中工作,其他团队的 CLAUDE.md 文件被拾取,使用 跳过它们。
标志使 Claude 可以访问主工作目录外的其他目录。默认情况下,不加载这些目录中的 CLAUDE.md 文件。 要也从其他目录加载 CLAUDE.md 文件,包括 、 和 ,设置 环境变量:
对于较大的项目,你可以使用 目录将指令组织到多个文件中。这使指令保持模块化并更容易让团队维护。规则也可以 ,因此它们仅在 Claude 处理匹配文件时加载到上下文中,减少噪音并节省上下文空间。
在项目的 目录中放置 markdown 文件。每个文件应涵盖一个主题,具有描述性文件名,如 或 。所有 文件都被递归发现,因此你可以将规则组织到子目录中,如 或 :
规则可以使用带有 字段的 YAML frontmatter 范围限定到特定文件。这些条件规则仅在 Claude 处理与指定模式匹配的文件时适用。
你可以指定多个模式并使用大括号扩展在一个模式中匹配多个扩展名:
目录支持符号链接,因此你可以维护一组共享规则并将它们链接到多个项目中。符号链接被解析并正常加载,循环符号链接被检测并优雅处理。 此示例链接共享目录和单个文件:
中的个人规则适用于你机器上的每个项目。使用它们来处理不是项目特定的偏好:
对于在团队中部署 Claude Code 的组织,你可以集中指令并控制加载哪些 CLAUDE.md 文件。
组织可以部署一个集中管理的 CLAUDE.md,适用于机器上的所有用户。此文件无法通过个人设置排除。
在大型 monorepos 中,祖先 CLAUDE.md 文件可能包含与你的工作无关的指令。 设置让你按路径或 glob 模式跳过特定文件。 此示例排除顶级 CLAUDE.md 和来自父文件夹的规则目录。将其添加到 ,以便排除保持本地到你的机器:
自动记忆让 Claude 在你不编写任何内容的情况下跨会话积累知识。Claude 在工作时为自己保存笔记:构建命令、调试见解、架构笔记、代码样式偏好和工作流习惯。Claude 不会每个会话都保存内容。它根据信息在未来对话中是否有用来决定值得记住什么。
自动记忆默认开启。要切换它,在会话中打开 并使用自动记忆切换,或在项目设置中设置 :
每个项目在 获得自己的记忆目录。 路径来自 git 存储库,因此同一存储库中的所有 worktrees 和子目录共享一个自动记忆目录。在 git 存储库外,改用项目根目录。 该目录包含 入口点和可选的主题文件:
的前 200 行在每次对话开始时加载。第 200 行之后的内容在会话开始时不加载。Claude 通过将详细笔记移到单独的主题文件中来保持 简洁。 此 200 行限制仅适用于 。CLAUDE.md 文件无论长度如何都完整加载,尽管较短的文件产生更好的遵守度。 主题文件如 或 在启动时不加载。Claude 在需要信息时使用其标准文件工具按需读取它们。 Claude 在你的会话期间读取和写入记忆文件。当你在 Claude Code 界面中看到”Writing memory”或”Recalled memory”时,Claude 正在主动更新或读取 。
自动记忆文件是纯 markdown,你可以随时编辑或删除。运行 从会话中浏览和打开记忆文件。
命令列出在当前会话中加载的所有 CLAUDE.md 和规则文件,让你切换自动记忆开或关,并提供打开自动记忆文件夹的链接。选择任何文件在你的编辑器中打开它。 当你要求 Claude 记住某些内容时,如”总是使用 pnpm,而不是 npm”或”记住 API 测试需要本地 Redis 实例”,Claude 将其保存到自动记忆。要改为添加指令到 CLAUDE.md,直接要求 Claude,如”将其添加到 CLAUDE.md”,或通过 自己编辑文件。
这些是 CLAUDE.md 和自动记忆最常见的问题,以及调试步骤。
CLAUDE.md 是上下文,不是强制。Claude 读取它并尝试遵循它,但没有严格遵守的保证,特别是对于模糊或冲突的指令。 要调试:
- 运行 验证你的 CLAUDE.md 文件被加载。如果文件未列出,Claude 看不到它。
- 检查相关的 CLAUDE.md 是否在为你的会话加载的位置(参见 )。
- 使指令更具体。“使用 2 空格缩进”比”格式化代码很好”效果更好。
- 查找跨 CLAUDE.md 文件的冲突指令。如果两个文件为相同行为提供不同的指导,Claude 可能会任意选择一个。
运行 并选择自动记忆文件夹来浏览 Claude 保存的内容。一切都是纯 markdown,你可以读取、编辑或删除。
超过 200 行的文件消耗更多上下文并可能降低遵守度。将详细内容移到使用 导入引用的单独文件中(参见 ),或将你的指令拆分到 文件中。
CLAUDE.md 完全在压缩中存活。在 后,Claude 从磁盘重新读取你的 CLAUDE.md 并将其新鲜重新注入会话。如果指令在压缩后消失,它仅在对话中给出,未写入 CLAUDE.md。将其添加到 CLAUDE.md 以使其在会话中持久化。 有关大小、结构和具体性的指导,请参阅 。
- :打包按需加载的可重复工作流
- :使用设置文件配置 Claude Code 行为
- :管理上下文、恢复对话和运行并行会话
- :让 subagents 维护自己的自动记忆
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/210465.html