用OpenClaw做qq ai办公机器人(支持群聊关键词触发+自定义域名发送任意邮件)

1.OpenClaw对接QQ(qq账号当机器人使用)

在任意文件夹创建项目文件夹napcat及需要的文件夹,并创建docker-compose.yml

mkdir -p napcat && cd napcat

mkdir -p config .config logs

docker-compose.yml内容参考

bash 复制代码
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:
      # 1. NapCat 配置(网络设置、WebUI token)
      - ./config:/app/napcat/config
      
      # 2. QQ 数据(登录凭证、持久化登录状态)
      # 官方路径是 /app/.config/QQ,
      - ./.config:/app/.config/QQ
      
      # 3. 日志(可选)
      - ./logs:/app/napcat/logs
    
    # 注意:没有 network_mode: bridge,与 ports 冲突
    stdin_open: true
    tty: true

启动docker,并执行以下命令

bash 复制代码
NAPCAT_UID=$(id -u) NAPCAT_GID=$(id -g) docker-compose up -d
命令拆解 含义
NAPCAT_UID=$(id -u) 设置环境变量 NAPCAT_UID 为当前用户的用户 ID
NAPCAT_GID=$(id -g) 设置环境变量 NAPCAT_GID 为当前用户的组 ID
docker-compose up -d 在后台启动 Docker Compose 服务

因为NapCat 容器内以 NAPCAT_UID 用户运行,需要与宿主机用户权限匹配,所以动态获取当前用户 ID,环境变量传递给 Docker Compose

启动完成

执行docker-compose logs -f,手机qq扫描登录日志的二维码登录

也可以根据日志的token打开http://127.0.0.1:6099/webui?token=你的token,输入账号和密码

如果提示需要验证码,暂时不支持的话就扫码登录,登录后只要日志没有显示离线就可以退出手机qq

点击网络配置,添加

复制websocket server的token

两个插件选一个即可,建议用openclaw_qq,因为目前@izhimu/qq插件似乎群里有人发消息就一定会回复且不支持/model等命令(可能要自己研究怎么配置或修改源码?),而openclaw_qq在群@机器人的名字或设置关键词触发

插件1(推荐):

在另一个终端执行cd ~/.openclaw/extensions && git clone https://github.com/constansino/openclaw_qq.git qq命令给openclaw安装插件,然后执行cd ~/.openclaw/extensions/qq && pnpm install 2>&1 | tail -20编译安装

插件2:

执行pnpm openclaw plugins install @izhimu/qq给openclaw安装插件,如果你的openclaw不是通过pnpm安装则去掉pnpm,下同

输入pnpm openclaw gateway restart重启,然后打开http://127.0.0.1:18789/channels,粘贴websocket的token,点击保存,过一会看到yes即成功连接

如果qq机器人回复出现Connection error(这里已经换成小号当QQ机器人,防止主号乱发消息被封),去用户目录的.opneclaw里,比如/Users/Zhuanz/.openclaw,打开openclaw.json,找到channels,再找qq,将enable改为true;如果还是这样,看看agents.defaults.model.primary是不是本地 ollama 模型且此时没启动ollama(注意在网页或tui输入/model等命令要在对应的qq聊天session执行才对qq机器人有效)

之后执行pnpm openclaw gateway restart或其他命令重启,测试效果,如果你的openclaw不是通过pnpm安装则去掉pnpm,下同

用@izhimu/qq插件的情况

已经成功回复,但如果是用@izhimu/qq插件不会对聊天中直接发/model等命令执行且给结果,只有让对话中强调执行这个命令才有效,但在openclaw_qq可以直接执行命令给结果(下图)

openclaw_qq配置参考

插件功能差异对比(原因:目前这个QQ 插件缺少 CommandAuthorized 参数)

插件 finalizeInboundContext 参数 命令支持
飞书 包含 CommandAuthorized: commandAuthorized ✅ 支持
QQ 缺乏 CommandAuthorized 参数 ❌ 不支持

两个 QQ 插件功能对比

1)配置项对比

