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)。