🔧

工具系统

Claude Code 40+ 内置工具的深度剖析 —— 接口设计、注册机制、14步治理流水线与继承体系

核心架构

工具系统概述

AI 与真实环境交互的桥梁

Claude Code 的核心是工具系统。它提供了 40+ 内置工具, 让 AI 能够与真实环境进行交互——读写文件、执行命令、搜索代码、访问网络、管理任务。 每一个工具都实现了统一的 Tool<Input, Output, P> 接口契约。

工具系统是 Claude Code 与传统 AI 聊天机器人的本质区别。通过工具系统, Claude 不再只能生成文本建议,而是能够直接操作文件系统、运行命令、搜索网络, 真正成为开发者的编程助手。

工具分类架构

Tool RegistryBashToolFileReadToolFileEditToolFileWriteToolGlobToolGrepToolWebSearchToolWebFetchTool

Tool 接口定义

所有工具的统一契约

每一个工具都遵循统一的 Tool<Input, Output, P> 类型接口。这个泛型接口定义了工具的名称、描述、输入校验、核心执行函数、 权限检查和并发安全性声明,是整个工具系统的基石。

Tool<Input, Output, P> 接口结构

标识描述校验执行只读并发权限开关Tool<I, O, P>name: stringdescription()inputSchema: Zodcall(args, ctx)isReadOnly()isConcurrencySafe()checkPermissions()isEnabled()

字段详解

name

工具的全局唯一标识符,Claude 通过名称匹配调用对应的工具。支持 aliases 别名回退兼容。

description

动态描述函数,根据输入参数生成上下文相关的描述,帮助 Claude 理解工具能力

inputSchema

基于 Zod 的输入 Schema,定义参数类型和约束,在执行前自动校验输入合法性

call

核心执行函数,接收校验后的参数和运行时上下文,返回工具执行结果

isReadOnly

声明工具是否为只读操作。只读工具可并发执行,写操作工具必须串行执行

isConcurrencySafe

声明工具是否并发安全。影响工具在 agentic 循环中的调度策略

checkPermissions

权限检查函数,在执行前验证用户是否有权调用此工具并传入给定参数

isEnabled

检查当前环境是否启用此工具。受 feature flag、配置和运行模式影响

工具注册机制

从声明到可用的完整链路

工具注册分为两个阶段: getAllBaseTools() 负责组装所有内置工具的基础列表, getTools() 则根据当前权限上下文过滤并返回最终可用的工具集合。

两阶段注册管线

过滤过滤AgentToolBashToolFile*ToolsSearchToolsTaskToolsCronToolsMCPTool...更多getAllBaseTools()isEnabled?Permission?getTools(ctx)
1
统一入口

所有工具通过同一个函数注册,MCP 外部工具在注册后享有与内置工具完全相同的调用接口

2
动态过滤

根据运行环境、用户配置和权限模式动态决定哪些工具可用

3
延迟绑定

工具的具体实现在调用时才绑定执行上下文,允许同一个工具定义在不同会话中复用

14 步工具治理流水线

从 Claude 决策到结果返回的完整治理管道

当 Claude 在 agentic 循环中决定调用工具时,请求会经过 14 个治理步骤。 每个步骤都有明确的职责——从工具发现、参数校验、权限检查到执行、钩子和可观测性。 这个流水线确保每一次工具调用都是安全、可追踪、可审计的。

发起
发现
校验
权限
钩子
可观测
执行
结果
1

Claude API

2

findToolByName

3

safeParse

4

validateInput

5

Deny Rules

6

Allow Rules

7

User Consent

8

Pre-Tool Hooks

9

telemetry.start

10

tool.call()

11

Post-Tool Hooks

12

telemetry.end

13

mapResult

14

Context Mod

1
Claude APIinitiate

tool_use blocks

2
findToolByNamediscovery

注册表查找 + 别名回退

3
safeParsevalidation

Zod Schema 类型校验

4
validateInputvalidation

工具特定业务校验

5
Deny Rulespermission

黑名单规则匹配

6
Allow Rulespermission

白名单规则匹配

7
User Consentpermission

auto/manual 用户确认

8
Pre-Tool Hookshooks

PreToolUse 钩子执行

9
telemetry.startobservability

OpenTelemetry span 开始

10
tool.call()execution

核心执行逻辑

11
Post-Tool Hookshooks

PostToolUse 钩子执行

12
telemetry.endobservability

OpenTelemetry span 结束

13
mapResultresult

结果序列化与截断

14
Context Modresult

上下文修改器应用

