Claude Code 项目记忆
每个 Claude Code 会话都会从新的上下文窗口开始。CLAUDE.md 和 auto memory 可以把项目知识带到后续会话;配合 Skills 处理可重复流程,配合 Hooks 做强制约束。
- 最近核验
- 适用版本
- Claude Code 2.1.x。本机使用 2.1.198 核对 CLI 拼写;官方文档可能描述更新的 2.1.x 行为。
- 核验方式
- 依据官方资料核对 CLAUDE.md loading、imports、local memory、auto-memory 限制与 enforcement boundary;未改变用户或项目 memory。
可复现实践
把重复纠正变成有 Scope、可测试的项目规则
只把 durable fact 写入一次性 CLAUDE.md,在提议真实仓库改动前证明 scope 和 load behavior。
准备
- 有仓库证据的重复纠正。
- 唯一临时 git 仓库。
- Shared rule 不含秘密、个人偏好或一次性任务文本。
执行步骤
创建一次性项目
把练习放在所有真实仓库之外。
步骤 1 MEMORY_LAB=$(mktemp -d "${TMPDIR:-/tmp}/claude-memory.XXXXXX") printf '%s\n' "$MEMORY_LAB" cd "$MEMORY_LAB" && git init -q写一条可验证规则
描述确切 command 和适用条件,不写模糊质量偏好。
步骤 2 printf '%s\n' '# Verification' '- After changing TypeScript, run: pnpm exec tsc -b --pretty false' > CLAUDE.md wc -l CLAUDE.md检查加载 context
单独选择 enforcement
如果动作必须被阻止,应使用 permissions、sandbox 或 hook,不应加强 prose。
预期结果
规则简短、scope 明确,仅在适当时纳入版本控制,可在 context 看到,并能与 enforced policy 区分。
验证
- 采用前确认 command 在真实项目存在。
- 用 `/context` 确认目标文件已加载。
- 检查 import 和 path-scoped rules 的冲突或无关 context。
失败处理
规则未被遵循
检查 load scope,并重写成一条有观察结果的具体指令。
Context 膨胀
把 procedure 移到 skill,并拆分 path-specific rules。
清理或回退
- 返回原目录,只删除打印出的 MEMORY_LAB 路径。
- 真实 shared rule 造成更差行为时通过 code review 回退。
边界与不适用场景
- CLAUDE.md 和 auto memory 只指导行为,不执行安全 policy。
- Auto memory 按 repository scope 跨 worktree 共享,不存秘密或短期 incident data。
CLAUDE.md 与 auto memory
CLAUDE.md 是你编写的说明;auto memory 是 Claude 根据纠正和模式自动记录的笔记。二者都会在会话开始时加载,但解决的问题不同。
CLAUDE.md
用于构建命令、架构边界、编码标准和团队工作流等每个会话都应遵守的规则。
阅读指南Auto memory
适合让 Claude 记住偏好和调试经验,而不需要你每次手动改说明文件。
阅读指南Hooks 用于强制
如果某个动作必须被阻止,而不是仅靠提示词约束,应使用 PreToolUse hooks。
阅读指南记忆文件放在哪里
记忆可以按组织、用户、项目或本地工作区分层。更具体的文件应补充更 broad 的默认值,而不是重复它们。
写出有效的 CLAUDE.md
好的记忆内容应事实化、简洁、可验证。把命令、路径、命名规则和审查要求写在这里;一次性流程应放到 skills 或路径级 rules 中。
# Project memory
- Package manager: pnpm
- Test: pnpm test
- Lint: pnpm lint
- Do not edit files under dist/
- Auth changes require tests in src/auth/与其他主题连接记忆
记忆最好作为 onboarding 和 review 栈的一部分,而不是唯一的项目指导来源。
排查记忆未生效
当说明看起来被忽略时,先检查当前会话是否真的加载了该文件,是否有更具体的规则覆盖,以及内容是否过于空泛。