---
name: mimo-capabilities
description: MiMo 模型原生能力配置指南 - 图像理解、音频理解、视频理解、TTS 语音合成、网络搜索。当主模型为 MiMo 时使用这些方法。
tags: [mimo, xiaomi, vision, audio, video, tts, search, multimodal]
---

# MiMo 模型原生能力配置指南

## 概述

MiMo 是小米研发的 AI 大模型，支持多种原生能力。当主模型为 MiMo 时，应使用 MiMo 的原生 API 而非第三方工具。

## 模型感知路由规则

**关键原则：根据当前主模型选择对应的方法**

| 功能 | MiMo 模型 | MiniMax 模型 (mmx-cli) |
|------|-----------|--------------|
| 图像理解 | MiMo Vision API | `mmx vision describe` |
| 音频理解 | MiMo Audio API | 不支持 |
| 视频理解 | MiMo Video API | 不支持 |
| TTS | MiMo TTS API | `mmx speech synthesize` |
| 网络搜索 | MiMo Web Search API | `mmx search query` |
| 图像生成 | 不支持 | `mmx image generate` |
| 视频生成 | 不支持 | `mmx video generate` |
| 音乐生成 | 不支持 | `mmx music generate` |

## 1. 图像理解

### 支持的模型
- mimo-v2.5
- mimo-v2-omni

### 使用方法

```bash
python3 ~/.hermes/scripts/mimo_vision.py "https://example.com/image.jpg" "描述这张图片"
python3 ~/.hermes/scripts/mimo_vision.py /path/to/image.png "这张图片里有什么？"
```

### 图片限制
- 格式：JPEG, PNG, GIF, WebP, BMP
- 大小：单张不超过 50MB

## 2. 音频理解

### 支持的模型
- mimo-v2.5
- mimo-v2-omni

### 使用方法

```bash
python3 ~/.hermes/scripts/mimo_audio.py "https://example.com/audio.wav" "这段音频说了什么？"
python3 ~/.hermes/scripts/mimo_audio.py /path/to/audio.mp3 "转录这段音频"
```

### 音频限制
- 格式：MP3, WAV, FLAC, M4A, OGG
- 大小：URL 不超过 100MB，Base64 不超过 50MB

## 3. 视频理解

### 支持的模型
- mimo-v2.5
- mimo-v2-omni

### 使用方法

```bash
python3 ~/.hermes/scripts/mimo_video.py "https://example.com/video.mp4" "描述视频内容"
python3 ~/.hermes/scripts/mimo_video.py /path/to/video.mp4 "视频里发生了什么？" --fps 2
```

### 参数说明
- --fps: 每秒提取帧数，范围 0.1-10，默认 2
- --resolution: default（默认）或 max（最高分辨率）

### 视频限制
- 格式：MP4, MOV, AVI, WMV
- 大小：URL 不超过 300MB，Base64 不超过 50MB

## 4. TTS 语音合成

### 支持的模型

| 模型 | 功能 |
|------|------|
| mimo-v2.5-tts | 内置音色，支持唱歌 |
| mimo-v2.5-tts-voicedesign | 音色设计 |
| mimo-v2.5-tts-voiceclone | 音色克隆 |

### 内置音色列表
- 中文：冰糖（默认）, 茉莉, 苏打, 白桦
- 英文：Mia, Chloe, Milo, Dean

### 使用方法

```bash
# 内置音色
python3 ~/.hermes/scripts/mimo_tts.py --text "你好世界" --voice 冰糖 --output output.wav

# 音色设计（VoiceDesign）
python3 ~/.hermes/scripts/mimo_tts.py --text "你好世界" --design "年轻女性，温柔甜美" --output output.wav

# 音色克隆（VoiceClone）
python3 ~/.hermes/scripts/mimo_tts.py --text "你好世界" --clone voice_sample.mp3 --output output.wav

# 带风格指令
python3 ~/.hermes/scripts/mimo_tts.py --text "你好世界" --voice 冰糖 --style "用欢快活泼的语气" --output output.wav
```

### VoiceDesign 音色设计详解

通过自然语言描述从零生成全新音色，无需参考音频。

**描述维度**（可自由组合）：
- 性别年龄：年轻女性、中年男性、小女孩、年迈老先生
- 口音语言：标准普通话、带北方口音、说英语
- 音色特征：低沉有磁性、清脆明亮、温柔甜美、略带沙哑
- 发声方式：像纪录片旁白、像新闻主播、声音位置靠后
- 性格气质：沉稳而有感染力、元气满满、饱经风霜

**高级特性**：
- 对复杂、模糊、甚至相互矛盾的描述也能合理解读
- 不局限于"男/女/青年/老年"粗粒度标签
- 适合游戏NPC、动画角色、虚拟主播、品牌IP、有声剧

**示例**：
```
--design "一位年迈的老先生，说带北方口音的普通话，语速缓慢而沉稳，嗓音略带沙哑和沧桑感，仿佛一位饱经风霜的老爷爷在讲故事，充满岁月的智慧。"
```

### VoiceClone 音色克隆详解

只需短至数秒的参考音频，无需训练/标注/微调，直接复刻音色。

**保留的特征**：
- 原始说话人的音色身份
- 气息、节奏、习惯性停顿等个人特征

**复用能力**：克隆后的音色可叠加使用全部控制能力（自然语言指令、音频标签、导演剧本）

**示例**：
```
# 提供参考音频 + 风格指令
--clone reference.mp3 --style "用尖锐刻薄的嗓音，带着狐假虎威的得意感"
```

### 风格控制标签（行内音频标签）

在文本中用括号插入标签，精准控制情绪/状态/风格：

**标签类型**：
- 基础情感：开心、悲伤、生气、害怕、惊讶、兴奋
- 复杂情感：忧郁、释然、无奈、内疚、嫉妒、疲惫
- 整体语调：温柔、冷淡、活泼、严肃、慵懒、俏皮
- 音色定位：磁性、醇厚、清亮、空灵、天真、甜美
- 方言：东北话、四川话、河南话、粤语
- 唱歌：唱歌（必须放在最开头）

**高级用法**：
- 支持中英双语标签
- 支持多标签叠加（用 `｜` 分隔）
- 支持开放文本描述

**示例**：
```
(调侃) 老张你当时不是说这条航线稳得很吗……
(模仿自信，提高音量) "系统全绿，放心走。"
(突然停顿) ……现在呢？
(爆发，愤怒压不住) 现在整艘船都在报警！
(低声｜情绪塌陷般平静) ……算了。
(轻笑｜带点释然) 也挺好，至少是一起看的。
```

### 导演剧本级结构化输入

对于一致性要求高的场景（有声剧、游戏NPC、角色化对话），支持分层描述：

```bash
python3 ~/.hermes/scripts/mimo_tts.py \
  --text "你们求我垂怜..." \
  --voice 白桦 \
  --style "CHARACTER: 曾是守护九天的神祇，见证了凡人的无药可救后，决定以灭世来完成最终的净化。
SCENE: 悬浮于崩塌的祭坛之上，俯视下方在火海中哀嚎的信徒。
DIRECTION: 充分打开胸腔共鸣，声音位置靠后，音色如古钟般低沉且带有金属质感的磁性。" \
  --output output.wav
```

**分层说明**：
- CHARACTER：人物身份、背景、性格
- SCENE：场景环境、情境
- DIRECTION：详细的发声指导（共鸣、语调、气声、咬字等）

### TTS API 要点
1. 合成文本必须放在 assistant 角色的 content 中
2. user 角色消息可选，用于传递风格指令
3. 流式调用时输出格式指定为 pcm16

## 5. 网络搜索

### 支持的模型
- mimo-v2.5-pro, mimo-v2.5, mimo-v2-pro, mimo-v2-omni, mimo-v2-flash

### 前置条件
在 MiMo Console 启用 Web Search 插件。

### 使用方法

```bash
python3 ~/.hermes/scripts/mimo_search.py "武汉明天天气"
python3 ~/.hermes/scripts/mimo_search.py "附近美食" --city 武汉 --region 湖北
```

### 参数说明
- --max-keywords: 每轮搜索最大关键词数，默认 3
- --force/--no-force: 是否强制搜索，默认强制
- --limit: 搜索结果数量，默认 1
- --country/--region/--city: 本地化搜索位置

## 环境变量

```bash
XIAOMI_API_KEY=tp-xxxxx
XIAOMI_BASE_URL=https://token-plan-sgp.xiaomimimo.com/v1
```

**注意**：环境变量需持久化到 `~/.bashrc`，否则新 terminal session 会丢失。

## ⚠️ 图片输入配置（关键）

MiMo chat API **不支持图片输入**。用户发图片时，如果 Hermes 把图片直接塞进 chat completions 请求，会返回 `404: No endpoints found that support image input`。

### 必须设置 `image_input_mode: tool`

```bash
hermes config set agent.image_input_mode tool
```

- `auto`（默认）= 尝试直接把图片发给主模型 → MiMo 会 404
- `tool` = 强制图片走 vision 工具 → 正确路由到 MiMo Vision API

### Vision API Key 必须显式写入 config

