MiMo Vision Router:让纯文本模型秒变多模态
·
MiMo Vision Router:让纯文本模型秒变多模态
MiMo Vision Router:让纯文本模型秒变多模态
背景
小米 MiMo 模型有两个版本:
- MiMo V2.5:支持多模态(图片+文本)
- MiMo V2.5 Pro:纯文本,不支持图片
问题:使用 Pro 模型时无法直接发送图片。
方案:本地代理自动将图片转为文字描述,Pro 模型也能"看懂"图片。
架构
支持的 AI 助手:
| AI 助手 | API 格式 | 安装命令 |
|---|---|---|
| OpenCode | OpenAI | .\setup.ps1 |
| Claude Code | Anthropic | .\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
✅ 完全透明,用户无感知
✅ 开源免费
转载请注明出处。
更多推荐



所有评论(0)