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=loopback或Local only。 - 成功标志:显示
Gateway: bind=lan或Listening: *: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,只是缺少参数)。 - 如果返回
502或Connection Refused-> 失败,检查防火墙或 Mac 监听设置。
📱 第五阶段:企业微信后台对接
- 登录企业微信后台 -> 应用管理 -> 自建应用。
- API接收消息 设置:
- URL:
http://你的云服务器IP:10981/wecom(注意路径是 /wecom,不要加 /webhooks) - Token: 填入配置文件的 Token。
- EncodingAESKey: 填入配置文件的 Key。
- URL:
- 随机生成验证:
- 如果提示校验失败,**先改用“明文模式”**保存,排除加密算法带来的干扰。
- 一旦保存成功,在企业微信 App 里给机器人发个“你好”,看是否有回复。
🚑 终极排错 Checklist
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
| FRP 报错 Connection refused | Mac OpenClaw 没启动 或 绑在了 loopback | 执行 openclaw config set gateway.bind "lan" 并重启 |
| 企业微信保存提示“URL请求超时” | 公网服务器防火墙拦截了 10981 端口 | 去阿里云/腾讯云后台放行安全组端口 |
| 企业微信提示“系统错误” | URL 填错了 | 确认 URL 是 http://IP:端口/wecom,路径不要多写 |
OpenClaw 报错 EncodingAESKey invalid | Key 长度不对或复制错了 | 必须是 43 位,重新生成并粘贴 |
| Mac 上装不上 ngrok | 没装 Homebrew | 建议直接下载二进制包解压运行 |
最后的话: 在 Mac 上做内网穿透最容易忽视的就是 MacOS 的应用监听权限。很多人死在 FRP 连不上本地服务这一步,就是因为 OpenClaw 默认处于“自闭”模式(Bind Localhost)。只有解开这个锁,内网穿透才有意义。