Shell Tool 是 OpenClaw 从会聊天变成能改项目、跑测试、查日志的关键能力。 但 shell 也是最容易被误用的工具。 因为一条命令可能只是读取: 1 rg TODO . 也可能会修改文件、删除目录、启动服务、
|
Shell Tool 是 OpenClaw 从“会聊天”变成“能改项目、跑测试、查日志”的关键能力。 但 shell 也是最容易被误用的工具。 因为一条命令可能只是读取:
也可能会修改文件、删除目录、启动服务、写入数据库,甚至长期占用进程。 所以理解 Shell Tool,重点不是“能不能执行命令”,而是:
先说结论:exec 负责启动,process 负责管理长任务OpenClaw 的 shell 能力 主要分成两层:
典型流程是:
exec 不是只读工具官方文档明确提醒:exec 是 mutating shell surface。即使禁用了 write、edit、apply_patch,也不代表 exec 只读。 原因很简单:
这些都可以通过 shell 改变系统状态。 所以不要把“只允许 exec”理解成安全。 host:命令到底在哪运行exec 的 host 可以是:
默认 auto 的含义是:
这点非常重要。官方文档也强调:sandboxing 默认是关闭的。如果没有开启 sandbox,host=auto 会解析到 Gateway host。 所以排查 shell 行为时先问:
输出读取:stdout、stderr、tail 和 exit code短命令通常直接返回:
长命令如果超过 yieldMs,会被转到后台,并返回:
之后使用:
注意:后台 session 在内存里,不是永久任务数据库。Gateway 重启后会丢失。 长任务不要用 sleep 循环模拟调度官方文档非常明确:如果任务是“现在开始的长任务”,启动一次,然后用自动 completion wake 或 process 管理。 如果任务是“以后再做”或“定时做”,应该用 cron,而不是:
或者让 Agent 反复 poll。 合理做法是:
TTY 和 stdin有些 CLI 需要 TTY 或交互输入。 这时可以:
但不要让 Agent 盲目输入密码、验证码或不可审计内容。遇到登录、审批、2FA 这类动作,应交给人工确认或专门工具。 权限和 approvalsShell 的安全由多层控制:
当 approvals 需要人工确认时,exec 可能先返回:
批准后才会真正执行。 一个真实场景用户说:
合理链路:
不要一开始就跑危险命令,也不要在测试还运行时开启第二个重复测试。 常见误解误解一:exec 是只读查询工具 不是。它可以修改文件和系统状态。 误解二:background session 会永久保存 不会。它是内存态,Gateway 重启会丢失。 误解三:长任务应该不停 poll 不应该。用 completion wake、process 读取,未来任务用 cron。 误解四:allowlist 可以放心加解释器 不建议把 Python、Node、Bash 这类解释器当普通 safe bin。它们可以加载任意代码,通常需要更严格 approval。 最后总结Shell Tool 的核心是“可控执行”。 一句话总结:exec 启动命令,process 管理长任务,approval 和 sandbox 限制风险,日志和 exit code 负责验证结果。 本节作业
|
2026-06-02
2026-06-01
2026-05-31
2026-05-11
2026-05-24