记忆与规则
Claude Code 如何读取 CLAUDE.md、auto memory、.claude/rules,以及 AGENTS.md 项目的兼容方式。
Claude Code 每次会话都是新的上下文窗口。要让它长期记住项目约定,主要靠两套机制:你写的 CLAUDE.md,以及 Claude 自动积累的 auto memory。
#CLAUDE.md 与 auto memory
| 机制 | 谁写 | 存什么 | 适合场景 |
|---|---|---|---|
CLAUDE.md | 你或团队 | 明确指令、目录、命令、约定 | 可验证的长期规则 |
| Auto memory | Claude | 从纠正中学到的模式 | 反复出现的偏好和项目经验 |
这两者都是上下文,不是强制权限。想硬性阻止危险动作,用 权限规则 或 Hooks。
#文件位置
| 范围 | 位置 | 用途 |
|---|---|---|
| Managed policy | macOS /Library/Application Support/ClaudeCode/CLAUDE.md,Linux /etc/claude-code/CLAUDE.md,Windows C:\Program Files\ClaudeCode\CLAUDE.md | 组织级指令 |
| User | ~/.claude/CLAUDE.md | 个人全局偏好 |
| Project | ./CLAUDE.md 或 ./.claude/CLAUDE.md | 团队共享项目规则 |
| Local | ./CLAUDE.local.md | 本项目个人私有规则,应 gitignore |
| Rules | ./.claude/rules/*.md | 模块化规则,可按路径懒加载 |
Claude 从当前目录向上查找 CLAUDE.md 和 CLAUDE.local.md。越靠近当前工作目录的内容越晚进入上下文,因此更具体。子目录里的 CLAUDE.md 会在 Claude 读取相关文件时按需加载。
#推荐结构
your-project/
├── CLAUDE.md
└── .claude/
├── settings.json
└── rules/
├── testing.md
├── api.md
└── frontend.mdCLAUDE.md 控制全局骨架:
# 项目约定
- 包管理器: pnpm
- 改完先跑 `pnpm lint`,涉及类型再跑 `pnpm typecheck`
- 不要把 `.env`、Key、生产配置写入文档或提交
## 目录
- 页面: `src/app`
- 组件: `src/components`
- 文档: `content/docs`
## 工作方式
- 大改动先给计划
- 修改 UI 后需要检查浅色和暗色
- 输出最终结果时必须列出验证命令#写得短,才能更稳
目标控制在 200 行以内。越长越吃上下文,也越容易互相矛盾。
有效规则通常有三个特点:
- 具体:写
pnpm lint,不要写“跑必要检查” - 可验证:写“不要提交
.env”,不要写“注意安全” - 按主题分组:构建、测试、目录、风格分开
如果一条规则只对部分目录有效,不要塞进根 CLAUDE.md,放进 .claude/rules/ 并加 paths。
#导入其它文件
CLAUDE.md 支持 @path 导入。相对路径以当前 CLAUDE.md 所在目录为基准,最多递归 4 层。
@README.md
@docs/development.md
## Claude Code 专用补充
- 优先使用现有组件
- 不做无关重构如果只是想展示字符串,用反引号包住,例如 ` @README.md `。
首次导入项目外部文件时,Claude Code 会要求确认。拒绝后不会自动再弹,需要你手动调整。
#AGENTS.md 项目
Claude Code 默认读取 CLAUDE.md,不是 AGENTS.md。已有 AGENTS.md 的仓库可以这样兼容:
@AGENTS.md
## Claude Code
- 大范围改动先使用 plan mode
- UI 修改后检查移动端、浅色和暗色也可以用 symlink,但 Windows 上更推荐 @AGENTS.md 导入。
#.claude/rules/
规则文件是更细粒度的 CLAUDE.md。没有 frontmatter 的规则每次启动都加载:
# 测试规则
- 修复 bug 后优先跑相关单测
- 不要跳过失败测试带 paths 的规则只在相关文件被读取时加载:
---
paths:
- "src/api/**/*.ts"
- "app/api/**/*.ts"
---
# API 规则
- 所有输入必须校验
- 错误返回统一 `{ code, message }`
- 不把服务端密钥写到客户端 bundle这对大型仓库很重要,能减少上下文噪音和缓存失效。
#Auto memory
Auto memory 会记录 Claude 从纠正中学到的内容,按仓库共享。它适合保存“这个项目里实际踩过坑”的经验,例如构建命令、测试前置条件、常见失败原因。
常见控制方式:
| 需求 | 做法 |
|---|---|
| 临时不想用 auto memory | 设置 CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 |
| 调试记忆为什么没生效 | 用 /context 看加载内容 |
| 让某类规则更可靠 | 从 auto memory 提炼到 CLAUDE.md |
#排错
| 现象 | 可能原因 | 检查 |
|---|---|---|
改了 CLAUDE.md 但当前会话不听 | 根级文件启动时已加载 | /clear、/compact 或重启 |
| 子目录规则不生效 | Claude 没读到匹配文件 | 用 @文件 明确引用 |
| 规则互相冲突 | 多个 CLAUDE.md 或 rules 重叠 | /context 看实际加载顺序 |
AGENTS.md 不生效 | Claude Code 不直接读它 | 用 CLAUDE.md 导入 |
| 大仓库规则太多 | 上下文被说明吃满 | 拆成 path-scoped rules |
#官方参考
Support / 支持
Need help? / 需要帮助?
接入、计费与模型异常可邮件联系;服务可用性以状态页为准。
For setup, billing, or model issues, email us. Check the status page for uptime.
也可使用右下角微信 / QQ 客服 · WeChat / QQ support is available at the bottom right

