Commit 48d37f7982f923d64ea5d6fc3f7f81c87af409fb
1 parent
266b0b95
docs(wechat-auto-reply): 端到端闭环里程碑 + flush 加固记录 + gitignore pycache
- 需求文档环节5:补 flush 加固三经验值 + 端到端闭环验证(私聊+群@我送达) - README 真机验证:加 2026-07-12 里程碑段(系统正式跑通,~15s 送达) - .gitignore 忽略 __pycache__/*.pyc Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Showing
3 changed files
with
17 additions
and
5 deletions
.gitignore
md/wechat-auto-reply-requirements.md
| ... | ... | @@ -100,12 +100,14 @@ |
| 100 | 100 | - 安全:生成超时/失败 → 无草稿 → policy skip → 不发(失败即静默,绝不误发)。 |
| 101 | 101 | - 真机验证:接线(watcher inotify → 自动拉起编排器 drain)通过;真实上下文(猎头 婷婷)生成「哈哈婷婷,我不是什么总,就是个写代码的,不负责招人这块哈」→ 正确进 /approvals 待审。 |
| 102 | 102 | |
| 103 | -### 环节 5 · 可靠发送 —— ✅ **API 发送打通(2026-07-11)** | |
| 104 | -经历一场硬仗才让 API 发送真正送达(火星人跨账号收到确认)。两个坑: | |
| 103 | +### 环节 5 · 可靠发送 —— ✅ **打通并端到端验证(2026-07-11 打通 / 07-12 加固+闭环)** | |
| 104 | +经历一场硬仗才让 API 发送真正送达。两个坑 + 一轮 flush 加固: | |
| 105 | 105 | 1. **中文被弄乱**:`send_text_via_hook` 用 `--es text` 传中文被 shell/am 弄乱→服务器拒收→卡 status=1。hook 早已要求 `--es text_b64`,发送端漏改。→ 改用 text_b64。 |
| 106 | -2. **z2.b 只入队不派发(设备机制,非代码 bug)**:`sendViaHighLevel` 的 `z2.b` 把消息入队(status=1 转圈),WeChat NetSceneQueue **要一次 onResume(后台→前台切换)才派发**。发送代码跨版本逐字节相同,不是回归。→ 发送后自动 `input keyevent KEYCODE_HOME` + `am start LauncherUI` 触发 onResume,消息 flush 到 status=2。 | |
| 107 | -- 落地 `_send_text_verified`(orchestrator):前台微信 → text_b64 发送 → 后台前台切换 → 轮询 status 直到 2。status=1 超时视为"已入队将送达"(不误报失败)。 | |
| 106 | +2. **z2.b 只入队不派发(设备机制,非代码 bug)**:`sendViaHighLevel` 的 `z2.b` 把消息入队(status=1 转圈),WeChat NetSceneQueue **要一次真实的 app 切换(切走→切回微信=onPause→onResume)才派发**。发送代码跨版本逐字节相同,不是回归。 | |
| 107 | +3. **flush 加固(2026-07-12)**:单次切换+被动等常卡几十秒~分钟。三个经验值(`_send_text_verified`):① 发送后 `sleep(4)` 让消息稳稳落库(切太快微信没登记这条)② 切换给足时间(`HOME` 背景 2.5s → `am start LauncherUI` 切回停 3s)③ **切回后停前台连查多轮,不立刻再切走**(否则打断正在进行的网络发送),没到 2 再来一轮。真机实测屏亮/灭都 **~15s flush 到 status=2**。 | |
| 108 | +- 落地 `_send_text_verified`(orchestrator):前台微信 → text_b64 发送 → sleep(4) → 切换 cycle + 前台停留轮询 → status 到 2。超时仍 1 视为"已入队将送达"(不误报失败)。 | |
| 108 | 109 | - 详见 memory `wechat-api-send-onresume-flush`。 |
| 110 | +- **✅ 端到端闭环验证(2026-07-12)**:火星人私聊 → 自动回复送达;延墨/丁鹏群里 @我 → 自动回复送达。私聊 + 群@我两条链路全通。 | |
| 109 | 111 | - **待深挖(下次)**:onResume 到底改变了什么让队列派发(疑似后台暂停网络场景/长连接休眠)——要 hook NetSceneQueue/网络模块在前后台切换点打 log 拿根因。 |
| 110 | 112 | |
| 111 | 113 | ### (原)环节 5 · 发送回复带引用(原生气泡) | ... | ... |
wechat_plain/scripts/auto-reply/README.md
| ... | ... | @@ -76,14 +76,20 @@ python wechat_reply_orchestrator.py --drain # 手动跑一轮编排 |
| 76 | 76 | - 敏感词(钱/承诺/约时间/隐私)即使白名单也仍会拉回人工审批。 |
| 77 | 77 | - 建议先审核模式跑几天,草稿质量稳了再放开。 |
| 78 | 78 | |
| 79 | -## 真机验证(2026-07-10) | |
| 79 | +## 真机验证 | |
| 80 | 80 | |
| 81 | +**2026-07-10(各环节)** | |
| 81 | 82 | - inotify 触发读取 → 写队列 → 自动拉起编排器 ✅ |
| 82 | 83 | - 真实猎头上下文 → 生成火星人口吻草稿「哈哈婷婷,我不是什么总,就是个写代码的,不负责招人这块哈」→ 进 /approvals ✅ |
| 83 | 84 | - 审批页发送 → `send_text_via_hook` 广播到 filehelper(sent)、取消(cancelled) ✅ |
| 84 | 85 | - 策略引擎 8/8、多账号自适应、生成失败静默不误发 ✅ |
| 85 | 86 | - 单实例防重、杀 watcher 自动重启、纯 root(boot 上下文) selftest ✅ |
| 86 | 87 | |
| 88 | +**2026-07-12(端到端闭环,系统正式跑通)** 🎉 | |
| 89 | +- `/whitelist` 页开自动发总开关 + 把火星人加白名单 → **火星人私聊 → 自动回复送达** ✅ | |
| 90 | +- **延墨/丁鹏群里 @我 → 自动回复送达** ✅(私聊 + 群@我两条链路全通) | |
| 91 | +- 发送 flush 加固后真机:屏亮/屏灭(Dozing) 都 **~15s** 到 status=2 ✅ | |
| 92 | + | |
| 87 | 93 | ## 待收尾(都非阻塞,系统已可用) |
| 88 | 94 | |
| 89 | 95 | 1. **原生引用气泡 / 群@昵称前缀**:现发纯文本;微信原生引用(A11y 长按→引用)是环节5 增强。 | ... | ... |