dsh-pseudo-vision

August 30, 2026 · View on GitHub

简体中文 | English

dsh-pseudo-vision

给 DeepSeek Harness 的 text-only provider 补一层"工具层视觉"。图片附件在 LLM dispatch 路径上被拆解成 OCR 文字 + 颜色统计 + 像素扫描 + 元信息,纯文本模型拿到这些文字,就能"看"懂一张图。所有处理都在本机完成,无外部视觉 API

它在做什么

  • 插件接管 deepseek-official 路由,这条路由原本就能看图。其他 text-only provider 按 bridgeProviders 白名单生成兄弟路由 dsh-pseudo-vision/<provider>(模型选择器中显示 · Pseudo Vision),也可以用 bridgeOtherProviders 一并覆盖。
  • 兄弟路由强制声明 inputModalities: ["text", "image"],请求才能通过 DSH 的图片 admission 门。
  • LLM dispatch 时分两种情况。原生视觉模型直接透传。text-only 模型则读附件,用本地四个工具把图片转成文字,替换掉 image block,注入 <pseudo-vision-context>,再委派回原 provider。

提供的工具

工具作用实现
vision_ocr提取图中所有文字(带归一化坐标)tesseract.js(chi_sim + eng),管线见下
vision_color_stats9 桶像素占比 + 平均亮度sharp + 直方图
vision_pixel_scan行 + 列多色桶扫描,输出 focusY/focusXsharp raw pixel
vision_meta尺寸、格式、色彩空间、四角/中心采样sharp metadata

OCR 管线(v5)

  1. 预处理先按预算缩放图片(small/normal/large/mega,28 网格吸附),随后检测深色模式(浅色不反色),转灰度,做对比度拉伸。接着检测椒盐噪声,有噪才走 3×3 中值降噪,干净图跳过这一步,避免磨掉 1px 细笔画。最后轻锐化(σ0.3)加白边。
  2. 主识别由 tesseract 整页完成,输出全部文字行和置信度,非文本块(image/separator)会被过滤。
  3. 低置信度重试最多做 8 个区域,文字行优先排队,图标噪声行不占名额。重读时裁剪区域,3× Lanczos 放大,用单文本块模式(PSM 6)。置信度更高的重读结果替换主行,证据块仍留痕。
  4. CJK 后处理合并字间空格(通 知通知),剥离行首图标符号。
  5. 数字复核针对 IP/URL/端口/长数字,用 ASCII 白名单加单行模式重新识别。标点保持首遍骨架,只有同长度且置信提升 ≥5 的结果才被接受,[数字复核 N 处] 留痕。

一次实机验证里,设置页截图的 OCR 从"只出顶部 3 行、菜单文字全丢"修复为 11 行全检出,"通用设置/模型/通知"完全干净。关键修复在 tesseract.js 的 PSM 参数必须传数字,字符串 "3" 会破坏整页检测。

安装

推荐直接从 GitHub 安装,需要网络。Windows 上遇到 schannel/pnpm 拦截时,改用本地路径安装。

# GitHub 安装(需网络,推荐)
dsh plugin --profile web add github:DDDFXYqiming/dsh-pseudo-vision

# Windows schannel/pnpm 拦截时改用本地路径
git clone https://github.com/DDDFXYqiming/dsh-pseudo-vision.git
cd dsh-pseudo-vision && pnpm install && pnpm build
dsh plugin --profile web add <本机绝对路>

使用

装上即生效,无需额外配置。deepseek-official 路由自动支持图片。其他 provider 默认没有兄弟路由,要在配置里显式加白名单。

- id: dsh-pseudo-vision
  config:
    bridgeProviders: ["kimi-for-coding"]   # 只给这个 provider 生成兄弟路由
    ocrBudget: auto                        # 也可 small | normal | large | mega
    ocrNoResize: false                     # true:跳过预算缩放/放大

也可以把 bridgeOtherProviders 设为 true,一次性桥接除 excludeProviders 外的所有 provider。代价是每个模型会在选择器里多出一份条目,开之前先想清楚。

    bridgeOtherProviders: true

配好以后,模型选择器里会出现 dsh-pseudo-vision/<provider> 兄弟路由。text-only 模型走本地伪视觉转换,原生视觉模型保持原生透传。