我会按最常用的2个核心场景(本地开发控制VS Code、远程控制浏览器),给你生成可直接复制的完整配置+代码示例,涵盖WebSocket连接、指令交互、异常处理,你粘贴就能用。


场景1:本地开发 - OpenClaw 控制 VS Code(WebSocket 直连)

核心目标

通过 OpenClaw 发送指令(如“打开VS Code”“新建Python文件”),本地脚本接收并执行操作。

步骤1:OpenClaw Gateway 准备(确保已启动)

# 启动 Gateway(默认端口18789)
openclaw gateway start

步骤2:本地 Node.js 连接脚本(可直接复制)

新建 openclaw-vscode.js 文件,粘贴以下代码:

const WebSocket = require('ws');
const { exec } = require('child_process');
const path = require('path');

// 1. 连接 OpenClaw Gateway
const ws = new WebSocket('ws://localhost:18789');

// 2. 连接成功后配对
ws.on('open', () => {
  console.log('✅ 已连接 OpenClaw Gateway');
  // 发送配对请求(自定义节点ID和名称)
  ws.send(JSON.stringify({
    type: 'pairing',
    nodeId: 'vscode-control-node-001',
    name: 'VS Code 控制节点'
  }));
});

// 3. 接收 OpenClaw 指令并执行
ws.on('message', (data) => {
  try {
    const msg = JSON.parse(data.toString());
    // 只处理 command 类型指令
    if (msg.type === 'command') {
      const { payload } = msg;
      console.log(`📢 接收指令:${payload}`);

      // 指令匹配:控制 VS Code
      switch (payload) {
        case 'open-vscode':
          // Windows/macOS 通用打开 VS Code
          exec(process.platform === 'win32' ? 'code' : 'open -a "Visual Studio Code"', (err) => {
            if (err) console.error('❌ 打开VS Code失败:', err);
            else ws.send(JSON.stringify({ type: 'result', success: true, msg: 'VS Code已打开' }));
          });
          break;

        case 'new-python-file':
          // 新建Python文件并在VS Code中打开
          const pyFilePath = path.join(__dirname, 'new_script.py');
          exec(`echo "# OpenClaw 自动创建的Python文件" > ${pyFilePath} && code ${pyFilePath}`, (err) => {
            if (err) console.error('❌ 创建文件失败:', err);
            else ws.send(JSON.stringify({ type: 'result', success: true, msg: `已创建文件:${pyFilePath}` }));
          });
          break;

        case 'close-vscode':
          // 关闭VS Code(Windows/macOS 通用)
          exec(process.platform === 'win32' ? 'taskkill /f /im Code.exe' : 'pkill -f "Visual Studio Code"', (err) => {
            if (err) console.error('❌ 关闭VS Code失败:', err);
            else ws.send(JSON.stringify({ type: 'result', success: true, msg: 'VS Code已关闭' }));
          });
          break;

        default:
          ws.send(JSON.stringify({ type: 'result', success: false, msg: `不支持的指令:${payload}` }));
      }
    }
  } catch (e) {
    console.error('❌ 指令处理失败:', e);
    ws.send(JSON.stringify({ type: 'result', success: false, msg: '指令解析错误' }));
  }
});

// 4. 异常处理
ws.on('error', (err) => console.error('❌ 连接错误:', err));
ws.on('close', () => console.log('🔌 连接已关闭'));

步骤3:运行脚本 & 批准配对

# 安装依赖(首次运行)
npm install ws

# 启动脚本
node openclaw-vscode.js

# 另一个终端批准配对(替换为实际nodeId)
openclaw nodes approve vscode-control-node-001

步骤4:测试指令

在 OpenClaw 桌面端/CLI 发送指令:

# 发送“打开VS Code”指令
openclaw commands send --nodeId vscode-control-node-001 --command open-vscode

场景2:远程控制 - OpenClaw + 飞书机器人控制浏览器