功能 @izhimu/qq openclaw_qq 说明
wsUrl WebSocket 地址
accessToken 访问令牌
enable 启用开关
requireMention ✅ 默认 true 群聊需要 @ 才触发
keywordTriggers 关键词唤醒
admins 管理员列表
adminOnlyChat 仅管理员可触发
allowedGroups 群白名单
blockedUsers 用户黑名单
systemPrompt 自定义人设
historyLimit 历史消息注入
autoApproveRequests 自动通过好友 / 群邀请
enableTTS 语音回复
enableGuilds QQ 频道支持
rateLimitMs ✅ 默认 1000ms 发送限速防风控
antiRiskMode URL 风控规避
maxMessageLength ✅ 默认 4000 消息分片
formatMarkdown Markdown 转纯文本
showProcessingStatus 群名片显示 "输入中"
sharedMediaHostDir 跨容器媒体共享

2)核心功能差异

功能 @izhimu/qq openclaw_qq 原因
群聊 @ 触发 ❌ 所有消息都回复 ✅ 默认仅 @ 触发 新插件有 requireMention 配置
关键词唤醒 ✅ 如 "小助手" 新插件有 keywordTriggers
管理员命令 ✅ /model, /status 等 新插件实现了命令处理
/model 命令 ✅ 仅管理员 新插件支持模型切换
群白名单 新插件有 allowedGroups
用户黑名单 新插件有 blockedUsers
风控优化 ✅ 限速、URL 规避 新插件针对 QQ 风控设计
戳一戳响应 新插件处理 poke 事件
自动通过请求 新插件有 autoApproveRequests
消息去重 新插件有 enableDeduplication
空回复兜底 新插件有 enableEmptyReplyFallback

2.自定义域名发送邮件

打开https://resend.com/signup注,密码需要至少12位,注册完需去邮箱验证

打开邮箱进行验证

添加API key,并复制

查找能发邮件的skills(find-skills安装可见教程https://blog.csdn.net/weixin_55221858/article/details/158179110

可执行npx skills add resend/resend-skills@send-email -g -y安装

测试成功,默认只能发注册resend账户的邮箱,要发送任意邮箱需添加域名

添加自己的域名,地区随便选,然后点击Add domain

点击允许接收,再点击添加记录

需要添加的全部记录清单

从这个界面可以看到需要添加以下记录:

类型 主机记录(Name) 记录值(Content) 优先级 用途
TXT resend._domainkey p=MIGfMA0GCSqG[...] - DKIM 签名(必需)
MX send feedback-smtp.[...]amazonses.com 10 退信处理(必需)
TXT send v=spf1 include[...]nses.com ~all - SPF 验证(必需)
TXT _dmarc v=DMARC1; p=none; - DMARC 策略(可选但强烈建议)
MX @ inbound-smtp.e[...]amazonaws.com 10 接收邮件(可选,如果你不需要收邮件可以不填)

以阿里云为例

验证通过,由Pending变成Verified

成功接收邮件

参考教程:

1.https://blog.csdn.net/qq_14956715/article/details/157942635

2.https://blog.csdn.net/m0_60046831/article/details/157696672

3.https://napneko.github.io/

创作不易,禁止抄袭,转载请附上原文链接及标题

相关推荐
多恩Stone2 小时前
【3D-AICG 系列-13】Trellis 2 的 SC-VAE 的 Training Loss 细节
人工智能·算法·3d·aigc
njsgcs2 小时前
专业名词写在rag里而不是skill里
人工智能
悠闲蜗牛�2 小时前
从零构建Serverless应用:Spring Cloud Function与阿里云函数计算实战指南
spring cloud·阿里云·serverless
love530love2 小时前
解决微软登录错误 0xCAA82EE2 & 身份验证故障排查指南
运维·人工智能·microsoft·onedrive·microsoft 365·teams·microsoftonline
Aaron15882 小时前
RFSOC与ADRV9009、AD9026、AD9361技术指标及应用场景对比分析
人工智能·算法·fpga开发·硬件工程·信息与通信·信号处理·基带工程
A小码哥2 小时前
MCP-Atlas:首个大规模 AI 模型工具使用基准测试详解
人工智能
东坡肘子2 小时前
春晚、机器人、AI 与 LLM -- 肘子的 Swift 周报 #124
人工智能·swiftui·swift
AC赳赳老秦2 小时前
2026云原生AI规模化趋势预测:DeepSeek在K8s集群中的部署与运维实战
运维·人工智能·云原生·架构·kubernetes·prometheus·deepseek
大鹏的NLP博客2 小时前
Rust + PyTorch 实现 BGE 向量检索系统
人工智能·pytorch·rust