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 入口,完整架构说明和部署步骤
This commit is contained in:
Claw
2026-05-04 16:28:12 +08:00
parent 02a9d73817
commit 4068869217
27 changed files with 4250 additions and 0 deletions

View File

@ -0,0 +1,150 @@
# qq-napcat-extras Skill
NapCat 扩展能力:**好友点赞** + **图片文字识别OCR**
---
## 跨主机文件传递机制
NapCat 运行在 Docker 容器中,宿主目录与容器目录通过 volume 映射:
```
宿主机 YOUR_SHARED_DIR/* ⇔ 容器内 /app/files/*
```
---
## 脚本清单
| 脚本 | 用途 |
|---|---|
| `qq_send_like.py` | 给 QQ 好友点赞 |
| `qq_ocr_image.py` | 图片文字识别(本地 Tesseract + NapCat 回退) |
---
## 1. 好友点赞
给指定 QQ 好友点赞(发送「戳一戳」/点赞)。
**脚本路径:** `YOUR_WORKSPACE_PATH/scripts/qq_send_like.py`
### 用法
```python
import subprocess, json
result = subprocess.run(
["python3", "YOUR_WORKSPACE_PATH/scripts/qq_send_like.py", "YOUR_ADMIN_QQ", "1"],
text=True, timeout=15, capture_output=True
)
data = json.loads(result.stdout)
# data["status"] == "ok" 表示成功
```
### 参数
| 参数 | 说明 |
|---|---|
| `<user_id>` | 目标 QQ 号(必需) |
| `<times>` | 点赞次数1-20可选默认 1 |
### 返回格式
```json
{"status": "ok", "retcode": 0, "data": null, "message": "", "wording": "", "echo": null}
```
---
## 2. 图片文字识别 (OCR)
使用**本地 Tesseract OCR**tesseract 5.5 + chi_sim/engNapCat 作为回退。
### OCR 策略
```
本地图片 → Tesseract OCR快速可靠无需 GUI
↓ 失败
NapCat /ocr_imageDocker 环境大概率超时)
```
### 用法
```python
import subprocess, json
# 方式1本地文件
result = subprocess.run(
["python3", "YOUR_WORKSPACE_PATH/scripts/qq_ocr_image.py",
"/tmp/screenshot.png"],
text=True, timeout=120, capture_output=True
)
data = json.loads(result.stdout)
print(data.get("data", {}).get("full_text", ""))
# 方式2指定语言
result = subprocess.run(
["python3", "YOUR_WORKSPACE_PATH/scripts/qq_ocr_image.py",
"--file", "/tmp/image.png", "--lang", "eng"],
text=True, timeout=120, capture_output=True
)
# 方式3远程 URL自动下载后 Tesseract 识别)
result = subprocess.run(
["python3", "YOUR_WORKSPACE_PATH/scripts/qq_ocr_image.py",
"--url", "https://example.com/msg.png"],
text=True, timeout=120, capture_output=True
)
# 方式4强制走 NapCat跳过本地 Tesseract
result = subprocess.run(
["python3", "YOUR_WORKSPACE_PATH/scripts/qq_ocr_image.py",
"--file", "/tmp/img.png", "--force-napcat"],
text=True, timeout=120, capture_output=True
)
```
### 参数
| 参数 | 说明 |
|---|---|
| `<path>` | 本地图片路径(位置参数) |
| `--file <path>` | 本地图片文件路径 |
| `--url <url>` | 远程图片 URL自动下载后识别 |
| `--lang <lang>` | 识别语言(默认 `chi_sim+eng` |
| `--force-napcat` | 强制使用 NapCat跳过 Tesseract |
### 语言选项
| 值 | 说明 |
|---|---|
| `chi_sim` | 简体中文 |
| `chi_tra` | 繁体中文 |
| `eng` | 英文 |
| `chi_sim+eng` | 中英文混合(**默认,推荐** |
| `jpn` / `kor` | 日文 / 韩文(需安装对应 tessdata |
### 成功返回格式
```json
{
"status": "ok",
"source": "tesseract",
"data": {
"texts": [
{"text": "识别结果", "confidence": 95, "bbox": {"x": 10, "y": 20, "w": 100, "h": 30}}
],
"full_text": "所有识别到的文字\n多行文本",
"language": "chi_sim+eng"
}
}
```
---
## 注意事项
1. 点赞不可滥用,同一好友约 10 秒间隔限制
2. 连接 NapCat 失败时检查 `http://YOUR_NAP CAT_HOST:25570`
3. OCR 远程 URL 会先下载到 `/tmp`,识别完自动删除