ysr666/dsh-vision-router
ysr666/dsh-vision-router为纯文本 Agent 提供视觉能力:内置免 Key 视觉链 + 像素级视觉工具(看图问答、定位、裁剪、像素对比、取色、OCR、矢量化、抠图、截图);粘贴图片即可用。
0.2.2 兼容 DeepSeek Harness 0.1.7-rc.1 ~ 0.2.1-rc.2,已在 0.2.1-rc.2 实测。dsh 0.1.5 及以下请继续使用 dsh-image-pathify@0.1.9。让 deepseek-v4 这类「不能看图」的模型,也能处理你贴进聊天里的图片,并直接调用插件内置的识图工具。
聊天记录和界面里的缩略图不会变。插件只在把消息发给模型前,把图片换成一行本地文件路径;模型再调用 analyze_image 读这个文件,通过你配置的视觉 API 得到文字描述。
你贴一张图 → 聊天里照常显示缩略图
↓
发给不能看图的模型前 → 变成:Saved attachments: /某路径/某文件
↓
模型调用 analyze_image → 视觉 API 返回文字描述(多张图一次请求、同一次看见全部)已经能看图的模型不受影响:图片会原样发给它们,analyze_image 不会出现在它们的工具列表和系统提示里。read_image 在不能看图的模型上会被拒绝,并提示改用 analyze_image。
磁盘上的图片文件是 dsh 自己保存的附件(~/.dsh/attachments/v1/...),不是本插件另存的一份。
dsh plugin --profile web add dsh-image-pathify
dsh web打开 插件 → 识图 进详情页可配置(插件旧版 0.1.x 在 设置 → 插件 → 识图),填写后点保存:
$DSH_HOME/.credentials.yaml,不进设置文件)deepseek-flash)https://api.deepseek.com)deepseek-flash)默认会思考,思考 token 计入输出上限;取消勾选才会走思考模式,开启思考时应增大输出上限任何 OpenAI 兼容的视觉接口都可以,把地址(部分地址需要后面加/v1)和模型改成你的服务即可。设置页改动保存后立即生效,不用重启。
截图为旧版 0.1.9 的设置页;0.2.x 的入口是顶部 插件 → 识图,字段相同。
已装版本落后于 npm 最新版时,识图卡片 header会显示「发现新版本 x → y」和 复制升级命令,点按钮把命令复制到剪贴板。命令里的 --profile 按当前进程解析,取不到兜底 web。
dsh web(终端里 Ctrl+C)dsh plugin --profile web add dsh-image-pathify@version再启动 dsh web
analyze_image 而不是 read_imageanalyze_image,不会先 read_imageanalyze_imageread_image,不会先 analyze_image插件页保存后立即生效。识图字段写在该插件的 Loader 配置里,也就是 $DSH_HOME/profiles/name/cordis.patch.yml(0.1.x 写在 settings.yaml 的 image-pathify 段,不会自动导入,需要在插件页重新填写);API 密钥仍写在 $DSH_HOME/.credentials.yaml。
选项 · 默认 · 做什么 apiKeyEnv · IMAGE_PATHIFY_API_KEY · 凭据引用名。密钥本身写在 $DSH_HOME/.credentials.yaml,不进设置文件 visionModel · deepseek-flash · 识图模型 id。 visionBaseUrl · https://api.deepseek.com · OpenAI 兼容基址。(部分地址需要后面加/v1) disableThinking · true · 默认勾选。仅 DeepSeek 等支持 thinking 的接口会带上该字段,如果需要思考和详细输出请取消勾选,并增大输出上限,防止输出内容被截断(思考也会占用tokens) maxTokens · 2048 · 输出上限。0 = 不传 max_tokens(不传时各家默认值处理方式并不统一) models · 空 = 全部不能看图的模型 · 只决定哪些模型允许发图。空 = 都能发。填了就只放行名单里的模型 relaxAdmission · true · 允许给不能看图的模型发图。关闭后按模型能力拒绝贴图
apiKeyEnv 未配置时默认指向 IMAGE_PATHIFY_API_KEY, 将 API Key 指向官方环境变量的例子:
- id: dsh-image-pathify
name: dsh-image-pathify
config:
visionModel: deepseek-flash
visionBaseUrl: https://api.deepseek.com
apiKeyEnv: DEEPSEEK_API_KEY
disabled: false只允许 deepseek-v4 发图的例子:
- id: dsh-image-pathify
name: dsh-image-pathify
config:
models:
- provider: deepseek-official
model: deepseek-v4-flash
- provider: deepseek-official
model: deepseek-v4-pro用千问 DashScope 识图:
- id: dsh-image-pathify
name: dsh-image-pathify
config:
visionModel: qwen-vl-plus
visionBaseUrl: https://dashscope.aliyuncs.com/compatible-mode/v1模型侧只多一个工具 analyze_image(仅不能看图的模型能看见、能调用,防止与具备识图能力的模型冲突)。
image 填本地路径、file:// URL 或 http(s) 图片 URL(不要带路径前缀)images 一次传入全部路径,插件会在同一次视觉请求里带上所有图片,不必一张一张等prompt 可选同一轮里有多张图时,系统提示会要求模型把所有路径放进一次 analyze_image 调用,而不是循环调用。
PTC 模式下模型只能直接调用 run_code,此时 analyze_image 在 run_code 的 SDK 里调用;插件提示词已经包含这条说明。
pnpm install
pnpm checkpnpm check 会按顺序执行 typecheck、test、build。
MIT