教程

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 开发完全指南:从零编写高质量 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教程OpenClaw 快速入门:用 Telegram 控制 AI Agent,5 分钟搭建个人 AI 助理OpenClaw 5 分钟快速入门:用 Telegram 控制 AI Agent,含安装配置、Bot 创建、Skills 定义、多渠道支持、Claude Code 编程任务集成,以及与 Claude Code CLI 的区别和互补关系。2026/4/13教程OpenClaw 多 Agent 架构入门:用 Telegram Bot 控制你的 AI Agent 集群OpenClaw 多 Agent 架构入门指南:通过 Telegram 控制 AI Agent 集群,支持子 Agent 编排、MCP 集成和多节点部署。含快速开始教程。2026/4/7教程OpenClaw Background Tasks 完全指南:让 AI 在后台自主执行长时间任务(2026)OpenClaw Background Tasks(后台任务)完整指南:Background Tasks 与普通对话的区别(异步执行/不阻塞渠道/可中断恢复)、通过自然语言触发后台任务(「帮我在后台处理...」)、openclaw tasks 命令行管理(list/show/cancel/logs)、任务状态跟踪与完成通知、长时间任务的最佳实践(分批处理/超时设置/错误恢复)、与 Cron Jobs 的区别和选用场景,以及实战案例(批量文件处理/代码库扫描/数据报告生成)。2026/4/2