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 的记忆系统,发现它其实有一套相当完善的机制,只是很多人没认真用过。

这篇文章把我的配置经验整理出来,核心就三个问题:

  1. 怎么让 Claude Code 记住你的项目规范
  2. 怎么让它自动学习你的偏好
  3. 怎么在不同项目之间管理这些记忆

二、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 默认开启。工作流程是这样的:

  1. 你在使用过程中纠正 Claude 的行为(比如"别用 var,用 let")
  2. Claude 识别出这是一个稳定的偏好或模式
  3. 它把这个发现写到 ~/.claude/projects/<project-hash>/memory/MEMORY.md
  4. 下次会话开始时,自动加载前 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 的规则怎么办?

先检查几件事:

  1. 文件位置对不对——CLAUDE.md 要在项目根目录或者 .claude/ 目录下
  2. 是不是写太长了——超过 200 行的话,Claude 对后面的规则遵循度会下降
  3. 有没有自相矛盾的规则——Claude 遇到矛盾指令会随机选
  4. 指令够不够具体——“格式化代码” 和 “使用 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 记忆功能时踩过什么坑,或者有更好的配置方案,欢迎在评论区聊聊,大家一起把 Claude Code 调得更顺手。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