Documentation

Step 8: 工具完整清单

分析日期: 2026-04-16 核心目录: src/tools/ (~42个工具目录, ~35+个 buildTool 定义)


1. 工具分类图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
                        ┌─────────────────────────────────────────┐
                        │           Claude Code 工具体系           │
                        └─────────────────────────────────────────┘
                                      │
          ┌───────────┬───────────┬───┴───────┬───────────┬───────────┐
          │           │           │           │           │           │
    ┌─────▼─────┐ ┌──▼────┐ ┌───▼────┐ ┌────▼────┐ ┌───▼────┐ ┌───▼────┐
    │ 文件操作  │ │ Shell │ │  搜索  │ │  通信   │ │ Agent  │ │ 配置   │
    │  7个      │ │  2个  │ │  4个   │ │  4个    │ │  8个   │ │  4个   │
    └─────┬─────┘ └──┬────┘ └───┬────┘ └────┬────┘ └───┬────┘ └───┬────┘
          │          │          │           │          │          │
    Read,Edit,  Bash,     Grep,      SendMessage, Agent,    Config,
    Write,      PowerShell Glob,      AskUser,     Skill,    ToolSearch,
    Notebook,            WebFetch,   BriefTool,   Team*,    EnterPlan,
    ExitWorktree         WebSearch   MCP*,         Cron*,   ExitPlan,
    EnterWorktree                   TaskOutput     Task*    TodoWrite

                        ┌─────────────────────────────────────────┐
                        │              MCP / 元工具               │
                        │   MCPTool, ListMcpResources,            │
                        │   ReadMcpResource, LSPTool,            │
                        │   SyntheticOutput, RemoteTrigger,      │
                        │   TestingPermission                     │
                        └─────────────────────────────────────────┘

2. Tier 1 工具深度分析 (1,000+ 行)

2.1 AgentTool (1,397 行)

目录: src/tools/AgentTool/ 工具名: Agent (常量 AGENT_TOOL_NAME)

属性
用途 生成子 Agent 执行委派任务;支持多 Agent swarm、fork 子 Agent 和专业 Agent 类型
Schema description(必填), prompt(必填), subagent_type(可选), model(sonnet/opus/haiku), run_in_background(可选), name(可选), team_name(可选), mode(权限模式), isolation(worktree/remote), cwd(可选)
输出 可辨识联合: completed(含 prompt) 或 async_launched(含 agentId, description)
权限 按权限规则过滤拒绝的 Agent;计划模式下基于提示的权限请求
并发 非安全;isConcurrencySafe 取决于操作是否只读
渲染 AgentPromptDisplay, AgentResponseDisplay, FallbackToolUseErrorMessage
特性开关 KAIROS(门控 cwd, isolation:remote), FORK_SUBAGENT, COORDINATOR_MODE
中断 通过 AbortController 支持;异步 Agent 返回 agentId

2.2 BashTool (1,143 行)

目录: src/tools/BashTool/ 工具名: Bash (常量 BASH_TOOL_NAME)

属性
用途 执行 Shell 命令;支持沙箱、后台执行、sed 编辑模拟、大结果持久化
Schema command(必填), timeout(可选), description(可选), run_in_background(可选), dangerouslyDisableSandbox(可选), _simulatedSedEdit(内部)
输出 stdout, stderr, interrupted, isImage, persistedOutputPath, backgroundTaskId, returnCodeInterpretation, structuredContent
权限 bashToolHasPermission — 只读约束检查;复合命令解析;isReadOnly 基于 checkReadOnlyConstraints
并发 isConcurrencySafe = this.isReadOnly?.(input) ?? false — 只读命令可并行
渲染 renderToolUseMessage, BashToolResultMessage;沙箱模式显示 “SandboxedBash”
特性开关 MONITOR_TOOL(阻止 sleep 模式), 沙箱模式
中断 interrupted: true;处理 SIGINT;后台命令通过 TaskStopTool 停止

