命令字典
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
Slash 命令、CLI 子命令、Hook 事件、启动参数的字典与演进史。
为当前会话添加工作目录以用于文件访问
/add-dir 是 Claude Code 的会话内 slash 命令,用于在当前会话中动态追加额外工作目录,使 Claude 能够读取和操作这些目录中的文件。它与 CLI 启动标志 --add-dir 和 settings.json 中的 additionalDirectories 键共同构成 Claude Code 的多目录访问体系。
三种触达路径的核心区别:
| 形式 | 时机 | 一次多个 | 持久化 |
|---|---|---|---|
/add-dir <path> | 会话中随时执行 | 否,每次一条 | 写入 .claude/settings.local.json |
claude --add-dir <path> | 进程启动时指定 | 是,空格分隔 | 仅本次进程 |
additionalDirectories in settings.json | 预配置 | 是,数组 | 持久,对所有会话生效 |
/add-dir /absolute/path/to/project
也可以用相对于当前工作目录的相对路径:
/add-dir ../shared-lib
如需添加多个目录,须多次执行,每次一条:
/add-dir ../frontend
/add-dir ../shared-types
注意:多次执行存在 append 失效 bug,详见下方"常见坑"第 1 条。
claude --add-dir ../apps ../lib ../shared
见下方"保存 / 配置 / 集成"节。
执行 /add-dir 后,Claude Code 会将路径写入项目级 .claude/settings.local.json:
{
"permissions": {
"additionalDirectories": ["/absolute/path/to/dir"]
}
}
settings.local.json 通常不提交到 Git,适合本地私有配置。
直接编辑 .claude/settings.json:
{
"permissions": {
"additionalDirectories": [
"../frontend",
"../shared-lib",
"/absolute/path/to/external"
]
}
}
从 v2.1.20 起,可选择让 Claude Code 同时加载额外目录中的 CLAUDE.md / CLAUDE.local.md:
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude
不设置此变量时,额外目录只扩展文件访问权,不贡献 CLAUDE.md 记忆。
| 约束 | 说明 |
|---|---|
| CLAUDE.md 加载默认关闭 | 需显式设置 env var 才能从额外目录加载 CLAUDE.md |
| 目录越多检索范围越大 | 会增加 Claude Code 的文件搜索开销,影响效率 |
/add-dir 与 /cd 都涉及"让会话访问别的目录",但语义完全不同——一个是额外挂载,一个是整体搬家:
| 维度 | /add-dir <path> | /cd <path> |
|---|---|---|
| 主工作目录 | 不变(只是多挂一个) | 改变(会话搬到新目录) |
新目录 CLAUDE.md | 默认不发现(需 env var opt-in) | 加载(作为追加消息) |
| prompt cache | 不影响 | 保留(不重建 system prompt) |
| 会话存储归属 | 不变 | 转移到新目录 |
| 权限规则 | additionalDirectories / 工作目录规则 | Cd(...) |
| 可同时挂载多个 | 是(--add-dir a b c) | 否(一次只在一个主目录) |
| 版本门槛 | 早期即有 | v2.1.169+ |
简单记:想让 Claude 同时看到两个目录的代码用 /add-dir;想把整个会话连同 CLAUDE.md、项目存储搬到另一目录用 /cd。
/add-dir 挂载另一个 package,让 Claude 同时看到两侧代码。--add-dir 挂载前端 repo,Claude 可理解接口契约的双端实现。/add-dir 会替换而非追加 additionalDirectories:在同一会话中多次执行 /add-dir 时,每次调用会覆盖整个 additionalDirectories 数组,只保留最后一条路径(GitHub issue #14097,报告于 v2.0.70)。绕过方式:在会话结束后手动编辑 .claude/settings.local.json,将所有路径一次性填入数组;或改用 --add-dir 启动标志一次性传入多个目录。
@ 文件提及的自动补全不覆盖额外目录:输入 @filename 时,下拉建议不会显示通过 /add-dir 添加的目录中的文件(GitHub issue #7412,版本 1.0.110,状态 open)。绕过方式:手动输入完整路径。
CLAUDE.md 加载在 settings.json + env var 组合下失效:当 CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 与 settings.json 里的 additionalDirectories 同时使用时,额外目录的 CLAUDE.md 可能不被加载;改用 --add-dir 命令行参数传入时可正常加载(GitHub issue #22583)。
目录已是工作目录时会给出明确提示(v2.1.193+):对一个已经是当前工作目录(或已挂载)的路径再执行 /add-dir,从 v2.1.193 起会返回更清晰的提示,而非默默无操作——便于辨认"为什么这次 /add-dir 没有新增目录"。来源:Claude Code changelog v2.1.193 "Improved /add-dir message when the directory is already a working directory"。
--add-dir can load CLAUDE.md from additional directories (new in 2.1.20, undocumented) · Issue #21138 · anthropics/claude-codeImproved message when the directory is already a working directory
修复应用内设置写入(如 `/add-dir --remember`)不刷新内存快照的问题
修复了 /add-dir 命令选择错误默认标签页的 bug
添加权限管理提示。
现在支持目录路径的 typeahead 功能
添加了 tilde (`~`) 展开支持