来源:Claude Code Cookbook · Part 9 · 原文标题:Part 9 — Tools

本章基于官方 Tools Reference 建立完整 Tool Map。Tool 名称是你在 Permission Rules、Subagent tool lists 和 Hook matchers 中使用的确切字符串。
官方参考:Tools reference、MCP、Skills


9.0 什么是 Tool

Tool(工具)是 Claude Code 用来行动的能力。没有工具,模型只能返回文本;有了工具,模型可以读取代码、编辑文件、运行命令、搜索 web、调用外部服务。工具名称是精确字符串,用于:

  • Permission rules(如 Bash(git log *))
  • Subagent tool lists(限定 subagent 可用哪些工具)
  • Hook matchers(PreToolUse / PostToolUse 的 tool_name 匹配)

要添加自定义工具,连接 MCP server。要用可复用的 prompt-based 工作流扩展 Claude,写 skill(通过现有的 Skill 工具运行,不新增工具条目)。

「Permission required」列表示该工具在默认权限模式下、对工作目录内路径是否提示。标 No 的文件访问工具(Read、Grep、Glob)对工作目录和附加目录之外的路径仍会提示。Bash 标 Yes,但会免提示运行一组内建的只读命令。


9.1 官方工具清单(按类别)

以下是基于官方 Tools Reference 提取的完整工具列表并按用途分类。

文件操作

工具描述Permission
Read读取文件否(目录内)
Write写入文件是
Edit编辑文件是
NotebookEdit编辑 notebook是
LSP编辑后的类型错误/警告、跳转定义(代码智能)否

搜索

工具描述Permission
Glob按模式找文件否(目录内)
Grep用正则搜索内容否(目录内)

执行

工具描述Permission
Bash执行 shell 命令(含只读命令集免提示)是
PowerShell在 Windows 上执行 PowerShell(作为 Bash 的替代或补充)是

网络

工具描述Permission
WebFetch获取文档/页面是
WebSearch搜索 web是

Agent 与编排

工具描述Permission
Agent派生 subagent,有自己的 context window否
ListAgents列出可用的 agents否
SendMessage给其他 Claude Code 会话发消息(cross-session messaging)否
SendUserFile发送用户文件?
TaskCreate / TaskGet / TaskList / TaskUpdate / TaskStop / TaskOutput管理任务(todo/子任务)否
EnterPlanMode / ExitPlanMode进入/退出 plan mode?
EnterWorktree / ExitWorktree进入/退出 git worktree?
RedirectedFindWorkflow(workflow 相关)?
Workflow运行 dynamic workflow?
ToolSearch按需搜索和加载工具定义(用于大型工具集)否

交互与用户

工具描述Permission
AskUserQuestion问多选题澄清需求否
PushNotification推送通知?
Monitor自我调节的 /loop(monitor 工具)?
ScheduleWakeup定时唤醒?
RemoteTrigger远程触发?

调度与任务

工具描述Permission
CronCreate在当前会话安排定期/一次性 prompt否
CronDelete按 ID 取消定时任务否
CronList列出定时任务否

扩展

工具描述Permission
Skill加载并运行 skill否
ListMcpResourcesTool / ReadMcpResourceToolMCP 资源访问否
WaitForMcpServers等待 MCP server 连接否

Side-effect / 输出

工具描述Permission
Artifact把 HTML/Markdown 发布为 claude.ai 上的 artifact是
ReportFindings报告审查/发现结果?
ShareOnboardingGuide分享上手指南?
EndConversation结束对话(不能被 deny 规则完全移除)否

? 表示 Permission Required 列未在抓取片段中明确给出,以官方 Tools Reference 为准。工具清单按官方文档提取,版本更新可能有增删。


9.2 Tool 与 Slash Command 的区别

  • Tool 是 Claude 在 Agentic Loop 中自己调用的能力(Bash、Read、Edit…)。权限规则、subagent 工具列表、hook matchers 都用工具名。
  • Slash Command 是你在会话中手动输入的 /command(/init、/compact…)。它们在消息开头识别,由 Claude Code / 你触发,不是模型可调用的工具。
  • Skill 通过 Skill 工具运行,但也是你可用 /skill-name 调用的命令。与内置 slash command 不同,skill 是模型本.AutoMatically 也能在相关时调用的。

一个对比:/compact 是 slash command;Bash 是 tool;你自己的 code-review skill 既通过 /code-review 触发,也通过 Skill 工具被模型调用。


9.3 Tool 的权限行为

不同工具对权限的反应不同:

  • 只读工具(Read、Grep、Glob)在工作目录内免提示运行;目录外提示。
  • 文件修改(Write、Edit、NotebookEdit)默认提示;acceptEdits 模式自动接受(目录内)。
  • Bash 默认对非只读命令提示;一组内建只读命令免提示;可用 allow/deny 规则细粒度控制。
  • MCP 工具 用 mcp__<server>__<tool> 命名的权限规则控制。

9.4 Side Effects 与 Security Risk 概览

工具可能副作用安全风险Context 影响
Read无读取敏感文件(受 Read deny rules 门控)高(文件内容占 context)
Edit/Write修改磁盘写错文件、覆盖中
Bash运行任意命令高(误执行危险命令、网络调用)高(命令输出)
WebFetch网络请求访问受限域、数据外泄中
Agent派生 subagent有独立 context,编辑可能不进入 checkpoint低(只返回摘要)
Artifact发布到 claude.ai敏感内容公开低
PushNotification发通知打扰低

9.5 示例:配置工具集

限制 Claude 可用的工具:

1
claude --tools "Bash,Edit,Read"

拒绝所有 MCP 工具:

1
2
3
4
5
{
"permissions": {
"deny": ["mcp__*"]
}
}

Official References

站内搜索

没有找到内容!