《猫猫钓游记》可爱+收集+钓鱼游戏试玩
2026-06-30
2026-07-01 0
AI CLI 工具 + 第三方模型 = 图片理解真空地带。 这是 Claude Code、OpenCode 等工具搭配 DeepSeek 等不支持多模态的模型时,最让人头疼的问题。
常见的做法是在全局 CLAUDE.md 中写规则,强制要求使用某个 Skill 或 MCP 去处理图片。但这里有一个绕不开的坑:
Claude Code 在系统层面硬编码了指令 — 粘贴图片时必定调用 read 工具,直接把图片发给模型。 这个系统指令的优先级高于 CLAUDE.md,所以你的规则根本拦不住它。
结果是什么?Ctrl+V 粘贴一张截图,模型收到 base64 图片数据,直接报错或胡言乱语。整段对话就此腐烂,无法继续。
更糟的是,Debug 时我们几乎不会把截图先保存到本地再传 — 直接截图 → 粘贴到剪贴板 → Ctrl+V 才是最自然的工作流。传统方案只适用于"先保存为文件,再给路径"的场景,跟实际使用习惯完全错位。
图片整流器 + 图片分析技能,两层防线。
| 场景 | 传统方案 | 本项目 |
|---|---|---|
| Ctrl+V 粘贴剪贴板图片到 Claude Code | ❌ 系统硬编码 read,直接发给模型,对话烂掉 | ✅ 整流器在袋里层拦截,替换为文本提示,引导模型调用 Skill |
| 给定图片文件路径 | ⚠️ CLAUDE.md 规则勉强可用,但不同 CLI 行为不一致 | ✅ 整流器统一拦截,不依赖 MD 文件规则 |
| OpenCode 粘贴剪贴板图片 | ❌ OpenCode 不生成临时文件,路径都拿不到 | ✅ Skill 脚本自动检测:有路径读文件,没路径直接从剪贴板读取 |
| 多 Provider 切换 | ❌ 单个模型挂了就挂了 | ✅ Fallback 机制,30+ Provider 自动切换 |
图片整流器(袋里层) — 在请求发出前拦截。检测 messages 中的 base64 图片块,移除原始数据,替换为文本提示,引导模型调用 Skill。这一步在模型看到请求之前就完成了。
图片分析技能(CLI 工具) — 被模型调用后,智能判断图片来源:传了本地路径就读文件,没传路径就从系统剪贴板直接读取。兼容 Claude Code(粘贴生成临时文件)和 OpenCode(粘贴不生成临时文件)两种行为。
CC Switch 是一款管理 AI CLI 工具(Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw、Hermes)的桌面应用,提供供应商管理、袋里/故障转移、MCP/Skills 管理和用量统计等功能。
本分支在此基础上新增了针对图片输入处理的功能,解决大量第三方 API 供应商不支持多模态(视觉理解)的问题。
解决的问题: 大量第三方 API 供应商(中转站、非官方接口)不支持多模态输入。当请求的 messages 数组中出现 type: "image" 的 base64 图片块时,这些供应商会报错或行为异常。
解决方案: 图片整流器是袋里层的拦截器,在请求转发之前运行。它扫描 messages[*].content,检测 type: "image" 块,移除 base64 数据(通常数 MB),替换为文本提示,引导模型调用指定 skill 来处理图片。
关键特性:
type: "image" 块image-analysis)配置方式: 路由设置 → 整流器区域 → 图片整流器。打开开关,可按需修改 skill 名称。
一个独立的 Python 命令行图片视觉识别工具,兼容任何能执行 Shell 命令的 AI CLI。
核心能力:
--image)[provider名] 后返回预置 30+ AI Provider:
| 平台 | 代表模型 |
|---|---|
| 火山引擎 | 豆包 Seed 2.0 Pro/Lite/Mini、Vision 250815 |
| 硅基流动 | Qwen3.6-35B-A3B、Qwen3.6-27B |
| 阿里百炼 | Qwen3.6 Plus/Flash、Qwen3.5 Omni、Kimi K2.6、MiniMax M2.5 |
| 智谱 | GLM-4.6V-Flash |
| 商汤 | SenseNova-6.7-Flash-Lite |
与图片整流器的联动: 当某模型不支持图片时,整流器会将图片块替换为文本提示,引导模型调用 Skill,模型自动通过 CLI 完成实际视觉分析。整个过程对用户透明,无需手动执行 Python 脚本。
封装 pnpm tauri dev / pnpm tauri build 的便捷脚本:
./dev.sh # Debug 模式(默认)./dev.sh debug # Debug 模式(含请求体打印)./dev.sh release # Release 模式./dev.sh build # Release 编译
预置了 CARGO_HTTP_PROXY,方便国内网络环境下编译 Rust 依赖。
从源码编译:
git clone https://github.com/piaomiaoguying/cc-switch.gitcd cc-switch./dev.sh build
本 Skill 预置了多个平台的视觉模型,均有免费额度,挑选自己习惯的平台注册即可:
| 平台 | 代表模型 | 注册地址 |
|---|---|---|
| 阿里百炼 | Qwen3.6 Plus/Flash、Qwen3.5 Omni 等 | dashscope.aliyun.com |
| 智谱 | GLM-4.6V-Flash | open.bigmodel.cn |
| 硅基流动 | Qwen3.6-35B-A3B 等 | siliconflow.cn |
| 火山引擎 | 豆包 Seed 2.0 Pro/Lite/Mini | console.volcengine.com |
| 商汤 | SenseNova-6.7-Flash-Lite | platform.sensenova.cn |
注册后获取 API Key,填入 Skill 配置文件:
cp skills/image-analysis/scripts/config.example.json skills/image-analysis/scripts/config.json# 编辑 config.json,将各个平台的 API Key 填入对应字段
在你的全局 CLAUDE.md(~/.claude/CLAUDE.md)中加入以下规则,禁止直接使用 read 工具读取图片:
## 图片处理规范禁止使用 `read` 工具读取任何图片文件(如 .png, .jpg, .jpeg)必须使用 image-analysis 这个 skill 来分析图片当模型返回不支持直接接收图片输入时,自动调用 image-analysis 这个 skill 来分析图片
推荐通过 CC Switch 统一管理 Skill,避免手动复制文件夹:
skills/image-analysis 配置文件夹放在 CC Switch 目录下image-analysis这样 CC Switch 会自动将 Skill 同步到各 CLI 的 Skill 目录。
这是最关键的一步,需要打开三层开关:
① 打开本地路由
进入 CC Switch → 路由设置:
② 配置图片整流器
在路由设置界面往下滑,找到整流器区域:
image-analysis以上配置完成后,正常的 Claude Code 实例通常会立即生效。如果老的实例没有生效,重新启动一个新的 Claude Code 实例即可。此时模型的网络请求会经过 CC Switch 袋里,CC Switch 会对会话数据进行拦截修改:
之后的整体流程为:
Ctrl+V 粘贴图片 → CC Switch 袋里拦截 → 移除 base64,替换为文本提示→ 模型收到文本,调用 image-analysis Skill → Skill 读取图片并返回分析结果
项目地址:github.com/piaomiaoguy…
B站视频:www.bilibili.com/video/BV174…