CLAUDE.md 深度指南:四层记忆架构、@ 导入与内容取舍原则

CLAUDE.md 不只是一个配置文件——它有四个加载层级(企业/项目/用户/本地)、支持递归 @ 导入把规则模块化、提供 # 快速写入和 /memory 编辑两种维护方式。本文完整拆解这些机制,以及哪些内容该写进去、哪些会拖慢 Claude 的表现。

CLAUDE.md 是 Claude Code 的项目记忆文件,在每次会话启动时自动载入上下文。大多数人知道它存在,但很少人知道它有四个加载层级、支持文件导入嵌套引用、有一套清晰的内容取舍逻辑,以及几个不当用法会让它从加速器变成拖累。
本文完整拆解这些机制。

四个加载层级,优先级从高到低

Claude Code 的记忆分四层,加载时按层级叠加,高层覆盖低层:
层级文件位置用途共享范围
企业策略macOS: /Library/Application Support/ClaudeCode/CLAUDE.md公司级统一规范组织内所有用户
项目记忆./CLAUDE.md(项目根目录)团队共享的项目规范通过 git 共享给团队
用户记忆~/.claude/CLAUDE.md个人跨项目偏好仅自己,所有项目生效
本地项目记忆./CLAUDE.local.md(已废弃)个人项目专属偏好仅自己,当前项目
企业层级由 IT/DevOps 通过 MDM 或 Ansible 统一部署,个人开发者一般不会用到。日常开发中最重要的是项目层(./CLAUDE.md)和用户层(~/.claude/CLAUDE.md),前者提交进 git 供团队共享,后者配置个人编码习惯。
CLAUDE.local.md 已经废弃,现在官方推荐用 @ 导入语法替代它,下节详述。1
Claude 读取记忆时有一个容易忽略的行为:不只加载当前工作目录的 CLAUDE.md,还会向上递归到根目录查找每一级父目录的 CLAUDE.md。这意味着,若你在 foo/bar/ 下运行 Claude Code,foo/CLAUDE.mdfoo/bar/CLAUDE.md 会同时生效。对 monorepo 来说,在仓库根目录放全局规范、各子包目录放专属规范,是最自然的组织方式。
子目录下的 CLAUDE.md 还有延迟加载特性:不在启动时全部载入,而是当 Claude 读取该子目录下的文件时才被加入上下文,避免一次性消耗过多 token。1

@ 导入:把记忆拆成可组合的模块

CLAUDE.md 支持 @path/to/file 语法引入外部文件,这是应对规则增长的核心机制。
# Project Setup

See @README.md for project overview and @package.json for available commands.

## Additional Rules {#additional-rules}
- Git workflow: @docs/git-workflow.md
- Testing conventions: @docs/testing.md
- Personal overrides: @~/.claude/my-project-overrides.md
几条关键特性:
  • 支持相对路径和绝对路径,也支持 ~/ 家目录路径
  • 可递归导入,最深 5 层(被导入文件可以再导入其他文件)
  • 代码块内的 @ 不会被解析,即 `@anthropic-ai/claude-code` 这类包名不会触发导入
  • 运行 /memory 命令可查看当前会话实际加载了哪些记忆文件
~/.claude/ 路径在团队协作中的实际用法:把个人配置(sandbox URL、本地数据库连接、个人偏好)放在 ~/.claude/my-project.md,然后在项目的 CLAUDE.md 里加一行:
# Individual Preferences
- @~/.claude/my-project.md
团队成员各自维护自己的覆盖文件,文件本身不进 git,但引用语法进 git。这是取代已废弃的 CLAUDE.local.md 的正确方式。2
对于规则数量超过 50 条的大型项目,社区实践中有两种主流结构:
方案 A:单文件分区导入(规则分类清晰,适合中型项目)
# CLAUDE.md
## Core Rules {#core-rules}
@docs/rules/core.md

## Security Rules {#security-rules}
@docs/rules/security.md

## Testing Rules {#testing-rules}
@docs/rules/testing.md
方案 B:主文件导入规则索引文件,索引文件再导入具体规则(适合企业级多团队项目)
# CLAUDE.md
@docs/agent_rules/index.md
两种方案都可行,选哪种取决于团队规模和维护习惯。3

# 快速写入和 /memory 编辑

在 Claude Code 会话中,两个操作可以直接修改记忆文件:
# 快速写入:在对话输入框里,以 # 开头发送一条消息,Claude 会提示你选择写入哪个层级的记忆文件,然后把内容追加进去。
# Always use pnpm, not npm or yarn
这是发现新约定后随手记录的最快路径,不需要打开编辑器找到文件再追加。这个功能由 Anthropic 工程师 cat 在 2025 年 3 月的一条推文里宣布 4
콘텐츠 카드를 불러오는 중…
/memory 命令:在会话中输入 /memory,会在系统默认编辑器里打开记忆文件,适合做批量整理和大段修改。
这两种操作的区别在于场景:# 是边干活边记录,/memory 是专门整理时用。

