ysr666/dsh-vision-router
ysr666/dsh-vision-router为纯文本 Agent 提供视觉能力:内置免 Key 视觉链 + 像素级视觉工具(看图问答、定位、裁剪、像素对比、取色、OCR、矢量化、抠图、截图);粘贴图片即可用。
为纯文本 DeepSeek 路由提供视觉桥接:通过可配置的 OpenAI Responses、Chat Completions 或 Anthropic Messages 端点分析附件与本地图片,同时保持支持图片的路由走原生路径。
让你选择的多模态模型,成为 DeepSeek 的眼睛。
English · 中文
dsh-open-eyes 为 DeepSeek Harness 提供可自由配置的视觉能力。向对话发送截图、照片、图表或界面后,主模型可以把视觉任务交给你选择的多模态模型,再在同一个对话中使用返回的文字分析。因此,主模型本身不需要原生支持图片。
Open Eyes 支持 OpenAI Responses、OpenAI Chat Completions 和 Anthropic Messages 接口。插件不绑定任何特定厂商:API 地址、模型和凭据都由用户自行选择。
非官方社区插件:
dsh-open-eyes是独立的社区项目,与 DeepSeek 无隶属关系,也未经 DeepSeek 官方背书或维护。
需要 Node.js >=22.19.0。Open Eyes 与 DSH 采用严格一对一兼容关系,不向前兼容,也不向后兼容。
| DeepSeek Harness 版本 | 安装指令 |
|---|---|
0.1.0-rc.6 | dsh plugin --profile web add dsh-open-eyes@0.1.0 |
0.1.1-rc.2 | dsh plugin --profile web add dsh-open-eyes@0.1.1-rc.2 |
0.1.2-alpha.1 | dsh plugin --profile web add dsh-open-eyes@0.1.2-alpha.1 |
0.1.2-rc.1 | dsh plugin --profile web add dsh-open-eyes@0.1.2-rc.1 |
安装后重启 DSH Web,并刷新页面。不同 DSH profile 相互独立,需要在每个希望使用 Open Eyes 的 profile 中分别安装。
打开 设置 → 插件 → 插件配置(Settings → Plugins → Plugin configuration),展开 开放视觉(Open Eyes)。插件会根据 DSH 当前界面语言显示中文名“开放视觉”或英文名“Open Eyes”。
Open Eyes 支持创建多个视觉方案,并可随时切换当前默认方案。每个方案都可以填写可选备注名、API 地址、模型和 API Key。API 地址既可以是服务基础地址,也可以是所选协议的完整端点。
目前支持三种协议:
openai-responsesopenai-chat-completionsanthropic-messages模型名称可以手动填写,也可以点击获取模型读取服务提供的模型列表。模型目录通常不会可靠标注图片能力,因此仍需自行确认所选模型支持多模态。验证连接会使用当前真实配置发送一张极小的测试图片;保存并验证可以在新增或编辑方案后立即完成检查。
折叠后的方案列表只显示备注名和模型名。左侧单选圆圈用于选择默认方案;编辑表单会直接出现在对应方案下方,再次点击同一个按钮即可收起。验证结果不会撑大或改变方案卡片的布局。
API Key 只会通过 DSH Credentials 写入凭据存储,不会进入插件 Settings 或 cordis.patch.yml。编辑已有方案时留空即可保留原 Key。删除方案不会自动删除已保存的凭据。
顶部的启用开关只对新会话生效:
切换默认视觉方案不需要新建会话。同一会话中的下一次视觉分析会直接使用新选中的方案。
对话模型会根据用户的问题自行生成有针对性的 vision_analyze Prompt,例如准确抄录错误信息、检查界面布局、读取图表或比较两张截图。可选的偏好区域让用户在此基础上进一步控制视觉模型:
偏好会在可见 Tool Call 之后、真正请求视觉模型之前,由 Open Eyes 在内部追加。因此,额外偏好不会显示在 Tool Call 参数中,也不会修改主模型的 System Prompt、对话历史、工具声明或 Harness Loop。所有选项保持默认时不会增加任何内容,视觉 Provider 收到的仍是原始任务 Prompt。
偏好修改后会从下一次视觉分析开始生效,包括同一个已有会话中的后续调用。
在 DSH Web 中粘贴、拖入或选择图片,写下真正想问的问题,然后正常发送即可。Open Eyes 会保留用户原文,为视觉工具提供只属于当前会话的附件引用,并把视觉模型返回的分析交给主模型继续回答。
下面的案例中,非多模态主模型 GLM-5.3(High effort) 收到一张图片后调用 vision_analyze,把图片交给 GPT-5.6-Luna 分析,并在最终回答中使用返回的视觉证据。
同一个工具也可以分析 Agent 已经可以访问的本地图片:
请调用 vision_analyze,读取 screenshots/error.png 中的错误提示,
准确抄录错误码,并说明当前界面中可以看到哪些操作。
本地图片支持 PNG、JPEG、WebP 和 GIF。相对路径以当前 Agent session 工作目录为准。远程图片 URL 默认关闭,确实需要时可以通过高级配置启用。
每次分析都会重新读取当前默认视觉方案和视觉偏好,因此这两项可以实时更改,不需要重建对话。启用状态则在会话创建时固定,避免反复切换开关改变该会话对模型可见的 Prompt 或工具目录。
设置卡片已经覆盖大多数用户需要的字段。请求限制、重试、自定义 Header、认证覆盖、远程 URL 和文件系统策略等高级配置仍保留在 cordis.patch.yml 中;通过设置编辑方案时,这些未展示字段不会丢失。
- id: vision-bridge
config:
enabled: true
visualAnalysis: default
focusAreas: []
preference: ''
providers:
- id: my-vision
protocol: openai-chat-completions
baseUrl: https://api.example.com/v1
model: your-vision-model
credential: VISION_PROVIDER_API_KEY
maxOutputTokens: 2048
chatMaxTokensField: max_completion_tokens
defaultProvider: my-vision
请把 VISION_PROVIDER_API_KEY 保存到 DSH 使用的 Credential 来源中,配置文件只保留引用名称。
若要在 headless profile 中使用,把安装和检查命令中的 web 替换成目标 profile。vision_analyze 工具和内置 vision-bridge Skill 仍然可用,只是不显示 Web 设置卡片。
认证错误、请求参数错误、协议错误和用户取消不会重试。极少数情况下,上游已经接收请求后连接才中断,恢复重试可能产生重复用量或计费。
VISION_NOT_CONFIGURED:**至少新增一个方案并选择有效默认方案。检查当前 profile:
dsh --profile web --dump-config
dsh plugin --profile web remove dsh-open-eyes
随后重启 DSH Web 并刷新页面。如果曾经手动添加过 vision-bridge 或 vision-bridge-skill row,只删除这些 row,并保留所有无关 profile 配置。
corepack enable
pnpm install --frozen-lockfile
pnpm run typecheck
pnpm run lint
pnpm run test
pnpm run build
npm pack --dry-run
pnpm run test:e2e
测试不需要付费视觉 API。打包 E2E 会在临时 DSH profile 中安装、启动并移除真实 tarball。
项目使用 MIT License。安全问题请按照安全策略私下报告。