Claude Code 记忆与个性化配置实战:让 AI 记住你的编码习惯
title: “Claude Code 记忆与个性化配置实战:让 AI 记住你的编码习惯”
tags:
- AI编程
- Claude Code
- 开发工具
- 效率工具
categories: - AI编程
description: “详解 Claude Code 的记忆系统与个性化配置,包括 CLAUDE.md 文件、Auto Memory 自动记忆、.claude/rules 规则目录、权限设置等核心功能,帮你打造真正懂你的 AI 编程助手。”
导读:每次开新会话都要跟 Claude Code 重新解释一遍项目架构、编码规范、个人偏好?这篇文章带你把 Claude Code 调教成真正"记住你"的开发搭档——从 CLAUDE.md 到自动记忆,从规则文件到权限配置,一套完整的个性化方案。
一、为什么要折腾 Claude Code 的记忆
我用 Claude Code 做开发有大半年了,最折磨人的不是它写不好代码,而是每次开新会话,都得把同样的话再说一遍:
- “这个项目用 pnpm,别用 npm”
- “提交信息用中文”
- “别自动帮我 commit”
- “测试用 vitest,不是 jest”
这些事情说一次还好,每个会话都说一遍就真的很烦。后来我花了点时间研究 Claude Code 的记忆系统,发现它其实有一套相当完善的机制,只是很多人没认真用过。
这篇文章把我的配置经验整理出来,核心就三个问题:
- 怎么让 Claude Code 记住你的项目规范
- 怎么让它自动学习你的偏好
- 怎么在不同项目之间管理这些记忆
二、Claude Code 的记忆系统长什么样
Claude Code 有两套互补的记忆机制:
| CLAUDE.md 文件 | Auto Memory 自动记忆 | |
|---|---|---|
| 谁写的 | 你自己 | Claude 自己 |
| 存什么 | 指令和规则 | 学习到的模式和偏好 |
| 作用范围 | 项目级、用户级、组织级 | 按项目工作目录 |
| 加载时机 | 每次会话开头 | 每次会话开头(前 200 行或 25KB) |
| 适合放什么 | 编码规范、构建命令、架构说明 | 调试经验、Claude 自己发现的偏好 |
简单说:CLAUDE.md 是你主动告诉 Claude 的规矩,Auto Memory 是 Claude 自己学到的经验。 两个加在一起,就能让 Claude Code 跨会话地"记住你"。
三、CLAUDE.md:你的项目宪法
文件放哪
CLAUDE.md 可以放在好几个地方,作用范围从大到小:
| 范围 | 文件位置 | 用途 |
|---|---|---|
| 组织级(全局策略) | macOS: /Library/Application Support/ClaudeCode/CLAUDE.md |
IT/DevOps 统一部署的公司规范 |
| 用户级(个人全局) | ~/.claude/CLAUDE.md |
你所有项目的个人偏好 |
| 项目级(团队共享) | ./CLAUDE.md 或 ./.claude/CLAUDE.md |
项目规范,通过 Git 共享给团队 |
| 项目级(个人覆盖) | ./CLAUDE.local.md |
仅限当前项目的个人偏好,加入 .gitignore |
加载优先级:目录层级越深,优先级越高。如果你在 src/components/ 目录下工作,Claude 会依次加载全局 → 项目根目录 → src/ → src/components/ 下的 CLAUDE.md,全部拼接在一起。
快速开始:用 /init 生成骨架
最省事的方式是让 Claude 帮你生成初始 CLAUDE.md:
claude
> /init
Claude 会扫描你的项目结构、package.json、配置文件,自动生成一个初始的 CLAUDE.md。你可以在这个基础上做减法——删掉不需要的,补充 Claude 推断不出来的。
如果想要更精细的交互式初始化,可以开启新版流程:
CLAUDE_CODE_NEW_INIT=1 claude
> /init
它会分阶段问你:要设置哪些 CLAUDE.md、要不要配 skills 和 hooks,然后派子代理去探索代码库,最后给你一个可审查的方案再写入文件。
写什么内容
我自己的经验是,CLAUDE.md 要写那些"新同事来了你也会告诉他的事"。具体来说:
# 项目说明
这是一个 Next.js 15 + TypeScript 项目,使用 App Router。
## 构建和测试命令
- `pnpm dev` — 启动开发服务器(端口 3000)
- `pnpm test` — 运行测试(vitest)
- `pnpm lint` — ESLint + Prettier 检查
- `pnpm build` — 生产构建
## 编码规范
- 使用函数式组件和 hooks,不用 class 组件
- 服务端组件为默认选择,需要交互时才用 "use client"
- TypeScript strict 模式,禁止使用 any
- 提交信息用中文,格式:`feat: xxx`、`fix: xxx`
## 架构说明
- 页面路由在 src/app/
- API 路由在 src/app/api/
- 公共组件在 src/components/
- 数据库用 Drizzle ORM + PostgreSQL
## 注意事项
- 不要自动 commit,改完代码让我确认
- .env 文件绝不能提交
- 修改数据库相关代码时,先跟我说一下
几个关键原则
别写太长。 目标是 200 行以内。CLAUDE.md 会占用上下文窗口,写太多反而会降低 Claude 对每条规则的遵循度。内容多了就用后面的 .claude/rules/ 拆分。
要具体,别含糊。 对比一下:
- ❌ “格式化代码” → ✅ “使用 2 空格缩进”
- ❌ “跑测试” → ✅ “用
pnpm test跑测试” - ❌ “保持文件整洁” → ✅ “API handler 放在
src/api/handlers/目录下”
别自相矛盾。 如果你同时有多个 CLAUDE.md 文件,定期检查一下有没有互相打架的规则。Claude 遇到矛盾的指令会随机选一个,这可不是你想要的。
快捷添加方式:# 键
在 Claude Code 对话中,按 # 键可以快速添加一条记忆:
> # Always use TypeScript strict mode
然后选择范围(Local 当前项目 / Global 所有项目),就自动写入对应的 CLAUDE.md 了。比手动编辑文件方便很多。
用 @ 导入其他文件
CLAUDE.md 支持 @path/to/file 语法导入其他文件。比如你想把 README 和 Git 规范也塞进去:
参考 @README.md 了解项目概述。
Git 工作流规范见 @docs/git-workflow.md。
## 额外说明
- 这个项目禁止使用 lodash,用原生方法
导入的文件会在会话启动时一并加载到上下文中。支持相对路径和绝对路径,最多 5 层嵌套。
CLAUDE.local.md:个人偏好的藏身之处
有些偏好只属于你自己,不适合提交到 Git 仓库。比如:
# 个人偏好
- 我调试时喜欢看详细的日志输出
- 代码示例尽量用深色主题风格
- 不要自动 commit,让我每次都确认
- 用 pnpm 而不是 npm
把这个文件加到 .gitignore 里,这样你的个人设置不会影响团队其他人。/init 时选择 personal 选项会自动帮你处理好 gitignore。
四、.claude/rules/:按主题和路径组织规则
项目大了之后,一个 CLAUDE.md 不够用,可以把规则拆到 .claude/rules/ 目录下:
your-project/
├── .claude/
│ ├── CLAUDE.md # 主要的项目说明
│ └── rules/
│ ├── code-style.md # 代码风格
│ ├── testing.md # 测试规范
│ ├── security.md # 安全要求
│ └── api/
│ └── design.md # API 设计规范
每个文件聚焦一个主题,好维护也好查找。
按文件路径生效
这是我最喜欢的功能之一。规则文件可以用 YAML frontmatter 限定只对特定文件类型生效:
---
paths:
- "src/api/**/*.ts"
- "src/**/*.test.ts"
---
# API 开发规范
- 所有 API 端点必须包含输入校验
- 使用统一的错误响应格式
- 必须写 OpenAPI 文档注释
只有 Claude 在操作匹配 paths 的文件时,这条规则才会被加载。这样既节省上下文空间,又避免了不相关规则干扰其他工作。
常用的 glob 模式:
| 模式 | 匹配 |
|---|---|
**/*.ts |
所有 TypeScript 文件 |
src/**/* |
src 目录下的所有文件 |
src/components/*.tsx |
指定目录下的 React 组件 |
用户级规则:跨项目通用
在 ~/.claude/rules/ 下放规则,所有项目都会加载:
~/.claude/rules/
├── preferences.md # 你的个人编码偏好
└── workflows.md # 你习惯的工作流
用户级规则先于项目规则加载,项目规则优先级更高。
跨项目共享规则
如果你有多个项目想共用同一套规则,可以用符号链接:
ln -s ~/shared-claude-rules .claude/rules/shared
ln -s ~/company-standards/security.md .claude/rules/security.md
五、Auto Memory:让 Claude 自己学
它怎么工作
Auto Memory 默认开启。工作流程是这样的:
- 你在使用过程中纠正 Claude 的行为(比如"别用 var,用 let")
- Claude 识别出这是一个稳定的偏好或模式
- 它把这个发现写到
~/.claude/projects/<project-hash>/memory/MEMORY.md - 下次会话开始时,自动加载前 200 行(或 25KB)
你完全不需要手动操作,Claude 自己就会把学到的经验记下来。
存储位置
Auto Memory 的文件默认存在:
~/.claude/projects/<项目哈希>/memory/
├── MEMORY.md # 主记忆文件
├── debugging.md # 调试相关(Claude 自动分类)
└── patterns.md # 发现的代码模式
如果你想改存储路径,可以在 settings 里设置:
{
"autoMemoryDirectory": "~/my-custom-memory-dir"
}
查看和管理
最直接的方式是用 /memory 命令:
> /memory
它会打开一个交互界面,让你浏览所有记忆文件的内容。你可以直接编辑、删除不准确的记忆。
也可以手动去 ~/.claude/projects/ 目录下翻看,都是纯 Markdown 文件。
开关控制
Auto Memory 默认开启。如果你想关掉它:
> /memory
# 在界面中切换 auto memory 开关
或者在 settings.json 里配置。不过我的建议是开着别关——Claude 自动记的东西大多数都挺有用,偶尔用 /memory 清理一下就行。
六、权限设置:让 Claude 少问你
权限配置虽然不直接属于"记忆",但它决定了你的日常体验顺不顺手。每次操作都要点确认,真的很烦。
四种权限模式
| 模式 | 说明 |
|---|---|
default |
每次工具调用都要确认 |
acceptEdits |
自动接受文件编辑和常见文件操作(mkdir、touch 等) |
plan |
只读模式,只分析不改文件 |
auto |
自动批准工具调用,后台安全检查(研究预览版) |
配置信任命令
在 .claude/settings.json 或 ~/.claude/settings.json 里配置你信任的命令:
{
"permissions": {
"allow": [
"Bash(git status)",
"Bash(git diff*)",
"Bash(pnpm test*)",
"Bash(pnpm lint*)",
"Bash(pnpm build*)",
"Read",
"Grep"
],
"deny": [
"Bash(rm -rf*)"
]
}
}
这样常用的只读操作和测试命令就不用每次确认了,但危险操作仍然会被拦住。
配置文件层级
设置文件也有作用域之分,从高到低:
| 优先级 | 文件位置 | 作用范围 |
|---|---|---|
| 1 | 命令行参数 | 当前会话 |
| 2 | .claude/settings.local.json |
当前项目,仅自己(gitignore) |
| 3 | .claude/settings.json |
当前项目,团队共享 |
| 4 | ~/.claude/settings.json |
所有项目,个人全局 |
deny 规则永远优先,不能被覆盖。
七、我的实际配置方案
说了一堆理论,分享下我自己在用的配置,供参考。
用户级 CLAUDE.md(~/.claude/CLAUDE.md)
# 个人偏好
- 回答用中文
- 代码注释用英文
- 不要自动 commit,每次改完让我确认
- 优先使用 pnpm,除非项目明确使用 npm
- 代码风格:2 空格缩进,单引号,无分号
项目级 CLAUDE.md(项目根目录)
# 项目说明
内部管理系统,React 18 + TypeScript + Vite。
## 常用命令
- `pnpm dev` — 开发服务器
- `pnpm test` — 运行测试
- `pnpm lint` — 代码检查
- `pnpm build` — 生产构建
## 代码规范
- 组件使用函数式写法
- 状态管理用 Zustand
- 样式用 Tailwind CSS
- 提交信息格式:`feat: xxx` / `fix: xxx` / `chore: xxx`
## 目录结构
- src/pages/ — 页面组件
- src/components/ — 公共组件
- src/hooks/ — 自定义 hooks
- src/api/ — 接口封装
- src/store/ — Zustand store
项目权限配置(.claude/settings.json)
{
"permissions": {
"allow": [
"Bash(git *)",
"Bash(pnpm *)",
"Read",
"Grep",
"Glob"
],
"deny": [
"Bash(rm -rf *)",
"Bash(curl * | bash*)"
]
}
}
这样配完之后,日常使用基本不用怎么点确认,Claude 已经知道我的习惯、项目规范和哪些操作是安全的。
八、常见踩坑和解决方法
Claude 不遵守 CLAUDE.md 的规则怎么办?
先检查几件事:
- 文件位置对不对——CLAUDE.md 要在项目根目录或者
.claude/目录下 - 是不是写太长了——超过 200 行的话,Claude 对后面的规则遵循度会下降
- 有没有自相矛盾的规则——Claude 遇到矛盾指令会随机选
- 指令够不够具体——“格式化代码” 和 “使用 2 空格缩进” 的效果差很多
不知道 Auto Memory 存了什么?
直接跑 /memory 查看,或者去 ~/.claude/projects/ 目录下翻看。都是纯文本 Markdown,想删想改随你。
CLAUDE.md 太大了怎么办?
拆分。把大块的规则移到 .claude/rules/ 目录下,按主题和文件路径组织。CLAUDE.md 只保留最核心的指令,其他的按需加载。
用 /compact 之后指令丢了?
/compact 会压缩上下文,可能导致 CLAUDE.md 中的指令被精简掉。关键规则尽量放在文件里(CLAUDE.md 或 rules),而不是只在对话里说一遍。文件里的内容每次会话都会重新加载,不怕丢。
九、最值得养成的三个习惯
上面说了很多功能,最后聊聊日常使用中真正改变我效率的三个习惯。
习惯一:对话结束前让 Claude 总结
每次重要对话结束前,我会说一句:
“总结一下这次对话的关键决策、踩过的坑、和下次要注意的点,写入 auto memory”
Claude 会自动把总结存到记忆文件里,下次会话自动加载。这个习惯帮我避免了很多重复踩坑的情况——上周调了一个 tricky 的 CSS 问题,Claude 把解决方案记下来了,这周遇到类似问题时它直接就用了。
习惯二:重复指令写进 CLAUDE.md
如果你发现自己每次对话都要说同样的话,就是时候写进去了。我的判断标准是:说了两遍以上的事,就该写进 CLAUDE.md。
用 # 键最快:
> # 这个项目的数据库迁移只能 append-only
> # 不要动 legacy 目录
> # 测试用 vitest 不是 jest
三秒钟搞定,永久生效。
习惯三:维护项目状态文件
对于长期项目,我会在 .claude/ 下维护一个 status.md(不提交 Git):
# 当前状态
## 进行中
- 报表导出功能:前端表格已搭好,等后端接口
## 已知问题
- 用户列表在 Safari 上分页有 bug(#123)
- 导出 CSV 时中文乱码
## 下一步
- 接后端报表接口
- 修复 Safari 分页问题
每次新会话开始说一句 “读一下 .claude/status.md,我们继续”,Claude 就能秒接上进度,不需要你从头解释项目做到哪了。
| 习惯 | 怎么做 | 效果 |
|---|---|---|
| 对话结束前让 Claude 总结 | “总结关键决策写入 memory” | 下次自动加载经验 |
| 重复指令写进 CLAUDE.md | 用 # 快捷添加 |
永远不用再说第二遍 |
| 维护项目状态文件 | .claude/status.md 记录进度 |
新会话秒接上进度 |
十、速查表
| 功能 | 命令/文件 | 说明 |
|---|---|---|
| 生成初始 CLAUDE.md | /init |
自动分析项目生成 |
| 快速添加记忆 | # + 内容 |
选 Local 或 Global |
| 查看/编辑记忆 | /memory |
浏览所有记忆文件 |
| 项目规则目录 | .claude/rules/*.md |
按主题拆分规则 |
| 按文件类型限定 | rules 文件的 paths frontmatter |
只对匹配文件生效 |
| 个人全局偏好 | ~/.claude/CLAUDE.md |
所有项目共享 |
| 个人项目偏好 | CLAUDE.local.md(加 .gitignore) |
仅当前项目 |
| 导入外部文件 | @path/to/file |
在 CLAUDE.md 中引用 |
| 查看权限配置 | /permissions |
查看所有权限规则 |
| 修改设置 | /config |
打开设置界面 |
| 自动记忆开关 | /memory 界面中切换 |
默认开启 |
参考链接
- Claude Code 官方文档 - Memory
- Claude Code 官方文档 - Settings
- Claude Code 官方文档 - Permissions
- Claude Code Memory 完整指南 - SkillsPlayground
写了这么多,如果对你有帮助的话,给我点个赞 👍 收个藏 📌 吧~
如果你在配置 Claude Code 记忆功能时踩过什么坑,或者有更好的配置方案,欢迎在评论区聊聊,大家一起把 Claude Code 调得更顺手。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)