核心目标

通过飞书发消息(如“打开Chrome访问百度”),OpenClaw 接收并控制本地浏览器。

步骤1:配置飞书渠道(已配置可跳过)

# 安装飞书插件
openclaw plugins enable feishu
# 按提示输入飞书App ID/Secret完成配置
openclaw channels add --channel feishu

步骤2:本地浏览器控制脚本(可直接复制)

新建 openclaw-browser.js 文件,粘贴以下代码:

const WebSocket = require('ws');
const { exec } = require('child_process');

const ws = new WebSocket('ws://localhost:18789');
const NODE_ID = 'browser-control-node-002';

// 1. 配对 + 订阅飞书消息
ws.on('open', () => {
  ws.send(JSON.stringify({
    type: 'pairing',
    nodeId: NODE_ID,
    name: '浏览器控制节点',
    subscribe: ['feishu'] // 订阅飞书渠道消息
  }));
});

// 2. 处理飞书/OpenClaw 指令
ws.on('message', (data) => {
  try {
    const msg = JSON.parse(data.toString());
    // 飞书消息格式:msg.payload.content 是消息内容
    const command = msg.payload?.content || msg.payload;

    // 浏览器控制指令
    const browserCommands = {
      '打开Chrome': () => {
        const cmd = process.platform === 'win32' ? 'start chrome' : 'open -a "Google Chrome"';
        exec(cmd, (err) => sendResult(!err, 'Chrome已打开'));
      },
      '打开百度': () => {
        const cmd = process.platform === 'win32' ? 'start chrome https://www.baidu.com' : 'open -a "Google Chrome" https://www.baidu.com';
        exec(cmd, (err) => sendResult(!err, '已打开百度'));
      },
      '关闭Chrome': () => {
        const cmd = process.platform === 'win32' ? 'taskkill /f /im chrome.exe' : 'pkill -f "Google Chrome"';
        exec(cmd, (err) => sendResult(!err, 'Chrome已关闭'));
      }
    };

    // 执行指令
    if (browserCommands[command]) {
      browserCommands[command]();
    } else {
      sendResult(false, `不支持的指令:${command},支持指令:${Object.keys(browserCommands).join('、')}`);
    }
  } catch (e) {
    sendResult(false, `指令处理失败:${e.message}`);
  }
});

// 辅助函数:发送执行结果
function sendResult(success, msg) {
  ws.send(JSON.stringify({
    type: 'result',
    nodeId: NODE_ID,
    success,
    msg,
    channel: 'feishu' // 结果回复到飞书
  }));
}

// 异常处理
ws.on('error', (err) => console.error('❌ 连接错误:', err));

步骤3:运行脚本 & 测试

# 安装依赖
npm install ws

# 启动脚本
node openclaw-browser.js

# 批准配对
openclaw nodes approve browser-control-node-002

步骤4:远程测试(飞书发消息)

在飞书给配置的机器人发送消息:

  • 发送“打开Chrome” → 本地Chrome自动启动;
  • 发送“打开百度” → Chrome自动打开百度首页;
  • 发送“关闭Chrome” → Chrome自动关闭。

关键配置说明

  1. Node ID:自定义唯一标识(如 vscode-control-node-001),配对和发指令时需一致;
  2. 跨平台兼容:脚本中 process.platform 自动适配 Windows/macOS 命令;
  3. 异常处理:所有操作加错误捕获,避免脚本崩溃;
  4. 结果反馈:执行后向 OpenClaw 发送结果,飞书场景会自动回复到聊天框。

总结

  1. 本地开发控制VS Code:核心是 WebSocket 直连 + 系统命令执行,适合开发场景;
  2. 远程控制浏览器:通过飞书渠道订阅消息,指令透传至本地脚本,适合远程操作;
  3. 脚本可直接复制运行,仅需替换 Node ID 为自定义值,批准配对即可使用。
Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