内置工具集
Tools 能力与组合用法。
内置工具集
这一课你将能做到
- 说出 Claude Code 内置工具的分工:Read/Edit/Write 管文件、Glob/Grep 管搜索、Bash 管命令、WebFetch/WebSearch 管网络、Task/TodoWrite 管编排
- 理解「Edit 前必先 Read」等安全设计,以及权限系统与 Hooks 如何作用在每个工具上
- 通过精准提示影响工具选择与效率,避免上下文浪费和重复失败
为什么要学
Claude Code 的一切能力最终都落到工具调用上。你看不懂它的工具,就看不懂它在干什么、为什么慢、为什么失败;你调不动工具权限,就管不住它的行为边界。这一课把引擎盖掀开:工具是「它的手」,权限是「闸门」,Hooks 是「卡口」,前面学的机制在这里串成一张网。理解工具集也是面试高频题——「agent 是怎么执行动作的」本质上就是在问工具调用机制。
人话:把 Claude Code 想成一个新员工,工具就是他的工位设备——眼睛(Read)、笔(Edit/Write)、放大镜(Grep)、通讯录(Glob)、终端(Bash)、浏览器(WebFetch)、外派名额(Task)。你不需要替他操作设备,但要懂每台设备能干什么、什么时候会卡壳。
先建立图像
┌─ 感知 ──────────────────────────────────────┐
│ Read 读文件(文本/图片/PDF/笔记本) │
│ Glob 按文件名模式找文件 **/*.java │
│ Grep 按内容正则搜代码(基于 ripgrep) │
├─ 行动 ──────────────────────────────────────┤
│ Edit 精确替换文件片段(改前必须先读) │
│ Write 新建/整体覆盖文件 │
│ Bash 执行 shell 命令(构建/测试/git…) │
│ WebFetch 抓取指定 URL 转 markdown │
│ WebSearch 搜索引擎查询(按环境可用性) │
├─ 编排 ──────────────────────────────────────┤
│ Task 启动子代理干专项活 │
│ TodoWrite 维护任务清单,拆步骤防遗漏 │
└──────────────────────────────────────────────┘
每一步都经过:权限闸门(allow/ask/deny)→ Hooks 卡口
跟着做
步骤 1:观察搜索策略(Glob vs Grep)
找出项目里所有名为 *Controller.java 的文件,并列出其中定义的接口路径
观察过程:它先 Glob 按文件名定位,再 Grep 按内容搜 @RequestMapping。记住这条经验:知道文件名找文件用 Glob,知道内容找位置用 Grep。
步骤 2:观察「读后改」约束
把 OrderService 里所有的 System.out.println 换成 log.info
注意它的动作序列:Read(整读目标文件)→ Edit(逐处替换)。让它改一个它没读过的文件是低效且易错的——Edit 要求基于已读内容做精确匹配,这是防止盲改的安全设计。
步骤 3:给它「看图」的能力
(在输入框直接粘贴一张报错截图)
这个异常栈指向的问题在哪?
Read 支持读取图片,多模态让它能直接看截图、设计稿、PDF。对前端像素级还原、后端异常排查都是杀手级场景。
步骤 4:用 @ 引用减少它的摸索
@src/main/java/com/demo/order/OrderService.java 第 88 行附近为什么会 NPE?
带路径 + 行号的提示,让它一步 Read 到位,省掉数轮 Glob/Grep 探索。你每提供一条精确线索,就省它三轮工具调用。
步骤 5:限制它的工具箱
# 启动时禁用某工具
claude --disallowedTools "WebSearch"
或在 settings.json 的 deny 中写 WebFetch。让审查类任务在无网络环境下跑,结果更聚焦也更安全。