环境
- Windows 11
- Chrome Extension v2.0.9
- Wechatsync CLI v1.1.0
- 使用 Markdown 中的本地图片路径
问题描述
执行 wechatsync sync article.md -p zhihu 时,CLI 能识别本地图片并进入上传阶段,但适配器的图片上传没有返回。CLI 会一直停留在图片上传步骤,只能使用 Ctrl+C 中断。
删除正文中的本地图片后,同一篇文章可立即同步成功,因此问题位于本地图片上传请求链路。
复现步骤
- 在 Markdown 中引用一张或多张本地图片。
- 执行
wechatsync sync article.md -p zhihu。
- 观察 CLI 输出“发现 N 张本地图片”后停止推进。
- 等待较长时间仍没有单张失败结果或最终同步结果。
- 使用 Ctrl+C 中断;移除图片后重试,纯文本同步成功。
根因方向
packages/extension/src/mcp/client.ts 中 adapter.uploadImage(blob) 沒有独立超时。
ExtensionBridge 对所有方法统一使用 6 分钟请求超时。
- CLI 的
processLocalImages() 会逐张 await,因此一张图片卡住就会阻塞后续全部图片。
- 当前分片会话的 60 秒清理只清理缓存,不会限制最终适配器上传 Promise。
实际结果
- CLI 看起来像“卡死”,最长可能等待 6 分钟。
- 用户无法得知是哪张图片或哪个平台上传超时。
- 中断时挂起请求没有统一失败结果。
预期结果
- 单张图片上传应有明确且可配置的超时。
- 超时后输出图片路径、目标平台和错误原因,并继续处理剩余图片。
- Bridge 停止时应立即拒绝挂起请求。
- 正常文本同步和长耗时
syncArticle 不应被图片超时影响。
建议修复
- 对
uploadImage 和 uploadImage:complete 使用独立超时,默认 60 秒。
- 支持
WECHATSYNC_UPLOAD_TIMEOUT 调整单图超时。
- 保留
syncArticle 原有较长超时。
stop() 时清理计时器并拒绝全部挂起请求。
- 增加成功、超时和停止清理测试。
这与 #173 的封面 URL 上传问题相关但不相同:本问题是正文中的本地图片上传 Promise 不返回,导致 CLI 长时间阻塞。
修复 PR 将同时关联本 Issue 与 #207。日志和路径均已脱敏。
环境
问题描述
执行
wechatsync sync article.md -p zhihu时,CLI 能识别本地图片并进入上传阶段,但适配器的图片上传没有返回。CLI 会一直停留在图片上传步骤,只能使用 Ctrl+C 中断。删除正文中的本地图片后,同一篇文章可立即同步成功,因此问题位于本地图片上传请求链路。
复现步骤
wechatsync sync article.md -p zhihu。根因方向
packages/extension/src/mcp/client.ts中adapter.uploadImage(blob)沒有独立超时。ExtensionBridge对所有方法统一使用 6 分钟请求超时。processLocalImages()会逐张 await,因此一张图片卡住就会阻塞后续全部图片。实际结果
预期结果
syncArticle不应被图片超时影响。建议修复
uploadImage和uploadImage:complete使用独立超时,默认 60 秒。WECHATSYNC_UPLOAD_TIMEOUT调整单图超时。syncArticle原有较长超时。stop()时清理计时器并拒绝全部挂起请求。这与 #173 的封面 URL 上传问题相关但不相同:本问题是正文中的本地图片上传 Promise 不返回,导致 CLI 长时间阻塞。
修复 PR 将同时关联本 Issue 与 #207。日志和路径均已脱敏。