bash tool

BashTool 是 Claude Code 中最复杂的工具之一,负责安全地执行 Shell 命令。

设计挑战

Shell 命令执行面临的挑战:

  1. 安全风险 - 恶意命令可能破坏系统

  2. 权限控制 - 需要细粒度的权限检查

  3. 平台差异 - Windows/Linux/macOS 的命令不同

  4. 长时间运行 - 某些命令需要后台执行

核心实现

输入 Schema

const BashInputSchema = z.object({
  command: z.string(),
  cwd: z.string().optional(),
  explanation: z.string().optional(),
  timeout: z.number().optional(),
});

执行流程

权限检查

命令分类

2600+ 行的权限检查逻辑:

权限决策

命令执行

基本执行

后台执行

平台适配

Windows 支持

Shell 检测

特殊处理

sed 命令

sed 在不同平台上行为不同:

管道命令

安全措施

1

命令白名单

2

危险命令黑名单

3

沙箱执行

输出处理

截断长输出

智能裁剪

下一步