Claude Code /add-dir:被低估的 Monorepo 神器
什么是 /add-dir
用 Claude Code 的时候,你可能遇到过这样的情况:
- 你在项目 A 里工作,但需要参考项目 B 的代码
- 你在一个 monorepo 的子包里启动了 Claude Code,但需要看另一个子包的实现
- 你想让 Claude Code 同时了解前端和后端两个仓库,帮你做联调
默认情况下,Claude Code 只能看到当前工作目录下的文件。你启动时在哪个目录,它就只认识那个目录。
这就是 /add-dir 命令的用武之地。
/add-dir 是 Claude Code 的一个斜杠命令,让你在对话过程中把额外的目录添加到 Claude Code 的工作范围中,让它能够读取和操作这些目录下的文件。
简单来说:打破目录的围墙,让 Claude Code 看到更多代码。
两种用法
/add-dir 有两种使用方式:一种是在对话中随时添加,另一种是启动时就指定好。
方式一:交互模式下添加(/add-dir)
在 Claude Code 交互模式下输入:
/add-dir /path/to/another/project
执行后,Claude Code 就能访问这个目录下的所有文件了。你可以让它读取、搜索、甚至编辑这个目录中的代码。
每次 /add-dir 添加一个目录。如果需要添加多个,多次执行即可:
/add-dir /path/to/frontend
/add-dir /path/to/backend
/add-dir /path/to/shared-libs
方式二:启动时指定(—add-dir)
如果你在启动 Claude Code 之前就知道需要哪些额外目录,可以用 --add-dir 参数一次性指定:
claude --add-dir ../apps ../lib
注意和交互模式的区别——--add-dir 可以一次性指定多个目录,用空格分隔。路径会被验证是否存在且是一个目录。
这种方式适合你有固定的多项目组合,每次都需要加载同样的目录集。
使用相对路径
两种方式都支持相对路径:
# 交互模式
/add-dir ../another-project
# 启动时
claude --add-dir ../apps ../../shared/components
路径是相对于当前工作目录来解析的。
什么时候需要它
场景一:Monorepo 跨包协作
这是最常见的场景。假设你有一个 monorepo,结构如下:
my-monorepo/
├── packages/
│ ├── frontend/
│ ├── backend/
│ └── shared/
你在 packages/frontend/ 下启动了 Claude Code。现在你想让它看看 shared 包里某个工具函数的实现,然后在前端项目里调用它。
/add-dir ../shared
这样 Claude Code 就能同时看到前端和共享包的代码,帮你写出正确的导入路径和调用方式。
场景二:前后端联调
你在前端项目里工作,但需要知道后端 API 的请求和响应格式:
/add-dir /Users/me/projects/my-backend
现在你可以直接问 Claude Code:“后端的 /api/users 接口返回什么格式?帮我写一个对应的 TypeScript 类型定义。”
它会去后端目录找到对应的接口定义,然后在前端项目里帮你生成类型文件。
场景三:参考开源项目
想参考某个开源项目的实现方式?把它也加进来:
/add-dir ~/projects/reference-project
然后你可以说:“看看这个项目的路由怎么实现的,我们的项目也参考这个方式来做。“
场景四:共享配置和文档
很多团队会把公共配置、设计规范、API 文档放在单独的仓库里:
/add-dir ~/team/design-system
/add-dir ~/team/api-docs
加进来之后,Claude Code 就能基于这些规范帮你写代码,保证风格一致。
实际使用技巧
技巧一:只加需要的目录
不要一口气把整个磁盘都加进去。添加的目录越多,Claude Code 搜索文件时的范围就越大,可能会影响效率。建议只添加当前任务确实需要的目录。
技巧二:配合提问明确来源
添加多个目录后,提问时最好指明你说的是哪个项目:
看看 shared 包里的 formatDate 函数是怎么实现的,然后在 frontend 项目里调用它
而不是含糊地说”帮我看看 formatDate”——多个目录中可能有同名文件或函数,明确来源能避免歧义。
技巧三:Monorepo 的最佳实践
如果你经常在 monorepo 里工作,最好的做法是在 monorepo 根目录启动 Claude Code,而不是在子包里启动。这样 Claude Code 天然就能看到所有子包的代码,不需要额外 /add-dir。
但如果你的 monorepo 特别大,几十上百个包,从根目录启动可能信息太多。这时候在子包里启动,按需 /add-dir 其他包反而更高效。
技巧四:用 —add-dir 写 alias
如果你每天都在同一组项目间切换,可以在 shell 配置里写一个 alias:
alias claude-fullstack="claude --add-dir ../backend ../shared"
以后在前端目录里直接敲 claude-fullstack,就会自动带上后端和共享库。比每次手动 /add-dir 省事多了。
技巧五:配合 CLAUDE.md 使用
如果你经常需要添加某个外部目录,可以在 CLAUDE.md 里提一下这个目录的作用和路径,方便 Claude Code 理解上下文。虽然 CLAUDE.md 不能自动添加目录,但它能帮 Claude Code 更好地理解你添加的目录是用来干什么的。
/add-dir vs —add-dir vs 在根目录启动
| /add-dir(交互模式) | —add-dir(启动参数) | 在根目录启动 | |
|---|---|---|---|
| 时机 | 对话过程中随时添加 | 启动时一次性指定 | 不需要额外操作 |
| 多目录 | 每次一个,多次执行 | 一次性指定多个 | 天然包含所有子目录 |
| 灵活性 | 最高,按需添加 | 中等,需要提前规划 | 固定的工作范围 |
| 适合场景 | 临时需要看其他项目 | 固定的多项目组合 | 中小型 monorepo |
我的经验是:
- 中小型 monorepo → 直接在根目录启动,省事
- 大型 monorepo → 在子包启动,
claude --add-dir指定需要的其他包 - 跨仓库协作 → 在主仓库启动,按需
/add-dir其他仓库 - 固定工作组合 → 用
--add-dir写成 alias,一个命令搞定
写在最后
/add-dir 是一个看起来不起眼但关键时刻能救命的命令。它解决的问题很朴素:让 Claude Code 的视野不再局限于一个目录。
现实中的开发工作很少只涉及一个目录。前后端分离、monorepo 多包、共享库依赖——这些场景下,Claude Code 只看一个目录是远远不够的。
下次遇到”要是 Claude Code 能看到另一个项目就好了”的时候,试试 /add-dir,给它多开一扇窗。
更多同类文章
- 我做了个机器人,让团队在飞书里用 Claude Code
- Claude Code /fast:同样的 Opus,两倍速——值不值?
- Claude Code /init:10 秒自动生成 CLAUDE.md
- Claude Code MCP:让 AI 连接 GitHub、数据库等一切工具
- Claude Code /model:Opus、Sonnet、Haiku 怎么选?
- Claude Code 使用指南:从安装到实战,一篇就够(2026)
- Claude 全家桶:从聊天到写代码到自动办公,一文讲清楚
- CCBot - 研发提效 24 倍
- 震惊!程序员用这个工具,4分钟干完95分钟的活!效率暴涨24倍
- Claude Code /compact:释放上下文,不丢进度
- Claude Code /btw 命令详解:不打扰主线的快问快答
- Claude Code /stats:看看 AI 到底帮你写了多少代码
- Claude Code /status 命令详解:一眼看清会话全貌
- AI-first 创业公司,为什么只需要一种编程语言?
- Claude Code 引用外部知识的最佳实践:GitHub MCP + Context7
- Claude Code 省 Token 小技巧:感叹号的妙用
- Claude Code /resume 命令详解:别让对话白聊
- Claude Code /usage 命令详解:你的额度还剩多少
- Claude Code /tasks 命令详解:后台任务尽在掌控
- Claude Code Skills 详解:打造你的专属命令库
- Claude Code /plan 详解:先想清楚再动手
- Claude Code /memory 详解:让 AI 真正记住你的项目
- cc-ping:一行命令 Ping 所有 Claude Code 配置