用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/DDDFXYqiming/dsh-vision-skill --skill vision命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | vision |
| description | 识别图片内容。当用户发送图片、截图、报错图,或要求分析某张本地图片时使用。优先调用 vision_analyze(本地图片路径)或 vision_clipboard(剪贴板图片)。 |
当主模型不支持直接读取图片时,图片不会进入对话上下文,但本插件现在会:
📎 image1.png / image2.png ... 编号 chip(从 1 开始);发送时自动上传到工作区 .dsh-vision/pasted/ 并把路径文本交给模型(无需任何框架补丁);C:/Users/.../xxx.png)。本插件的所有工具只接收图片的本地路径(文本),不接收图片本体。路径来源有三种(前两种无需 pi-ai 补丁):
[图片附件 sha256:...,本地路径 C:\Users\...png,模型不支持直接读图,请用 vision skill 读取]),也可能是用户直接给出路径。直接调用 vision_analyze 等工具即可。vision_clipboard,它会自动把剪贴板图片保存到工作区 .dsh-vision/ 再识别。.dsh-vision/pasted/,再以路径文本进入消息;消息里没有 image 块,因此 DSH 不会报 MODEL_DOES_NOT_SUPPORT_IMAGES。旧 pi-ai 补丁仅作为兼容保留,不再必需。本技能已打包为标准 DSH 插件 dsh-vision-skill(工具 + 运行时 skill,无需任何框架补丁):
vision_analyze:识别指定路径的本地图片(image_path 必填;可选 mode/prompt/crop/budget)。mode=evidence 返回结构化证据 JSON(summary / ocr_full_text / layout 阅读顺序 / semantics 实体关系 / uncertainty);多 provider 自动 failover,429 自动退避vision_ocr:独立 OCR 工具——提取图片中全部可见文字,保持原始排版(image_path 必填;可选 prompt/crop/budget)vision_ground:定位工具——在图片中查找指定目标(如「所有按钮」「微信图标」),返回每个目标的像素坐标框(bbox_pixel)与归一化坐标(bbox_normalized,0-1000),可选 output 保存带标注框的预览图vision_detect:枚举工具——清点图片中某一类元素(默认所有 UI 元素),逐个编号 + 像素坐标框;与 vision_ground 互补(ground 找一个,detect 数一类)vision_dominant_colors:主色分析——提取图片(或区域)主要颜色与占比(本地像素算法,无需视觉 API),用于取主题色/配色分析vision_long_screenshot_ocr:超长截图分块 OCR——聊天记录/整个网页等超高图自动切块(带重叠)→ 逐块识别 → 合并全文,带块边界信息;每块先跑本地 tesseract(chi_sim+eng),失败自动回退 VLMvision_clipboard:读取剪贴板中的图片,保存到会话工作区 .dsh-vision/ 后识别——用户在输入框粘贴图片被"当前模型不支持图片"拦截时,只需把图片复制到剪贴板(如 Win+Shift+S 截屏自动复制)后说"看图"即可vision_activate 兜底apiUrl / model / apiKey(任意 OpenAI 兼容的多模态模型均可接入——如 Qwen-VL、MiniMax-M3、Gemini、GPT-4o 等;默认 MiniMax-M3)。新增 visionProviders 数组可配置 fallback 链路(顺序=优先级,自动 failover;429 按 Retry-After 退避重试一次)。密钥支持 DSH Credential 引用(credential: VISION_API_KEY),推荐后者避免明文budget 支持 small(≈512²) / normal(≈1024²) / large(≈1448²) / mega(≈4096²,约 16M 像素超高清,对应 Qwen 官方高分辨率模式)脚本也可独立运行(不依赖 DSH):复制 templates/.env.example 为技能目录下的 .env,填入:
VISION_API_URL:视觉模型 OpenAI 兼容完整接口地址(含路径,如 https://api.example.com/v1/chat/completions)VISION_MODEL:模型名VISION_API_KEY:API Key也可以直接导出同名环境变量;环境变量优先级高于 .env 文件。运行 python scripts/vision.py --check 自检。
从用户消息中找到图片路径(附件占位符 [图片附件 sha256:...,本地路径 ...] 或直接路径文本);如果路径不明确,优先调用 vision_clipboard(用户把图片复制到剪贴板后说"看图"),或查找 DSH 附件目录最近的截图:
Get-ChildItem "$env:USERPROFILE\.dsh\attachments\v1\objects" -Recurse -File | Sort-Object LastWriteTime -Descending | Select-Object -First 3 FullName,Length
运行脚本识别图片(插件模式下直接调用 vision_analyze / vision_clipboard 工具):
cd <技能目录>; python scripts/vision.py "<图片绝对路径>" "(可选)具体识图要求"
脚本输出图片的文字描述(可能较长),基于描述回答用户的问题;描述中的重要文字、报错信息要原样转述。
脚本已自动区分"交互终端"和"管道/重定向":
如果仍出现乱码(例如旧版控制台代码页为 936),先执行下面一行再运行脚本:
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8; $OutputEncoding = [System.Text.Encoding]::UTF8; $env:PYTHONIOENCODING = 'utf-8'
重定向到文件时,输出文件为 UTF-8 编码,请用 Get-Content -Encoding UTF8 读取。
| 场景 | 命令 |
|---|---|
| 一般识图 | vision.py "<图>" |
| 提取所有文字(OCR,保持排版) | vision.py "<图>" --mode ocr(插件模式用 vision_ocr 工具) |
| 表格/数据截图转 Markdown 表格 | vision.py "<图>" --mode table |
| 代码/日志/报错截图 | vision.py "<图>" --mode code 或 --mode error |
| 定位目标(返回像素坐标框) | vision.py "<图>" --ground "所有按钮" --draw 标注.png(插件模式用 vision_ground 工具) |
| 枚举一类元素(编号+坐标框) | vision.py "<图>" --detect "所有按钮" --draw 标注.png(插件模式用 vision_detect 工具) |
| 主色分析(本地算法,无需 API) | vision.py "<图>" --colors 8(插件模式用 vision_dominant_colors 工具) |
| 超长截图分块 OCR | vision.py "<图>" --long-ocr --target-height 2000 --overlap 100(插件模式用 vision_long_screenshot_ocr 工具) |
| 小字看不清:先全图定位,再裁局部放大读 | vision.py "<图>" --crop x1,y1,x2,y2 --budget large |
| 多张图对比 / 批量读 | vision.py "a.png" --images "b.png" "c.png" --prompt "对比这两张" |
| 高分辨率细节(4K 截图小字) | vision.py "<图>" --budget large |
| 超高清/16M 像素(Qwen 高分辨率模式) | vision.py "<图>" --budget mega |
| 原图直发(不缩放) | vision.py "<图>" --no-resize |
| 环境自检(配置/PIL/接口) | vision.py --check |
--crop x1,y1,x2,y2 裁出来,配合 --budget large/mega 放大后再读,直到信息足够。--crop 坐标为原图像素坐标(左上角为原点);--save-crop 路径 可把实际发送的裁切图存下来复核。
定位输出的是模型估计的坐标框(Qwen 官方方法:VLM 输出 0-1000 归一化 bbox → 映射回原图像素)。用法建议:
--crop 做局部放大识图(先 ground 定位 → 再 crop 细读)。bbox_pixel 结合本地工具复核。--crop 只作用于第一张主图。thinking: disabled,识图更快);若模型不支持该参数可删除对应字段,或改为 adaptive 开启。vision_ground 的 --draw 标注图会输出到指定路径;插件模式下 output 参数默认为会话工作区相对路径。