Claude Code 从出生开始就有记忆体系,那就是写在本地的CLAUDE.md文件。
但是这玩意有个巨大的问题,它并不是总是奏效,有的时候会读,有的时候根本就不进不了上下文中。
具体的原因我在这个文章中有详细的介绍:Claude Code大型项目如何跨越窗口时保持记忆与目标?
今天开始Claude Code 的记忆能力体系得到的进一步进化了。
不在只是CLAUDE.md了。
可以通过.claude/rules/ 目录加载自定义规则。
那么现在整体的记忆体系就如官方总结:
自定义规则不是一个简单的功能升级,它直接击中了开头疼的痛点:AI健忘。
比如明明规定了不用的库,它又自作主张地引入了,明明纠正过一次的代码风格,新建一个文件后它又忘了。
在以前,我们只能把规则一股脑塞进一个文件。
而现在,我们可以将代码风格、测试约定和安全要求拆分成独立的.md 文件。
它们会自动加载,且拥有与主记忆文件CLAUDE.md同等的优先级。
操控的颗粒度更细,配置灵活度也会得到很大的提升。
形式上虽然升级了,但记忆管理的内核还是不变:你得学会如何管理它的记忆。
Claude Code 而是有着严密的层级,就像公司的管理架构一样,从全局到局部,井井有条。
系统启动时,它会按照优先级自动加载这五层记忆。
这是最入门的层次管理。
第二层次是拆解。
项目初期,可能一个 CLAUDE.md 确实够用。
但随着业务扩张,把所有规则都塞进一个文件,维护起来简直是灾难。
这时候,你需要把记忆拆解。
Claude Code 现在允许你在 .claude/rules/ 目录下创建多个 Markdown 文件。
那么大而化之后的模块化就可能长这样。
your-project/ ├──.claude/ │├──CLAUDE.md#总纲 │└──rules/ │├──code-style.md#专门讲审美 │├──testing.md#专门讲质量 │└──security.md#专门讲安全
这样做的就大的好处就是精准的路径规则。
有些规则不需要对所有文件生效,比如 React 组件的规范,没必要让后端 Java 代码知道。
通过 YAML frontmatter,我们可以给记忆加上作用域。
--- paths:src/api/**/*.ts --- #API开发铁律 -接口必须包含输入验证 -错误响应必须符合标准格式
这样一来,Claude 只有在处理 src/api/ 下的 TypeScript 文件时,才会调取这段记忆。
精准,高效还省Token。
下面有一个真实的高并发秒杀系统案例。
如果没有记忆,直接让 AI 写秒杀,它大概率会写出一个标准的 SELECT 然后 UPDATE 的逻辑。
结果就是,超卖数据库锁死直至整系统崩溃。
植入记忆后,我们在写第一行代码前,先在 .claude/rules/seckill.md 里写下这段紧箍咒:
--- paths:src/modules/seckill/**/*.java --- #秒杀模块生存法则 1.**库存扣减** -严禁查询数据库扣减库存 -必须使用RedisLua脚本保证原子性 2.**幂等性** -所有写入接口必须校验orderId是否重复 3.**异常处理** -发生任何异常,必须触发异步报警
Claude 读取这段记忆后,生成的代码直接包含了 RedisTemplate 的 Lua 脚本调用,甚至连异常回滚的逻辑都处理得滴水不漏。这就是记忆体系的威力。
第三层是模块化
不用把所有内容都写在同一个地方。用 @ 引用外部文件,像搭积木一样组装你的上下文。
#引入我的个人偏好配置 -@~/.claude/my-project-instructions.md 快速初始化 新接手一个项目?一个命令,直接生成基础配置。 >/init
最后的建议,其实在我的这个专栏AI编程高效开发指南里面会有反复的提到:
项目改崩N次后,我总结出大型项目重构人机协同SOP
具体一点
别说“代码要规范”,要说“缩进使用 2 个空格”。
结构化一点
多用标题,多用列表,AI 和人一样,喜欢条理清晰的指令。
勤快一点
记忆文档其实跟代码一样,都需要进行不断的更新和迭代。
| 欢迎光临 链载Ai (http://www.lianzai.com/) | Powered by Discuz! X3.5 |