OpenClaw系列第12课:exec 工具详解 - 让 AI 真正执行命令

OpenClaw系列第12课:exec 工具详解 - 让 AI 真正执行命令
Kai这是「OpenClaw 教程课程」第 12 课。
上一课我们讲了 Skills:它解决的是“这类任务应该怎么做”。这一课开始讲真正能落地执行的工具:exec。

图:exec 让 Agent 不只是回答命令应该怎么写,而是可以在合适权限下真正执行命令、读取结果、继续判断下一步。
很多人第一次用 AI 助手时,最自然的用法是:
“帮我看看这个命令怎么写。”
这当然有用。
但 OpenClaw 更进一步。
它不只是让 AI 告诉你命令,而是可以在你允许的范围内,直接通过 exec 工具执行命令,然后根据真实输出继续判断。
这就是 exec 最核心的价值:
让 Agent 从“会建议”变成“会动手”。
不过,exec 也正因为强,所以一定要理解它的边界和安全机制。
这一课我们就把它讲清楚。
一、exec 是什么?
exec 是 OpenClaw 里用于执行 shell 命令的工具。
你可以把它理解成:
Agent 手里的一扇终端窗口。
通过它,Agent 可以做很多真实操作,比如:
- 查看当前目录
- 检查文件是否存在
- 运行构建命令
- 执行测试
- 查看服务状态
- 用
grep/rg搜索代码 - 调用脚本
- 在允许的情况下管理本机或节点上的任务
例如你可以直接说:
1 | 帮我检查这个项目有没有 package.json,然后看看有哪些 npm scripts。 |
如果当前 Agent 有 exec 权限,它就可以真的运行类似:
1 | ls |
然后把结果读回来,而不是靠猜。
二、exec 和普通回答最大的区别
普通回答是“语言层面的推理”。
exec 是“环境里的动作”。
区别非常大。
普通回答更像这样
你问:
1 | Linux 怎么查看磁盘空间? |
AI 回答:
1 | df -h |
这只是告诉你命令。
exec 更像这样
你问:
1 | 帮我看看这台机器磁盘空间够不够。 |
Agent 可以实际执行:
1 | df -h |
然后根据真实输出告诉你:
- 哪个分区快满了
- 哪个目录可能需要清理
- 是否影响 OpenClaw 运行
所以 exec 的重点不是“会写命令”,而是:
可以用真实环境反馈来闭环任务。
这也是 Agent 能从聊天机器人变成操作助手的关键一步。
三、exec 最适合做哪些事?
exec 很适合用在这些场景:
1)检查环境状态
例如:
1 | 帮我看一下 OpenClaw 当前状态。 |
可能会用到:
1 | openclaw status |
这类任务特别适合 exec,因为状态是实时变化的,不能只靠记忆回答。
2)运行测试或构建
例如:
1 | 我刚改了代码,帮我跑一下测试。 |
可能会用到:
1 | npm test |
这类任务如果不实际执行,就只能“看起来像检查过”。
但用了 exec,Agent 可以拿到真实失败信息,再继续修。
3)搜索和整理项目文件
例如:
1 | 帮我找一下项目里哪里用到了 gateway status。 |
可能会用到:
1 | rg "gateway status" |
这比让模型凭上下文猜要可靠得多。
4)执行小脚本
例如:
1 | 帮我批量统计 articles 目录里每篇文章的标题。 |
可能会用到:
1 | grep -R "^title:" articles |
或者写一段临时脚本来处理。
5)启动长时间任务
例如:
1 | 帮我跑一次完整构建,如果时间长就后台执行。 |
这时候 exec 可以配合后台进程机制,后面再用 process 看进度。

图:exec 适合环境检查、测试构建、搜索文件、执行脚本、运行长任务等需要真实反馈的场景。
四、exec 的基本执行方式:前台运行
最简单的执行方式,就是前台运行。
也就是:
- Agent 发起命令
- OpenClaw 执行命令
- 命令结束后,把输出返回给 Agent
- Agent 根据输出继续回答
比如:
1 | pwd |
这种短命令就很适合前台执行。
它的特点是:
- 简单
- 直接
- 适合很快结束的命令
- 输出会立刻进入当前对话上下文
但如果命令运行时间比较长,例如:
1 | npm run build |
或者:
1 | pnpm test |
那就不一定适合一直前台等着。
这时候就要理解后台执行。
五、长任务:exec 可以转入后台
OpenClaw 的 exec 支持后台执行。
文档里有两个常见参数:
yieldMs:命令运行超过多少毫秒后自动转后台background:是否一开始就直接后台运行
你不需要在日常对话里手写这些参数,但你要知道背后的机制。
比如你让 Agent:
1 | 帮我跑构建,时间长的话后台跑。 |
它可以启动命令,短时间内如果没结束,就把任务放到后台。
后台执行时,OpenClaw 会返回一个后台 session id,后续可以用 process 工具继续查看。
这点很重要:
exec 负责启动命令,process 负责管理后台命令。
六、process 是 exec 的搭档
如果说 exec 是“启动命令”,那 process 就是“管理已经启动的命令”。
process 常见动作包括:
list:列出后台任务poll:查看任务新输出和退出状态log:读取任务日志write:给进程发送 stdinsend-keys:给 PTY 会话发送按键kill:终止后台任务
一个典型流程是:
1 | 帮我跑 npm run build,如果没结束就后台执行。 |
然后后续你可以问:
1 | 刚才那个构建跑完了吗? |
Agent 就可以用 process 去查。
这比让 Agent 每隔几秒死循环检查要好得多。
OpenClaw 文档里也明确强调:
对于已经开始的长任务,启动一次即可;需要状态、日志或人工干预时再用 process。不要用 sleep 循环或反复轮询来模拟定时任务。
如果你要“以后某个时间再做”,应该用后面课程会讲的 cron,而不是让 exec 跑一个 sleep 3600。

