Bug A(入站取不到字节)真因两层:① 引用位置错——真实在 `file_item.media.encrypt_query_param`,旧 mediaOf 只扫平铺 url/cdn_url; ② 密钥来源错——官方口径是**随每条附件下发**的 `*_item.media.aes_key` (图片优先 `image_item.aeskey`),旧代码却把整个 bot_token 当 base64 取尾 16 字节, 而真机 token 形如 `<id>@im.bot:<38hex>`,第 12 字符 `@` 处即非法。 (对照证据:官方包 @tencent-weixin/openclaw-weixin 2.4.9 源码,只读未入库; design/08 §3.3 的「token base64 尾 16 字节」据此判定为错误口径,待文档更正。) Bug B(出站):① sendToOne 遇媒体构建失败直接 return ⇒ 连文本一起丢(改为逐条跳过 + 带来源 WARN;全部媒体失败仍发文本,无文本且全挂才诚实报错);② getUploadURL 发空 body 且只认 4 个猜测键 ⇒ 补齐官方请求体字段 + 依次认 upload_full_url / upload_param。 测试:media_key_test(6 条,真机形态夹具 + 转义钉住)+ send_media_failure_test(6 条)。 变异 6 条(M-A1/A2/A3/B1/B3a/B3b)均先确认变异体可编译、贴红行、还原复绿。 诚实边界:出站媒体**仍发不出去**(PUT vs 官方 POST、响应头 x-encrypted-param、 nativeMediaItem 嵌套形状三项未做)—— 故意只修到「拿到上传地址」,不扩大切片。