什么该写,什么不该写

这是 CLAUDE.md 最容易踩错的地方。文件越长,关键规则被遵守的概率越低——这不是比喻,是 LLM 处理长上下文时的实际表现。每一行都在和其他行竞争注意力。
官方最佳实践给了一个判断标准:对每一条内容问「删掉这条,Claude 会不会犯错?」如果不会,就删。5
링크 미리보기를 불러오는 중…
建议写入建议删除
Claude 无法从代码推断的 Bash 命令Claude 读代码就能推断的内容
和默认规范不同的代码风格规则已经是行业共识的标准约定
测试运行器选择和测试命令详细 API 文档(改用链接)
分支命名、PR 约定等仓库规范频繁变动的信息
项目特有的架构决策逐文件的代码库说明
必须设置的环境变量不言自明的内容(如「写干净的代码」)
常见的非 obvious 错误和坑冗长解释和教程
长度控制上,HumanLayer 的项目根 CLAUDE.md 不到 60 行,社区中有人的文件到了 20KB。业界没有强制标准,但多数实践者给出的建议是不超过 300 行,越短越好。一个检验方法:你能在 30 秒内扫读完主文件的所有规则吗?如果不能,它已经太长了。6
링크 미리보기를 불러오는 중…
不要把代码风格规范全文塞进 CLAUDE.md。格式化和 lint 是静态工具的工作,Claude 不应该读着规范逐行检查你的代码缩进。正确做法:配 ESLint/Prettier,在 Stop hook 里触发自动格式化,或用 / 命令做风格检查,和开发流程分离。
不要用 /init 直接生成然后不管/init 能基于当前项目结构生成初始文件,适合作为起点,但生成结果需要人工审核删减。自动生成的 CLAUDE.md 往往包含大量 Claude 可以自己推断的冗余内容。

进阶:用 CLAUDE.md 控制 /compact 保留什么

一个较少被提到的技巧:可以在 CLAUDE.md 里自定义上下文压缩行为。
当 Claude 执行 /compact 时,默认会压缩上下文以节省 token,但压缩过程可能丢失重要状态。在 CLAUDE.md 里加一条规则,可以明确要求保留特定信息:
## Compaction Rules {#compaction-rules}
When compacting, always preserve:
- The full list of modified files
- Any pending test commands
- Current migration state if a database migration is in progress
这样每次压缩后,Claude 不会丢失正在进行的工作状态。5
结合 /compact focus on [topic] 手动触发,比依赖自动压缩更可控。Boris Cherny 在多个场合建议在 KV 上下文用量达到 40-50% 之前主动压缩,避免进入「dumb zone」。7

一个完整的项目 CLAUDE.md 结构示例

把以上内容整合成一个可直接参考的模板:
# [项目名]

## Project Overview {#project-overview}
[一句话说明项目是什么、用什么技术栈]

## Repository Structure {#repository-structure}
- `src/` — 主应用代码
- `packages/` — 共享库
- `docs/` — 详细文档(见下方导入)

## Common Commands {#common-commands}
- Install: `pnpm install`
- Dev: `pnpm dev`
- Test: `pnpm test`
- Build: `pnpm build`
- Lint: `pnpm lint` (auto-runs on Stop hook)

## Code Conventions {#code-conventions}
- 使用 TypeScript strict mode,禁止 `any`
- [与行业默认不同的约定才需要写]

## Architecture Decisions {#architecture-decisions}
@docs/architecture.md

## Git Workflow {#git-workflow}
@docs/git-workflow.md

## Individual Preferences {#individual-preferences}
@~/.claude/[project-name]-local.md

## Compaction Rules {#compaction-rules-2}
When compacting, preserve: modified file list, pending test commands.
注意这个模板只写了项目级文件(提交到 git)。用户级 ~/.claude/CLAUDE.md 单独维护个人偏好,两个文件共同作用,不要把个人配置混进项目文件。

CLAUDE.md 的价值不在于刚建好的那一刻,而在于迭代维护。Anthropic 内部每个团队都维护一个,内容包含过去踩过的坑、项目最佳实践和 PR 模板。当你把遇到的问题随手用 # 记录下来,把调试中发现的坑整理进文件,它会随着项目积累越来越有用——这是 CLAUDE.md 和单次 prompt 的根本区别。

이 콘텐츠를 둘러싼 관점이나 맥락을 계속 보강해 보세요.

  • 로그인하면 댓글을 작성할 수 있습니다.