Files
chat_rebot-connect-with-one…/skills/qq-messenger/SKILL.md
Claw 4068869217 feat(plugin): 集成 OpenClaw Bridge + QQ 操作技能套件
新增 openclaw_bridge 插件,实现 QQ ↔ OpenClaw Gateway 桥接:

src/process.py:
  - QQ 消息自动转发 OpenClaw Gateway
  - 内置安全检测(高危词、管理员白名单、MC指令过滤)
  - 高危词库外部化到 config.toml [security] section
  - 群昵称自动解析
  - Session 隔离(按群×用户)

config/openclawbridge/config.toml:
  - 插件配置模板(已脱敏:占位符替代个人信息)

scripts/qq_*.py (×15):
  - 消息发送/文件传输/群管理/好友管理
  - 信息查询/历史回溯/OCR/点赞
  - 全部脱敏(QQ号→YOUR_ADMIN_QQ, IP→YOUR_NAPCAT_HOST等)

skills/*/SKILL.md (×8):
  - AgentSkills 使用指导
  - qq-messenger / qq-management / qq-resolver / qq-napcat-extras
  - browser / file-process / mc-query / nix-helper

SKILL.md:
  - AgentSkill 入口,完整架构说明和部署步骤
2026-05-04 16:28:12 +08:00

4.3 KiB
Raw Blame History

qq-messenger Skill

主动向 QQ 发送消息和文件的能力。

原理

qqrebot 使用 go-cqhttp HTTP API (send_private_msg / send_group_msg) 发送消息。NapCat4 扩展支持 upload_group_file / upload_private_file 发送文件。本技能包装了这些 API 为命令行脚本,方便 qq-agent 在需要时主动推送。

自动回复 vs 主动发送

回复场景 主动发信
触发 用户在 QQ 上发消息给你 你自己决定要推送
方式 系统自动将回复转发到 QQ 调用本脚本
示例 用户问"服务器状态",你回答"正常" 你发现磁盘快满了,主动给管理员发告警

即使不调用本脚本,用户发给你的消息你回复后,系统会自动转发回 QQ。 本脚本只用于"非回复"场景的主动推送。

脚本清单

脚本 用途 特点
qq_send_msg.py 发送文本消息 即时发送,阻塞直到返回
qq_send_file.py 发送文件/图片 异步执行,调用后立即返回,后台复制→发送→清理

用法

发送私聊消息

import subprocess
subprocess.run(["python3", "YOUR_WORKSPACE_PATH/scripts/qq_send_msg.py",
    "--private", "YOUR_ADMIN_QQ", "--message", "消息内容"], text=True, timeout=15, capture_output=True)

发送群聊消息

subprocess.run(["python3", "YOUR_WORKSPACE_PATH/scripts/qq_send_msg.py",
    "--group", "YOUR_GROUP_ID", "--message", "消息内容"], text=True, timeout=15, capture_output=True)

发送文件(后台发送,立即返回)

import subprocess
# 私聊发文件
subprocess.run(["python3", "YOUR_WORKSPACE_PATH/scripts/qq_send_file.py",
    "--private", "YOUR_ADMIN_QQ", "/path/to/file"], text=True, timeout=5, capture_output=True)
# 群聊发文件
subprocess.run(["python3", "YOUR_WORKSPACE_PATH/scripts/qq_send_file.py",
    "--group", "YOUR_GROUP_ID", "/path/to/file"], text=True, timeout=5, capture_output=True)

特点:调用后立即返回(~75ms后台独立进程处理复制→发送。完成后通过 OpenClaw Gateway 的 /v1/chat/completions API 发送 [系统通知] 消息给 qq-agentagent 在会话历史中看到通知。

发送图片

import subprocess
subprocess.run(["python3", "YOUR_WORKSPACE_PATH/scripts/qq_send_file.py",
    "--group", "YOUR_GROUP_ID", "--image", "/tmp/screenshot.png"], text=True, timeout=5, capture_output=True)

特点:图片用 [CQ:image] 发送QQ 直接显示缩略图,不会进群文件。

subprocess.run(["python3", "YOUR_WORKSPACE_PATH/scripts/qq_send_file.py",
    "--group", "YOUR_GROUP_ID", "--image", "/tmp/screenshot.png"], text=True, timeout=5, capture_output=True)

图片说明:用 [CQ:image,file=...] 发送QQ 直接显示缩略图,不会进群文件。

参数说明

参数 说明
--private <QQ号> 发送私聊,默认管理员 YOUR_ADMIN_QQ
--group <群号> 发送群聊
--message <内容> 消息文本qq_send_msg.py
--file <路径> 从文件读消息内容qq_send_msg.py
--auto_escape 转义 CQ 码(默认不转义)
<文件路径> 要发送的本地文件路径qq_send_file.py
--name <显示名> 群文件内显示的文件名qq_send_file.py
--image 作为图片发送QQ 直接显示缩略图qq_send_file.py

通知机制

文件发送完成/失败后,后台进程通过 OpenClaw Gateway 的 /v1/chat/completions API 推送 [系统通知] 给 qq-agent

  • 内容格式:[系统通知] 给uid=YOUR_ADMIN_QQ发送文件的任务已上传完毕文件名.ext (1.0MB) ✅
  • 使用 Gateway Token 鉴权
  • Fire-and-forgettimeout=3,仅确认投递
  • 这是 openclaw_bridge 插件用的同一个 API
  • agent 在自己的会话历史中看到通知

注意事项

  1. 消息尽量简洁QQ 消息太长可读性差
  2. 不要滥用主动推送,避免打扰管理员
  3. 正常回复由系统自动转发,无需调用本脚本
  4. 连接失败时检查 go-cqhttp 是否在运行(http://YOUR_NAP CAT_HOST:25570
  5. 文件发送依赖 YOUR_SHARED_DIR 目录(映射到 NapCat 容器内 /app/files
  6. 通知走 OpenClaw Gateway API不走 QQ 本身