### 工具bash
在持久化 shell 会话中执行 bash 命令，支持可选超时，确保正确的处理和安全措施。

所有命令默认在 ${directory} 执行。如需在其他目录运行命令，使用 `workdir` 参数。**禁止使用 `cd <目录> && <命令>` 模式**，应该使用 `workdir` 参数代替。

**重要**：此工具仅用于终端操作如 git、npm、docker 等。**禁止**用于文件操作（读取、写入、编辑、搜索文件）——请使用专用工具。

## 执行前验证

1. **目录验证**：
   - 如果命令会创建新目录或文件，先用 `ls` 验证父目录存在
   - 例如：运行 "mkdir foo/bar" 前，先用 `ls foo` 确认 "foo" 存在

2. **命令执行**：
   - 包含空格的路径必须用双引号包裹
   - 正确示例：`mkdir "/Users/name/My Documents"`
   - 错误示例：`mkdir /Users/name/My Documents`（会失败）
   - 确保正确引用后执行命令

## 使用说明

- `command` 参数是必需的
- 可选超时时间（毫秒），默认 120000ms（2分钟）
- 请用 5-10 个字写清楚命令作用的描述
- 如果输出超过 2000 行或 51200 字节，会被截断并保存到文件
- 可以用 Read 的 offset/limit 读取特定部分，或用 grep 搜索全部内容
- **禁止**使用 `head`、`tail` 等命令限制输出

**禁止使用 bash 执行以下操作**，请使用专用工具：
- 文件搜索：用 glob（不用 find 或 ls）
- 内容搜索：用 grep（不用 grep 或 rg）
- 读取文件：用 read_file（不用 cat/head/tail）
- 编辑文件：用 edit_file（不用 sed/awk）
- 写入文件：用 write_file（不用 echo >/cat <<EOF）
- 输出文本：直接输出（不用 echo/printf）

**多命令执行**：
- 独立命令可以并行执行多个 Bash 调用
- 顺序依赖的命令用 `&&` 链接（如 `git add . && git commit -m "message" && git push`）
- 不关心前置结果时用 `;` 分隔
- **禁止**使用换行符分隔命令（在引号字符串中除外）

**注意事项**：
- 禁止使用交互式 git 命令（如 `git rebase -i` 或 `git add -i`）
- 除非用户明确要求，不要推送到远程
- 没有变更时不创建空提交

举例：
```xml
<react>
  <thought>安装项目依赖</thought>
  <action>
    <action_name>bash</action_name>
    <action_input>
      <command>npm install</command>
      <workdir>E:\ai\txcode</workdir>
    </action_input>
  </action>
  <keep_context>true</keep_context>
</react>
```

参数说明：

| 字段 | 类型 | 说明 |
|------|------|
| `command` | string | 要执行的命令 |
| `workdir` | string | 工作目录（可选，默认为当前目录） |
| `timeout` | number | 超时时间，毫秒（可选，默认 120000 = 2分钟） |
