工具类型与工作目录范围
它能做的事分五类。搞清楚哪些不问你就做、哪些一定会问,比逐个记工具名有用得多。
上一节讲怎么交办。这一节讲它到底有哪些本事,以及这些本事能伸到哪里。
五类本事
内置工具有四十多个,但按「它能对你的东西做什么」分,只有五类。
一、看(不问你就做)
读文件、按名字找文件、按内容搜文件。
这三件事在你的工作目录范围内不会问你,直接做。
为什么不问:它们不改变任何东西。要它做事又不让它看,等于让人闭着眼睛干活。
但超出工作目录范围就会问你——这是边界所在。
二、改(每次都问)
编辑文件、新建或覆盖文件、改 Jupyter 笔记本。
这一类每次都会问你,除非你切换了权限模式。
有一条值得知道的规则:它编辑一个文件之前,必须先读过这个文件。这不是礼貌,是硬性检查——防止它凭印象改一个自己没看过的文件。
三、执行(会问,但有例外)
跑 shell 命令。
这是威力最大也最需要留神的一类。默认会问你,但有一批内置的只读命令不问:
ls cat echo pwd head tail grep find wc which diff stat du cd
以及 git 的只读形式(比如 git status、git log)。
这个名单是内置的,不能配置。 它的逻辑是:这些命令只看不改。
几件关于执行的事,知道了会少踩坑:
| 每条命令是独立进程 | 上一条里的 export 在下一条里不存在 |
但 cd 会延续 |
只要没跑出工作目录范围 |
| 你的 shell 别名可用 | 启动时会读 ~/.zshrc / ~/.bashrc 里的别名和函数 |
| 超时会转后台 | 默认两分钟,超了不是失败,是移到后台继续跑 |
| 输出太大写成文件 | 大约三万字符以内直接给它,超了给它一个文件路径 |
四、上网(会问)
抓一个网页、搜一下。
两个都会问你,第一次访问某个域名时提示。
关于抓网页有两件事值得知道:
① 它拿到的不是原页面。 页面会被转成 Markdown 再交给一个小而快的模型处理。这个转换是有损的,而且不可配置。所以复杂的页面(图表、交互内容、需要登录的)它读不全。
② 结果缓存 15 分钟。 同一个地址短时间内反复抓,拿到的是同一份。
关于搜索:它只返回标题和链接,不会自动去读那些页面。要读得再抓一次。每个会话最多搜 200 次。
更完整的上网机制,见让它上网查资料。
五、派活(不问你)
开一个子代理去干一件事。
开子代理本身不需要你批准,但子代理干活时该问的还是会问,提示会出现在你的主会话里。
子代理的价值是隔离:它有自己独立的上下文空间,读了一堆材料也不会占用你这边。只有最后那段结论会回到你的对话里。
完整用法在第 05 章的子代理:任务隔离与主会话上下文保护。
一张速查表
| 你想让它 | 会不会问你 |
|---|---|
| 读文件、搜内容、找文件 | 不问(范围内) |
| 读文件(范围外) | 会问 |
| 改文件、写文件 | 会问 |
跑 ls cat grep 这类只读命令 |
不问 |
| 跑其他命令 | 会问 |
| 抓网页、搜索 | 会问 |
| 开子代理 | 不问 |
这张表是默认模式下的行为。 改变它的办法见权限模式与授权有效期。
工作目录范围
默认情况下,它只能碰你启动它的那个文件夹(以及它的子文件夹)。
这是最基础的一道边界。
需要它同时看另一个文件夹
临时加进来(只对当前会话有效):
/add-dir /path/to/另一个文件夹
启动时加:
claude --add-dir /path/to/另一个文件夹
加进来的目录,文件权限规则和原来那个一样:范围内可读不问,编辑跟随当前权限模式。
/add-dir 和 /cd 不是一回事
这两个经常被搞混,差别很实际:
/add-dir |
/cd |
|
|---|---|---|
| 做什么 | 多给一个能碰的地方 | 整个搬过去 |
| 加载新目录的规则文件 | 默认不加载 | 加载 |
之后 --resume 从哪找会话 |
原来的地方 | 新地方 |
一句话:想让它顺便看一眼另一个文件夹,用
/add-dir;换了个项目要开始干另一件事,用/cd。
一条容易踩空的规则
用 /add-dir 加进来的目录,只给文件访问权,不加载那个目录的配置。
也就是说:那个目录里如果有一份 CLAUDE.md 写着重要的规则,默认不会生效。
这一条是设计如此,不是 bug。 加一个目录进来是为了看文件,不是为了让那个目录来改变你这个会话的行为规则。
确实需要加载的话,要显式打开一个环境变量。但更常见的正确做法是用
/cd整个搬过去。
权限规则不是靠说话生效的
这一条值得单独强调,因为它决定了你该往哪儿使劲:
权限是 Claude Code 这个程序在管,不是模型在管。
你在提示词里写「不要删任何文件」、在
CLAUDE.md里写「禁止执行 rm」——这些会影响它想做什么,但不改变程序允许它做什么。
要真正挡住一件事,得用权限规则。 见下一节。
本节事实查证日期:2026-08-05。 依据:官方 Tools reference 与 Configure permissions。