侧边栏壁纸
博主头像
川科智源

行动起来,活在当下

  • 累计撰写 8 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Claude Code 核心工具全解析

理解六大内置工具,掌握 Claude Code 的真正威力

写在前面

说实话,上一篇我们认识了 Claude Code 的基本概念,装好了环境。

但你可能会疑惑:"Claude Code 到底能干什么?"

答案很简单:它手里有六把"钥匙"——六个内置工具。理解了这六个工具,你就理解了 Claude Code 的全部能力边界。

这篇文章,我们来逐一拆解这些工具,看看它们各自能干什么,以及一些你可能不知道的高级用法。


一、工具总览:Claude 的"工具箱"

先看一张图:

┌─────────────────────────────────────────────────────────────────┐
│                     Claude Code 工具箱                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐                       │
│  │   Read   │  │   Edit   │  │  Write   │   ← 文件操作           │
│  │  读文件  │  │  改文件  │  │  写文件  │                        │
│  └──────────┘  └──────────┘  └──────────┘                       │
│                                                                 │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐                       │
│  │   Bash   │  │   Grep   │  │   Glob   │   ← 搜索/执行         │
│  │ 执行命令 │  │ 内容搜索 │  │ 文件搜索 │                        │
│  └──────────┘  └──────────┘  └──────────┘                       │
│                                                                 │
│  ┌──────────┐  ┌──────────┐                                     │
│  │   Task   │  │ WebFetch │   ← 高级能力                        │
│  │ 子代理   │  │ 网页获取 │                                      │
│  └──────────┘  └──────────┘                                     │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

你不需要手动调用这些工具——告诉 Claude 你想干什么,它会自己选择合适的工具。

但理解它们的原理,能帮你写出更好的指令。


二、Read:读文件的"眼睛"

2.1 基本用法

Read 是最基础的工具,让 Claude 能看到你的代码。

你不需要说"用 Read 工具读取 xxx",只需要说:

> 看看 src/auth/login.ts 这个文件

Claude 会自动:

  1. 读取文件内容
  2. 理解代码结构
  3. 回答你的问题

2.2 智能读取:Claude 会自己找重点

大文件怎么办?

Claude 不会一次性读取整个文件,而是智能选择关键部分:

┌────────────────────────────────────────────────────────────┐
│                    大文件读取策略                           │
├────────────────────────────────────────────────────────────┤
│                                                            │
│  文件大小 < 2000 行                                        │
│  └─→ 全部读取                                              │
│                                                            │
│  文件大小 > 2000 行                                        │
│  ├─→ 优先读取:导入语句、函数签名、类定义                  │
│  ├─→ 按需读取:你问到的具体函数                            │
│  └─→ 跳过:注释、空行、import 列表                         │
│                                                            │
└────────────────────────────────────────────────────────────┘

实战技巧:如果文件很大,指定你想看的部分:

> 看 src/huge-file.ts 的 handleRequest 函数

这样 Claude 会直接跳到那个函数,而不是从头开始读。

2.3 高级用法:指定行范围

你可以说得更精确:

> 读 src/main.ts 的 50-100 行

Claude 会只读取那个范围,节省 token。


三、Edit:改文件的"手术刀"

3.1 基本用法

Edit 用于修改现有文件,它是最常用的工具之一。

你只需要描述你想改什么

> 把 src/auth/login.ts 的 login 函数改成支持 remember me 参数

Claude 会:

  1. 读取文件
  2. 找到 login 函数
  3. 精准修改
  4. 保持其他代码不变

3.2 Edit 的"精准"原则

Edit 工具不是简单的"全文替换",它是精准定位替换

