Skip to content

fix(mcp): 优先读取本地高清图片,补齐远程补图与转发定位参数 - #157

Merged
2977094657 merged 1 commit into
LifeArchiveProject:mainfrom
xiaoshengbao:codex/mcp-history-image-quality
Sep 24, 2026
Merged

2977094657 merged 1 commit into
LifeArchiveProject:mainfrom
xiaoshengbao:codex/mcp-history-image-quality

Conversation

@xiaoshengbao

Copy link
Copy Markdown
Contributor

解决的问题

通过 Codex 等 MCP 客户端读取历史图片时,wechat.media.get_chat_image_url 没有透传后端已支持的 fetch_remote 参数,工具的参数声明也为空。即使客户端明确要求加载大图,生成的链接仍无法触发该次远程补图;默认请求也没有启用按实际像素尺寸比较本地候选图片的逻辑。

修改后的行为

  • 图片链接默认带 prefer_live=true,复用后端已有逻辑比较本地候选图,优先较高清版本;调用方仍可显式设为 false。
  • 透传 fetch_remote,并在 MCP schema 和描述中公开用法。显式请求大图时,后端优先使用本地大图,缺失时可尝试 CDN 下载。没有默认打开远程补图,下载仍受现有服务额度和可用性约束。
  • 补齐 src_create_time、file_size、record_index、record_index_path、record_attach 的传递,保留历史图片和合并转发图片的定位信息;兼容 msg_svr_id 别名。
  • 更新 MCP 图片读取指引,区分“获取链接”和“实际读取图片”。缺图提示只报告资源缺失,不包含操作电脑微信的指引;未增加任何电脑微信自动化。

验证

基于上游最新 main 执行以下回归:65 passed,145 subtests passed(另有 2 条现有 LangGraph 实验性接口警告)。

python -m pytest tests/test_mcp_router.py tests/test_chat_media_image_cache_upgrade.py tests/test_chat_large_image_frontend.py tests/test_chat_media_file_id_scope.py tests/test_chat_image_group_info.py tests/test_ai_media_failure_recovery.py -q
  • 检查 tools/list 参数声明、默认高清优先、显式 false、URL 编码和转发索引 0。
  • 从 MCP tools/call 返回的 URL 实际请求图片接口,验证仅有缩略图时远程原图替换缓存(远端响应模拟)。
  • 覆盖本地大图优先、缓存升级、不降级、额度不足、限流、账号冻结及下载失败。
  • 启动 Nuxt + Electron + Python 完整 dev 模式,确认图片筛选、查看器正常;通过运行中的 MCP 读取真实历史图片,返回尺寸包括 1722×1169、872×1577、938×1502,证明外部 MCP 读取不局限于缩略图。

限制

真实测试中,一张本地仅有 210×118 图片的旧消息已触发 CDN 请求,但最终返回 404,未恢复原图。本 PR 修复取图接口能力,不保证已丢失或远端不可用的原图能够恢复;模拟下载成功不能等同于所有真实图片均可补回。内置 AI 的 1600 像素预处理逻辑未改动。

完整 dev 验证记录见 docs/image-mcp-dev-verification-2026-09-24.md。

@2977094657
2977094657 merged commit bd5fcf9 into LifeArchiveProject:main Sep 24, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants