34 lines
1.6 KiB
Markdown
34 lines
1.6 KiB
Markdown
# 班级 QQ 群监控
|
||
|
||
只读接收 NapCat OneBot 11 群消息,先持久化到 SQLite,再调用 OpenAI-compatible
|
||
LLM 分析重要度、摘要、行动项和准备物品,最后通过独立的 `notify-gateway`
|
||
发送 Telegram/企业微信即时通知和分群日报。
|
||
|
||
## 主要行为
|
||
|
||
- 仅处理 `target_group_ids` 白名单中的群,不包含任何 QQ 发消息 action。
|
||
- 支持教师账号白名单和按群排除机器人账号。
|
||
- 纯确认、寒暄和表情在本地标记为零重要度回执,不调用 LLM、不通知、不进入日报。
|
||
- 家长问句固定为重要度 1;可能需要家长行动但信息不完整时至少为 1。
|
||
- 周一至周六 19:00 汇总当天;周日 19:00 合并周五至周日并按群生成周末总结。
|
||
- 文本即时通知直接显示原文;图片等媒体消息显示 LLM 摘要并发送图片预览。
|
||
|
||
## 启动
|
||
|
||
1. 复制 `.env.example` 为 `.env` 并填写环境变量。
|
||
2. 复制 `config.example.yaml` 为 `config/config.yaml`,配置群白名单、教师账号和通知渠道。
|
||
3. 创建共享网络:`docker network create shared-services`。若使用其他名称,设置 `SHARED_NETWORK_NAME`。
|
||
4. 运行 `docker compose up -d --build`。
|
||
5. 打开 NapCat WebUI 登录 QQ,并配置反向 WebSocket:
|
||
`ws://class-monitor:8765/onebot/v11/ws`,Token 与 `ONEBOT_ACCESS_TOKEN` 一致。
|
||
|
||
健康接口为 `GET http://127.0.0.1:8765/health`。生产配置、`.env`、数据库、
|
||
日志、媒体缓存和 NapCat 登录数据都被 `.gitignore` 排除。
|
||
|
||
## 测试
|
||
|
||
```bash
|
||
docker run --rm --network none -e PYTHONPATH=/app \
|
||
-v "$PWD/tests:/tests:ro" class-qq-monitor:local python /tests/run_tests.py
|
||
```
|