OpenClaw 配置 NapCat 实现主动发送 QQ 消息教程

问题背景

OpenClaw 配置好 NapCat 后,可以正常接收 QQ 消息并进行回复,但无法主动发送消息到 QQ 群或私聊。

注意:当前问题前提是已成功配置openclaw接入QQ。

表现为:

  • 用户发送消息后,机器人可以正常回复
  • 使用 openclaw message send 命令失败
  • 使用 agent 主动发送到 QQ 群失败

环境说明

OpenClaw: 2026.2.2-3

NapCat: 4.15.4 (OneBot 11)

Windows: NapCat 运行在 Windows 上

WSL2: OpenClaw 运行在 WSL2 中

网络架构:

“`

Windows (NapCat) → ws://172.18.208.1:3001 → OpenClaw (WSL2)

OpenClaw (WSL2) → http://172.18.208.1:3000 → NapCat (HTTP API)

“`

> 注意:`172.18.208.1` 是本教程中 WSL2 虚拟网络中 Windows 主机的 IP 地址。

> – 如果你用 WSL2:这个地址通常是自动生成的,通过 `cat /etc/resolv.conf | grep nameserver` 查看

> – 如果你用 Docker:Windows 的地址可能是 `host.docker.internal` 或 `172.17.0.1`

> – 如果你用虚拟机(VM):需要配置虚拟机的端口转发或使用桥接网络

> – 如果你在同一台机器上直接安装:可以直接用 `localhost` 或 `127.0.0.1`

问题诊断过程

1. 测试基本连接

首先确认 OpenClaw 跟 NapCat 的基本连接是否正常:

```bash

openclaw status

```

确认 NapCat channel 状态为 `OK`。

2. 测试被动回复

在 QQ 群或私聊发送消息,确认 OpenClaw 能正常接收和回复。这一步通常是成功的,说明 WebSocket 接收通道正常。

3. 测试主动发送

```bash

openclaw message send --channel napcat --target "group:705465152" --message "测试消息"

```

现象:命令显示”发送成功”,但 QQ 群里没有收到消息。

4. 检查 NapCat 配置

查看 NapCat 的 OneBot 11 配置文件(Windows 上):

```
E:\NapCat.Shell.Windows.OneKey\NapCat.44498.Shell\versions\9.9.26-44498\resources\app\napcat\config\onebot11_3274662390.json
```

关键问题:配置中 `httpServers: []` 为空,没有启用 HTTP 服务器

5. 启用 NapCat HTTP 服务器

修改 NapCat 配置,添加 HTTP Server:

```json
{
  "network": {
    "httpServers": [
      {
        "enable": true,
        "host": "0.0.0.0",
        "port": 3000,
        "accessToken": "3V5Bz7RVxL41CvdS"
      }
    ],
    ...
  }
}
```

6. 测试 HTTP API

> IP 地址说明:如果你的 OpenClaw 和 NapCat 不在同一台机器上,或者你没用 WSL2,请把 `172.18.208.1` 替换为 NapCat 运行机器的实际 IP:

> – 同一机器直接运行:用 `127.0.0.1` 或 `localhost` 即可

> – WSL2: 用 `cat /etc/resolv.conf | grep nameserver` 获取

> – Docker: 用 `host.docker.internal` 或 Docker 网关 IP

> – 虚拟机/其他:配置好网络互通后使用实际 IP

重启 NapCat 后,用 curl 直接测试 HTTP API:
curl -X POST “http://172.18.208.1:3000/send_group_msg” \
-H “Authorization: Bearer 3V5Bz7RVxL41CvdS” \
-H “Content-Type: application/json” \
-d ‘{
“group_id”: 705465152,
“message”: “curl测试消息”
}’

如果成功返回 `{“status”:”ok”,”data”:{“message_id”:xxx}}`,说明 NapCat HTTP API 正常工作。

7. 配置 OpenClaw NapCat Channel

问题是 OpenClaw 的 NapCat extension 需要额外的配置。查看 OpenClaw 源码(如果自定义了 extension)找到需要的配置字段。

