核心系统

工具系统

45 个工具,3 种执行模式,AI 的瑞士军刀

~7 分钟阅读

0+

内置工具

0

工具类别

0

实现代码行数

想象 Claude 是一个装修工人,工具系统就是它的工具箱。

当你说"帮我修复这个 bug",Claude 不是凭空回答,而是打开工具箱:用搜索工具找到相关代码,用文件读取工具查看内容,用编辑工具修改代码,用 Bash 工具运行测试。它自己选择用哪个工具,用什么顺序。

更聪明的是:同时可以搜索多个文件(并行),但修改文件必须一个一个来(串行),避免把事情搞乱。

工具目录 #

悬停查看每个工具的功能

Shell 执行

3 个
Bash
PowerShell
REPL

文件操作

6 个
Read
Write
Edit
NotebookEdit
EnterWorktree
ExitWorktree

搜索与发现

3 个
Glob
Grep
ToolSearch

网络访问

2 个
WebFetch
WebSearch

Agent 与协调

6 个
Agent
SendMessage
TeamCreate
TeamDelete
Skill
RemoteTrigger

任务管理

7 个
TaskCreate
TaskUpdate
TaskList
TaskGet
TaskOutput
TaskStop
TodoWrite

MCP 协议

4 个
MCPTool
ListMcpResources
ReadMcpResource
McpAuth

配置与 IDE

11 个
Config
AskUserQuestion
CronCreate
LSP
EnterPlanMode
ExitPlanMode
CronDelete
CronList
Sleep
StructuredOutput
Brief

执行流程 #

一个工具调用从解析到返回的完整过程

允许

调度策略 #

读并行,写串行 — 点击运行查看效果

工具调度模拟器

阶段 1 — 读操作(并行)

Glob('*.ts')
Grep('TODO')
Read('main.tsx')

阶段 2 — 写操作(串行)

Edit('main.tsx')
Write('test.ts')
Bash('npm test')

核心代码 #

工具调度的简化实现

src/tools.ts工具注册
第 1 步 / 共 5 步
1// src/tools.ts — Tool registration with feature gates
2export function getAllBaseTools(): Tool[] {
3 return [
4 // File system tools (always enabled)
5 new ReadTool(),
6 new WriteTool(),
7 new EditTool(),
8 new GlobTool(),
9 new GrepTool(),
10
11 // Bash execution
12 new BashTool(),
13
14 // Feature-gated tools
15 ...(feature("notebooks") ? [new NotebookEditTool()] : []),
16 ...(feature("mcp") ? [new McpTool()] : []),
17
18 // Internal-only tools (runtime check)
19 ...(process.env.USER_TYPE === "internal"
20 ? [new DebugTool(), new ProfileTool()]
21 : []),
22 ];
23}

所有工具在单个数组中注册。feature('X') 等特性开关在打包时求值 — 禁用的工具从生产包中剥离。运行时检查(process.env)控制仅限内部的工具。