Appearance
Tools 工具参考
Claude Code 可以使用一系列工具来理解和修改你的代码库。下表列出了所有工具的确切名称(用于权限规则、子代理工具列表和 hooks matcher)。
工具一览
| 工具 | 说明 | 需要权限 |
|---|---|---|
Agent | 生成子代理,在独立上下文窗口中执行任务 | 否 |
AskUserQuestion | 向用户提多选题,收集需求或澄清歧义 | 否 |
Bash | 在你的环境中执行 shell 命令。参见 Bash 工具行为 | 是 |
CronCreate | 在当前会话内创建定时/一次性提示词(Claude 退出后消失)。参见定时任务 | 否 |
CronDelete | 通过 ID 取消定时任务 | 否 |
CronList | 列出当前会话的所有定时任务 | 否 |
Edit | 对指定文件做目标性编辑 | 是 |
EnterPlanMode | 切换到计划模式,先设计方案再写代码 | 否 |
EnterWorktree | 创建独立的 git worktree 并切换进去 | 否 |
ExitPlanMode | 展示计划供审批,然后退出计划模式 | 是 |
ExitWorktree | 退出 worktree 会话,返回原始目录 | 否 |
Glob | 按 glob 模式匹配查找文件 | 否 |
Grep | 在文件内容中搜索模式 | 否 |
ListMcpResourcesTool | 列出已连接 MCP 服务器暴露的资源 | 否 |
LSP | 代码智能(via 语言服务器):类型错误检测、跳转定义、查找引用、符号列表等。需要代码智能插件 | 否 |
NotebookEdit | 修改 Jupyter notebook 单元格 | 是 |
Read | 读取文件内容 | 否 |
ReadMcpResourceTool | 通过 URI 读取特定 MCP 资源 | 否 |
Skill | 在主对话中执行 skill | 是 |
TaskCreate | 在任务列表中创建新任务 | 否 |
TaskGet | 获取特定任务的完整详情 | 否 |
TaskList | 列出所有任务及当前状态 | 否 |
TaskOutput | 获取后台任务的输出 | 否 |
TaskStop | 通过 ID 终止正在运行的后台任务 | 否 |
TaskUpdate | 更新任务状态、依赖、详情,或删除任务 | 否 |
TodoWrite | 管理会话任务清单。用于非交互模式和 Agent SDK;交互式会话使用 TaskCreate/TaskGet/TaskList/TaskUpdate | 否 |
ToolSearch | 搜索并加载延迟工具(启用了 MCP 工具搜索时) | 否 |
WebFetch | 从指定 URL 获取内容 | 是 |
WebSearch | 执行网络搜索 | 是 |
Write | 创建或覆盖文件 | 是 |
Bash 工具行为
Bash 工具在独立进程中执行每个命令,有以下持久化特性:
- 工作目录持久化:跨命令保持不变。设置
CLAUDE_BASH_MAINTAIN_PROJECT_WORKING_DIR=1可在每次命令后重置到项目目录。 - 环境变量不持久化:在一个命令里
export的变量,在下一个命令中不可用。
实用技巧:
- 在启动 Claude Code 之前激活 virtualenv 或 conda 环境
- 要让环境变量跨 Bash 命令持久化,在启动 Claude Code 前把
CLAUDE_ENV_FILE指向一个 shell 脚本,或者用 SessionStart hook 动态填充
工具权限说明
需要权限的工具(表中标是的)在执行前会触发权限确认。你可以通过以下方式管理:
- 允许特定工具:在设置文件里添加允许规则,如
"allow": "Bash(git status:*)" - 全局允许:在
bypassPermissions模式下允许所有工具不经确认 - Hooks 拦截:用
PreToolUsehook 在工具执行前做自定义检查
常见权限规则示例:
json
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git *)",
"Edit",
"Write(src/**)"
],
"deny": [
"Bash(rm -rf *)",
"WebFetch(https://evil.example.com*)"
]
}
}在 Hooks 中使用工具名
在 hooks 的 matcher 字段中,用工具名作为正则表达式过滤:
json
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{ "type": "command", "command": "echo 将要执行 Bash 命令" }]
}
],
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [{ "type": "command", "command": "npx prettier --write $(jq -r '.tool_input.file_path')" }]
}
]
}
}MCP 工具遵循特殊命名规则:mcp__<服务器名>__<工具名>,例如:
mcp__github__search_repositoriesmcp__filesystem__read_file
匹配某服务器的所有工具:mcp__github__.*
相关文档
- 权限配置 — 权限系统、规则语法、工具特定模式
- 子代理 — 为子代理配置工具访问权限
- Hooks 使用指南 — 在工具执行前后运行自定义命令