1. OpenClaw 对接 QQ(使用 NapCat 作为底层)
首先,我们需要在本地部署 NapCat 来模拟 QQ 客户端。在项目目录下创建文件夹并初始化结构。
mkdir -p napcat && cd napcat
mkdir -p config .config logs
接下来编写 docker-compose.yml 文件。这里需要注意环境变量配置,特别是 UID 和 GID,确保容器内用户权限与宿主机一致,避免文件读写问题。
services:
napcat:
image: mlikiowa/napcat-docker:latest
container_name: napcat
restart: unless-stopped
environment:
- NAPCAT_UID=${NAPCAT_UID:-1000}
- NAPCAT_GID=${NAPCAT_GID:-1000}
- MESSAGE_POST_FORMAT=string
- HTTP_ENABLE=true
- HTTP_HOST=0.0.0.0
- HTTP_PORT=3000
- WS_ENABLE=true
- WS_HOST=0.0.0.0
- WS_PORT=3001
ports:
- "3000:3000"
- "3001:3001"
- "6099:6099"
volumes:
- ./config:/app/napcat/config
- ./.config:/app/.config/QQ
- ./logs:/app/napcat/logs
stdin_open: true
tty: true
启动服务时,动态获取当前用户的 UID 和 GID 传递给 Docker Compose,这样能防止权限错误。
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker-compose up -d
启动完成后,可以通过日志查看二维码进行扫码登录,或者通过 WebUI 界面输入账号密码登录。如果提示需要验证码,建议直接使用扫码方式。

登录成功后,进入网络配置页面,添加 HTTP Server 和 WebSocket Server。复制生成的 Token 备用,后续插件配置会用到。

插件选择与安装
OpenClaw 支持多种 QQ 插件,目前主要有两个方案:openclaw_qq 和 @izhimu/qq。推荐使用 openclaw_qq,因为它原生支持群聊 @ 触发和关键词唤醒,而另一个插件默认会对所有消息回复且命令支持有限。
推荐方案:openclaw_qq
在终端执行以下命令克隆并安装插件:
cd ~/.openclaw/extensions && git clone https://github.com/constansino/openclaw_qq.git qq
cd ~/.openclaw/extensions/qq && pnpm install 2>&1 | tail -20
安装完成后重启网关:
pnpm openclaw gateway restart
打开管理面板 http://127.0.0.1:18789/channels,粘贴之前复制的 WebSocket Token 并保存。看到状态变为 yes 即表示连接成功。

常见问题排查:
如果机器人回复出现 Connection error,请检查用户目录下的 openclaw.json 配置文件。找到 channels -> qq 节点,将 enable 字段设为 true。此外,确认 agents.defaults.model.primary 指向的模型是否已启动(如 Ollama),且命令需在对应的 QQ 聊天会话中执行才能生效。

插件功能对比
| 功能 | @izhimu/qq | openclaw_qq | 说明 |
|---|---|---|---|
| 群聊 @ 触发 | ❌ 所有消息都回复 | ✅ 默认仅 @ 触发 | 新插件有 requireMention 配置 |
| 关键词唤醒 | ❌ | ✅ 如 "小助手" | 新插件有 keywordTriggers |
| 管理员命令 | ❌ | ✅ /model, /status 等 | 新插件实现了命令处理 |
| 风控优化 | ❌ | ✅ 限速、URL 规避 | 新插件针对 QQ 风控设计 |
2. 自定义域名发送邮件
为了实现自动化通知,我们需要接入邮件服务。这里以 Resend 为例。
-
注册与验证 访问官网注册账号,密码需至少 12 位。注册后务必前往邮箱完成验证。
-
获取 API Key 在后台生成 API Key 并复制保存,后续配置 Skills 时需要。
-
安装邮件技能 查找并安装 Resend 相关的 Skills:
npx skills add resend/resend-skills@send-email -g -y测试默认只能发送注册账户绑定的邮箱。若要支持任意域名,需添加自有域名。
-
域名验证 在 Resend 后台添加域名,系统会要求配置 DNS 记录以确保发信安全。主要包含以下几项:
类型 主机记录 记录值 用途 TXT resend._domainkeyp=MIGfMA0GCSqG[...]DKIM 签名 MX sendfeedback-smtp.[...]amazonses.com退信处理 TXT sendv=spf1 include[...]nses.com ~allSPF 验证 TXT _dmarcv=DMARC1; p=none;DMARC 策略 以阿里云解析为例,添加上述记录后等待验证通过,状态由 Pending 变为 Verified。
至此,QQ 机器人接收消息、AI 处理以及邮件发送的链路已全部打通。实际运行中,注意观察日志输出,根据反馈调整模型参数或网络配置即可。


