【OpenClaw】一台 Windows 主机部署双 Gateway:两个微信 + 一台主机 + 模型隔离完整踩坑实录

发布时间:2026/6/24 2:22:07
【OpenClaw】一台 Windows 主机部署双 Gateway:两个微信 + 一台主机 + 模型隔离完整踩坑实录 如何在一台 Windows 宿主机上跑两个完全独立的 OpenClaw Gateway各自绑定不同微信、使用不同 AI 模型还能互不干扰本文记录完整的配置、踩坑和修复过程。前言需求一个微信号对接 DeepSeek Flash快速、便宜、日常对话另一个微信号对接 DeepSeek Pro翻译审校、长文档处理。虽然 OpenClaw 单个 Gateway 原生支持多微信账号但所有账号共享同一个 AI 模型和 Workspace。如果你需要不同微信使用不同模型、独立会话上下文、互不干扰就需要两个独立 Gateway。本文将基于openclaw 2026.3.23-2 Node.js 24.2.0 Windows 11从头配置双 Gateway 并记录所有踩坑。架构关键设计原则端口隔离、配置隔离、状态隔离、Agent 隔离。四个维度全部独立才能保证稳定。环境准备组件版本说明OpenClaw2026.3.23-2npm 全局安装Node.js24.2.0Windows 端微信插件tencent-weixin/openclaw-weixin 2.0.1已安装OSWindows 11—确认当前只有一个 Gateway 在运行curlhttp://127.0.0.1:18789/health# {ok:true,status:live}第一步创建第二个配置文件以当前openclaw.json为模板cp~/.openclaw/openclaw.json ~/.openclaw/openclaw-gateway2.json用 Node.js 修改关键字段constfsrequire(fs);constpathC:/Users/用户名/.openclaw/openclaw-gateway2.json;constcfgJSON.parse(fs.readFileSync(path,utf8));// 修改端口和模型cfg.gateway.port19789;cfg.agents.defaults.model.primarydeepseek/deepseek-v4-pro[1m];cfg.agents.defaults.workspaceString.rawC:\Users\用户名\.openclaw\workspace-gateway2;cfg.agents.defaults.timeoutSeconds600;fs.writeFileSync(path,JSON.stringify(cfg,null,2),utf8);⚠️端口间隔G2 使用 19789与 G1 的 18789 间隔至少 20因为 browser control2、canvas 等端口是自动派生的。第二步创建独立目录mkdir$env:USERPROFILE\.openclaw\workspace-gateway2 mkdir$env:USERPROFILE\.openclaw\state-gateway2⚠️ 最关键的一个坑绝对不要用 junction/symlink 共享 agents 目录# ❌ 错误做法会导致两 Gateway 共享 session 文件产生锁冲突 mklink /J state-gateway2\agents ~\.openclaw\agents # ✅ 正确做法extensions 可以共享agents 必须独立 mklink /J state-gateway2\extensions ~\.openclaw\extensions共享 agents 的后果现象原因Gateway 进程静默崩溃两个进程争抢同一个 session 文件的写锁日志无任何错误文件锁竞争发生在 OS 层JS 层捕获不到微信消息请求超时Session 被锁住模型无法写入回复第三步Agent 初始化清空 G2 的 agents 目录让 openclaw 首次启动时自动创建rm-rf~/.openclaw/state-gateway2/agents/*启动后 openclaw 自动生成独立 AgentAgent ID: gateway2 Session Key: agent:gateway2:main与 G1 的agent:main:main完全隔离。第四步编写启动脚本# start-openclaw-gateway2.ps1$ErrorActionPreferenceStop# 独立配置 $env:OPENCLAW_CONFIG_PATH $env:USERPROFILE\.openclaw\openclaw-gateway2.json$env:OPENCLAW_STATE_DIR $env:USERPROFILE\.openclaw\state-gateway2# 只杀自己的端口进程 $gatewayPidGet-NetTCPConnection-LocalPort 19789-State Listen -ErrorAction SilentlyContinue|Select-Object-ExpandProperty OwningProcess-First 1if($gatewayPid){Stop-Process-Id$gatewayPid-Force}Start-Sleep-Seconds 1# PATH 修正避免 spawn openclaw ENOENT $npmGlobalBinJoin-Path$env:APPDATAnpm$env:PATH $npmGlobalBin;$env:PATH# 启动 $nodeExe(Get-Commandnode).Source$openclawMjs$env:APPDATA\npm\node_modules\openclaw\openclaw.mjsStart-Process-FilePathcmd.exe-ArgumentList/d /c $nodeExe $openclawMjs gateway --port 19789 $env:USERPROFILE\openclaw-gateway2-manual.log 21-WindowStyle Hidden同样G1 的启动脚本也要改为按端口查杀# ✅ G1 只杀 18789 端口的进程不会误杀 G2$gatewayPidGet-NetTCPConnection-LocalPort 18789-State Listen |Select-Object-ExpandProperty OwningProcess-First 1❌ 不要用CommandLine -like *openclaw*来匹配进程那会把另一个 Gateway 也杀掉。第五步登录第二个微信$env:OPENCLAW_CONFIG_PATH $env:USERPROFILE\.openclaw\openclaw-gateway2.json$env:OPENCLAW_STATE_DIR $env:USERPROFILE\.openclaw\state-gateway2openclaw channels login--channel openclaw-weixin⏱️ 二维码约 2 分钟有效拿另一个微信扫码。超时需要重新执行。第六步配置 Workspace复制基础文件到 G2cp~/.openclaw/workspace/AGENTS.md ~/.openclaw/workspace-gateway2/cp~/.openclaw/workspace/SOUL.md ~/.openclaw/workspace-gateway2/cp~/.openclaw/workspace/USER.md ~/.openclaw/workspace-gateway2/cp~/.openclaw/workspace/TOOLS.md ~/.openclaw/workspace-gateway2/根据 G2 的用途定制AGENTS.md。比如 G2 侧重翻译审校可以加入技能调度规则## Deep Review Mode 触发词深度审校、深度翻译、法律翻译、合同翻译 当触发时分三步处理 1. 直译保持原文结构 2. 检查术语一致性、逻辑连贯性 3. 优化中文表达附审校说明验证健康检查curlhttp://127.0.0.1:18789/health# G1# {ok:true,status:live}curlhttp://127.0.0.1:19789/health# G2# {ok:true,status:live}端口确认netstat-ano|findstr18789 18791 19789 19791预期输出TCP 127.0.0.1:18789 LISTENING PID1 TCP 127.0.0.1:18791 LISTENING PID1 TCP 127.0.0.1:19789 LISTENING PID2 TCP 127.0.0.1:19791 LISTENING PID2双微信确认openclaw channels list# G1: openclaw-weixin a2dbb69f5a80-im-bot: configured, enabled$env:OPENCLAW_CONFIG_PATH...openclaw channels list# G2: openclaw-weixin 5c21986455d7-im-bot: configured, enabled互不干扰测试重启 G1验证 G2 不受影响# 重启 G1./start-openclaw-gateway.ps1# G2 仍然存活curlhttp://127.0.0.1:19789/health# {ok:true,status:live}完整的踩坑记录#问题日志表现根因修复1G1 重启后 G2 消失G2 端口消失查杀脚本CommandLine -like *openclaw*误杀按端口查杀进程2Gateway 静默崩溃进程消失无错误日志junction 共享 agents 目录session 文件锁冲突独立 agents 目录3spawn openclaw ENOENT崩溃日志有 ENOENTnpm bin 不在 Gateway 进程 PATH启动脚本加$env:PATH4Request timed outembedded run timeout默认 timeout 30s系统 prompt 41KB 首次请求慢设 600s5微信消息无回复有 typing 无回复DeepSeek 超时 / session 锁冲突修 1246图片分析卡住Navigation blocked: file://浏览器不支持本地文件协议改用多模态模型直调 API7JSON 解析失败Unexpected tokenPowerShellSet-Content -Encoding UTF8写入 BOMNode.js 写配置不带 BOM最终配置对照维度Gateway 1Gateway 2端口18789 / 1879119789 / 19791配置文件openclaw.jsonopenclaw-gateway2.jsonState 目录~/.openclaw/~/.openclaw/state-gateway2/Workspace~/.openclaw/workspace/~/.openclaw/workspace-gateway2/启动脚本start-openclaw-gateway.ps1start-openclaw-gateway2.ps1AI 模型DeepSeek V4 FlashDeepSeek V4 ProAgent IDmaingateway2Session Keyagent:main:mainagent:gateway2:main上下文窗口128K1M微信账号账号 A账号 B超时设置600s600sFAQQ: 能不能在同一台机器上跑三个 Gateway可以。端口再加 2019789 20 19809依此类推。注意内存占用和 DeepSeek API 并发限制。Q: 双 Gateway 能用同一个 API Key 吗可以。DeepSeek 按 token 计费两个 Gateway 共享同一个 Key所有消耗合并计入同一个账单。如果需要分开核算例如不同部门/项目可以申请两个 API Key 分别配置。Q: 一号微信的消息会不会串到二号不会。每个 Gateway 监听自己的端口微信账号绑定不同的 im-bot ID会话完全隔离。Q: 需要每次开机手动启动两个 Gateway 吗可以把两个启动脚本都加入 Windows 启动文件夹或计划任务开机自动启动。注意 G1 和 G2 之间加 30 秒延迟避免同时初始化冲突。如果您觉得有用欢迎点赞、转发、评论、关注。