OpenClaw本地开发控制VS Code、远程控制浏览器
本地开发控制VS Code:核心是 WebSocket 直连 + 系统命令执行,适合开发场景;远程控制浏览器:通过飞书渠道订阅消息,指令透传至本地脚本,适合远程操作;脚本可直接复制运行,仅需替换 Node ID 为自定义值,批准配对即可使用。
·
我会按最常用的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自动关闭。
关键配置说明
- Node ID:自定义唯一标识(如
vscode-control-node-001),配对和发指令时需一致; - 跨平台兼容:脚本中
process.platform自动适配 Windows/macOS 命令; - 异常处理:所有操作加错误捕获,避免脚本崩溃;
- 结果反馈:执行后向 OpenClaw 发送结果,飞书场景会自动回复到聊天框。
总结
- 本地开发控制VS Code:核心是 WebSocket 直连 + 系统命令执行,适合开发场景;
- 远程控制浏览器:通过飞书渠道订阅消息,指令透传至本地脚本,适合远程操作;
- 脚本可直接复制运行,仅需替换 Node ID 为自定义值,批准配对即可使用。
更多推荐




所有评论(0)