WorkBuddy 调用小米 MiMo 图片理解 Bug 完整分析与修复记录
WorkBuddy 调用小米 MiMo 图片理解 Bug 完整分析与修复记录

WorkBuddy 调用小米 MiMo 图片理解 Bug 完整分析与修复记录


问题概述

在使用 WorkBuddy 调用小米 MiMo 模型(mimo-v2.5)进行图片理解时,遇到 API 返回 400 错误,错误信息为:Param Incorrect - text is not set

本文详细记录了这个问题的发现、分析和修复过程,供有类似问题的开发者参考。

错误信息

{ "error": { "code": "400", "message": "Param Incorrect", "param": "text is not set", "type": "" } }

问题根因分析

经过对请求数据的深入分析,发现问题由两个原因共同导致:

问题 1:role 角色错误

WorkBuddy 将工具返回的图片结果放在 role: "tool" 消息中,但 MiMo API 遵循 OpenAI 的 Chat Completion 格式标准,tool 角色消息不支持多模态内容(图片)。只有 user 角色消息可以包含 image_url

WorkBuddy 实际发送的格式:

{ "role": "tool", "content": [{ "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBORw0KGgo..." } }] }

问题 2:缺少 text 对象

即使角色修正为 user,MiMo API 还要求 content 数组必须同时包含图片对象独立的 text 对象。

MiMo API 期望的格式:

{ "role": "user", "content": [{ "type": "image_url", "image_url": { "url": "data:image/png;base64,iVBORw0KGgo..." } }, { "type": "text", "text": "请描述这张图片的内容" }] }

修复方案

在 WorkBuddy 构造多模态请求时,需要同时做两件事:

  • 修正 role:将工具返回的图片消息的 role 从 "tool" 改为 "user",并清理 tool_call_id 字段
  • 补充 text:当 content 数组中包含 image_url 时,确保同时存在 type: "text" 对象

参考实现代码

def build_multimodal_message(msg): content = msg.get("content", []); has_image = any(item.get("type") == "image_url" for item in content if isinstance(item, dict)); if has_image and msg.get("role") == "tool": msg["role"] = "user"; msg.pop("tool_call_id", None); has_text = any(item.get("type") == "text" for item in content if isinstance(item, dict)); if has_image and not has_text: content.append({"type": "text", "text": "请描述这张图片的内容"})

临时解决方案(代理层修复)

已通过 WorkBuddy Monitor 的 MITM 代理实现请求时自动修复

  • 拦截发往 token-plan-cn.xiaomimimo.com 的请求
  • 检测 role: "tool" 消息中的图片,自动转为 role: "user"
  • 检测缺失的 text 对象,自动补上默认描述
  • 已确认修复生效(连续 5 次请求成功,200)

影响范围

影响模型:Xiaomi MiMo (mimo-v2.5, mimo-v2-omni)

触发场景:任何涉及图片理解的功能(截图分析、OCR、图表解读等)

错误类型:API 400 错误,请求被拒绝

根本责任方:WorkBuddy 官方(请求构造逻辑)

总结

这是一个典型的多模态 API 兼容性问题。WorkBuddy 在构造请求时未充分考虑 MiMo API 的特殊要求,导致图片理解功能无法正常使用。

建议 WorkBuddy 官方尽快在正式版本中修复此问题,或者在调用 MiMo 等特殊模型时自动进行格式转换。


报告人:Starry
报告日期:2026-05-07
验证状态:已通过代理层临时修复

starry0214

订阅评论
提醒
guest

0 评论
最新
最旧 最多投票
内联反馈
查看所有评论