┌────────────────────────────────────────────────────────────┐
│                    Edit 工作原理                            │
├────────────────────────────────────────────────────────────┤
│                                                            │
│  1. Claude 找到要修改的代码片段(old_string)              │
│  2. 用新代码片段(new_string)替换它                       │
│  3. 如果 old_string 不唯一,Claude 会找更多上下文          │
│                                                            │
│  示例:                                                    │
│  ┌─────────────────────────────────────────────┐          │
│  │  old_string:                                │          │
│  │    function login(user, pwd) {              │          │
│  │      return authenticate(user, pwd);        │          │
│  │    }                                        │          │
│  │                                             │          │
│  │  new_string:                                │          │
│  │    function login(user, pwd, remember) {    │          │
│  │      return authenticate(user, pwd,         │          │
│  │                          remember);         │          │
│  │    }                                        │          │
│  └─────────────────────────────────────────────┘          │
│                                                            │
└────────────────────────────────────────────────────────────┘

这有什么好处?

  • 不会误改同名函数
  • 保持代码格式
  • 只改需要改的部分

3.3 高级用法:批量修改

Claude 可以一次修改多处:

> 把项目中所有 console.log 改成 logger.debug

Claude 会:

  1. 用 Grep 搜索所有 console.log
  2. 逐个文件修改
  3. 确保不误改注释中的 console.log

四、Write:写文件的"笔"

4.1 基本用法

Write 用于创建新文件或完全覆盖现有文件。

典型用法

> 创建一个 src/utils/date.ts,写一个日期格式化函数

Claude 会:

  1. 分析你的项目风格(TypeScript?JavaScript?)
  2. 创建符合风格的文件
  3. 写出可用的代码

4.2 Write vs Edit:什么时候用哪个?

┌────────────────────────────────────────────────────────────┐
│                 Write vs Edit 选择指南                     │
├────────────────────────────────────────────────────────────┤
│                                                            │
│  用 Write 当:                                             │
│  ├─ 文件不存在,需要新建                                   │
│  ├─ 文件内容需要完全重写                                   │
│  └─ 创建配置文件、README 等                                │
│                                                            │
│  用 Edit 当:                                              │
│  ├─ 文件已存在,只需修改部分内容                           │
│  ├─ 需要保持现有代码结构                                   │
│  └─ 修复 bug、添加功能                                     │
│                                                            │
│  Claude 会自己判断用哪个,你不用担心                       │
│                                                            │
└────────────────────────────────────────────────────────────┘

4.3 安全机制:不会意外覆盖

Claude 在用 Write 覆盖现有文件前会先读取,确认文件内容后再覆盖。

这防止了:

  • 意外覆盖重要文件
  • 丢失未保存的工作

五、Bash:执行命令的"手"

5.1 基本用法

Bash 让 Claude 能在你的终端执行命令。

典型用法

> 运行测试
> 安装依赖
> 启动开发服务器

Claude 会:

  1. 选择正确的命令(npm test?pytest?)
  2. 执行命令
  3. 分析输出
  4. 如果失败,尝试修复

5.2 安全边界

Claude 不会随意执行危险命令

┌────────────────────────────────────────────────────────────┐
│                    Bash 安全策略                            │
├────────────────────────────────────────────────────────────┤
│                                                            │
│  默认需要确认的命令:                                      │
│  ├─ rm -rf                                                 │
│  ├─ git push --force                                       │
│  ├─ npm publish                                            │
│  └─ 任何修改系统配置的命令                                 │
│                                                            │
│  永远不会执行的命令:                                      │
│  ├─ 访问敏感文件(~/.ssh, ~/.gnupg)                       │
│  ├─ 修改系统设置                                           │
│  └─ 发送网络请求到未知地址                                 │
│                                                            │
└────────────────────────────────────────────────────────────┘

5.3 高级用法:链式命令

Claude 可以执行复杂的命令链:

> 帮我清理 node_modules 重新安装,然后运行测试

Claude 会执行:

rm -rf node_modules
rm package-lock.json
npm install
npm test

5.4 实战技巧:让 Claude 帮你跑命令

有些命令太长记不住?让 Claude 帮你:

> 帮我查一下 git 怎么撤销最近一次 commit 但保留修改

Claude 不仅告诉你命令,还能帮你执行。


六、Grep:内容搜索的"放大镜"

6.1 基本用法

Grep 用于在文件内容中搜索。

你不需要说"用 Grep",只需要说:

> 找一下项目中哪里用到了 axios

Claude 会自动用 Grep 搜索,然后告诉你结果。

6.2 Grep 支持正则表达式

> 找一下所有的 TODO 或 FIXME 注释

Claude 会用正则 (TODO|FIXME) 搜索。

6.3 高级用法:过滤搜索

你可以指定搜索范围:

> 在 src/api 目录下找所有的 fetch 调用

Claude 会限定搜索范围,加快速度。


七、Glob:文件搜索的"探测器"

7.1 基本用法

Glob 用于按文件名模式搜索文件。

典型用法

> 列出所有的 TypeScript 文件
> 找一下所有的测试文件
> 看看项目里有多少个组件

7.2 Glob 模式语法

┌────────────────────────────────────────────────────────────┐
│                    Glob 模式速查                            │
├────────────────────────────────────────────────────────────┤
│                                                            │
│  模式              匹配                                    │
│  ────────────────────────────────────────────             │
│  *.ts              所有 .ts 文件                           │
│  **/*.ts           任意目录下的 .ts 文件                   │
│  src/**/*.test.ts  src 目录下的测试文件                    │
│  *.{ts,tsx}        .ts 或 .tsx 文件                        │
│  src/**/           src 下的所有目录                        │
│                                                            │
└────────────────────────────────────────────────────────────┘

7.3 实战用法

快速了解项目结构

> 用文件列表告诉我这个项目的结构

Claude 会用 Glob 列出关键文件,给你一个项目概览。


八、工具协作:真正的威力

单个工具固然有用,但真正的威力在于工具之间的协作

8.1 典型协作模式

场景:重构一个函数

> 重构 src/utils/format.ts 的 formatDate 函数,让它更易读

Claude 的执行流程:

┌────────────────────────────────────────────────────────────┐
│                    工具协作流程                             │
├────────────────────────────────────────────────────────────┤
│                                                            │
│  1. Read                                                   │
│     └─→ 读取 src/utils/format.ts                           │
│                                                            │
│  2. Grep                                                   │
│     └─→ 找到所有调用 formatDate 的地方                      │
│                                                            │
│  3. Edit                                                   │
│     └─→ 重构 formatDate 函数                               │
│                                                            │
│  4. Edit (多次)                                            │
│     └─→ 更新所有调用处的参数(如果签名变了)               │
│                                                            │
│  5. Bash                                                   │
│     └─→ 运行测试,确保没改坏                               │
│                                                            │
└────────────────────────────────────────────────────────────┘

一个指令,五个工具协作。这就是 Claude Code 的威力。

8.2 复杂协作示例

场景:添加一个新功能

> 添加一个用户头像上传功能,包括前端组件和后端 API

Claude 会:

  1. Glob - 找到现有的 API 和组件结构
  2. Read - 读取相关文件,理解项目风格
  3. Write - 创建新的 API 端点
  4. Write - 创建新的前端组件
  5. Edit - 在路由中注册新 API
  6. Edit - 在页面中引入新组件
  7. Bash - 运行类型检查和测试

一个指令,从零到完整功能。


九、高级技巧:让工具更好用

9.1 提供上下文

越具体的指令,效果越好:

# 不好的指令
> 改一下登录

# 好的指令
> 在 src/auth/login.ts 中,给 login 函数添加一个 rememberMe 参数,
  默认为 false。记得更新类型定义和测试。

9.2 利用 CLAUDE.md

在项目根目录创建 CLAUDE.md,告诉 Claude 项目的特殊规则:

# 项目说明

## 命名规范
- 组件用 PascalCase
- 工具函数用 camelCase