2.3 FileReadTool (1,183 行)

目录: src/tools/FileReadTool/ 工具名: Read (常量 FILE_READ_TOOL_NAME)

属性
用途 读取本地文件;支持文本、图片(JPEG/PNG/GIF/WebP)、PDF(含页码范围)、Jupyter notebook、二进制检测、token 感知调整
Schema file_path(必填), offset(可选), limit(可选), pages(PDF页码, 可选)
输出 可辨识联合 on type: text(content, lineCount), image(mediaType, data), pdf(pages), notebook(cells), file_unchanged, partial_view
权限 checkReadPermissionForToolpreparePermissionMatcher 使用 matchWildcardPattern
并发 isConcurrencySafe = true; isReadOnly = true
渲染 文本/图片/PDF/notebook 分离渲染器;extractSearchText 返回内容用于搜索索引
特性开关 PDF 支持, 图片调整, notebook 读取
中断 支持 AbortController.signalfile_unchanged 用于去重

2.4 SkillTool (1,108 行)

目录: src/tools/SkillTool/ 工具名: Skill

属性
用途 调用斜杠命令技能(如 /commit, /review-pr);支持内联(同步)和子 Agent(异步)执行模式
Schema skill(必填), args(可选)
输出 内联: success, commandName, status:'inline';子 Agent: status:'subagent', agentId
权限 继承技能定义的权限模型
并发 取决于技能类型
渲染 自定义 UI 渲染器
特性开关 技能发现门控;技能定义指定子 Agent 模式
中断 支持 AbortController;子 Agent 技能异步启动

2.5 PowerShellTool (1,000 行)

目录: src/tools/PowerShellTool/ 工具名: PowerShell

属性
用途 Windows 专用 PowerShell 命令执行;镜像 BashTool 接口
Schema 与 BashTool 相同结构(命令、超时、描述、后台执行)
输出 与 BashTool 相同
权限 与 BashTool 类似
并发 与 BashTool 相同 — 只读时安全
渲染 镜像 BashTool 的 TSX 组件
特性开关 仅 Windows;isBackgroundTasksDisabled 门控
中断 与 BashTool 相同

2.6 SendMessageTool (917 行)

目录: src/tools/SendMessageTool/ 工具名: SendMessage

