核心系统
工具系统
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
执行流程 #
一个工具调用从解析到返回的完整过程
解析 tool_use
↓
输入校验
↓
权限检查
↓允许
执行工具
↓
PostToolUse Hook
↓
返回结果
调度策略 #
读并行,写串行 — 点击运行查看效果
工具调度模拟器
阶段 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)控制仅限内部的工具。