首页 资讯 下载 教程 Skills 社群

OpenClaw 命令执行与运行时工具指南

概述

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 与操作系统交互的能力,但务必遵循最小权限原则进行配置,在功能与安全之间找到平衡。