属性
用途 向 swarm 中的 Agent 队友发送消息;支持直接消息、广播(*)、UDS 套接字对端、bridge/远程控制对端
Schema to(必填: 队友名/”*”/”uds:"/"bridge:"), `summary`(可选), `message`(string 或 StructuredMessage)
输出 投递状态和路由信息
权限 isReadOnly(input) 当消息为纯文本字符串时返回 true
并发 shouldDefer: true
特性开关 UDS_INBOX(门控 “uds:”/”bridge:” 寻址), isAgentSwarmsEnabled 门控可用性
中断 支持 abort controller;消息投递为即发即弃

2.7 LSPTool (860 行)

目录: src/tools/LSPTool/ 工具名: LSP

属性
用途 通过 LSP 提供代码智能:定义跳转、引用查找、悬停信息、文档/工作区符号、调用层次
Schema operation(必填: goToDefinition/findReferences/hover/documentSymbol/workspaceSymbol/…), filePath(必填), line(必填), character(必填)
输出 因操作而异:位置结果、悬停文本、符号信息、调用层次项
权限 只读;isConcurrencySafe = true; isReadOnly = true
特性开关 isLspConnected() 门控可用性;shouldDefer: true
中断 支持 abort controller;LSP 请求可取消

3. Tier 2 工具中等分析 (400-999 行)

3.1 FileEditTool

工具名: FileEdit 用途: 执行精确字符串替换;强制编辑前读取和陈旧性检查

属性
Schema file_path(必填), old_string(必填), new_string(必填), replace_all(可选, 默认 false)
权限 checkWritePermissionForTool;团队记忆秘密保护
并发 不安全(文件修改);strict: true
特性开关 CLAUDE_CODE_REMOTE git diff, fileHistoryEnabled, LSP 集成
中断 原子读-修改-写;FILE_UNEXPECTEDLY_MODIFIED_ERROR 陈旧写入

3.2 TaskOutputTool

工具名: TaskOutput 用途: 读取后台任务/Agent 输出

属性
权限 只读,继承任务上下文权限
并发 安全(读操作)
特性开关 磁盘输出缓存
中断 支持 abort controller

3.3 GrepTool

工具名: Grep 用途: 使用 ripgrep 快速内容搜索

属性
Schema pattern(必填), path(可选), glob(可选), type(可选), output_mode(可选), -i/-n/context/multiline(可选)
权限 checkReadPermissionForTool
并发 isConcurrencySafe = true; isReadOnly = true

3.4 ExitPlanModeTool (V2)

工具名: ExitPlanMode 用途: 退出计划模式并提供计划供用户审批

属性
Schema allowedPrompts(可选: {tool, prompt}[]); SDK 增加 plan, planFilePath
权限 计划审批流;allowedPrompts 语义权限
并发 shouldDefer: true
特性开关 TRANSCRIPT_CLASSIFIER(门控自动模式退出), KAIROS_CHANNELS, isPlanModeInterviewPhaseEnabled

3.5 NotebookEditTool

工具名: NotebookEdit 用途: 编辑 Jupyter notebook 单元格

属性
Schema notebook_path(必填), cell_id(可选), new_source(必填), cell_type(可选), edit_mode(replace/insert/delete)
权限 checkWritePermissionForTool
并发 shouldDefer: true;不安全(文件修改)
特性开关 TRANSCRIPT_CLASSIFIER, fileHistoryEnabled

3.6 ToolSearchTool

工具名: ToolSearch 用途: 搜索和选择延迟加载工具

属性
Schema query(必填: 搜索词或 select:<name>), max_results(可选, 默认 5)
权限 无需检查;isConcurrencySafe = true
渲染 renderToolUseMessage 返回 null(用户不可见);mapToolResultToToolResultBlockParam 返回 tool_reference
特性开关 isToolSearchEnabledOptimistic() 门控可用性

3.7 ConfigTool

工具名: Config 用途: 获取或设置 Claude Code 配置

属性
Schema setting(必填), value(可选: 省略则读取)
权限 读取自动允许;写入需要审批
并发 isConcurrencySafe = true;只读时 value === undefined
特性开关 VOICE_MODE(门控 voiceEnabled 设置)

3.8 FileWriteTool

工具名: FileWrite 用途: 创建或覆盖文件

属性
Schema file_path(必填), content(必填)
权限 checkWritePermissionForTool;团队记忆秘密保护
并发 不安全(文件修改);strict: true
特性开关 CLAUDE_CODE_REMOTE + tengu_quartz_lantern git diff, fileHistoryEnabled, LSP 集成
中断 FILE_UNEXPECTEDLY_MODIFIED_ERROR 陈旧写入;readFileState 追踪

3.9 TaskUpdateTool

工具名: TaskUpdate 用途: 更新任务属性(状态、主题、描述等)

属性
Schema taskId(必填), subject/description/activeForm/status/addBlocks/addBlockedBy/owner/metadata(可选)
权限 无显式检查
并发 安全
渲染 renderToolUseMessage 返回 null(不可见)
特性开关 isTodoV2Enabled(), VERIFICATION_AGENT + tengu_hive_evidence

4. Tier 3 工具简要编目 (< 400 行)

# 工具名 用途 权限 并发安全 只读 延迟加载 特性开关
17 Glob 文件名模式匹配 checkRead - -
18 WebFetch 获取 URL 内容 域名规则 15分钟缓存
19 WebSearch Web 搜索 passthrough API 提供商门控
20 EnterPlanMode 进入计划模式 自动 KAIROS_CHANNELS
21 ExitWorktree 退出工作树 isDestructive -
22 EnterWorktree 创建隔离工作树 自动 -
23 AskUserQuestion 多选提问 阻塞等输入 - KAIROS_CHANNELS
24 TodoWrite V1 待办管理 自动允许 !isTodoV2Enabled
25 TaskCreate 创建 V2 任务 无检查 isTodoV2Enabled
26 TaskList 列出 V2 任务 无检查 isTodoV2Enabled
27 TaskGet 获取 V2 任务 无检查 isTodoV2Enabled
28 TaskStop 停止后台任务 验证运行中 -
29 MCPTool MCP 工具调用 passthrough 变化 变化 - isMcp
30 ListMcpResources 列出 MCP 资源 无检查 -
31 ReadMcpResource 读取 MCP 资源 无检查 -
32 BriefTool 发送用户消息 自动允许 - KAIROS_BRIEF
33 SyntheticOutput SDK 结构化输出 自动允许 - 仅非交互
34 RemoteTrigger 管理远程触发器 OAuth 必需 条件 tengu_surreal_dali
35 TeamCreate 创建 swarm 团队 isAgentSwarmsEnabled isAgentSwarmsEnabled
36 TeamDelete 解散 swarm 团队 isAgentSwarmsEnabled isAgentSwarmsEnabled
37 CronCreate 创建定时任务 无检查 isKairosCronEnabled
38 CronDelete 删除定时任务 队友仅删自己 isKairosCronEnabled
39 CronList 列出定时任务 无检查 isKairosCronEnabled
40 TestingPermission 测试权限工具 始终 ask - 仅测试环境

5. 跨工具通用模式

5.1 权限检查模式

1
2
3
4
5
6
7
8
9
10
11
12
13
工具调用
    |
    v
hasPermissionsToUseTool()  ──>  规则匹配  ──>  behavior: allow/deny/ask
    |
    v (ask)
useCanUseTool()  ──>  PermissionContext  ──>  handler 选择
    |                                          |
    |                        +-----------------+------------------+
    |                        |                 |                  |
    v                        v                 v                  v
interactiveHandler    coordinatorHandler  swarmWorkerHandler  speculativeClassifier
(用户对话框)          (协调器委托)        (swarm 邮箱转发)    (Bash 2秒竞速)

5.2 并发模型

  • 可并行执行: isConcurrencySafe = true 的工具(Read, Grep, Glob, LSP, WebFetch, WebSearch, Config, ToolSearch 等)
  • 严格串行: 文件修改工具(FileEdit, FileWrite, NotebookEdit) — strict: true
  • 延迟加载: shouldDefer: true 的工具不在初始 API 调用中发送 schema,通过 ToolSearch 按需发现
  • StreamingToolExecutor 管理: addTool() 入队 -> canExecuteTool() 检查并发 -> executeTool() 执行

5.3 延迟加载机制

1
2
3
4
5
6
7
8
9
10
初始 API 调用
    |
    v
getTools() -> assembleToolPool()
    |
    +-- alwaysLoad: 始终包含 (Read, Edit, Write, Bash, Glob, Grep 等)
    +-- shouldDefer: 不包含 schema (ToolSearch, Config, WebSearch, LSP 等)
    |
    v (模型需要延迟工具时)
ToolSearch.call() -> 搜索/选择 -> 动态添加工具 schema 到对话

5.4 文件安全模式

  • 读前检查: FileEditTool 和 FileWriteTool 强制编辑/写入前先读取文件
  • 陈旧性检测: readFileState 追踪文件修改时间,写入时检查 FILE_UNEXPECTEDLY_MODIFIED_ERROR
  • 团队记忆保护: 检查 isTeamMemorySecret() 防止泄露团队记忆文件
  • UNC 路径安全: NotebookEditTool 拒绝 UNC 路径