前言¶
DeepSeek Harness(以下简称 dsh)是 DeepSeek 开源的智能体运行时,官方口号是「一切皆插件」:模型适配器、工具、会话、沙箱和界面都挂在 Cordis 内核上,可以按配置替换,而不必改 Harness 源码。截至本文撰写时(2026-08-17),它仍处于 Developer Preview,当前常见版本是 0.1.0-rc.6。
这个架构很灵活,也把一个具体缺口暴露出来:默认走官方 DeepSeek 适配器时,主模型往往是纯文本。截图、报错界面、两张前后对比图贴进输入框后,文本模型看不到像素,只能对着附件名猜测。社区因此出现了一批视觉插件,路线并不相同——有的做成识图工具箱,有的做成像素级 tool call。本文只介绍其中一条更「接近原生」的路径:由 oil-oil 维护的 dsh-vision。
社区插件目录 deepseek-harness-plugin.com 把它归在「工具与能力」,2026-08-15 收录。需要先说明:这个目录是独立站点,和 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。同名或近名的仓库还有 dsh-vision-recognizer、dsh-vision-toolkit、dsh-vision-router 等,能力边界不一样,安装时认准 github:oil-oil/dsh-vision。
插件是什么¶
dsh-vision 是一个 DeepSeek Harness 插件,npm 包名为 @oil-oil/dsh-vision,当前版本 0.1.0,主要语言 TypeScript,许可证 MIT,要求 Node.js >= 22.19。README 写明本版本固定兼容 Harness 0.1.0-rc.6;package.json 的 peerDependencies 也钉在同一组 0.1.0-rc.6 包上。GitHub 仓库在 2026-08-17 显示 55 star。插件声明的客户端平台是 web。
它解决的问题很具体:让已经选好的主模型继续当「大脑」,同时让图片以尽量接近原生多模态的方式进入对话。
- 当前主模型本身支持图片时,原图直接发给该模型,不压缩、不预先 OCR。
- 当前主模型是
deepseek-official这类纯文本模型时,另选一个视觉模型观察原图,把观察结果作为非可信附件上下文注入,最终仍由原来的 DeepSeek 模型作答。 - 云端视觉都不可用时,再降级到 macOS Vision 或 Tesseract,仍然由 DeepSeek 作答。
插件不会改掉右下角选中的主模型。它会替换官方 deepseek-official 适配器,但继续使用原有模型列表、DeepSeek 设置和凭据。仓库里的 cordis.patch.yml 做的就是这件事:先禁用 llm-deepseek,再插入 dsh-vision:
- id: llm-deepseek
disabled: true
- insert:
- id: dsh-vision
name: "@oil-oil/dsh-vision"
云端路由、多图联合分析和本地降级,README 写明参考了同一作者的 MIT 项目 oil-oil/see-skill。
工作原理¶
README 用一张表把三条路径写清楚了:
| 当前主模型 | 图片处理方式 | 最终回答者 |
|---|---|---|
| 支持图片 | 原图直接发送,不压缩、不预先 OCR | 当前模型 |
deepseek-official 等文本模型 |
外部视觉模型读取原图,观察结果作为非可信附件上下文注入 | DeepSeek |
| 云端视觉不可用 | macOS Vision 或 Tesseract 本地降级 | DeepSeek |
有几点需要单独看,避免和「先 OCR 再提问」的插件混在一起。
- 原图优先。 主模型能看图时,桥接路由根本不会启用。自定义模型必须在 Harness 里声明
image输入模态,否则仍会被当成文本模型。 - 多图同一次请求。 多张聊天附件会一起交给视觉模型,适合前后对比和组合证据,而不是每张图单独出一份报告。
- 问题原样转发。 用户任务不会被包进固定报告模板,视觉模型看到的是原来的问题。
- 观察结果不可信。 视觉输出只作为当前请求的上下文,不改写历史消息;图片里的提示词不会获得系统权限。
安装插件¶
社区目录页给出的安装命令是:
dsh plugin add github:oil-oil/dsh-vision
维护者 README 写的是带 web profile 的写法,和官方文档里 dsh plugin --profile <name> add github:owner/repo 的形式一致:
npx @deepseek-ai/dsh plugin --profile web add github:oil-oil/dsh-vision
目录页同时提示:如需可复现安装,应固定 commit 哈希:
dsh plugin add github:oil-oil/dsh-vision#<commit>
安装完成后需要重启 Harness。之后可以像平时一样在输入框粘贴或拖入图片。设置里会出现新卡片:设置 → 插件 → 插件配置 → 视觉识别。
仓库同时包含 src/ 和编译后的 lib/。package.json 的 files 字段会发布 cordis.patch.yml 和 lib,git 安装时加载的是已构建产物。即便如此,插件仍以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和 MIT 许可证;不要把社区目录上的一键命令当成已经过官方审计的保证。
配置视觉识别¶
打开「设置 → 插件 → 插件配置 → 视觉识别」,可以选择 ZenMux、阿里云百炼、TokenDance 或 OpenRouter,然后填写对应的 API Key。同一张卡片还可以改模型 ID、API 地址和单次图片上限。
API Key 走的是 Harness 官方凭据服务。README 说明它在浏览器里是单向写入:界面只能知道 Key 是否存在,不会把 Key 读回页面、聊天、普通设置或会话日志。不要把 Key 写进下面的 YAML。
大多数情况用界面即可。等价的非敏感字段在 $DSH_HOME/settings.yaml 现有的 llm-deepseek 段落里,README 给出的示例是:
llm-deepseek:
visionBackend: zenmux
visionBackendModel: qwen/qwen3.7-plus
visionBackendBaseURL: https://zenmux.ai/api/v1
maxImages: 8
改这些字段后无需重启。路由规则如下:
- 「视觉识别」里选定的平台,是文本模型的主视觉路由。
- Harness 里其他已启用的视觉模型、已有 see 配置、本地 OCR,只在主路由失败后尝试。
- 当前主模型本身支持图片时,原图始终直接进入当前模型,不经过这些桥接。
- 选择「自动选择」时,不必在插件里保存云端 Key。插件会依次尝试 Harness 中已配置且声明支持图片的模型、see 私有配置,最后才是本地 OCR。
兼容 see-skill 与本地降级¶
如果 Harness 里没有可用的视觉模型,插件还会读 ~/.config/see/config.env,兼容 ZenMux、百炼、OpenRouter 和 TokenDance。环境变量优先于该文件:
export SEE_PROVIDER=zenmux
export ZENMUX_API_KEY=你的Key
SEE_PROVIDER 指定主平台;其他已填写 Key 的平台只作失败后的备用。没有指定时,只配置了哪个平台就用哪个平台。
没有云端 Key,或所有云端路由都失败时,才会尝试本地能力:
- macOS:系统自带 Vision OCR,无需额外安装。
- Linux / Windows:Tesseract,需要自行安装对应语言包。
本地降级以文字识别为主,不等同于多模态模型的完整语义理解。截图里的布局、图标含义、前后视觉差异,不能指望这一层补上。
日常怎么用¶
配置完成后,使用方式和普通多模态对话接近。
- 确认 Harness 已重启,当前 profile 是 web(插件的
dsh.client.platform为web)。 - 右下角仍选择原来的 DeepSeek 模型,不必换成另一个「识图专用」入口。
- 在输入框粘贴或拖入一张或多张图片,直接写任务,例如对比两张 UI 截图、读报错弹窗、看表格截图里的数字。
- 若主模型能看图,原图会原样进入该模型;若不能,插件先让配置好的视觉模型观察原图,再把观察结果交给 DeepSeek。
没有单独的 CLI 子命令,也不需要把图片先转成文字再粘贴。这就是 README 说的「接近原生」:输入习惯不变,主模型身份不变,变的是文本模型背后多了一座视觉桥。
适用场景和注意点¶
比较适合下面这类用法:日常已经把 DeepSeek 当作 Harness 里的主模型,偶尔需要看截图、报错、表格或前后对比,又不想换一套识图专用对话。多图一起问、问题保持原样,也更接近「把图贴进能看图的模型」而不是「先生成一份固定格式的看图报告」。
使用前有几条边界需要当成事实,而不是可选项。
- 版本钉得很死。 当前发布面向
0.1.0-rc.6。Harness 还在 Developer Preview,核心插件和 API 会继续变,升级前应对一下 peerDependencies。 - 它替换的是官方适配器。
cordis.patch.yml会禁用llm-deepseek。如果同一个 profile 里还装了其他也替换 DeepSeek 适配器的插件,加载顺序和冲突需要自己核对,README 没有保证可以叠放。 - 图片会离开本机。 原图只发送给用户配置的视觉服务,但只要走了云端路由,像素就会到达对应供应商。敏感截图应使用自己控制的端点,或接受本地 OCR 的能力上限。
- 本地 OCR 不是多模态。 macOS Vision / Tesseract 只能在云端都失败时顶一阵,不能当作完整看图。
- 安全模型是「观察不可信」。 视觉结果只参与当前请求;图片中的指令没有系统权限。这能降低间接提示注入的风险,但不能替代你对供应商和源码的审查。
- 权限与许可证。 插件以当前 dsh 进程权限运行,安装时可能执行代码。安装前阅读 oil-oil/dsh-vision 源码和 MIT 许可证;需要可复现环境时固定 commit。
- 目录不是官方商店。 dsh-vision 目录页 便于检索分类和安装命令,权威信息以仓库 README、
package.json和许可证为准。
小结¶
dsh-vision 把「DeepSeek 继续回答、图片按能力走原生或桥接」做成了一个可安装的 web 插件。主模型能看图就走原图;不能看图就调用 ZenMux / 百炼 / TokenDance / OpenRouter(或 see-skill / 本地 OCR)做观察,再把非可信上下文交给原来的 DeepSeek。安装和配置都挂在 Harness 现有的插件与凭据机制上,不另起一套对话入口。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-vision/
GitHub:https://github.com/oil-oil/dsh-vision