命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
编辑memory文件并管理自动memory功能
/memory 是 Claude Code 的会话内 Slash 命令,用于查看和管理当前会话加载的所有记忆文件。执行后会显示:
.claude/rules/*.md 文件列表Claude Code 的跨会话记忆由两套机制共同承担:
| 机制 | 谁来写 | 内容 | 作用范围 |
|---|---|---|---|
| CLAUDE.md 文件 | 用户手写 | 规则与指令 | 项目 / 用户 / 组织 |
| Auto memory | Claude 自动 | 学习到的规律与偏好 | 按 repository,跨 worktree 共享 |
Auto memory 需要 Claude Code v2.1.59 或更高版本。
在会话中直接输入,命令只在消息开头被识别:
/memory
打开 /memory 面板后可以:
在对话中直接表达意图即可,Claude 会自动保存到 auto memory:
记住:这个项目始终使用 pnpm,不用 npm
remember that the API tests require a local Redis instance
若要写入 CLAUDE.md 而非 auto memory,需明确说:
把这条加到 CLAUDE.md
或通过 /memory 面板打开 CLAUDE.md 文件手动编辑。
加载顺序从宽到窄,范围越宽越先注入上下文;同目录内 CLAUDE.local.md 紧随 CLAUDE.md 之后。
| 作用范围 | 路径 | 是否可被排除 |
|---|---|---|
| 托管策略 | macOS: /Library/Application Support/ClaudeCode/CLAUDE.md<br>Linux/WSL: /etc/claude-code/CLAUDE.md<br>Windows: C:\Program Files\ClaudeCode\CLAUDE.md | 不可排除 |
| 用户级 | ~/.claude/CLAUDE.md | 可 |
| 项目级 | ./CLAUDE.md 或 ./.claude/CLAUDE.md | 可 |
| 本地私有 | ./CLAUDE.local.md | 可,建议加入 .gitignore |
在任意 CLAUDE.md 中使用 @path/to/file 引入外部文件,被导入文件可再次导入其他文件,最多支持 4 层(4-hop)递归(官方原文 'a maximum depth of four hops')。注意:此 4-hop 上限仅针对 CLAUDE.md 的 @path 导入语法,.claude/rules/ 路径规则文件不受该层数限制:
See @README for project overview and @package.json for available npm commands.
# Git workflow
@docs/git-instructions.md
.claude/rules/)将 Markdown 文件放入 .claude/rules/ 目录可实现模块化管理。可在文件头部添加 YAML frontmatter,使规则只在 Claude 处理匹配文件时才加载,节省上下文空间:
---
paths:
- "src/api/**/*.ts"
---
# API 开发规则
- 所有接口必须做输入校验
- 使用标准错误响应格式
不带 paths 字段的规则文件等同于 .claude/CLAUDE.md,每次会话均加载。
三种关闭方式:
会话内通过 /memory 面板切换,或写入 settings.json:
{
"autoMemoryEnabled": false
}
或设置环境变量:
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1
自定义存储路径(必须是绝对路径或以 ~/ 开头):
{
"autoMemoryDirectory": "~/my-custom-memory-dir"
}
默认存储结构:
~/.claude/projects/<project>/memory/
├── MEMORY.md # 简洁索引,每次会话加载(前 200 行或 25KB)
├── debugging.md # 调试规律详情(按需读取)
├── api-conventions.md # API 设计记录(按需读取)
└── ...
<project> 路径由 git 仓库派生,同一 repo 下所有 worktree 和子目录共享同一个 auto memory 目录。
claudeMdExcludes 可在任意设置层配置(user / project / local / managed policy),且数组会跨层合并(官方原文 'You can configure claudeMdExcludes at any settings layer: user, project, local, or managed policy. Arrays merge across layers.')。monorepo 场景下官方推荐写在 .claude/settings.local.json,使用 glob 匹配绝对路径:
{
"claudeMdExcludes": [
"**/monorepo/CLAUDE.md",
"/home/user/monorepo/other-team/.claude/rules/**"
]
}
托管策略层的 CLAUDE.md 无法被排除。
通过 managed-settings.json 的 claudeMd 字段可将指令直接内嵌,无需单独部署文件:
{
"claudeMd": "Always run `make lint` before committing.\nNever push directly to main."
}
此字段仅在 managed / policy 设置层有效,用户或项目层设置会被忽略。
| 约束 | 原因 |
|---|---|
| Auto memory 需要 v2.1.59+ | 功能从该版本起引入 |
MEMORY.md 仅加载前 200 行或 25KB(取先到者) | 控制 context window 占用 |
| CLAUDE.md 建议不超过 200 行 | 过长会降低 Claude 的遵循率 |
| Auto memory 仅本地存储 | 不跨机器,不同步到云端 |
项目 settings 中的 autoMemoryDirectory 须通过工作区信任对话框才生效 | 与 hooks 共用相同安全门控 |
CLAUDE.md 的 @path 导入最多 4 层(4-hop)递归 | 防止循环导入(官方原文 'a maximum depth of four hops') |
.claude/rules/ 路径限定规则文件无明确递归层数限制 | 该 4-hop 上限专属 CLAUDE.md 的 @path 导入,不适用于 rules 文件 |
托管策略层 CLAUDE.md 不可被 claudeMdExcludes 排除 | 保证组织级指令始终生效 |
| 原语 | 谁维护 | 触发方式 | 适用场景 |
|---|---|---|---|
| CLAUDE.md | 用户手写 | 每次会话自动加载(全量) | 固定规则、编码标准、架构说明 |
| Auto memory | Claude 自动写 | 每次会话自动加载(前 200 行或前 25KB,先到为准) | Claude 发现的模式和偏好 |
.claude/rules/ 路径规则 | 用户手写 | 打开匹配文件时按需加载 | 针对特定文件类型的规则,节省上下文 |
| Skill | 用户编写 | 手动调用或 Claude 判断相关时加载 | 可复用的任务流程,不需常驻上下文 |
| Hook | 用户配置 | 固定生命周期事件(如 PreToolUse) | 强制执行的操作,不依赖 Claude 判断 |
/memory,确认相关 CLAUDE.md 是否出现在已加载列表中;若未出现则说明文件路径有误或被 claudeMdExcludes 过滤/memory 列表直接打开 CLAUDE.md,比手动找路径更快/memory 面板即时切换开关CLAUDE.md 超过 200 行仍期望完整遵循:官方文档明确指出过长文件会降低遵循率,应拆分为路径限定规则(.claude/rules/)或精简内容;使用 @import 拆文件只帮助组织,不减少上下文占用
/compact 后指令消失:仅项目根目录的 CLAUDE.md 会在 compact 后自动重新注入;子目录中的 CLAUDE.md 需等 Claude 再次读取该子目录文件才会重载——若指令重要,应移入根目录 CLAUDE.md
以为 CLAUDE.md 是强制执行层:官方文档说明 CLAUDE.md 内容以 user message 形式注入(非 system prompt),Claude 会尽力遵循但不保证严格执行;需要强制执行的操作(如"提交前必须跑 lint")应写成 Hook 而非 CLAUDE.md 指令
Auto memory 跨机器不同步:auto memory 为机器本地存储,切换到不同机器或云环境时记忆不随之迁移