1. 纯文本模型看不了图,这个痛点怎么破
如果你正在用 OpenCode、Claude Code 或者 ZCode 搭 AI 编程环境,大概率会选一套「强 Harness + 高性价比纯文本模型」的组合。Harness 负责工具调用、文件读写、终端执行,模型负责推理和写代码。DeepSeek、GLM、Kimi 这类模型编码能力扎实,按量计费成本又低,作为日常开发底座确实香。
但这套组合有个绕不开的短板:这些模型没有多模态能力,看不了图片。你贴一张报错截图过去,它只会回你「抱歉,我无法查看图片」;你把设计稿拖进对话,它照样一脸茫然。结果就是,遇到前端还原、UI 走查、报错定位这类需要「看图」的场景,你还是得手动把图里的信息一个字一个字敲成文字,再喂给模型。
image-vision Skill 解决的正是这个问题。它的思路很直接:不换主模型,在主模型之外挂一个视觉模型当「眼睛」。你上传图片后,Skill 自动调用一个零依赖的 Python 脚本,把图片做 base64 编码,通过 OpenAI 兼容接口发给视觉模型,拿到文字描述后再回灌给主模型继续推理。全程对用户透明,就像模型本来就能看图一样。
这套方案适合谁?三类人最受益。第一类是用 OpenCode / Claude Code / ZCode 做日常开发、但主模型是纯文本的开发者;第二类是想在多个 AI 编程工具之间混用、不想为每个工具重复配置识图能力的人;第三类是手头有 OpenAI 兼容的视觉模型接口(比如通义千问 Qwen-VL、智谱 GLM-4V、SiliconFlow,或者本地 vLLM / Ollama),想直接复用的人。一份 Skill,四个平台通用,换视觉厂商只改配置三行,代码一行不动。
下面我按「前置准备 → 安装 → 配置 → 验证 → 排障」的顺序,把整套流程拆成可复制的步骤。你跟着做,十分钟内能让 DeepSeek 这类纯文本模型「看见」图片。
2. 前置准备:TaoToken 统一 Key 与 API 通道
在装 Skill 之前,先把「视觉模型从哪来」这件事定下来。image-vision 的配置只需要三项:API 地址、API Key、模型名称。这三项指向一个 OpenAI 兼容的视觉模型接口即可。
如果你还没想好用哪家视觉模型,可以用 TaoToken 作为统一入口。它的好处是一个 Key 打通多个模型通道,视觉模型和文本模型走同一套鉴权,省得你在不同厂商控制台之间来回切换。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 基址是 https://taotoken.net/api 。
具体操作分两步。第一步,登录后在控制台创建 API Key,拿到一串sk-开头的密钥。第二步,确认你要用的视觉模型名称。TaoToken 的模型列表里,视觉模型通常带-vl、-vision或-4v之类的后缀,选一个你需要的记下来。
注意:API 基址填
https://taotoken.net/api即可,不要在后面手动加/v1,脚本会自动拼接兼容路径。如果你用的是其他厂商,按其文档填完整的兼容模式地址,比如通义千问是https://dashscope.aliyuncs.com/compatible-mode/v1。
拿到这三项后,先别急着装 Skill,可以先用一条 curl 命令确认通道是通的:
curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的Key" \ -H "Content-Type: application/json" \ -d '{ "model": "你的视觉模型名", "messages": [{"role": "user", "content": "你好"}] }'返回里有choices字段就说明 Key 和地址没问题。这一步能帮你把「配置错误」和「Skill 安装错误」提前分开,后面排障会省很多事。
3. 可复制配置:三种安装方式与 settings.json / config.toml 骨架
image-vision 的安装有三种方式,从懒人到手动,按你的习惯选一种就行。
3.1 最省事:让 AI 自己装
打开你的 OpenCode / Claude Code / ZCode 对话,把下面这句话原样扔进去:
按 https://github.com/wangxintai929/image-vision-skill 的 README 帮我配置识图能力,全局安装AI 会自动完成下载、安装、写配置,并根据你的回答填入视觉模型参数。看到「配置检查通过」就完成了。如果访问 GitHub 网络不畅,可以在仓库页面点 Code → Download ZIP,解压到本地后对 AI 说:
安装 D:\Job\code\image-vision-skill-main把路径换成你的实际解压目录,后续步骤完全一样。加不加「全局安装」有区别:不加只在当前项目/会话生效,加了之后所有会话都能用,推荐全局。
3.2 一键安装脚本(所有平台通用)
git clone https://github.com/wangxintai929/image-vision-skill.git cd image-vision-skill ./install.sh # macOS / Linux # Windows: powershell -ExecutionPolicy Bypass -File install.ps1脚本会自动完成四件事:复制脚本到统一目录~/.config/image-vision/(各平台共用一份)、生成config.json、把 Skill 装到 OpenCode 和 Claude Code 的 skills 目录、执行配置检查。
3.3 手动安装与各平台目录对照
下载 ZIP 解压后,把SKILL.md复制到对应平台的 skills 目录:
| 平台 | 安装位置 |
|---|---|
| OpenCode | ~/.config/opencode/skills/image-vision/ |
| Claude Code | ~/.claude/skills/image-vision/SKILL.md |
| ZCode | ~/.zcode/skills/image-vision/SKILL.md |
| Codex | 无 Skill 机制,在~/.codex/AGENTS.md追加指令兜底 |
注意:ZCode 不扫
~/.claude/skills/,必须放到自己的~/.zcode/skills/下,这是最容易踩的坑。
3.4 配置文件骨架
OpenCode 的opencode.json(全局在~/.config/opencode/opencode.json,也可放项目内)加入远程加载:
{ "skills": { "urls": ["https://cdn.jsdelivr.net/gh/wangxintai929/image-vision-skill@main/"] } }重启 OpenCode 后会自动从 CDN 拉取 Skill 和脚本,仓库更新后重启即拉新版,连文件都不用复制。
Claude Code 的settings.json里,如果要放行识别命令免确认,加一行:
{ "permissions": { "allow": ["Bash(python:*vision.py*)"] } }OpenCode / ZCode 则在opencode.json里加:
{ "permissions": { "*vision.py*": "allow" } }视觉模型的三项参数写在~/.config/image-vision/config.json里,骨架如下:
{ "api_base": "https://taotoken.net/api", "api_key": "sk-你的Key", "model": "你的视觉模型名" }如果你更习惯 TOML 风格,部分平台支持config.toml:
api_base = "https://taotoken.net/api" api_key = "sk-你的Key" model = "你的视觉模型名"两种格式二选一,脚本会优先读config.json。改完配置后,重新跑一次配置检查即可。
4. 验证请求:上传图片确认识图链路打通
装好之后,别急着在对话里贴图,先用命令行单独验证一次,把 Skill 层和模型层分开确认。
准备一张测试图,比如一张报错截图或设计稿,放到当前目录,命名为test.png。然后执行:
python ~/.config/image-vision/vision.py "test.png" -q "图片里有什么?"正常情况几秒到十几秒会返回一段文字描述。如果返回了内容,说明「脚本 → API 通道 → 视觉模型」这条链路是通的。接着回到 OpenCode / Claude Code / ZCode 对话里,直接拖一张图进去,问「这张图里报了什么错」,主模型会自动触发 Skill,把图转成描述后继续推理。
实测下来,报错截图、设计稿、多图对比这几类场景识别都比较准。多图对比时可以一次传多张,脚本会逐张处理再汇总。
如果你用的是 TaoToken 通道,验证模型对话能力可以直接在模型对话页里试:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。把同一张图传进去,对比一下 Skill 返回的描述和模型对话页的直接识图结果,能帮你判断是脚本配置问题还是模型本身的问题。
5. 本篇常见错排查
装 Skill 这件事,报错基本集中在四类。我把踩过的坑按现象、原因、解法列出来,你对号入座。
现象一:对话里贴图,模型还是回「我无法查看图片」。原因通常是 Skill 没装到当前平台扫描的目录。ZCode 用户尤其容易中招,因为 ZCode 不扫~/.claude/skills/。解法:确认SKILL.md在~/.zcode/skills/image-vision/下,然后重启 ZCode。OpenCode 用户检查opencode.json里的skills.urls是否写对,重启后看日志有没有拉取记录。
现象二:vision.py报ModuleNotFoundError。image-vision 是纯 Python 标准库实现,零第三方依赖,Python 3.7+ 就能跑。出现这个错,多半是你用了系统自带的旧 Python,或者python命令指向了错误的解释器。解法:用python3 --version确认版本,必要时在命令里显式写python3。
现象三:返回 401 或 403。Key 错了,或者 API 基址多写了/v1。TaoToken 的基址填https://taotoken.net/api,脚本会自动拼兼容路径;如果你手动加了/v1,就会变成/api/v1/v1/...。解法:检查config.json里的api_base,去掉多余的/v1,重新跑验证命令。
现象四:返回 404 或「模型不存在」。模型名称写错了。视觉模型和文本模型的名字不一样,别把deepseek-chat填进去。解法:去模型列表页确认视觉模型的准确名称,复制粘贴,注意大小写和后缀。
现象五:命令执行时弹确认,每次都要点。这是权限配置没放行。解法:按第 3.4 节的骨架,在settings.json或opencode.json里加*vision.py*的 allow 规则,其余命令仍保持确认,安全性和便利性兼顾。
排障时如果怀疑是接入层的问题,可以对照接入文档逐项核对:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。文档里有完整的请求示例和错误码说明,比盲猜快得多。
6. 长期编码与 Agent 场景的接入建议
如果你只是偶尔贴张图,上面这套配置就够了。但如果你打算把 OpenCode / Claude Code / ZCode 当成长期编码和 Agent 底座,建议把 Key 管理也一并理顺。
长期跑 Agent 的话,请求量会比手动对话大不少,Key 的额度和计费要提前规划。TaoToken 的 Coding Plan 适合这种持续调用的场景,一个 Key 覆盖文本和视觉模型,不用为识图单独再开一个厂商账号:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。
Key 的创建和管理在控制台的 API Keys 页面:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。建议给编程工具单独建一个 Key,方便按工具维度看用量,出问题也好定位。
最后补一句实操经验:image-vision 的配置检查通过后,把~/.config/image-vision/这个目录加进你的 dotfiles 备份。换机器时只要恢复这个目录,再改一下 Key,四个平台的识图能力就全回来了,不用重新装一遍。