很多人以为 Claude Code 的“长期记忆”就是一个
CLAUDE.md。这已经不够了。真正进入团队实战后,你会发现:Claude Code 的效果上限,取决于你怎么设计它的记忆架构。
如果你已经会写 CLAUDE.md,但仍然遇到这些问题:
- Claude 一开始很听话,聊久了就开始跑偏
- 一个仓库里既有后端又有前端,规范全写在一起越来越臃肿
- 团队共享规范和个人偏好混在一起,越用越乱
- 子代理(subagent)虽然能用,但感觉只是“多开几个 Claude”
- GitHub Actions、自动化审查、项目协作场景下,Claude 的表现不稳定
那你缺的不是再多写几条提示词,而是建立一套分层的记忆系统。
这篇文章不讲入门,而是讲 Claude Code 目前最值得掌握的进阶能力:
CLAUDE.md到底应该承载什么,什么不该放进去.claude/rules/为什么是大型项目的关键治理工具- auto memory 适合记录什么,不适合记录什么
- subagent 的真正价值为什么是“上下文隔离”而不是“并行炫技”
- 团队、个人、组织三级指令体系应该怎么分工
一、先纠正一个误区:Claude Code 不是只有一种“记忆”
很多文章把 Claude Code 的记忆能力讲得过于简单:
CLAUDE.md= 持久记忆- 没了
但从最新官方文档看,Claude Code 至少有 四层长期上下文机制:
| 层级 | 载体 | 谁来写 | 适合存什么 | 典型作用 |
|---|---|---|---|---|
| 1 | CLAUDE.md |
人 | 稳定规则、流程、架构约束 | 每次会话启动时加载 |
| 2 | .claude/rules/*.md |
人 | 按主题/路径拆分的细粒度规范 | 减少主指令膨胀 |
| 3 | Auto Memory | Claude | 运行中学到的经验、偏好、命令 | 跨会话延续经验 |
| 4 | Subagent Memory | Claude / 人共同设计 | 子代理自己的长期专长与记录 | 让不同代理各记各的 |
这四层不是互相替代,而是各司其职。
真正高效的团队,不会把所有东西都塞进一个 CLAUDE.md。
二、CLAUDE.md 的正确定位:只放“每次都应该知道”的东西
官方文档里有一个很关键的提醒:CLAUDE.md 会在每次会话开始时进入上下文窗口。换句话说,它不是免费提示词,而是持续占用上下文预算的常驻内存。
因此 CLAUDE.md 最适合放下面这类内容:
1)Claude 无法从代码里稳定推断出来的规则
比如:
- 提交前只跑相关测试,不跑全量测试
- PR 标题遵循某种特定规范
- 某些目录虽然有旧代码,但新增逻辑必须走新框架
- 某个仓库里禁止直接改生成代码,只能改源文件
这些东西,Claude 读一遍代码是未必能理解的。
2)项目级架构约束
例如:
- Controller 不写业务逻辑
- 数据访问层统一走 Repository,不允许直连 SQL
- 前端状态管理只能用 Zustand,不允许再引 Redux
- 所有新接口都必须有 OpenAPI 注释
3)工作流偏好
比如:
- 改完代码先跑 lint,再跑受影响的测试
- 大任务先进入 Plan Mode,再实施
- 涉及 schema 改动必须同步更新 migration 和文档
4)少量高价值提醒
好的 CLAUDE.md 不是“百科全书”,而是“高命中率提示”。
官方建议是:尽量简短,控制在 200 行以内更稳妥。
这和很多人习惯完全相反。很多项目的 CLAUDE.md 写成了超长 README,结果不是更聪明,而是更容易失焦。
一个实用判断标准
你可以用一句话筛选每条内容:
删掉这一条后,Claude 是否更容易犯错?
如果答案是否定的,就不应该放进 CLAUDE.md。
三、为什么大型项目一定要上 .claude/rules/
如果你的仓库开始出现下面这些情况:
- monorepo
- 前后端混合
- 测试规范很多
- 安全规范单独一套
- 同一个仓库里有多个团队
那继续把规范全堆进一个 CLAUDE.md,迟早会失控。
这时 .claude/rules/ 才是更现代的做法。
1. 它解决的是“主指令过胖”问题
你可以把规则按主题拆分:
.claude/
├── CLAUDE.md
└── rules/
├── testing.md
├── security.md
├── api-design.md
├── frontend/
│ └── react.md
└── backend/
└── spring.md
这样做的价值不是“更整齐”,而是:
- 主入口更短
- 团队维护更容易
- 规则定位更清晰
- 未来可以进一步做路径级加载
2. 它支持按路径匹配加载
这是最实用的一点。
规则文件可以用 frontmatter 指定 paths,让某些规则只在特定文件被读取时生效。比如:
---
paths:
- "src/api/**/*.ts"
---
# API 规则
- 所有接口都必须做输入校验
- 错误响应统一走标准结构
- 必须补 OpenAPI 注释
这意味着:
- 当 Claude 在看
src/api/下文件时,才注入这些规则 - 当它在改前端样式时,不必让 API 规范占上下文
这本质上是在做“按需加载的项目规则系统”。
3. 它更适合团队协作
团队里最常见的问题,不是“没有规范”,而是“规范没人维护”。
单个超长 CLAUDE.md 的维护成本很高:
- 不知道该往哪加
- 加进去后影响所有场景
- 改动 review 成本大
- 容易产生互相冲突的规则
拆成 rules 后,不同角色可以维护自己的部分:
- 测试负责人维护
testing.md - 安全负责人维护
security.md - 前端负责人维护
frontend/react.md - 后端负责人维护
backend/spring.md
这比让一个人维护“总圣经”现实得多。
四、Auto Memory 该怎么用:记录经验,不要记录制度
Claude Code 现在不仅能读你写的规则,还能积累它自己发现的经验,也就是 auto memory。
这层机制最大的价值,不是替代 CLAUDE.md,而是补充“运行中的经验沉淀”。
Auto Memory 适合记录什么?
最适合的是这些“做过一次才知道”的内容:
- 某个项目真正可用的测试命令
- 某个服务的启动顺序和依赖坑点
- 某个目录里历史代码的惯用模式
- 某个构建失败常见原因和排查路径
- 团队在实践中反复纠正 Claude 的偏好
你会发现,它更像:
工作日志 + 纠错积累 + 项目经验库
Auto Memory 不适合记录什么?
不适合的是:
- 正式制度
- 审计要求
- 必须严格遵守的安全规则
- 每个人都要共享的项目约束
这些应该写在 CLAUDE.md 或 .claude/rules/,因为它们是显式规则,不是经验型知识。
最佳分工方式
我建议这样理解:
CLAUDE.md:宪法.claude/rules/:专项法规- Auto Memory:办案经验和历史案例
如果你把“宪法”写进经验笔记里,它就不稳定;如果你把所有经验都写成宪法,主上下文又会过载。
五、Subagent 的真正价值:上下文隔离,不只是并行
很多人第一次用 subagent,会把它理解成:
- 多开几个 Claude
- 并行干活
- 更快
这当然没错,但还不够深。
1. 更核心的价值是隔离上下文污染
官方文档明确强调:subagent 运行在自己的上下文窗口里。
这件事的意义非常大。
因为 Claude Code 的效果,会随着上下文越来越满而下降。你让主会话既负责:
- 探索代码
- 做计划
- 实施改动
- 跑命令
- 看日志
- 读错误输出
上下文很快就会变得嘈杂。
这时把任务拆给 subagent,本质是在做上下文工程:
- Explore agent 只负责读和搜
- Plan agent 只负责理解和规划
- 实施 agent 只负责修改和验证
结果是:主会话更干净,子任务也更聚焦。
2. 不同子代理可以有不同边界
官方文档里,自定义 subagent 不只是写 prompt,还能指定:
- 工具权限
- 模型
- permission mode
- hooks
- MCP servers
- memory
- effort
- isolation(例如 worktree)
这意味着 subagent 不是“另一份你”,而是“带边界的专业角色”。
例如:
code-reviewer:只给 Read/Grep/Glob,不允许写入test-generator:允许写测试,但不允许改生产代码release-agent:允许读 changelog 和 CI 状态,但需要更严格审批
这就把“AI 角色化”从 prompt 层,推进到了权限层和上下文层。
3. worktree 隔离非常适合并行开发
如果多个子代理都要改代码,最容易出现的问题就是相互污染。
官方现在支持给 subagent 配置 worktree 隔离,让它在临时 git worktree 中工作。这个能力特别适合:
- 并行尝试多个实现方案
- 风险较高的重构
- 让不同代理分别验证不同假设
它的工程价值远大于“省几个 prompt”。
六、团队实战:怎么设计个人、项目、组织三级记忆体系
真正到团队里,问题从来不是“有没有指令文件”,而是“谁负责写哪层”。
我推荐一个非常实用的三层分工。
第一层:组织级(Managed / 全局政策)
这一层放:
- 安全与合规要求
- 禁止触碰的目录或命令
- 公司统一的代码/数据边界
- 外部服务访问的约束
特点是:
- 统一
- 稳定
- 强约束
比如:
- 禁止读取密钥文件
- 禁止把内部代码发往外部未知域名
- 涉及生产环境改动必须人工确认
第二层:项目级(CLAUDE.md + .claude/rules/)
这一层放:
- 项目架构
- 技术栈
- 测试/构建命令
- 代码组织规则
- 团队 workflow
这是最核心的一层,也是最应该进版本控制的一层。
第三层:个人级(用户级 CLAUDE.md / 个人规则 / 偏好)
这一层放:
- 个人惯用工具
- 喜欢的审查风格
- 提交信息偏好
- 本机上的辅助命令
比如:
- 更喜欢先跑受影响测试而不是全量测试
- 偏好某种输出结构
- 常用
gh/pnpm/just等工具链
为什么一定要分层?
因为下面这些东西不应该混在一起:
- 公司政策
- 项目事实
- 个人偏好
混在一起的后果就是:
- 团队看不懂哪些是公共规范,哪些是个人习惯
- 规则冲突时不知道谁优先
- 项目迁移时无法复用
一旦分层,Claude 的行为会稳定很多。
七、GitHub Actions 和自动化场景下,为什么更需要“轻量但稳定”的记忆
到了 CI、PR 审查、自动修复这类自动化场景,很多人第一反应是继续加更多 prompt。
但这类场景真正需要的,其实是:
- 更短的项目说明
- 更精确的规则拆分
- 更稳定的共享上下文
原因很简单:自动化运行没有人工实时纠偏。
旧思路的问题
很多旧文章喜欢把全部规范塞进 workflow prompt 里,比如:
- 先解释项目背景
- 再说代码风格
- 再说测试要求
- 再说 review 标准
- 再加一大段安全要求
结果是:
- prompt 巨长
- 重复维护
- 仓库换一个地方就失效
- 规则一改,需要同步改很多 workflow
更成熟的做法
应该把稳定规则沉淀到仓库自身:
- 项目通用规范 →
CLAUDE.md - 细分规范 →
.claude/rules/ - workflow prompt 只写“这次要干什么”
这样在 GitHub Actions 里,prompt 可以很短:
- 审查这个 PR 的正确性、安全性和可维护性
- 如果发现问题,直接给出 review comment
- 最多迭代 5 轮
真正的项目知识,来自仓库自身,而不是每次 workflow 重复灌输。
这也是为什么最近官方 GitHub Actions 文档更强调统一配置和项目内规范,而不是鼓励把所有规则堆进 action 参数里。
八、一套可落地的实践模板
如果你准备把现有项目升级到更成熟的 Claude Code 架构,可以按这个顺序做。
第一步:给 CLAUDE.md 做减法
只保留:
- 项目概述
- 关键技术栈
- 必须遵守的高价值规则
- 关键命令
- 少量 workflow 约束
把历史累积但命中率低的内容删掉。
第二步:把专项规范拆进 .claude/rules/
优先拆这几类:
- testing
- security
- api design
- frontend/backend 各自规范
- 目录级约束
第三步:允许 Claude 通过 auto memory 积累“经验”
尤其是:
- 实际可跑通的命令
- 常见错误处理方式
- 某些仓库里的特殊工作流
第四步:把高频工作角色化为 subagent
例如:
- 只读代码审查代理
- 测试生成代理
- 日志分析代理
- 文档同步代理
第五步:在自动化场景里减少 prompt 冗余
把共享知识下沉到仓库,把 workflow prompt 收缩为任务意图。
九、什么时候该新增文章,什么时候只该改旧文?
这也是我最近做博客内容维护时的一个判断标准。
如果只是:
- 某个命令参数更新了一点
- 某个截图过时了
- 某个术语换了说法
那改旧文就够了。
但如果出现的是这种变化:
- 记忆机制从“单文件”进化到“多层体系”
- 团队实践从“写提示词”进化到“设计记忆架构”
- subagent 从“并行工具”进化到“上下文治理能力”
那就值得写一篇新文章,因为这不是补丁,而是认知升级。
这篇文章写的就是这种升级。
十、总结:真正决定 Claude Code 上限的,是你的“记忆工程能力”
我现在越来越确信一件事:
Claude Code 的效果,不只是模型能力问题,更是上下文架构问题。
同样一个模型,在两种项目里的表现会天差地别:
- 一个项目把所有东西堆进超长
CLAUDE.md - 一个项目把规则拆层、按路径加载、用 subagent 隔离上下文、让 auto memory 积累经验
后者几乎一定更稳、更省 token、更适合团队扩展。
所以,如果你已经过了“会不会用 Claude Code”的阶段,下一步应该思考的不是 prompt 花活,而是:
- 哪些知识必须常驻?
- 哪些规则应该按需加载?
- 哪些经验应该让 Claude 自己积累?
- 哪些任务应该交给独立子代理处理?
- 哪些内容属于团队规范,哪些只是个人习惯?
当你开始这样设计 Claude Code,你就不再是在“使用 AI 工具”,而是在搭建一套可维护、可扩展、可团队协作的 AI 开发操作系统。
延伸阅读
- CLAUDE.md 完全指南:让 AI 准确理解你的项目
- Claude Code 高级 CLI 模式:print / repl / resume 的产品化实战
- 多 Agent 编排:让多个 AI 协作解决问题
- Claude Code 官方文档(memory / rules / sub-agents / GitHub Actions)
如果说提示词决定 Claude Code 的下限,那么记忆架构决定它的上限。