MiMo Vision Router:让纯文本模型秒变多模态

背景

小米 MiMo 模型有两个版本:

  • MiMo V2.5:支持多模态(图片+文本)
  • MiMo V2.5 Pro:纯文本,不支持图片

问题:使用 Pro 模型时无法直接发送图片。

方案:本地代理自动将图片转为文字描述,Pro 模型也能"看懂"图片。


架构

消息+图片

检测图片

替换为文字

返回

AI 助手

本地代理
localhost:3456

V2.5 提取描述

V2.5 Pro

支持的 AI 助手

AI 助手API 格式安装命令
OpenCodeOpenAI.\setup.ps1
Claude CodeAnthropic.\setup-claude.ps1

安装

前置条件

  • Node.js v18+
  • 小米 MiMo API Key

OpenCode

git clone https://github.com/JoJohanse/mimo-vision-router.git
cd mimo-vision-router
.\setup.ps1
# 重启 OpenCode,选择 "MiMo V2.5 Pro (Auto Vision)" 模型

Claude Code

.\setup-claude.ps1
# 使用启动器
.\start-claude.ps1
# 或手动
$env:ANTHROPIC_BASE_URL = "http://127.0.0.1:3456"
claude

技术实现

OpenAI 路径 (OpenCode)

// 检测图片
function openaiHasImages(content) {
  return Array.isArray(content) && content.some(p => p.type === 'image_url');
}

// 用 V2.5 描述图片
async function openaiDescribeImages(textParts, imageUrls, apiKey) {
  const visionContent = [
    { type: 'text', text: `Context: ${textParts.join('\n')}\n\nDescribe the image(s)...` },
    ...imageUrls.map(url => ({ type: 'image_url', image_url: { url } }))
  ];
  
  const result = await httpsRequest('/chat/completions', {
    model: 'mimo-v2.5',
    messages: [{ role: 'user', content: visionContent }],
    max_tokens: 4096,
  }, apiKey);
  
  return JSON.parse(result.body).choices?.[0]?.message?.content || '';
}

// 替换图片为文字
async function openaiProcessMessage(msg, apiKey) {
  if (!openaiHasImages(msg.content)) return msg;
  // ... 提取图片,调用 describeImages,替换为 [Image: 描述]
}

Anthropic 路径 (Claude Code)

// 检测图片
function anthropicHasImages(content) {
  return Array.isArray(content) && content.some(p => p.type === 'image');
}

// Anthropic base64 → data URL
function anthropicImageToDataUrl(img) {
  return `data:${img.source.media_type};base64,${img.source.data}`;
}

// 格式转换:Anthropic → OpenAI
function anthropicToOpenAI(body) {
  const messages = [];
  if (body.system) messages.push({ role: 'system', content: body.system });
  // ... 转换 messages 格式
  return { model: body.model, messages, max_tokens: body.max_tokens || 4096 };
}

两条路径完全独立,不共用图片处理逻辑。


配置

编辑 proxy/server.js

const PORT = 3456;                                    // 代理端口
const UPSTREAM_HOST = 'token-plan-cn.xiaomimimo.com'; // 小米 API
const VISION_MODEL = 'mimo-v2.5';                     // 多模态模型

安装脚本会自动修改 OpenCode 配置文件。


故障排除

# 检查代理状态
curl http://127.0.0.1:3456/health

# 检查端口占用
netstat -ano | findstr :3456

# 手动启动
node proxy/server.js

图片未处理?

  • OpenCode:确认选择 “MiMo V2.5 Pro (Auto Vision)”
  • Claude Code:确认环境变量 ANTHROPIC_BASE_URL 已设置

项目结构

mimo-vision-router/
├── setup.ps1              # OpenCode 安装
├── setup-claude.ps1       # Claude Code 安装
├── README.md / CLAUDE.md  # 文档
└── proxy/
    ├── server.js          # 代理服务器
    ├── mcp-launcher.js    # MCP 生命周期管理
    └── start.ps1          # 手动管理

链接

  • GitHub: https://github.com/JoJohanse/mimo-vision-router (如果帮到您,麻烦给个star)
  • 小米 MiMo: https://xiaomimimo.com

总结

mimo-vision-router 通过本地代理解决了 MiMo V2.5 Pro 不支持图片的问题。

✅ 一键安装
✅ 支持 OpenCode + Claude Code
✅ 完全透明,用户无感知
✅ 开源免费


转载请注明出处。

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