good-boy4069/dsh-vision-guard ↗★ 0
dsh-vision-guard
Transparent image guard + vision analysis for DeepSeek Harness: text-only models read pasted images without the 400 session deadlock.
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:good-boy4069/dsh-vision-guard说明文档
阅读完整 README ↗dsh-vision-guard
让纯文本模型"看图",且图片永远不会卡死你的会话。 Transparent image guard + vision analysis tool for DeepSeek Harness (dsh).
DeepSeek Harness 的主流模型(deepseek-v4-pro 等)是纯文本模型。两个麻烦:
- 纯文本模型看不了图——用户贴一张截图,模型只能当没看见;
- 更糟的是 400 卡死:某些网关(如 opencode-go)的主路由只接受 text,图片块一旦写进会话日志,之后每一轮都会把历史连同图片重发给上游 →
400 unknown variant \image_url`` → 整个会话永久卡死。
本插件用两道闸门根治这两个问题,并把"看图"变成纯文本模型可用文字消费的能力。
它做什么
用户贴图 → [闸门1] agent/pre-step 门口改写:图片在【写入会话日志之前】就被视觉模型转成文字
→ 日志永远只有文字,图片块根本不存在
→ [闸门2] llm/stream 兜底:历史重放时若发现图片块(例如装插件前就已中毒的会话),
在请求层改写为 OCR 文本后再发给模型
- 视觉模型做眼睛,主模型做大脑:deepseek-v4-pro 照常推理,图片内容以文字形式出现在上下文里。
- 修复已中毒的会话:装插件之前就被 400 卡死的会话,装上之后发一句话即可恢复正常(历史图片在请求层被改写)。
vision_analyze工具(模型主动调用,引擎由模型按任务选择):读取工作区文件——图片 OCR、PDF 文本+内嵌图、docx/pptx 文本+内嵌图、视频抽帧 OCR(≤12 帧)、纯文本直接读;xlsx/doc 响亮拒绝。- 原生看图不受影响:支持图片输入的模型(如 minimax-m3、kimi-k3)配置白名单后原图直通,插件不插手。
安装
# 已发布 npm 后:
dsh plugin --profile web add dsh-vision-guard
# 或直接从 GitHub 安装:
dsh plugin --profile web add github:good-boy4069/dsh-vision-guard
若 pnpm 报
ERR_PNPM_ADDING_TO_ROOT(旧版 launcher),加工作区根标志:dsh plugin --profile web add -w dsh-vision-guard。
重启 dsh web。或在你的 profile cordis.patch.yml 手动加两行(见仓库根 cordis.patch.yml)。
配置
全部可选,默认值见括号。视觉路由(必须指向一个支持图片输入的模型):
| 字段 | 默认 | 说明 |
|---|---|---|
visionProvider / visionModel | opencode-go / minimax-m3 | 视觉模型路由。改成你订阅里支持图片输入的模型 |
ocrTimeoutMs | 45000 | 单张图识别超时 |
budgetPerDay | 200 | 每日识别次数上限(防失控花销),状态存 $DSH_HOME 下 |
cacheMaxEntries | 500 | 识别结果缓存条数上限(LRU 淘汰) |