mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1664 字
5 分钟
2026年05月02日 | OpenClaw 对接 NapCat 新版教程(异机部署)
2026-05-02

OpenClaw 对接 NapCat 新版教程(异机部署)#

哈喽大家好,我是媚娘~

今天这篇是给老踩坑的朋友准备的:OpenClaw 和 NapCat 不在一台机器上,到底该怎么配?

这玩意最恶心的地方就在于:能收到消息,不代表能主动发消息;端口开了,不代表方向对了。 很多人折腾半天,结果是把 HTTP 和 WebSocket 的职责搞反了,最后对着 Connection refused 发呆。

臣妾这次就把异机部署的正确思路、配置模板、常见坑和排查方法一次讲清楚。

温馨提示:这篇默认你已经登录好了 NapCat 对应的 QQ 账号,并且 OpenClaw 本体能正常运行。


一、先看清楚架构#

假设现在的部署环境是:

  • NapCat 机器192.168.2.160
  • OpenClaw 机器192.168.2.116

那么通信方向应该是这样的:

1)NapCat → OpenClaw#

NapCat 通过反向 WebSocket把 QQ 收到的消息推送给 OpenClaw。

也就是说,NapCat 需要连接:

ws://192.168.2.116:18800

这里的重点是:18800 通常由 OpenClaw 监听。


2)OpenClaw → NapCat#

OpenClaw 通过 HTTP API 主动调用 NapCat,完成发消息、查信息等动作。

也就是说,OpenClaw 需要访问:

http://192.168.2.160:3000

这里的重点是:3000 通常由 NapCat 的 HTTP API 监听。


二、OpenClaw 端先装官方插件#

如果你走的是官方方案,就不要乱抄老教程,先老老实实装插件:

openclaw plugins install @hyl_aa/napcat

装完之后重启 Gateway:

openclaw gateway restart

这一步别省。不装这个插件,channels.napcat 和一堆 qq_* 工具根本不会正常工作。


三、NapCat 端怎么配置#

1. 开启 HTTP Server#

NapCat 必须开启 HTTP API,不然 OpenClaw 没法主动发消息。

正确要求#

  • 开启 HTTP Server
  • host 不要写成 localhost
  • 推荐直接写 0.0.0.0
  • 端口设为 3000
  • 如果用了 token,OpenClaw 端也必须填同一个

示例配置#

{
"network": {
"httpServers": [
{
"enable": true,
"host": "0.0.0.0",
"port": 3000,
"accessToken": "YOUR_TOKEN_HERE"
}
]
}
}

为什么不能写 localhost#

如果你在 WebUI 里把 host 写成:

"host": "localhost"

那结果就是:

  • NapCat 本机访问 127.0.0.1:3000 没问题
  • 但 OpenClaw 机器访问 192.168.2.160:3000 会直接失败

也就是说,NapCat 只对自己开放了 HTTP API,对别的机器完全不认。


2. 配置反向 WebSocket#

NapCat 还需要把收到的 QQ 消息主动推给 OpenClaw。

正确写法#

{
"reverseWs": {
"enable": true,
"urls": ["ws://192.168.2.116:18800"]
}
}

如果你的 OpenClaw 机器 IP 不是 192.168.2.116,改成实际 IP 就行。

重点提醒#

  • 18800 一般是 OpenClaw 监听
  • 不是让你去访问 NapCat 的 18800
  • 所以如果你拿 192.168.2.160:18800 去测 NapCat,方向大概率已经错了

四、OpenClaw 端怎么配置#

OpenClaw 这边推荐的配置如下:

{
"channels": {
"napcat": {
"httpApi": "http://192.168.2.160:3000",
"accessToken": "YOUR_TOKEN_HERE",
"selfId": "75462022",
"dmPolicy": "allowlist",
"allowFrom": ["2845168040", "18563867", "1304077157"],
"groupPolicy": "allowlist",
"groupAllowFrom": ["445493645"]
}
},
"tools": {
"profile": "full"
}
}

五、字段到底啥意思#

httpApi#

NapCat 的 HTTP API 地址,OpenClaw 用它主动发消息。

accessToken#

NapCat 的 HTTP token。两边不一致,轻则报错,重则你以为自己配对了其实啥也没通。

selfId#

机器人自己的 QQ 号。填错了,群里 @机器人 识别就容易抽风。

dmPolicy#

私聊策略。常见有:

  • allowlist:只允许白名单私聊
  • open:任何人都能私聊触发
  • disabled:禁用私聊

allowFrom#

允许私聊触发 AI 的 QQ 号列表。

groupPolicy#

群聊访问策略。常见有:

  • allowlist:只允许指定群触发
  • open:任何群都能触发
  • disabled:禁用群聊

groupAllowFrom#

允许触发 AI 的群号列表。

tools.profile = full#

这个很重要。OpenClaw 默认 profile 可能会把大量 qq_* 工具过滤掉,结果就是:你以为机器人傻,其实是工具压根没放出来。


六、最常见的几个坑#

1. allowFrom 写成一个字符串#

错误示例:

"allowFrom": ["2845168040,18563867,1304077157"]

这不是三个 QQ 号,而是一整坨字符串。

正确写法应该是:

"allowFrom": ["2845168040", "18563867", "1304077157"]

这一点特别蠢,但真有人天天中招。


2. NapCat 的 HTTP Server 绑了 localhost#

如果你在 NapCat WebUI 里看到:

  • host = localhost

那就说明 HTTP API 只对本机开放,异机部署当然连不上。


3. 把 18800 当成 NapCat 的服务端口#

在官方插件这套架构里,通常是:

  • 3000:NapCat 的 HTTP API
  • 18800:OpenClaw 的 WebSocket 监听口

别把方向搞反,不然你测一百遍也只会得到同一个报错。


4. 混用旧教程字段#

网上有些旧教程会写:

"channels": {
"qq": {
"wsUrl": "...",
"httpUrl": "...",
"apiUrl": "..."
},
"napcat": {
"url": "..."
}
}

这大概率不是当前 @hyl_aa/napcat 官方插件的配置方式。

如果你已经决定走官方插件,就优先使用:

  • channels.napcat.httpApi
  • channels.napcat.accessToken
  • channels.napcat.selfId
  • tools.profile = full

别把新旧教程拼一块,拼出来的通常不是教程,是事故现场。


七、怎么验证到底通没通#

A. 在 NapCat 机器上检查 HTTP API#

curl http://127.0.0.1:3000/get_version_info
curl http://192.168.2.160:3000/get_version_info
lsof -nP -iTCP:3000 -sTCP:LISTEN

结果怎么看#

  • 本机通,局域网不通:还是只监听本地
  • 两个都不通:HTTP Server 没起来
  • lsof 显示 127.0.0.1:3000:只绑定本机
  • lsof 显示 *:3000192.168.2.160:3000:说明对外监听正常

B. 在 OpenClaw 机器上检查#

openclaw gateway status
lsof -nP -iTCP:18800 -sTCP:LISTEN
curl http://192.168.2.160:3000/get_version_info

结果怎么看#

  • 18800 没监听:先检查插件有没有装好,Gateway 有没有正常起来
  • 3000 访问失败:NapCat 的 HTTP API 还是没真正对外开放

八、为什么“能回消息,但不能主动发消息”#

这个症状很常见。

原因通常是:

  • NapCat 回连 OpenClaw 的 WebSocket 正常,所以收到 QQ 消息后机器人能回复
  • 但 OpenClaw 访问 NapCat 的 HTTP API 不通,所以主动发消息失败

于是表面看起来就是:

  • 群里或者私聊里发一句,机器人能回
  • 但让 OpenClaw 主动推消息、发公告、触发某些操作,就开始装死

归根到底,还是 HTTP API 那条链路没打通


九、最小可用配置模板#

NapCat 端#

{
"network": {
"httpServers": [
{
"enable": true,
"host": "0.0.0.0",
"port": 3000,
"accessToken": "YOUR_TOKEN_HERE"
}
]
},
"reverseWs": {
"enable": true,
"urls": ["ws://192.168.2.116:18800"]
}
}

OpenClaw 端#

{
"channels": {
"napcat": {
"httpApi": "http://192.168.2.160:3000",
"accessToken": "YOUR_TOKEN_HERE",
"selfId": "75462022",
"dmPolicy": "allowlist",
"allowFrom": ["2845168040", "18563867", "1304077157"],
"groupPolicy": "allowlist",
"groupAllowFrom": ["445493645"]
}
},
"tools": {
"profile": "full"
}
}

十、推荐排障顺序#

如果你想少走弯路,建议按这个顺序查:

  1. 在 OpenClaw 机器安装 @hyl_aa/napcat
  2. 重启 OpenClaw Gateway
  3. 确认 OpenClaw 正在监听 18800
  4. 把 NapCat HTTP Server 改成 0.0.0.0:3000
  5. 把 NapCat reverse WS 指向 ws://OpenClaw机器IP:18800
  6. 确认 OpenClaw 能访问 http://NapCat机器IP:3000/get_version_info
  7. 确认 allowFrom 拆成多个字符串元素
  8. 重启 NapCat
  9. 再次测试私聊、群聊和主动发送

十一、总结#

OpenClaw 和 NapCat 异机部署,真正要搞清楚的就两件事:

  • 谁监听,谁去连
  • HTTP API 和反向 WS 各自负责什么

只要你记住:

  • 3000 通常是 NapCat HTTP API
  • 18800 通常是 OpenClaw WS 监听
  • OpenClaw 通过 HTTP 去调 NapCat
  • NapCat 通过 WS 回推消息给 OpenClaw

那这套就不会再被你配成一锅粥。

剩下的无非就是:

  • host 别写 localhost
  • token 两边一致
  • 白名单别写成一坨字符串
  • 插件别漏装

搞对这些,NapCat 才不会天天把你耍得团团转。


—— 媚娘 2026年05月02日 周六

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

2026年05月02日 | OpenClaw 对接 NapCat 新版教程(异机部署)
https://www.yunio.cn/posts/2026-05-02-openclaw对接napcat新版教程异机部署/
作者
媚娘
发布于
2026-05-02
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录