工具调用执行流程(简化)
typescript
1// 1. Claude API 返回 tool_use
2const toolUseBlocks = response.content
3 .filter(b => b.type === 'tool_use')
步骤 1/6

Claude API 响应中包含 tool_use 块

工具继承树

所有工具共享统一的 Tool 接口,各自实现领域逻辑

Claude Code 没有使用传统的类继承,而是采用 组合式接口设计。 所有工具都实现相同的 Tool<I, O, P> 类型, 每个工具通过模块化的子文件组织领域逻辑。 点击分类可展开查看该工具的模块组成。

工具模块化组成示例

Tool<I, O, P>← 所有工具的统一接口
BashTool
bashSecuritypathValidationsedEditParserdestructiveCommandWarning
FileReadTool
PDF parsingline rangeencoding detection
FileEditTool
string replacementconflict detection
FileWriteTool
file creationfull overwrite
GlobTool
pattern matching
GrepTool
regex searchcontext lines
WebFetchTool
HTML→markdowncontent extraction
WebSearchTool
internet searchresult ranking
AgentTool
sub-agent spawnmemory snapshotfork
NotebookEditTool
cell editingkernel support
MCPTool
server proxyMCP protocol
SkillTool
script executionskill registry

工具生命周期

从注册到审计的完整生命周期管理

每个工具经历从注册、发现、权限检查、参数验证、执行到审计的完整生命周期。 以下展示生命周期的各个阶段及其对应的源码位置。

工具生命周期

① 注册 getAllBaseTools()② 发现 getTools(ctx)③ 权限 checkPermissions()④ 校验 safeParse + validateInput⑤ Pre-Hooks runPreToolUseHooks⑥ 执行 tool.call()⑦ Post-Hooks runPostToolUseHooks⑧ 审计 telemetry + analytics⑨ 结果 mapResult → Claude
注册阶段
getAllBaseTools() → getTools()

工具在启动时注册到全局列表,运行时根据 isEnabled 和权限过滤。源码:tools.ts

验证阶段
safeParse → validateInput → checkPermissions

Zod 类型校验 → 工具业务校验 → deny/allow/consent 权限检查。源码:toolExecution.ts

执行阶段
Pre-Hooks → call() → Post-Hooks

钩子执行 → 核心逻辑 → 结果处理。完整可观测性通过 OpenTelemetry 实现。源码:toolOrchestration.ts

核心工具详解

按类别一览所有内置工具

Claude Code 的 40+ 内置工具覆盖了文件操作、系统交互、搜索、智能体管理、任务调度等多个领域。 以下按类别展示每个工具的核心信息和并发特性。

文件操作

5 tools
FileReadTool
READCONCURRENT

读取文件内容,支持行号范围和 PDF 页码

FileWriteTool
WRITESERIAL

创建或完全覆盖文件

FileEditTool
WRITESERIAL

精确字符串替换编辑文件

GlobTool
READCONCURRENT

基于 glob 模式搜索文件路径

NotebookEditTool
WRITESERIAL

编辑 Jupyter Notebook 单元格

系统交互

3 tools
BashTool
WRITESERIAL

执行 shell 命令并捕获输出

LSPTool
READCONCURRENT

与语言服务协议交互,获取类型信息

PowerShellTool
WRITESERIAL

Windows PowerShell 命令执行

搜索

4 tools
GrepTool
READCONCURRENT

基于正则表达式搜索文件内容

WebSearchTool
READCONCURRENT

搜索互联网获取最新信息

WebFetchTool
READCONCURRENT

抓取并解析网页内容

ToolSearchTool
READCONCURRENT

搜索和发现延迟加载的工具

智能体管理

2 tools
AgentTool
WRITESERIAL

生成子代理执行子任务

SendMessageTool
WRITESERIAL

代理间消息传递与通信

任务管理

6 tools
TaskCreateTool
WRITESERIAL

创建新任务到任务列表

TaskUpdateTool
WRITESERIAL

更新任务状态和属性

TaskListTool
READCONCURRENT

列出所有任务概览

TaskGetTool
READCONCURRENT

获取单个任务完整详情

TaskStopTool
WRITESERIAL

停止正在执行的任务

TaskOutputTool
READCONCURRENT

获取任务输出结果

团队协调

2 tools
TeamCreateTool
WRITESERIAL

创建团队并初始化任务列表

TeamDeleteTool
WRITESERIAL

删除团队并清理资源

计划模式

2 tools
EnterPlanModeTool
READCONCURRENT

进入计划模式,仅做分析不修改文件

ExitPlanModeV2Tool
WRITESERIAL

退出计划模式,开始执行

调度与定时

