dsh-plugin-verified-search
f0909172434
Verified current-source search workflow for DeepSeek Harness
PROJECT TOPICS
PROJECT README
给纯文本的 DeepSeek「装上眼睛」—— 粘贴图片,自动识别成文字,再交给模型理解。
dsh-vision-bridge 是一个 DeepSeek Harness(dsh)插件。它让本身不支持图片输入的纯文本模型(如 deepseek-v4-flash)也能「看懂」你粘贴的图片:图片在进入模型之前被自动交给一个 OpenAI 兼容的视觉模型(默认智谱免费档 glm-4.6v-flash)识别成文字,替换掉消息里的图片块,于是模型看到的全是文字。
agent/pre-step,非侵入、不改任何 dsh 编译产物。cordis.patch.yml 挂载,与 dsh-vision 等插件并列。# 取代码(放到任意独立目录,例如 D:\project)
git clone https://github.com/Xieweikang123/dsh-vision-bridge D:\project\dsh-vision-bridge
dsh 服务端会在图片进入 agent 之前,检查当前模型的 inputModalities,不包含 image 就直接拒绝(返回 MODEL_DOES_NOT_SUPPORT_IMAGES)。所以需要先在 ~/.dsh/settings.yaml 里把模型的输入能力声明为含图片:
llm-pi-ai:
providers:
opencode-go:
apiKeyEnv: OPENCODE_GO_API_KEY
modelOverrides:
deepseek-v4-flash:
input:
- text
- image
这只会让 dsh「放行」图片进入 agent 请求;真正把图片变成文字的是本插件。若网关本身仍拒绝图片(比如 opencode-go 返回
unknown variant image_url),插件会在模型看到图像前完成识别替换,模型请求里已不含图片块。
在 ~/.dsh/cordis.patch.yml 里 insert 插件(Windows 下 name 必须用 file:// URL):
- insert:
- id: dsh-vision-bridge
name: 'file:///D:/project/dsh-vision-bridge/lib/index.js'
默认走智谱免费档 glm-4.6v-flash,只需一个 key:
~/.dsh/.env:VISION_API_KEY=<你的key>key 读取顺序:config.apiKey → $VISION_API_KEY → $DSH_VISION_API_KEY → $ZHIPUAI_API_KEY → $DASHSCOPE_API_KEY。本地 Ollama 端点可免 key。
重启 dsh 后生效:粘贴一张图,发送,模型就能看懂它。
插件支持以下 config 项(在 cordis.patch.yml 的对应条目加 config: 即可):
- insert:
- id: dsh-vision-bridge
name: 'file:///D:/project/dsh-vision-bridge/lib/index.js'
config:
baseURL: https://open.bigmodel.cn/api/paas/v4 # OpenAI 兼容端点
apiKey: "" # 留空则读环境变量
model: glm-4.6v-flash # 视觉模型
fallbackModels: [] # 自定义降级链;空则默认智谱免费链
prompt: "" # 自定义识别提示词
maxTokens: 2048
timeoutMs: 60000
| 场景 | baseURL | model |
|---|---|---|
| 默认(智谱免费) | https://open.bigmodel.cn/api/paas/v4 |
glm-4.6v-flash |
| 智谱付费 | 同上 | glm-4.6v |
| 阿里百炼 | https://dashscope.aliyuncs.com/compatible-mode/v1 |
qwen3-vl-flash |
| 火山豆包 | https://ark.cn-beijing.volces.com/api/v3 |
doubao-seed-2-1-turbo-260628 |
| 本地 Ollama | http://localhost:11434/v1 |
qwen3-vl:4b(无需 key) |
saveImage),消息里以 { type: 'image', attachment } 块出现。agent/pre-step(dsh 官方扩展点,位于消息进入模型之前)。image 块 → attachments.readImage(ref) 拿到字节 → base64 data: URL。/chat/completions 识别,返回文字描述。{ kind: 'enter', messages }。设计上借鉴了 opencode-image-vision 与 dsh-vision 的思路,但映射到 dsh 的原生扩展点、无额外运行时依赖:
glm-4.6v-flash、降级链(glm-4.1v-thinking-flash → glm-4v-flash)、API key 解析顺序,均沿用 dsh-vision(MIT)。同图按 attachmentId 缓存,不重复识别。
glm-4.6v / qwen3.7-plus 等可获得更好效果。cordis.patch.yml 配置变化)。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。