概述
OpenClaw 的运行时执行工具允许 AI 助手在服务器上执行 Shell 命令、管理后台进程以及与系统交互。这些工具功能强大但需要谨慎配置,以确保安全性和稳定性。
核心工具
OpenClaw 提供三类运行时执行工具:
- exec — 执行单条命令并返回结果
- bash — 在交互式 Shell 中执行命令
- process — 管理长期运行的后台进程
exec 工具配置
基本配置
{
tools: {
exec: {
enabled: true,
// 默认 Shell
shell: "/bin/bash",
// 工作目录
workingDirectory: "/home/openclaw/workspace",
// 命令执行超时(毫秒)
timeout: 30000,
// 最大输出长度(字符数)
maxOutputLength: 10000
}
}
}
使用示例
用户: 查看服务器的磁盘使用情况
OpenClaw: [调用 exec, command: "df -h"]
服务器磁盘使用情况如下:
文件系统 大小 已用 可用 使用% 挂载点
/dev/sda1 100G 45G 55G 45% /
/dev/sdb1 500G 200G 300G 40% /data
bash 工具 — 交互式 Shell
配置与特性
bash 工具提供一个持久的 Shell 会话,支持多条命令的顺序执行:
{
tools: {
bash: {
enabled: true,
// 会话持久化(保持 Shell 状态)
persistent: true,
// Shell 初始化命令
initCommands: [
"export PATH=$PATH:/usr/local/bin",
"alias ll='ls -la'"
],
timeout: 60000
}
}
}
多步骤操作
用户: 帮我创建一个 Python 虚拟环境并安装 requests 库
OpenClaw:
[bash] cd /home/openclaw/projects
[bash] python3 -m venv myenv
[bash] source myenv/bin/activate
[bash] pip install requests
[bash] pip list
虚拟环境已创建并激活,requests 库安装完成。
已安装的包列表:
- certifi 2024.12.14
- charset-normalizer 3.4.1
- idna 3.10
- requests 2.32.3
- urllib3 2.3.0
后台进程管理
process 工具配置
{
tools: {
process: {
enabled: true,
// 最大同时运行进程数
maxProcesses: 5,
// 进程默认超时
defaultTimeout: 300000, // 5 分钟
// 输出缓冲区大小
outputBufferSize: 50000
}
}
}
启动后台进程
用户: 帮我在后台运行一个数据处理脚本
OpenClaw: [调用 process.start]
{
command: "python3 /home/openclaw/scripts/data_process.py",
background: true,
name: "data-processor"
}
后台进程已启动:
- 进程名: data-processor
- PID: 12345
- 状态: 运行中
检查进程状态
用户: 数据处理脚本跑完了吗?
OpenClaw: [调用 process.status, name: "data-processor"]
进程 data-processor 状态:
- PID: 12345
- 状态: 运行中
- 运行时间: 3分25秒
- CPU: 45%
- 内存: 128MB
终止进程
用户: 停止数据处理
OpenClaw: [调用 process.stop, name: "data-processor"]
进程 data-processor (PID: 12345) 已终止。
超时控制
分级超时设置
{
tools: {
exec: {
timeout: {
// 默认超时
default: 30000,
// 按命令模式设置不同超时
rules: [
{
pattern: "apt|yum|pip install",
timeout: 300000 // 包管理器 5 分钟
},
{
pattern: "git clone|git pull",
timeout: 120000 // Git 操作 2 分钟
},
{
pattern: "curl|wget",
timeout: 60000 // 网络请求 1 分钟
}
]
}
}
}
}
安全配置
命令白名单 / 黑名单
{
tools: {
exec: {
security: {
// 命令白名单模式(更安全)
mode: "allowlist", // allowlist | blocklist
// 允许执行的命令
allowlist: [
"ls", "cat", "head", "tail", "grep",
"df", "free", "top", "ps",
"python3", "node",
"git status", "git log", "git diff"
],
// 或使用黑名单模式
blocklist: [
"rm -rf /",
"mkfs",
"dd",
"shutdown",
"reboot",
"> /dev/sda"
]
}
}
}
}
提权控制
{
tools: {
exec: {
security: {
// 是否允许 sudo
allowSudo: false,
// 允许的 sudo 命令(仅在 allowSudo 为 true 时生效)
sudoAllowlist: [
"systemctl status *",
"journalctl *"
],
// 执行用户
runAsUser: "openclaw",
// 是否允许修改环境变量
allowEnvModification: false
}
}
}
}
沙箱集成
为了最大程度保障安全,可以启用沙箱:
{
tools: {
exec: {
sandbox: {
enabled: true,
// 沙箱类型
type: "container", // container | firejail | nsjail
// 容器沙箱配置
container: {
image: "ubuntu:22.04",
// 网络隔离
networkMode: "none",
// 只读文件系统
readOnlyRoot: true,
// 可写目录
writablePaths: ["/tmp", "/workspace"],
// 资源限制
limits: {
memory: "512m",
cpus: "1.0",
pids: 100
}
}
}
}
}
}
实用场景
服务器运维助手
用户: 服务器最近是不是有点慢?帮我诊断一下
OpenClaw:
[exec] uptime
[exec] free -h
[exec] df -h
[exec] top -bn1 | head -20
诊断结果:
- 系统负载:2.5(4核),略高
- 内存使用:6.2G / 8G (77%),接近上限
- 磁盘:根分区使用 85%,建议清理
- CPU 占用最高的进程:mysql (35%), node (20%)
建议:
1. 内存接近饱和,考虑增加内存或优化应用
2. 磁盘使用率偏高,建议清理日志文件
代码编译与测试
用户: 编译并运行 /workspace 下的 Rust 项目
OpenClaw:
[bash] cd /workspace && cargo build --release 2>&1
编译成功,耗时 45秒。
[bash] cargo test 2>&1
运行 23 个测试... 全部通过。
[bash] ./target/release/myapp --version
myapp v0.3.1
故障排查
命令执行超时
# 检查系统负载
openclaw logs --filter exec.timeout
# 临时增大超时
openclaw config set tools.exec.timeout 120000
权限不足
# 查看 OpenClaw 运行用户
whoami
# 检查目标文件权限
ls -la /path/to/target
命令执行工具赋予了 OpenClaw 与操作系统交互的能力,但务必遵循最小权限原则进行配置,在功能与安全之间找到平衡。