前言¶
DeepSeek 官方模型在元数据中声明 inputModalities: ['text'],这导致 harness 的图片门禁(发送预检、切换模型检查、read_image 工具)全部拒绝图片消息,报错 MODEL_DOES_NOT_SUPPORT_IMAGES。虽然图片真正进入 agent 循环后可由其他插件转录,但准入阶段的拦截阻断了流程。
这是什么¶
本插件是 DeepSeek Harness (DSH) 的一个补丁插件,由 Seryta 维护。它接管 DeepSeek 官方的 provider 路由,通过修改模型元数据来解锁图片准入。其核心逻辑是照抄官方 apply 逻辑,仅将 resolveModel 返回值中的 inputModalities 从 ['text'] 补充为 ['text', 'image']。它直接引用 DSH 安装树里已构建的官方产物,无需本地 pnpm 构建或修改 listModels。
核心功能¶
- 接管官方路由:禁用官方
@deepseek-ai/dsh-llm-deepseek行,由本插件接管同一deepseek-official路由,对用户透明,无需切换模型选择器。 - 补全模态声明:在
resolveModel返回值中补全image输入模态声明。 - 通过准入预检:让图片消息能够通过 apiproxy 的准入预检。
- 零 API 传输:DeepSeek API 永远不会收到图片,所有图片处理在本地 harness 循环内完成。
安装与启用¶
执行以下命令安装:
dsh plugin --profile web add github:Seryta/llm-deepseek-image-admit
安装后需要重启 dsh web 才能生效。插件默认安装在 ~/.npm-global/lib/node_modules/@deepseek-ai/dsh。如果 DSH 安装在其他位置,需设置环境变量 DSH_NPM_ROOT(指向 DSH 安装根目录,其下应包含 node_modules/@deepseek-ai/...)。
典型用法¶
安装并重启后,图片消息的准入检查会被自动放行。图片最终的处理(转录为文字)需要在 agent/pre-step 阶段配合 image-bridge 等插件完成。用户无需做任何配置变更,原有的模型选择逻辑保持不变。
适用场景与注意¶
适用场景:需要在 DSH 中使用 DeepSeek 官方模型处理多模态输入,且希望保持模型选择器透明。
注意:
1. 仅放行不转录:本插件只负责让图片通过准入预检,并不负责转录图片内容。如果不搭配 image-bridge 等插件在 pre-step 阶段将图片转为文字,图片会带着原始数据块到达 DeepSeek 适配器,从而被 API 拒绝。
2. 依赖官方产物布局:插件依赖官方包的产物路径布局(如 node_modules/@deepseek-ai/dsh-llm-deepseek)。若 DSH 改变安装布局,需通过 DSH_NPM_ROOT 环境变量适配。
结尾¶
该方案通过修改元数据解锁了 DeepSeek 官方模型对图片的准入能力,无需引入新的模型变体或改变用户操作习惯。更多实现细节与漂移检测脚本可参考源码。