Mac本地部署OpenClaw企业微信机器人:全流程避坑指南

0 阅读4分钟

Mac本地部署OpenClaw企业微信机器人:全流程避坑指南

写在前面

如果你是第一次在 Mac 上折腾企业微信机器人,一定要看这一段: 核心逻辑:企业微信服务器(在公网)需要把消息推送到你的 Mac(在内网)。因为公网找不到你的 Mac,所以必须搭建一条内网穿透隧道(FRP/Ngrok)。 最大痛点:OpenClaw 出于安全考虑,默认只允许本机访问。这导致你就算搭好了 FRP 隧道,隧道即使通到了 Mac,也连不进 OpenClaw。 本文目标:手把手教你修改 Mac 监听权限、打通 FRP 隧道、完成企业微信对接。


🛠️ 第一阶段:环境与安装

1. 前置准备

  • 本地环境:Mac (Intel 或 Apple Silicon 均可)
  • 服务端环境:一台有公网 IP 的云服务器(用于 FRP 中转,如果没有,只能用 Ngrok 凑合,但生产环境建议用 FRP)
  • 权限:企业微信管理员权限(需要获取 Token 和 Key)

2. 安装 OpenClaw

# 安装核心程序
npm install -g openclaw

# 安装企业微信插件(注意!不要用 @mijia-life 开头那个旧版,已废弃)
openclaw plugins install openclaw-plugin-wecom

⚙️ 第二阶段:配置 OpenClaw(三个必死坑点)

在 Mac 上,建议直接编辑配置文件,比用命令行不容易出错。 文件路径:~/.openclaw/openclaw.json

❌ 常见的错误配置

  • 直接把企业微信后台的 EncodingAESKey 粘贴进去 -> 错! 配置文件里由于变量名规范,首字母要小写,且 AES 要写成 Aes。
  • 只配置了 channels -> 错! 必须先在 plugins 里启用插件。

✅ 正确的配置模板

请直接复制下方内容覆盖你的配置(替换掉中文部分):

{
  "plugins": {
    "entries": {
      "wecom": {
        "enabled": true
      }
    }
  },
  "channels": {
    "wecom": {
      "enabled": true,
      "token": "你的Token(直接从企业微信后台复制)",
      "encodingAesKey": "你的EncodingAESKey(直接从企业微信后台复制,注意这里的Key名是小驼峰)"
    }
  }
}

🔓 第三阶段:解开 Mac 本地监听锁(Mac专属巨坑)

这是最容易卡住的地方! 默认情况下,OpenClaw 启动后只监听 127.0.0.1。这意味着 FRP 客户端(即使在同一台 Mac 上)如果尝试通过局域网 IP 或 Docker 转发连接它,会被拒绝。

1. 修改绑定地址

不要尝试设置为 0.0.0.0,OpenClaw 会报错 Invalid input正确的关键词是 lan

# 告诉 OpenClaw 允许局域网连接
openclaw config set gateway.bind "lan"

# 确保端口固定(默认 18789)
openclaw config set gateway.port 18789

# 重启网关
openclaw gateway restart

2. 验证是否成功

运行 openclaw gateway status

  • 失败标志:显示 Gateway: bind=loopbackLocal only
  • 成功标志:显示 Gateway: bind=lanListening: *:18789

🚇 第四阶段:配置 FRP 内网穿透

因为我们在 Mac 本地,必须把本地的 18789 端口暴露给公网。假设你有一台公网服务器 122.9.xx.xx

1. 服务端配置 (frps.toml) - 在云服务器上

bindPort = 7000        # FRP通讯端口
vhostHTTPPort = 80     # HTTP转发端口(可选)
auth.method = "token"
auth.token = "设置一个强密码"

2. 客户端配置 (frpc.toml) - 在你的 Mac 上

避坑提示:如果云服务器没配置 Nginx 反代,不要用 type = http,直接用 tcp 模式最稳,不容易出现路径转发错误。

serverAddr = "122.9.xx.xx"
serverPort = 7000
auth.method = "token"
auth.token = "上面的强密码"

[[proxies]]
name = "mac-bot"
type = "tcp"            # 选TCP,稳
localIP = "127.0.0.1"
localPort = 18789       # OpenClaw 的本地端口
remotePort = 10981      # 云服务器暴露给企业微信访问的端口

3. 测试通道

在 Mac 上启动 FRP:

./frpc -c frpc.toml

看到 start proxy success 后,在浏览器访问 http://云服务器IP:10981/wecom

  • 如果返回 Internal Server Error -> 成功!(说明连通了 OpenClaw,只是缺少参数)。
  • 如果返回 502Connection Refused -> 失败,检查防火墙或 Mac 监听设置。

📱 第五阶段:企业微信后台对接

  1. 登录企业微信后台 -> 应用管理 -> 自建应用。
  2. API接收消息 设置:
    • URL: http://你的云服务器IP:10981/wecom (注意路径是 /wecom,不要加 /webhooks)
    • Token: 填入配置文件的 Token。
    • EncodingAESKey: 填入配置文件的 Key。
  3. 随机生成验证
    • 如果提示校验失败,**先改用“明文模式”**保存,排除加密算法带来的干扰。
    • 一旦保存成功,在企业微信 App 里给机器人发个“你好”,看是否有回复。

🚑 终极排错 Checklist

现象可能原因解决方案
FRP 报错 Connection refusedMac OpenClaw 没启动 或 绑在了 loopback执行 openclaw config set gateway.bind "lan" 并重启
企业微信保存提示“URL请求超时”公网服务器防火墙拦截了 10981 端口去阿里云/腾讯云后台放行安全组端口
企业微信提示“系统错误”URL 填错了确认 URL 是 http://IP:端口/wecom,路径不要多写
OpenClaw 报错 EncodingAESKey invalidKey 长度不对或复制错了必须是 43 位,重新生成并粘贴
Mac 上装不上 ngrok没装 Homebrew建议直接下载二进制包解压运行

最后的话: 在 Mac 上做内网穿透最容易忽视的就是 MacOS 的应用监听权限。很多人死在 FRP 连不上本地服务这一步,就是因为 OpenClaw 默认处于“自闭”模式(Bind Localhost)。只有解开这个锁,内网穿透才有意义。