4 tools
CronCreateTool
WRITESERIAL

创建定时任务(一次性或循环)

CronDeleteTool
WRITESERIAL

取消已创建的定时任务

CronListTool
READCONCURRENT

列出所有已创建的定时任务

RemoteTriggerTool
WRITESERIAL

远程触发工具执行

MCP 与扩展

4 tools
ListMcpResourcesTool
READCONCURRENT

列出 MCP 服务器可用资源

ReadMcpResourceTool
READCONCURRENT

读取 MCP 服务器资源内容

MCPTool
WRITESERIAL

MCP 外部工具统一代理

SkillTool
WRITESERIAL

执行 Claude Code Skill 脚本

配置与交互

3 tools
ConfigTool
WRITESERIAL

读取和修改应用配置项

AskUserQuestionTool
READCONCURRENT

向用户提问并获取回答

TodoWriteTool
WRITESERIAL

管理 Todo 列表

Worktree

2 tools
EnterWorktreeTool
WRITESERIAL

进入 Git Worktree 工作目录

ExitWorktreeTool
WRITESERIAL

退出当前 Worktree

工具执行流程

从 Claude 决策到工具执行的完整管道

当 Claude 在 agentic 循环中决定调用一个工具时,请求会经历查找、验证、权限检查、 执行四个核心阶段。每个阶段都有明确的职责和错误处理策略,确保工具调用安全可靠。

工具调用执行流程

校验失败拒绝1. Claude APItoolCalls[].name2. 查找工具Zod Schema 校验3. 权限检查deny/allow/consent4. 执行工具tool_result错误处理
Step 1: Claude API 响应

Claude API 响应中包含工具调用请求,指定工具名称和输入参数。Claude 根据对话上下文自主决定是否需要调用工具以及调用哪个工具。

Step 2: 查找与校验

从工具注册表中查找目标工具。找到后使用 Zod Schema 验证输入参数的合法性,包括类型检查、必填字段校验和值约束验证。

Step 3: 权限检查

检查工具权限:先检查 deny 规则(黑名单),再检查 allow 规则(白名单),最后根据权限模式决定是否弹出用户授权对话框。

Step 4: 执行与反馈

工具执行核心逻辑并返回结果。只读工具可并发执行以提升效率,写操作串行执行以保证数据一致性。结果反馈给 Claude 继续推理。

并发控制

只读并发、写入串行的智能调度

Claude Code 的工具调度器根据每个工具声明的 isConcurrencySafe 属性进行智能调度。partitionToolCalls() 将多个工具调用分为并发批和串行批。

并发调度策略:partitionToolCalls()

safe=truesafe=falsenextnextTool Calls[]partitionToolCalls()并发通道FileReadToolGlobToolGrepToolrunToolsConcurrently()串行通道FileWriteToolFileEditToolBashToolrunToolsSerially()
并发执行
READ-ONLY 工具

FileReadTool, GlobTool, GrepTool, WebSearchTool, WebFetchTool, TaskListTool

多个只读工具调用可以同时发起,充分利用 I/O 等待时间。最大并发数由 CLAUDE_CODE_MAX_TOOL_USE_CONCURRENCY 控制(默认 10)。

串行执行
WRITE 工具

FileWriteTool, FileEditTool, BashTool, AgentTool, TaskCreateTool

写操作工具必须按顺序逐一执行,避免竞态条件和数据冲突。每个写操作完成后,后续操作可以看到前序操作的结果。

权限系统

四层防护的安全模型

工具系统的安全性由四层权限检查机制保障。每一层都有不同的职责和粒度, 从全局的功能开关到细粒度的用户确认,构建了纵深防御的安全体系。 详细权限机制见 权限系统页面

四层权限检查纵深防御

enabledno ruleapprovedrejectedmatcheddisabled工具调用请求L1: Feature FlagsL2: Permission ModesL3: Tool Rulesdeny 规则allow 规则L4: User ConsentALLOWDENY
1
Feature Flags功能开关层

通过 feature flag 系统控制工具的全局启用状态。新工具首先通过 flag 控制,经过充分测试后才默认启用。

2
Permission Modes权限模式层

三种权限模式:auto 模式自动批准安全操作;manual 模式对所有敏感操作弹出确认;bypass 模式用于 CI/CD。

3
Tool-Specific Rules工具级规则层

基于 deny/allow 规则列表进行细粒度控制。规则支持通配符匹配。详见 /permissions。

4
User Consent用户确认层

在 manual 模式下,敏感操作弹出交互式确认对话框。用户可一次性批准,也可选择'本次会话始终允许'。