Skip to content

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创建或覆盖文件

权限规则可以通过 /permissions 或在权限设置中配置。参见工具特定权限规则


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 拦截:用 PreToolUse hook 在工具执行前做自定义检查

常见权限规则示例:

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_repositories
  • mcp__filesystem__read_file

匹配某服务器的所有工具:mcp__github__.*


相关文档