## 禁止
- 不要修改 src/generated 目录
- 所有 API 调用必须经过 src/api/client.ts

这样 Claude 在使用工具时会遵守这些规则。

9.3 分步骤复杂任务

对于大型任务,可以分步骤:

> 第一步:分析 src/legacy 目录的代码结构

> (等 Claude 完成)

> 第二步:找出需要重构的函数

> (等 Claude 完成)

> 第三步:重构 formatDate 函数

这样你可以每一步确认,避免 Claude 走偏。


十、工具使用速查表

工具 用途 触发关键词
Read 读取文件 "看看"、"读一下"、"这个文件"
Edit 修改文件 "改一下"、"修改"、"重构"
Write 创建文件 "创建"、"新建"、"写一个"
Bash 执行命令 "运行"、"安装"、"执行"
Grep 内容搜索 "找一下"、"搜索"、"哪里用到"
Glob 文件搜索 "列出"、"所有文件"、"项目结构"

十、效果验证

学完本篇,你应该能够完成以下任务:

验证清单

  • 用自然语言让 Claude 读取文件
  • 用自然语言让 Claude 修改文件
  • 用自然语言让 Claude 创建新文件
  • 用自然语言让 Claude 执行命令
  • 用自然语言让 Claude 搜索代码

动手练习(5分钟)

打开一个你的项目,依次测试以下指令:

测试 Read

> 读取项目的 package.json,告诉我有哪些依赖

测试 Edit

> 在 README.md 末尾添加一行:最后更新时间:[今天日期]

测试 Write

> 创建一个 notes.txt 文件,写入「这是 Claude Code 创建的测试文件」

测试 Bash

> 运行 git status,告诉我当前分支和文件状态

测试 Grep

> 搜索项目中所有的 TODO 注释

测试 Glob

> 列出项目中所有的 TypeScript 文件

综合测试

让 Claude 完成一个需要多个工具协作的任务:

> 分析 src 目录下最大的文件,告诉我它的行数和主要功能

这个任务需要 Claude:

  1. 用 Glob 找到所有文件
  2. 用 Bash 统计行数
  3. 用 Read 理解功能

如果 Claude 顺利完成,说明你已经理解了工具协作的原理。


十一、总结与下期预告

本文要点

  1. 六个工具,六个能力:读、改、写、执行、搜索内容、搜索文件
  2. 工具会自动协作:你只需要描述目标,Claude 自己决定用哪些工具
  3. 安全机制:危险操作需要确认,敏感文件禁止访问
  4. 上下文很重要:越具体的指令,效果越好

下期预告

下一篇,我们深入讲解 CLAUDE.md

  • 怎么写:从零开始配置项目上下文
  • 最佳实践:让 Claude 真正理解你的项目
  • 常见问题:为什么 Claude 总是不按我的规范来?
  • 进阶技巧:用 .claude/rules/ 组织复杂规则

敬请期待!


附录:常见问题

Q1:Claude 读文件时会不会泄露我的代码?

不会。Claude 读取的文件只在当前会话中使用,不会被存储或用于其他目的。

Q2:Bash 执行命令会不会有安全隐患?

Claude Code 有多层安全机制:

  • 敏感命令需要确认
  • 敏感文件禁止访问
  • 可以通过配置限制可执行的命令

Q3:文件太大怎么办?

Claude 会智能选择读取关键部分。你也可以:

  • 指定读取的函数或类
  • 指定行范围
  • 让 Claude 先用 Grep 找到关键位置

Q4:工具执行失败怎么办?

Claude 会:

  1. 分析错误信息
  2. 尝试修复问题
  3. 如果无法修复,告诉你原因和建议

本篇属于 Claude Code 提效系列第 2 篇
下期预告:CLAUDE.md:让 Claude 懂你的项目


创建时间:2026-02-14
参考文档:Claude Code 中文文档

0

评论区