编辑 `~/.openclaw/openclaw.json`:

```json

{

  "channels": {

    "qq": {

      "enabled": true,

      "wsUrl": "ws://172.18.208.1:3001",

      "accessToken": "3V5Bz7RVxL41CvdS",

      "httpUrl": "http://172.18.208.1:3000",

      "apiUrl": "http://172.18.208.1:3000"

    },

    "napcat": {

      "url": "http://172.18.208.1:3000",

      "enableGroupMessages": true,

      "groupMentionOnly": false

    }

  }

}

```

关键字段说明

– `qq.wsUrl`: WebSocket 地址,用于接收消息

– `qq.accessToken`: NapCat WebSocket 鉴权 token

– `napcat.url`: NapCat HTTP API 地址(这是关键!

– `napcat.enableGroupMessages`: 启用群聊消息处理

– `napcat.groupMentionOnly`: 是否只在被@时响应(建议 false,方便测试)

8. 重启 OpenClaw Gateway

```bash

openclaw gateway restart

```

9. 验证功能

测试发送到群:

```bash

openclaw message send --channel napcat --target "group:705465152" --message "测试消息"

```

测试发送到私聊:

```bash

openclaw message send --channel napcat --target 1215142660 --message "私聊测试"

```

NapCat OneBot 11 配置

文件路径:`E:\…\config\onebot11_3274662390.json`

```json

{

  "network": {

    "httpServers": [

      {

        "enable": true,

        "host": "0.0.0.0",

        "port": 3000,

        "accessToken": "YOUR_TOKEN_HERE"

      }

    ],

    "websocketServers": [

      {

        "enable": true,

        "name": "openclaw",

        // IP 地址说明:根据部署环境选择:

        // - 同一机器:用 "127.0.0.1" 或 "0.0.0.0"

        // - WSL2:用 WSL2 网关地址 (cat /etc/resolv.conf)

        // - Docker:用 "0.0.0.0"

        "host": "0.0.0.0",

        "port": 3001,

        "token": "YOUR_TOKEN_HERE",

        "reportSelfMessage": false,

        "enableForcePushEvent": true,

        "messagePostFormat": "array",

        "debug": false,

        "heartInterval": 30000

      }

    ],

    ...

  }

}

```

OpenClaw 配置

文件路径:`~/.openclaw/openclaw.json`

```json

{

  "channels": {

    "qq": {

      "enabled": true,

      "wsUrl": "ws://172.18.208.1:3001",

      "accessToken": "3V5Bz7RVxL41CvdS",

      "httpUrl": "http://172.18.208.1:3000",

      "apiUrl": "http://172.18.208.1:3000",

      "enableTTS": true

    },

    "napcat": {

      "url": "http://172.18.208.1:3000",

      "enableGroupMessages": true,

      "groupMentionOnly": false

    }

  }

}

```

常见问题

Q1: 修改配置后不生效?

原因:NapCat 或 OpenClaw 可能缓存了旧的配置。

解决方法

1. NapCat: 完全退出后重新启动

2. OpenClaw: 运行 `openclaw gateway restart`

Q2: `fetch failed` 错误

原因:OpenClaw 找不到 NapCat channel 配置。

解决方法:确认 `openclaw.json` 中有 `channels.napcat.url` 字段。


总结

要实现 OpenClaw 主动发送 QQ 消息,需要:

1. NapCat 启用 HTTP 服务器(端口 3000)

2. OpenClaw 配置 `channels.napcat.url`

3. 确保网络互通(WSL2 和 Windows 之间)

4. 重启 NapCat 和 OpenClaw Gateway

配置完成后,就可以通过命令行、API 或 agent 主动向 QQ 群或私聊发送消息了


参考资料

– [OpenClaw 官方文档](https://docs.openclaw.ai)

– [OneBot 11 标准](https://github.com/botuniverse/onebot-11)

– [NapCat GitHub](https://github.com/NapNeko/NapCatQQ)

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