wechat-viewer-changes.md
2.79 KB
wechat-viewer 集成改动(环节4 策略 + 审批/白名单 UI)
落地在手机端 Flask 应用
~/wechat-viewer(该 app 有自己的 git 工作树,本文件只记录本次为 微信自动回复新增的部分;两个新模板全文见同目录viewer_templates/)。
新增数据表(local_db.py init_db)
CREATE TABLE reply_whitelist ( -- 自动回复白名单
id INTEGER PK, kind TEXT, -- 'contact'|'group'
wxid TEXT UNIQUE, name TEXT, added_at TEXT);
CREATE TABLE reply_queue ( -- 策略判定后落地
id INTEGER PK, msg_id INTEGER, talker TEXT, sender TEXT, sender_name TEXT,
kind TEXT, incoming TEXT, draft TEXT,
action TEXT, -- 'auto'|'review'
reason TEXT,
status TEXT, -- pending|sent|cancelled|auto_sent|failed
created_at TEXT, sent_at TEXT);
local_db.py 新增辅助函数:whitelist_list/add/remove/wxids、reply_add/list/get/update。
新增路由(app.py)
| 路由 | 作用 |
|---|---|
GET /whitelist |
白名单管理页 |
GET /api/whitelist / POST /api/whitelist / POST /api/whitelist/<id>/delete |
白名单增删查(xxx@chatroom 自动识别为群) |
GET /approvals |
自动回复审批页 |
GET /api/replies?status= |
队列列表(pending / sent / auto_sent / cancelled / 全部) |
POST /api/reply/<id>/send |
用(可编辑的)草稿发到会话 → send_text_via_hook(talker,text) → 标 sent/failed |
POST /api/reply/<id>/cancel |
标 cancelled |
发送复用 ~/.hermes/event_bus/wechat_hook_send.py 的 send_text_via_hook(LSPosed 内部 API 广播 SEND_MSG_INTERNAL)。
新增页面(templates/,见 viewer_templates/)
approvals.html:待审批列表,每条含对方原文 + 可编辑草稿框 + 【✅发送】【🗑取消】;另有已发送/自动已发/已取消筛选 tab。whitelist.html:白名单增删列表。
base.html 抽屉导航加两个入口:✅自动回复审批 / ⭐回复白名单。
真机验证(2026-07-10)
- 页面
/whitelist/approvals均 200。 - 白名单:加「测试好友」→ 列表可见 → 删除 OK。
- 审批:插入 pending →
/api/replies返回 → 点发送 →send_text_via_hook广播到 filehelper(result=0, status=sent)→ 草稿按编辑后内容更新、状态转 sent、sent_at 记录。 - 取消:pending → cancel → status=cancelled。
- 测试数据已清空。
待接(环节5 / 编排)
- 编排器:把环节1 队列
incoming.jsonl→ 上下文 → Hermes 生成 → 策略decide()(白名单读reply_whitelist)→ auto 直接send_text_via_hook并reply_add(status=auto_sent)/ review 写reply_add(status=pending)。 - 群 @回复的
@昵称前缀、原生引用气泡(A11y)。