-
三种消息在使用层齐了(文字/图片/语音全走内部 API 全合成): - wechat_send.sh voice: 弃用旧 SEND_VOICE_INTERNAL(hot-swap 相关),改走 SEND_VOICE_CGI 全合成。SILK 须 WeChat 进程可读——动态取 WeChat uid(stat /data/user/0/com.tencent.mm), stage 进 /data/data/com.tencent.mm/files/ + chown + restorecon(/sdcard EACCES、 root cp 进沙盒需正确 owner+ctx)。 - wechat_hook_send.py: 新增 send_voice_cgi_via_hook(同上 staging + 广播 SEND_VOICE_CGI)。 - android_mcp.py: send_wechat_voice 改调 send_voice_cgi_via_hook,docstring 更新为全合成。 - skill_wechat_send/SKILL.md: 语音段改写为 SEND_VOICE_CGI 全合成用法。 真机验证:wechat_send.sh voice + MCP send_voice_cgi_via_hook 均 status=sent + hook svrMsgId>0(uploadvoice cgi 服务器接受)。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
图片 CDN 上传打通后,把发图能力接进使用层: - skill_wechat_send/SKILL.md: 图片段 🟢→✅,给出 SEND_IMAGE_INTERNAL 广播 + wechat_send.sh 封装用法,标注真机验证(filehelper + 火星人全图收到)。 - wechat_send.sh image: 弃用旧的 share intent + 手动选联系人(UI 模拟), 改走内部 API 广播 SEND_IMAGE_INTERNAL;先 stage 到 /sdcard 保证 WeChat 进程可读,再 fire-and-forget 到 <wxid>。真机验证 oj()+CDN submit 均 DONE。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
-
**WeChatHook.java — 语音发送四个关键 fix**: - 跳过 H():DB INSERT 在 r0 构造器内已完成,H() 只触发 CDN 上传, 服务端拒绝后会删消息;skip H 彻底解决消息消失问题 - status=4 双写:ContentValues + f9.r1(4) 内存字段同时写, 防止 K(0) 回调再次 convertTo 时读到 status=1 覆盖回转圈 - sDatabaseF9 精准捕获:在 convertTo() hook 里捕获入库的 f9 对象 放入 r0.i,修复旧逻辑取第三个 f9(内容为空)导致点击崩溃 - K(0) 而非 I(0):onSceneEnd code=0 时调成功路径 K 而非失败路径 I, 修复红色感叹号问题 - fromusername 兜底:sMyWxid 为 null 时回退硬编码 wxid **tts_voice_send.sh(新)**: 一行命令 TTS 发语音:edge-tts → ffmpeg(16kHz PCM) → silk-wasm(SILK V3) → adb push → SEND_VOICE_INTERNAL **wechat_send.sh(新)**:统一 text / image / voice 三种发送模式的 CLI Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>