图:exec 用来启动命令;命令转入后台后,process 用来查看日志、发送输入或终止任务。
七、什么时候需要 pty?
exec 默认适合跑普通命令。
但有些命令需要一个真实终端环境,也就是 TTY。
例如:
- 交互式 CLI
- 终端 UI
- 某些 coding agent
- 需要方向键、回车、Ctrl-C 的程序
这种情况下,exec 可以使用 pty: true。
你可以先简单理解成:
普通命令用默认 exec;像终端软件一样交互的命令,需要 PTY。
后续如果你看到 Agent 需要 send-keys、paste、submit 这些动作,通常就和 PTY 场景有关。
八、exec 在哪里执行?host 很关键
exec 不是抽象地“在云上执行”。
它一定会落到某个执行位置。
OpenClaw 文档里提到,host 常见取值包括:
autosandboxgatewaynode
你可以先这样理解:
1)auto
默认策略。
如果当前会话启用了 sandbox,就在 sandbox 里跑;如果没有 sandbox,就在 gateway 上跑。
2)sandbox
在沙箱环境里跑。
更安全,但能访问的文件、命令、系统资源受限制。
3)gateway
在 Gateway 所在机器上跑。
这就接近真实主机环境了,所以更要注意审批和权限。
4)node
在已配对的节点上跑。
比如某台 macOS 节点、手机 companion 节点或其他 headless node host。
这里新手最容易误解的一点是:
host=auto不是“哪里都可以随便跑”,它只是一个默认路由策略。
如果启用了 sandbox,默认会优先待在 sandbox 里。
九、sandbox、tool policy、elevated:三个安全概念别混淆
学 exec 一定会碰到这三个词:
- sandbox
- tool policy
- elevated
它们很容易混,但其实控制的是不同层面。
1)sandbox:决定在哪里跑
Sandbox 关心的是执行环境。
比如:
- 在容器里跑
- 在真实 gateway 主机上跑
- 是否能访问宿主机文件
它回答的问题是:
命令跑在哪里?
2)tool policy:决定能不能用这个工具
Tool policy 关心的是工具是否可用。
如果 exec 被工具策略禁用了,那就算你说 /exec 也没有用。
它回答的问题是:
Agent 有没有资格调用 exec?
3)elevated:sandbox 下的主机逃逸开关
Elevated 只影响 exec。
当 Agent 在 sandbox 里时,/elevated on 可以让 exec 跑到 sandbox 外面的配置目标上。
/elevated full 则是更强模式,会跳过 exec approvals。
所以 elevated 回答的是:
在 sandbox 场景下,要不要允许 exec 跑到外面?
记住这句话就不容易乱:
sandbox 管位置,tool policy 管工具,elevated 管 exec 是否能从沙箱出去。

