教程

OpenClaw Exec 工具完全指南:Shell 命令执行、沙箱安全与审批机制

OpenClaw Exec 工具完整教程:三种执行位置(sandbox/gateway/node)、前台与后台执行模式、PTY 终端支持、PATH 处理规则、三种安全模式(deny/allowlist/full)、Allowlist 管理、Safe Bins 配置、Telegram 审批工作流,以及 apply_patch 实验功能。

2026/3/114分钟 阅读ClaudeEagle

Exec 工具让 AI Agent 能够在工作区执行 Shell 命令,支持前台/后台运行、PTY 终端、远程节点执行,并内置完整的安全审批机制。

核心参数

参数说明默认值
command要执行的命令(必填)
workdir工作目录cwd
env环境变量覆盖(键值对)
yieldMs自动转后台的等待时间(毫秒)10000
background立即后台运行false
timeout超时秒数(超时后杀进程)1800
pty在伪终端(PTY)中运行false
host执行位置(sandbox/gateway/node)sandbox
security安全模式(deny/allowlist/full)
ask审批提示模式(off/on-miss/always)on-miss
node节点 ID/名称(host=node 时)
elevated请求提升权限false

三种执行位置

host=sandbox(默认)

在 Docker 沙箱中执行,与宿主机完全隔离:

json
{
  "tool": "exec",
  "command": "npm run build",
  "host": "sandbox"
}

⚠️ 沙箱默认关闭。未启用沙箱时,host=sandbox 不会静默降级到 gateway,而是直接报错。请明确启用沙箱或改用 host=gateway

host=gateway

在 Gateway 宿主机上执行,受审批机制管控:

bash
/exec host=gateway security=allowlist ask=on-miss

host=node

在已配对的远程节点上执行:

bash
/exec host=node security=allowlist node=mac-1

前台与后台执行

前台执行(等待完成):

json
{"tool": "exec", "command": "ls -la"}

后台执行(立即返回 session ID):

json
{"tool": "exec", "command": "npm run build", "yieldMs": 1000}

轮询后台进程

json
{"tool": "process", "action": "poll", "sessionId": "<id>"}

发送按键(tmux 风格):

json
{"tool": "process", "action": "send-keys", "sessionId": "<id>", "keys": ["Enter"]}
{"tool": "process", "action": "send-keys", "sessionId": "<id>", "keys": ["C-c"]}

粘贴文本(带括号保护):

json
{"tool": "process", "action": "paste", "sessionId": "<id>", "text": "line1\nline2\n"}

PTY 模式

需要终端 UI 的命令(如 vim、coding agents)用 pty: true

json
{"tool": "exec", "command": "htop", "pty": true}

PATH 处理规则

  • host=gateway:合并你的 login-shell PATH,但拒绝 env.PATH 覆盖
  • host=sandbox:通过 sh -lc 运行,支持 tools.exec.pathPrepend 配置
  • host=node:同样拒绝 env.PATH 覆盖,需要通过 systemd/launchd 环境配置

预置额外 PATH(适用于 gateway 和 sandbox):

json
{
  "tools": {
    "exec": {
      "pathPrepend": ["~/bin", "/opt/oss/bin"]
    }
  }
}

安全与审批机制

三种安全模式

模式说明
deny拒绝所有执行
allowlist仅允许明确许可的二进制路径
full允许所有命令(高危!)

Allowlist 管理

bash
# 添加到 allowlist
openclaw approvals allowlist add "/usr/bin/git"
openclaw approvals allowlist add --node mac-1 "/usr/bin/uname"

# 查看当前 allowlist
openclaw approvals allowlist list

Safe Bins(stdin 安全过滤器)

Safe Bins 是专门为 stdin 流过滤工具设计的白名单(如 grepjqawk):

json
{
  "tools": {
    "exec": {
      "safeBins": ["grep", "jq", "awk", "sed"],
      "safeBinTrustedDirs": ["/usr/local/bin"]
    }
  }
}

⚠️ 不要把解释器(python3、node、bash)加入 safeBins,这会绕过安全检查。

Telegram 审批工作流

启用 Telegram 作为审批客户端:

