Skip to content

Weixin channel bot 发送图片后微信端显示灰色占位 #3993

@yiliang114

Description

@yiliang114

What happened? / 问题描述

Weixin channel bot 发送图片时,微信端图片不能正常显示,只看到灰色图片占位。

根据脱敏日志,复现过程如下:

  1. 启动 Weixin channel bot。

  2. 用户要求 bot 发送图片。

  3. bot 按 Weixin channel 的图片发送约定输出:

    [IMAGE: <IMAGE_PATH>]

  4. 日志中确认 <IMAGE_PATH> 对应文件存在,且是有效 PNG 图片,大小约 37KB,分辨率为 1200 x 900。

  5. 微信端收到消息后,图片显示为灰色占位,无法看到实际图片内容。

  6. bot 再次发送同一张图片后,微信端仍然显示灰色占位。

文本日志中没有看到 Failed to send imagegetuploadurl failedCDN upload failedsendMessage failed 之类的 Weixin 图片发送失败日志。

What did you expect to happen? / 期望行为

Weixin channel bot 通过 [IMAGE: /absolute/path/to/file.png] 发送本地图片时,微信端应该能正常显示图片内容,而不是灰色占位。

从当前实现看,Weixin channel 会在默认指令中声明 [IMAGE: ...] 图片发送能力;WeixinChannel.sendMessage() 会解析该标记并调用 sendImage(),后者执行本地图片校验、CDN 上传,并通过 image_item 发送图片消息。因此图片文件有效且发送流程未显式报错时,微信客户端应能渲染该图片。

Client information / 客户端信息

Client Information from logs

Qwen Code version: 0.15.8
Model: qwen3.6-plus
Auth type: openai
Git branch: main
CWD: <PROJECT_DIR>
Session: <SESSION_ID>

Anything else we need to know? / 其他信息

脱敏日志中的关键证据:

  • bot 输出了 [IMAGE: <IMAGE_PATH>]
  • <IMAGE_PATH> 文件存在,并被 file 识别为有效 PNG:1200 x 900,约 37KB。
  • 用户反馈微信端看到的是灰色图片占位。
  • 重试发送同一图片后仍然显示灰色占位。
  • 日志中没有看到 Weixin 图片上传或发送链路的显式失败日志。
  • 日志中的 APIUserAbortError: Request was aborted. 出现在用户打断前序请求时,和图片发送失败现象不直接对应。

初步相关代码位置:

  • packages/channels/weixin/src/WeixinAdapter.ts:解析 [IMAGE: ...] 标记并调用图片发送逻辑。
  • packages/channels/weixin/src/send.ts:执行图片校验、AES 加密、CDN 上传,并发送 image_item
  • packages/channels/weixin/src/api.ts:调用 /ilink/bot/getuploadurl/ilink/bot/sendmessage

建议重点检查 Weixin 出站图片消息的 image_item payload、CDN 加密参数、图片缩略图/展示所需字段,以及微信端灰色占位但服务端未报错时是否缺少可观测日志。

Metadata

Metadata

Assignees

No one assigned

    Labels

    category/integrationExternal integrationspriority/P2Medium - Moderately impactful, noticeable problemstatus/needs-triageIssue needs to be triaged and labeledtype/bugSomething isn't working as expected

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions