教程

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 Standing Orders 完全指南:让 AI 记住你的长期规则和行为偏好OpenClaw Standing Orders(常驻指令)功能完整教程:Standing Orders 与 SOUL.md 的区别(动态运行时规则 vs 静态人格文件)、通过对话动态添加/查看/删除常驻指令、指令的持久化存储与跨会话生效机制、适合写入 Standing Orders 的内容类型(格式偏好/禁止行为/固定工作流)、与 Hooks 的协同使用、按渠道/Agent 设置不同的 Standing Orders,以及常驻指令的最佳实践(写清晰的规则、避免矛盾冲突、定期清理过时规则)。2026/3/26教程OpenClaw 多媒体处理完全指南:图片识别、音频转写与视频理解实战OpenClaw 多媒体处理(Media)完整教程:发送图片给 AI 进行视觉分析(OCR/物体识别/图表解读/代码截图)、音频消息自动转写为文字(Whisper/系统STT)、视频消息关键帧提取与理解、Node 摄像头实时拍照触发分析、媒体消息的渠道支持差异(各渠道的图片/音频/视频支持情况对比)、大文件处理策略(分割/压缩/超时设置)、媒体消息在不同 AI 模型上的能力对比(Claude Vision/GPT-4V/Gemini Pro Vision),以及本地媒体文件分析(read 工具读取图片路径)。2026/3/25教程OpenClaw TUI 完全指南:纯键盘操作的终端管理界面使用详解OpenClaw TUI(Terminal User Interface,终端用户界面)完整使用指南:TUI 与 Control UI(浏览器)的定位对比、适合 TUI 的场景(SSH 远程/无浏览器服务器/低带宽环境)、启动命令(openclaw tui)及参数、界面布局(Agents 面板/Sessions 面板/Channels 状态/Logs 实时流)、全键盘快捷键手册(导航/选择/搜索/刷新/退出)、在 TUI 中发送测试消息、实时日志过滤与搜索,以及 TUI 与 tmux/screen 配合使用的后台运行方案。2026/3/25教程OpenClaw Control UI 与 Dashboard 完全指南:浏览器管理 AI 助手的全功能界面OpenClaw Control UI(控制面板)与 Dashboard(仪表盘)完整使用指南:Control UI 的功能布局(Agents 管理/Tools 工具面板/Sessions 会话查看/Channel 渠道状态)、浏览器访问方式(本地 localhost:18789 vs 远程 SSH 隧道)、在 Control UI 中实时修改 Agent 配置(SOUL.md 编辑/模型切换/工具开关)、Dashboard 数据概览(Token 用量/渠道在线状态/会话列表/Node 节点健康)、从 Dashboard 发起诊断(doctor 命令)、以及 TUI(终端界面)的使用场景与快捷键。2026/3/24教程OpenClaw 群消息完全指南:群组配置、@ 触发、白名单与多 Bot 协同实战OpenClaw 群消息(Group Messages)完整配置教程:群组消息的触发方式(requireMention/commandPrefix/respondToAll)、各渠道群组配置差异(Telegram群/Discord服务器/Slack频道/WhatsApp群)、群组白名单与黑名单管理、限制特定成员才能触发 AI(allowedUsers/allowedRoles)、响应限速防刷屏(cooldown)、多 Bot 在同一群组协同分工的配置方案、群组 Session 的记忆与上下文管理,以及群组中 AI 的礼貌边界设计(何时发言/何时沉默)。2026/3/24教程OpenClaw 接入 Nextcloud Talk:自托管视频会议平台 AI 助手完全配置指南OpenClaw 接入 Nextcloud Talk 的完整教程:Nextcloud Talk 的自托管通信平台特点(视频会议+聊天+文件协作)、插件安装(@openclaw/nextcloud-talk)、通过 occ CLI 创建 Bot 账户并注册 Webhook、OpenClaw 最简配置(serverUrl+appPassword+sharedSecret)、DM 私信与房间(Room)访问控制、Markdown 消息格式和表情反应支持、局域网/内网部署注意事项(WebSocket vs Polling),以及 Nextcloud Talk AI 助手的典型使用场景(会议摘要/文件问答/任务分派)。2026/3/24