`XIAOMI_API_KEY` 环境变量**不会**自动传给 Hermes vision 工具。必须手动填入 config。

**有两个 vision section 都需要 API key：**

| 路径 | 用途 |
|------|------|
| `auxiliary.vision.api_key` | 主 vision 工具配置（含 provider/model/base_url） |
| `tools.vision.api_key` | 工具层 vision 配置 |

```bash
# 方法：从 .bashrc 提取 key 并写入（hermes config set 无法展开未 source 的环境变量）
python3 << 'EOF'
import yaml
key = open('/home/ubuntu/.bashrc').read().split('XIAOMI_API_KEY=')[1].split('\n')[0].strip().strip('"').strip("'")
with open('/home/ubuntu/.hermes/config.yaml') as f:
    config = yaml.safe_load(f)
config['auxiliary']['vision']['api_key'] = key
config['tools']['vision']['api_key'] = key
with open('/home/ubuntu/.hermes/config.yaml', 'w') as f:
    yaml.dump(config, f, default_flow_style=False, allow_unicode=True)
print(f'Done. Key set: {key[:10]}...')
EOF
```

## ⚠️ 常见问题排查

### 401 Unauthorized / Invalid API Key
1. **检查 base URL**：脚本默认值可能过时。正确 URL 是 `https://token-plan-sgp.xiaomimimo.com/v1`，不是 `https://api.xiaomimimo.com/v1`。
2. **检查 header 格式**：MiMo API 使用 `Authorization: Bearer <key>`，而非 `api-key` header。
3. **验证方式**：
   ```bash
   curl -s https://token-plan-sgp.xiaomimimo.com/v1/chat/completions \
     -H "Content-Type: application/json" \
     -H "Authorization: Bearer $XIAOMI_API_KEY" \
     -d '{"model":"mimo-v2.5-tts","messages":[{"role":"assistant","content":"你好"}],"audio":{"format":"wav","voice":"冰糖"}}'
   ```

### 404: No endpoints found that support image input
MiMo chat API 不支持图片输入。用户发图片时 Hermes 尝试直接塞进请求导致。
**修复**：`hermes config set agent.image_input_mode tool`，并确保 vision API key 已配置（见上方"图片输入配置"章节）。

### 脚本报 "No API key found"
确认环境变量已 export：`echo $XIAOMI_API_KEY`。如果为空，添加到 `~/.bashrc` 并 `source ~/.bashrc`。

**注意**：Hermes 的 config.yaml 中可能已配置了 API key（`auxiliary.vision.api_key` 或 provider 的 `api_key`），但这个 key 不会自动 export 到 shell 环境变量。脚本依赖 `XIAOMI_API_KEY` 环境变量，二者是独立的。

**快速恢复方法**：从 config.yaml 提取 key 并 export：
```bash
export XIAOMI_API_KEY=$(python3 -c "import yaml; c=yaml.safe_load(open('/home/ubuntu/.hermes/config.yaml')); print(c.get('auxiliary',{}).get('vision',{}).get('api_key',''))")
```

### 网络搜索 400 Bad Request
`mimo_search.py` 可能因 API 端点变更或参数格式问题返回 400。排查步骤：
1. 先用 curl 直接测试 API 是否可达：`curl -s -o /dev/null -w "%{http_code}" https://token-plan-sgp.xiaomimimo.com/v1/models -H "Authorization: Bearer $XIAOMI_API_KEY"`
2. 如果网络不通（`Network is unreachable`），是服务器出站网络问题，不是 API 问题
3. 如果网络通但 400，检查请求体格式是否与最新 API 兼容

### mmx search 不可用
`mmx search query` 需要 MiniMax Token Plan 支持 `coding-plan-search` 模型。如果报错 "your current token plan not support model, coding-plan-search"，说明当前 plan 不包含搜索能力。替代方案：
- 使用 MiMo 网络搜索（如果可用）
- 使用 Playwright 浏览器抓取
- 使用 `curl` 直接请求搜索引擎（注意服务器出站网络限制）

## References

- `references/sensenova-api.md` — SenseNova API 配置、模型列表、限流策略、已安装 skills 绑定情况
- `references/mimo-v2.5-tts-official-doc.md` — MiMo-V2.5-TTS Series 官方文档摘要（VoiceDesign/VoiceClone/导演剧本详解）

## 脚本位置

所有 MiMo 辅助脚本位于 ~/.hermes/scripts/：
- mimo_vision.py - 图像理解
- mimo_audio.py - 音频理解
- mimo_video.py - 视频理解
- mimo_tts.py - TTS 语音合成
- mimo_search.py - 网络搜索