图:exec 的安全控制不是一个开关,而是由 sandbox、tool policy、approvals、elevated 等多层共同决定。
十、exec approvals:为什么有时命令需要你批准?
因为 exec 能真的执行命令,所以 OpenClaw 提供了审批机制。
尤其是当 sandboxed agent 想在真实 host 上执行命令时,审批就很重要。
OpenClaw 的 exec approvals 可以控制:
- 哪些命令允许执行
- 哪些命令需要提示确认
- 哪些命令完全拒绝
- 是否允许一次
- 是否持久信任类似命令
文档里把安全模式分成几类:
security: deny
拒绝 host exec。
适合非常保守的环境。
security: allowlist
只允许白名单里的命令。
适合希望 Agent 能做一些固定动作,但不能随便执行命令的环境。
security: full
允许执行。
这就是很开放的模式,适合你完全信任当前环境和 Agent 行为时使用。
还有一个审批行为参数:
ask: off
不提示。
ask: on-miss
白名单没命中时才提示。
ask: always
每次都提示。
这套机制的意义很简单:
exec 的能力要强,但不能强到没有刹车。
十一、YOLO 模式是什么?
你可能会在文档里看到 YOLO mode。
它大概意思是:
不走审批,直接允许 host exec。
通常对应的是:
security=fullask=off
文档也提醒了一个重点:
YOLO 来自 host 执行策略,不是来自
host=auto。
也就是说:
host=auto只是决定默认跑在哪里- YOLO 是决定执行时要不要审批
新手不要把这两个混在一起。
如果你只是自己本地玩、环境可控,YOLO 会很方便。
但如果是服务器、多人环境、生产机器,我更建议先用保守策略:
- sandbox 优先
- 必要命令 allowlist
- 高风险命令 ask always
十二、一个实用建议:让 Agent 先查,再动手
使用 exec 时,我建议你养成一个习惯:
先让 Agent 查看状态,再让它修改。
例如不要一上来就说:
1 | 把没用的文件都删掉。 |
更好的说法是:
1 | 先帮我列出你认为可以清理的文件和原因,不要删除。等我确认后再执行。 |
这会安全很多。
再比如:
1 | 先检查当前 Git 状态和变更内容,不要提交,也不要改文件。 |
然后再根据结果决定下一步。
exec 本身不是危险的。
真正危险的是:
- 目标不清楚
- 范围不清楚
- 权限过大
- 没有确认就修改
所以使用 exec 的最佳心法是:
读操作大胆让它做,写操作让它先说明。
十三、适合新手的 exec 提问模板
你可以直接复制这些句式。
1)检查状态
1 | 帮我检查当前 OpenClaw 状态,只做只读命令,不要修改配置。 |
2)排查问题
1 | 帮我排查为什么服务没起来。先收集信息和日志,不要重启服务。 |
3)运行测试
1 | 帮我运行项目测试。如果失败,先总结失败原因,不要自动大改代码。 |
4)后台长任务
1 | 帮我运行构建。超过 10 秒还没结束就放到后台,后面告诉我怎么查看进度。 |
5)谨慎修改
1 | 先列出你准备执行的命令和风险,我确认后再执行会修改系统的命令。 |
这些说法的好处是,你把“权限边界”说清楚了。
Agent 就更容易按安全方式执行。
十四、常见坑
坑 1:把 exec 当成普通问答
如果你只是问:
1 | 怎么查看端口占用? |
那 AI 可能只会回答命令。
如果你想让它真正检查,要说:
1 | 帮我实际检查当前机器的端口占用情况。 |
坑 2:长任务一直前台等
构建、测试、下载、扫描这类任务可能很久。
更好的方式是:
1 | 时间长就后台跑。 |
后面再让 Agent 用 process 查看。
坑 3:在 sandbox 里找不到宿主机文件
如果当前会话在 sandbox 中,能看到的文件不一定等于宿主机完整文件系统。
这不是 bug,而是安全边界。
遇到类似问题,可以先让 Agent 检查:
1 | openclaw sandbox explain |
它会显示当前 sandbox、工具策略和 elevated 相关状态。
坑 4:以为 /exec 可以突破工具禁用
不可以。
如果工具策略里禁用了 exec,/exec 不能强行恢复。
/exec 只是调整当前 session 的 exec 默认选项,例如 host、security、ask、node。
它不是万能授权。
坑 5:把 elevated 当成所有工具的提权
也不对。
Elevated 只影响 exec。
它不会让 browser、message、write 等其他工具自动拥有更高权限。
十五、这一课最值得记住的一句话
如果今天只记一句话,我建议你记这句:
exec 让 Agent 能在真实环境里执行命令;process 让 Agent 能管理长时间运行的命令。
再补一句安全原则:
读操作可以放开一点,写操作一定先明确范围和风险。
十六、总结
今天这节课,我们把 OpenClaw 的 exec 工具拆开讲了一遍:
- exec 是让 Agent 执行 shell 命令的工具。
- 它最大的价值是基于真实环境反馈完成任务闭环。
- 短命令适合前台执行,长任务适合后台执行。
- 后台任务要配合 process 管理日志、状态、输入和终止。
- host 决定命令跑在哪里:auto、sandbox、gateway、node。
- sandbox、tool policy、elevated 是三层不同的安全概念。
- exec approvals 用来给 host 执行加刹车。
- 使用 exec 时,先查再改,是最稳的习惯。
学会 exec 之后,你会发现 OpenClaw 的体验会明显变得不一样。
它不再只是“给建议的 AI”,而是可以变成一个能检查、能执行、能验证、能继续推进的操作伙伴。
下一课预告
下一课我们继续讲第三模块里的另一个强工具:
第 13 课:browser 工具——让 AI 操作网页
也就是:
- AI 怎么打开网页
- 怎么点击、输入、截图
- browser 和普通网页搜索有什么区别
- 哪些任务适合交给 browser,哪些不适合
🦞 本文由八条撰写,持续更新中。