json
{
  "channels": {
    "telegram": {
      "execApprovals": {
        "enabled": true,
        "approvers": ["123456789"],
        "target": "dm"
      }
    }
  }
}

审批流程:

  1. Agent 执行需要审批的命令 → 状态变为 approval-pending
  2. 通过 Telegram 收到审批请求
  3. 点击批准/拒绝
  4. Gateway 发送 Exec finished / Exec denied 系统事件

会话级覆盖(/exec)

临时修改当前 Session 的执行配置:

bash
# 切换到 gateway 执行,allowlist 模式
/exec host=gateway security=allowlist ask=on-miss node=mac-1

# 查看当前配置
/exec

注意:/exec 只对授权发送者有效,只修改 session 状态,不写入配置文件。

apply_patch(实验性)

apply_patch 是 exec 的子工具,用于结构化多文件编辑(仅限 OpenAI/Codex 模型):

json
{
  "tools": {
    "exec": {
      "applyPatch": {
        "enabled": true,
        "workspaceOnly": true,
        "allowModels": ["gpt-5.2"]
      }
    }
  }
}

完整配置示例

json
{
  "tools": {
    "exec": {
      "host": "gateway",
      "security": "allowlist",
      "ask": "on-miss",
      "node": "mac-1",
      "pathPrepend": ["~/bin"],
      "notifyOnExit": true,
      "approvalRunningNoticeMs": 10000,
      "safeBins": ["grep", "jq"],
      "safeBinTrustedDirs": ["/usr/local/bin"]
    }
  }
}

原文:Exec Tool - OpenClaw | 来源:OpenClaw 官方文档

相关文章推荐

教程OpenClaw Elevated Mode 完全指南:AI 执行高权限命令的安全授权机制(2026)OpenClaw Elevated Mode(提权模式)完整指南:Elevated Mode 的设计理念(默认最小权限/高危操作需二次确认)、触发条件(哪些操作会进入 elevated 状态)、授权方式(/approve 命令批准单次/永久允许/拒绝)、在配置中预设允许的高权限命令(allowlist 策略)、Elevated Mode 与 Docker 沙箱的协同安全模型、在生产服务器上的推荐配置,以及常见使用场景(系统级命令/sudo/敏感文件操作)的安全实践。2026/4/2教程OpenClaw Skills 完整指南:技能加载优先级、配置门控和 ClawHub 安装OpenClaw Skills 官方文档中文整理:技能目录结构、加载位置和优先级、per-agent 与 shared skills、插件技能、ClawHub 安装、metadata.openclaw 依赖门控、环境变量和安全边界。2026/6/4教程OpenClaw Sub-agents 使用指南:后台并行任务、结果回传和线程绑定OpenClaw Sub-agents 官方文档中文整理:什么时候用 sub-agent、如何后台并行执行任务、结果如何 announce 回主会话、thread-bound session、嵌套编排、工具权限、超时和自动归档。2026/6/4教程OpenClaw ACP Agents 完整指南:把 Codex、Claude Code、Gemini 接入聊天线程OpenClaw ACP Agents 官方文档中文整理:什么是 ACP runtime、如何把 Codex/Claude Code/Gemini CLI 绑定到聊天、current conversation bind、thread-bound session、持久会话、运行时配置和适用场景。2026/6/4教程OpenClaw Skills 开发完全指南:从零编写高质量 SKILL.md 自定义技能文件OpenClaw Skills 开发完整教程:SKILL.md 文件结构详解、自动触发 vs 显式触发原理、三个实战模板(GitHub 仓库管理/每日信息简报/代码健康检查)、让技能精准自动触发的描述写法,以及技能质量标准和 clawhub.ai 使用方法。2026/4/19教程OpenClaw 零基础完全入门:安装、Telegram 配置、记忆系统和技能插件完整指南OpenClaw 从零开始完整教程:用宠物龙虾类比理解架构、npm 安装步骤、Telegram Bot 配置、SOUL.md 性格定义、三层记忆系统(每日日志/长期记忆/MEMORY.md)、HEARTBEAT.md 主动任务、技能安装,以及安全配置和常见问题解决。2026/4/18