smart-model-switcher-v5
# 🧠 Smart Model Switcher V5.0.2 (多模态感知增强版)
**自动识别任务类型 • 智能切换最优模型 • 零感知 • 无需手动**
## 🎯 V5.0.2 核心升级
| 特性 | V4 | V5.0.2 |
|------|----|----|
| **多模态感知** | ✅ 图片 | ✅ 图片 + 视频 + 音频 |
| **Office 模式** | ❌ 无 | ✅ MiniMax-M2.5 |
| **视频理解** | ❌ 不支持 | ✅ 自动切换 qwen3.5-plus |
| **音频理解** | ❌ 不支持 | ✅ 自动切换 qwen3.5-plus |
| **主窗口限制** | ❌ 无限制 | ✅ 仅主窗口生效,子代理不切换 |
| **任务感知** | 智能上下文分析 | 智能上下文分析 + 文件检测 |
## ⚠️ 核心规则:主窗口限制
### 🔒 智能切换仅限主窗口
**智能模型切换只对主窗口(主会话)生效!**
| 会话类型 | 是否执行智能切换 | 说明 |
|---------|-----------------|------|
| **主窗口** | ✅ 执行 | 用户直接对话的会话(飞书、WebChat、Telegram 等) |
| **子代理** | ❌ 不执行 | 团队成员办公室(马云CEO、技术专家、市场猎手等) |
| **Spawned Session** | ❌ 不执行 | 通过 `sessions_spawn` 创建的所有会话 |
### 为什么这样设计?
1. **子代理有固定模型** - 各专业人员的模型是预设的(技术专家用 glm-5,推理用 qwq-plus)
2. **避免干扰** - 智能切换不应该覆盖子代理的专业模型配置
3. **职责分明** - 主窗口处理用户意图,子代理专注执行任务
### 判断方式
```
当前会话是主窗口?
├── YES → 执行智能切换逻辑
└── NO → 跳过切换,使用该会话预设模型
```
**检测方法**:
- 主窗口:`depth = 0` 或无 `subagent context` 标记
- 子代理:消息开头有 `[Subagent Context]` 或 `depth > 0`
---
## 🖼️ 多模态模型列表
### 视觉/音视频模型(支持图片/视频/音频)
| 模型 ID | Provider | 能力 | 推荐场景 |
|---------|----------|------|----------|
| `qwen3.5-plus` | Bailian | 图片/视频/音频 ⭐⭐⭐⭐⭐ | 多模态任务首选 |
| `qwen3-vl-plus` | Bailian | 图片 ⭐⭐⭐⭐⭐ | 纯图片理解、OCR |
| `qvq-max` | Bailian | 图片 ⭐⭐⭐⭐⭐ | 复杂视觉推理 |
| `glm-4v` | GLM | 图片 ⭐⭐⭐⭐ | 图片理解 |
### 代码模型(编程专用)
| 模型 ID | Provider | 代码能力 | 推荐场景 |
|---------|----------|----------|----------|
| `glm-5` | Bailian/GLM | ⭐⭐⭐⭐⭐ | 代码生成、Debug、重构 |
| `qwen3-coder-plus` | Bailian | ⭐⭐⭐⭐⭐ | 代码补全、项目开发 |
| `qwen-coder-turbo` | Bailian | ⭐⭐⭐⭐ | 快速代码任务 |
### 推理模型(复杂思维)
| 模型 ID | Provider | 推理能力 | 推荐场景 |
|---------|----------|----------|----------|
| `qwq-plus` | Bailian | ⭐⭐⭐⭐⭐ | 复杂推理、数学证明 |
| `qwen3-max` | Bailian | ⭐⭐⭐⭐⭐ | 深度思考、分析 |
| `glm-5` | Bailian/GLM | ⭐⭐⭐⭐ | 逻辑推理 |
### Office 文档模型
| 模型 ID | Provider | 能力 | 推荐场景 |
|---------|----------|------|----------|
| `MiniMax-M2.5` | Bailian | ⭐⭐⭐⭐⭐ | Office 文档处理 |
### 通用模型
| 模型 ID | Provider | 综合能力 | 推荐场景 |
|---------|----------|----------|----------|
| `qwen3.5-plus` | Bailian | ⭐⭐⭐⭐ | 日常对话、写作、翻译 |
| `qwen-plus` | Bailian | ⭐⭐⭐ | 快速任务 |
| `qwen-turbo` | Bailian | ⭐⭐ | 简单任务、低成本 |
## 🔄 自动切换规则
### 规则 0: 主窗口检测(最高优先级)
```
IF 当前会话不是主窗口 → 跳过所有切换逻辑,使用预设模型
```
### 规则 1: 多模态检测优先(图片/视频/音频)
```
IF 消息包含图片/视频/音频 → 切换到 qwen3.5-plus
├── 图片 + 代码相关 → qwen3.5-plus (视觉+代码)
├── 视频文件 → qwen3.5-plus (唯一支持视频)
├── 音频文件 → qwen3.5-plus (唯一支持音频)
└── 纯图片理解 → qwen3-vl-plus 或 qwen3.5-plus
```
**视频文件扩展名**:.mp4, .avi, .mov, .mkv, .wmv, .flv, .webm, .m4v
**音频文件扩展名**:.mp3, .wav, .m4a, .ogg, .flac, .aac, .wma
**图片文件扩展名**:.png, .jpg, .jpeg, .gif, .webp, .bmp, .svg
### 规则 2: 代码任务
```
IF 消息包含代码关键词 → 切换到代码模型
├── 复杂代码任务 → glm-5 (最强代码)
├── 快速代码补全 → qwen-coder-turbo
└── 项目级开发 → qwen3-coder-plus
```
### 规则 3: 推理任务
```
IF 消息包含推理关键词 → 切换到推理模型
├── 复杂推理 → qwq-plus (最强推理)
├── 数学/证明 → qwen3-max
└── 一般分析 → glm-5
```
### 规则 4: Office 模式
```
IF 用户说 "Office模式" / "切换Office" / "MiniMax" → 切换到 MiniMax-M2.5
└── Office 文档处理 → MiniMax-M2.5
```
### 规则 5: 文本任务
```
IF 纯文本任务 → 使用通用模型
├── 长文档 → qwen3.5-plus (1M context)
├── 写作/翻译 → qwen3.5-plus
└── 简单对话 → qwen-plus / qwen-turbo
```
## 📋 切换决策树(完整版)
```
收到消息
│
├── 🔒 是否为主窗口(主会话)?
│ ├── NO → 跳过切换,使用该会话预设模型
│ │
│ └── YES ↓
│
├── 🖼️ 包含图片/视频/音频?
│ ├── 视频文件 (.mp4/.avi/.mov/.mkv/...) → qwen3.5-plus ⭐多模态优先
│ ├── 音频文件 (.mp3/.wav/.m4a/.ogg/...) → qwen3.5-plus ⭐多模态优先
│ ├── 图片 + 代码关键词 → qwen3.5-plus (视觉+代码)
│ └── 纯图片 → qwen3-vl-plus 或 qwen3.5-plus
│
├── 💻 代码关键词?
│ └── YES → glm-5 (最强代码)
│
├── 🧠 推理关键词?
│ └── YES → qwq-plus / qwen3-max
│
├── 📎 Office 关键词?
│ └── YES → MiniMax-M2.5
│
└── 📝 通用任务 → qwen3.5-plus
```
## 🎯 关键词识别
### 多模态检测(最高优先级)
- **图片**:消息中有 `image` 类型内容,文件扩展名 .png, .jpg, .jpeg, .gif, .webp, .bmp
- **视频**:文件扩展名 .mp4, .avi, .mov, .mkv, .wmv, .flv, .webm, .m4v
- **音频**:文件扩展名 .mp3, .wav, .m4a, .ogg, .flac, .aac, .wma
- 用户说:"看这个图"、"视频里是什么"、"听这个音频"、"截图"
### 代码关键词
- 编程相关:代码、编程、python、js、javascript、函数、debug、bug、报错、错误、修复
- 文件类型:.py, .js, .ts, .html, .css, .json, .yaml, .sh
- 操作词:写一个、帮我写、优化、重构、解释这段代码
### 推理关键词
- 推理、逻辑、证明、数学、计算、分析、思考
- 为什么、怎么推导、能不能推出、关系
### Office 关键词
- Office、Office模式、切换Office、MiniMax、文档处理
- Word、Excel、PPT、PowerPoint、表格处理
### 写作关键词
- 写、作文、文章、小说、故事、文案、邮件、报告
## 🔧 配置示例
### 用户配置的最强模型
```json
{
"modelPreferences": {
"multimodal": "qwen3.5-plus", // 视频/音频/图片
"vision": "qwen3-vl-plus", // 纯图片
"coding": "glm-5", // 代码最强
"reasoning": "qwq-plus", // 推理最强
"office": "MiniMax-M2.5", // Office 文档
"general": "qwen3.5-plus", // 通用最强
"fast": "qwen-turbo" // 快速任务
}
}
```
## 📊 使用示例
### 示例 1: 主窗口发送视频文件
```
用户: [发送一个 .mp4 文件] "帮我分析这个视频"
环境: 主窗口 (WebChat)
检测: 视频文件 + 主窗口
切换: qwen3.5-plus (唯一支持视频的模型)
执行: 分析视频内容
```
### 示例 2: 子代理处理代码任务
```
用户: "让技术专家写个爬虫"
环境: 技术专家办公室 (子代理)
检测: 代码关键词 + 子代理环境
结果: 不执行智能切换,使用技术专家预设模型 (glm-5)
执行: 生成爬虫代码
```
### 示例 3: 主窗口 Office 模式
```
用户: "切换到 Office 模式"
环境: 主窗口 (飞书)
检测: Office 关键词 + 主窗口
切换: MiniMax-M2.5
提示: "🧠 已切换到 MiniMax-M2.5(Office 模式)"
```
### 示例 4: 主窗口发送音频文件
```
用户: [发送一个 .mp3 文件] "转录这段录音"
环境: 主窗口 (Telegram)
检测: 音频文件 + 主窗口
切换: qwen3.5-plus (唯一支持音频的模型)
执行: 转录音频内容
```
### 示例 5: 子代理执行推理任务
```
用户: "让推理专家证明根号2是无理数"
环境: 推理专家办公室 (子代理)
检测: 推理关键词 + 子代理环境
结果: 不执行智能切换,使用推理专家预设模型 (qwq-plus)
执行: 给出证明过程
```
## 🚀 实现逻辑
### Step 0: 主窗口检测(第一步)
```
检测当前会话:
1. 是否有 [Subagent Context] 标记?
2. 是否有 depth > 0?
3. 是否是 spawned session?
└── YES → 跳过所有智能切换,使用预设模型
└── NO → 继续执行智能切换逻辑
```
### Step 1: 消息分析
```
分析用户消息:
1. 是否包含图片/视频/音频附件 ← 最高优先级
2. 提取关键词
3. 识别任务类型
4. 确定上下文需求
```
### Step 2: 模型选择
```
选择最优模型:
1. 根据任务类型查找最佳模型
2. 检查模型可用性 (API Key + 套餐)
3. 应用 fallback 逻辑
4. 记录选择原因
```
### Step 3: 执行切换
```
切换模型:
1. 调用 session_status(model: "xxx")
2. 发送提示信息给用户
3. 执行任务
4. 记录性能数据
```
## ⚠️ 核心原则
1. **主窗口限制** - 智能切换仅限主窗口,子代理保持预设模型
2. **多模态优先** - 图片/视频/音频一律走 qwen3.5-plus,绝不走 GLM-5
3. **代码专用** - GLM-5 只用于纯代码/纯技术任务
4. **Office 独立** - MiniMax-M2.5 专门处理 Office 文档
5. **检测优先级** - 主窗口 > 图片/视频/音频 > 代码 > 推理 > Office > 通用
6. **自动切换** - 用户无需手动操作,系统自动识别
7. **fallback** - 如果首选模型不可用,自动降级到备选
## 📝 更新日志
### V5.0.2 (2026-03-25)
- ✅ 新增视频文件自动检测 (.mp4, .avi, .mov, .mkv 等)
- ✅ 新增音频文件自动检测 (.mp3, .wav, .m4a, .ogg 等)
- ✅ 新增 Office 模式,支持 MiniMax-M2.5
- ✅ **新增主窗口限制,子代理不执行智能切换**
- ✅ 更新决策树,主窗口检测为最高优先级
- ✅ 明确 GLM-5 只用于纯代码任务
### V4.0.0 (2026-03-23)
- ✅ 新增多模态感知,自动识别图片
- ✅ 新增视觉模型支持 (qwen3-vl-plus, qwen3.5-plus)
- ✅ 优化切换决策树,图片检测优先
- ✅ 更新关键词识别规则
### V3.0.0
- ✅ 全平台支持
- ✅ API Key 验证
- ✅ 套餐检测
---
---
## 🤖 AI Agent 自动行为指南
**重要:AI Agent 在每次响应前,必须执行以下检测流程!**
### 🔒 规则 0:主窗口检测(第一步!)
**智能切换只对主窗口生效!子代理不要执行模型切换!**
```
Step 0: 检测当前会话类型
├── 消息开头有 [Subagent Context]?
│ └── YES → 这是子代理,跳过智能切换,使用预设模型
│
├── 有 depth 标记且 depth > 0?
│ └── YES → 这是子代理,跳过智能切换,使用预设模型
│
├── 是 spawned session?
│ └── YES → 这是子代理,跳过智能切换,使用预设模型
│
└── NO → 这是主窗口,继续执行智能切换逻辑
```
**子代理示例**:
- `[Wed 2026-03-25 21:05 GMT+8] [Subagent Context] You are running as a subagent...`
- `[Subagent Task]: ...`
- `depth=1` 或任何 `depth > 0`
**主窗口示例**:
- 用户直接在 WebChat/飞书/Telegram 发消息
- 无 `[Subagent Context]` 标记
- `depth=0` 或无 depth 标记
### ⚠️ 会话级别切换(重要!)
**模型切换是会话级别的,不影响其他通道!**
- WebChat 发视频 → 只在 WebChat 切换多模态模型
- 飞书写代码 → 只在飞书会话切换代码模型
- Telegram 聊天 → 只在 Telegram 会话切换模型
**不同通道独立,互不影响!**
### 切换方法(会话级别)
使用 `session_status` 工具,带上当前会话的 sessionKey:
```
// 当前会话切换(不影响其他通道)
session_status(model: "bailian/glm-5")
// 切换其他会话的模型(需要指定 sessionKey)
session_status(sessionKey: "feishu/xxx", model: "bailian/qwen3.5-plus")
```
**默认行为:不带 sessionKey 时,只切换当前会话的模型。**
### 检测流程(每次响应前)
```
Step 0: 主窗口检测 ← 第一步!
├── 是子代理? → 跳过切换,使用预设模型
└── 是主窗口? → 继续
Step 1: 检测消息内容
├── 是否包含图片/视频/音频?
│ └── YES → 切换到 qwen3.5-plus(多模态模型)
│
├── 是否包含代码关键词?
│ └── YES → 切换到代码模型 (glm-5)
│
├── 是否包含推理关键词?
│ └── YES → 切换到推理模型 (qwq-plus)
│
├── 是否包含 Office 关键词?
│ └── YES → 切换到 Office 模型 (MiniMax-M2.5)
│
└── 否则保持当前模型
```
### 切换方法
使用 `session_status` 工具切换模型:
```
session_status(model: "bailian/qwen3.5-plus") // 多模态
session_status(model: "bailian/glm-5") // 代码
session_status(model: "bailian/qwq-plus") // 推理
session_status(model: "bailian/MiniMax-M2.5") // Office
```
### 切换提示
切换成功后,给用户一个简短提示:
- "🧠 已切换到 qwen3.5-plus(视频/音频理解)"
- "🧠 已切换到 qwen3.5-plus(图片理解)"
- "🧠 已切换到 glm-5(代码任务)"
- "🧠 已切换到 qwq-plus(推理任务)"
- "🧠 已切换到 MiniMax-M2.5(Office 模式)"
### 示例行为
```
场景 A: 主窗口发送视频
────────────────────────
用户: [发送一个 .mp4 视频文件] "帮我分析这个视频"
AI 行为:
1. 检测: 无 [Subagent Context] → 是主窗口
2. 检测到视频文件 → 需要多模态模型
3. 决策: 使用 qwen3.5-plus(唯一支持视频)
4. 调用: session_status(model: "bailian/qwen3.5-plus")
5. 提示: "🧠 已切换到 qwen3.5-plus(视频理解)"
6. 分析视频内容
场景 B: 子代理处理代码任务
────────────────────────
消息: [Subagent Context] You are running as a subagent...
任务: 技术专家,写一个爬虫
AI 行为:
1. 检测: 有 [Subagent Context] → 是子代理
2. 决策: 跳过智能切换,使用预设模型 (glm-5)
3. 不调用 session_status
4. 直接执行任务
```
### 注意事项
1. **主窗口限制** - 只有主窗口才执行智能切换,子代理保持预设模型
2. **不要重复切换** - 如果当前模型已经是最优选择,不要切换
3. **切换要快** - 使用简短提示,不要长篇大论
4. **记录切换** - 如果模型切换成功,记住当前使用的模型
5. **优先级** - 主窗口检测 > 图片/视频/音频 > 代码 > 推理 > Office > 通用
6. **多模态内容绝不走 GLM-5** - 视频/音频/图片必须用 qwen3.5-plus
---
## 📋 快速参考
| 场景 | 是否切换 | 最优模型 |
|------|---------|----------|
| 🏠 主窗口 + 视频 | ✅ 切换 | qwen3.5-plus |
| 🏠 主窗口 + 音频 | ✅ 切换 | qwen3.5-plus |
| 🏠 主窗口 + 图片 | ✅ 切换 | qwen3.5-plus |
| 🏠 主窗口 + 代码 | ✅ 切换 | glm-5 |
| 🏠 主窗口 + 推理 | ✅ 切换 | qwq-plus |
| 🏠 主窗口 + Office | ✅ 切换 | MiniMax-M2.5 |
| 🤖 子代理 + 代码 | ❌ 不切换 | 使用预设模型 |
| 🤖 子代理 + 推理 | ❌ 不切换 | 使用预设模型 |
| 🤖 子代理 + 任何 | ❌ 不切换 | 使用预设模型 |
---
**V5.0.2 核心亮点:主窗口智能切换,子代理保持预设,发图片/视频/音频自动切换多模态模型,完全无感!** 🚀
标签
skill
ai