Skip to content

[Bug] 本地图片上传不返回时 CLI 最长等待 6 分钟且无法取消 #208

Description

@lizhong1989

环境

  • Windows 11
  • Chrome Extension v2.0.9
  • Wechatsync CLI v1.1.0
  • 使用 Markdown 中的本地图片路径

问题描述

执行 wechatsync sync article.md -p zhihu 时,CLI 能识别本地图片并进入上传阶段,但适配器的图片上传没有返回。CLI 会一直停留在图片上传步骤,只能使用 Ctrl+C 中断。

删除正文中的本地图片后,同一篇文章可立即同步成功,因此问题位于本地图片上传请求链路。

复现步骤

  1. 在 Markdown 中引用一张或多张本地图片。
  2. 执行 wechatsync sync article.md -p zhihu
  3. 观察 CLI 输出“发现 N 张本地图片”后停止推进。
  4. 等待较长时间仍没有单张失败结果或最终同步结果。
  5. 使用 Ctrl+C 中断;移除图片后重试,纯文本同步成功。

根因方向

  • packages/extension/src/mcp/client.tsadapter.uploadImage(blob) 沒有独立超时。
  • ExtensionBridge 对所有方法统一使用 6 分钟请求超时。
  • CLI 的 processLocalImages() 会逐张 await,因此一张图片卡住就会阻塞后续全部图片。
  • 当前分片会话的 60 秒清理只清理缓存,不会限制最终适配器上传 Promise。

实际结果

  • CLI 看起来像“卡死”,最长可能等待 6 分钟。
  • 用户无法得知是哪张图片或哪个平台上传超时。
  • 中断时挂起请求没有统一失败结果。

预期结果

  • 单张图片上传应有明确且可配置的超时。
  • 超时后输出图片路径、目标平台和错误原因,并继续处理剩余图片。
  • Bridge 停止时应立即拒绝挂起请求。
  • 正常文本同步和长耗时 syncArticle 不应被图片超时影响。

建议修复

  1. uploadImageuploadImage:complete 使用独立超时,默认 60 秒。
  2. 支持 WECHATSYNC_UPLOAD_TIMEOUT 调整单图超时。
  3. 保留 syncArticle 原有较长超时。
  4. stop() 时清理计时器并拒绝全部挂起请求。
  5. 增加成功、超时和停止清理测试。

这与 #173 的封面 URL 上传问题相关但不相同:本问题是正文中的本地图片上传 Promise 不返回,导致 CLI 长时间阻塞。

修复 PR 将同时关联本 Issue 与 #207。日志和路径均已脱敏。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions