claude-code/docs/tools/what-are-tools.mdx
2026-04-01 15:21:46 +08:00

76 lines
3.0 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "工具系统设计 - AI 如何从说到做"
description: "深入理解 Claude Code 的 Tool 抽象设计。每个工具是标准化的能力单元,包含名称、描述、输入 Schema 和执行函数。了解工具注册与调用机制。"
keywords: ["工具系统", "Tool 抽象", "AI 工具", "function calling", "工具调用"]
---
{/* 本章目标:让读者理解 Tool 抽象的设计思想 */}
## AI 为什么需要工具
大语言模型本质上只能做一件事:**根据输入文本,生成输出文本**。
它不能读文件、不能执行命令、不能搜索代码。要让 AI 真正"动手",需要一个桥梁——这就是 **Tool**(工具)。
工具是 AI 的双手。AI 说"我想读这个文件"工具系统替它真正去读AI 说"我想执行这条命令",工具系统替它真正去跑。
## 一个工具长什么样
每个工具都是一个标准化的"能力单元",包含四个要素:
| 要素 | 说明 | 示例FileRead 工具) |
|------|------|----------------------|
| **名称** | 工具的唯一标识 | `Read` |
| **描述** | 告诉 AI 这个工具能做什么AI 据此决定是否使用) | "读取本地文件系统中的文件" |
| **参数定义** | 工具接受什么输入 | `file_path`(必填)、`offset`、`limit` |
| **执行逻辑** | 工具被调用时实际做什么 | 读取文件内容并返回 |
## AI 如何选择工具
AI 不是从下拉菜单里选工具——它是根据**工具描述**和**当前任务**自主决策的:
1. 系统把所有可用工具的名称、描述、参数告诉 AI
2. AI 在思考过程中决定"我需要用某个工具"
3. AI 生成一个结构化的工具调用请求(工具名 + 参数)
4. 系统执行工具,将结果返回给 AI
<Note>
工具描述的质量直接影响 AI 的决策准确性。一段好的描述不仅说明"能做什么",还说明"什么时候该用、什么时候不该用"。
</Note>
## 50+ 内置工具
Claude Code 内置了覆盖软件开发全流程的工具集:
<CardGroup cols={3}>
<Card title="文件操作" icon="file">
Read / Write / Edit / Glob / Grep / NotebookEdit
</Card>
<Card title="命令执行" icon="terminal">
Bash / PowerShell
</Card>
<Card title="对话管理" icon="comments">
Agent / SendMessage / AskUserQuestion
</Card>
<Card title="任务追踪" icon="list-check">
TaskCreate / TaskUpdate / TaskList / TaskGet
</Card>
<Card title="Web 能力" icon="globe">
WebFetch / WebSearch
</Card>
<Card title="规划与版本" icon="map">
EnterPlanMode / Worktree / TodoWrite
</Card>
</CardGroup>
## 工具的可视化渲染
工具不仅能"做事",还能"展示"。每个工具可以定义自己的 UI 渲染方式:
- **FileEdit** → 在终端里展示语法高亮的 diff 视图
- **Bash** → 实时显示命令输出,带进度指示
- **Grep** → 高亮匹配结果,显示文件路径和行号链接
- **Agent** → 显示子 Agent 的进度条和状态
这让用户能直观地看到"AI 在做什么、做到哪了"。