dsh-plugin-verified-search
f0909172434
Verified current-source search workflow for DeepSeek Harness
PROJECT TOPICS
PROJECT README
给 DeepSeek Harness 的纯文本 DeepSeek 一双眼睛——默认走豆包 Web,零成本、免 API key。
一句话:不用 API key、不用付费——浏览器里登录一次豆包,DeepSeek 就能在每轮对话里看图。粘贴、识图、回答。
| 痛点 | dsh-vision 的解法 |
|---|---|
| 视觉 API 花钱还要 key | 豆包 Web 默认通道——零成本、免 API key,浏览器登录即可 |
| DeepSeek 纯文本,粘贴图片被拒 | 包装适配器声明图片输入,图片自动转文本占位 |
| 别的插件锁死一家厂商 | 豆包 Web(默认)+ 反重力额度(flash/pro)+ Gemini API + Cockpit 反代——自动降级链 |
| 模型看到图但"忘了" | 视觉证据记忆:结果持久化在会话,跨轮复用,压缩后恢复 |
| 同一张图反复花钱识别 | 内容哈希缓存:同图同问每进程最多识别一次 |
| 复杂画面识别不准 | 档位自动升级:先标准检查,复杂画面自动深度检查 |
| WSL / 被墙环境 | API 通道有 winCurl 降级;豆包通道走你的 Windows 浏览器 |
输入:一张橘猫照片 + 这是什么动物?它在做什么?请用中文回答。
输出(豆包 Web 通道——默认):
这是一只橘猫(家猫),它四仰八叉仰躺在床上睡觉,肚皮露在外面,四肢舒展,睡得十分放松惬意。猫咪把肚子露出来,说明它对周围环境很有安全感。
输出(反重力通道 · flash 档):
这是一只橘猫(橘色虎斑家猫)。它正仰面熟睡/惬意放松:四脚朝天、露出圆滚滚毛茸茸的肚子,正舒适地躺在深色床垫/毯子上睡觉。
你粘贴图片 + 提问
→ dsh-vision 把图片转成占位符,DeepSeek(大脑)看到
→ DeepSeek 调用 vision 工具 → 豆包 Web(默认)/ 其他通道识图
→ 文字证据回填 → DeepSeek 继续回答
dsh plugin --profile web add dsh-vision-web
# 在 Windows 侧:连接一个开了调试端口的 Chrome,然后运行
node bridge.mjs # 详见下方「豆包桥接」章节
dsh web,粘贴图片——搞定。全程不需要任何 API key。配置好工作区后,插件自动优先走反重力(按模型名选 flash/pro 档):
- insert:
- id: vision
name: dsh-vision
config:
antigravityWorkspace: /path/to/workspace
antigravityProjectId: your-project-id
antigravityLsExe: /path/to/language_server.exe
antigravityWindowsHome: /mnt/c/Users/you
antigravityBrainDir: /mnt/c/Users/you/.gemini/antigravity/brain
端口/CSRF 每次调用自动发现,IDE 重启也不用改配置。
config:
genlangKey: AIza... # https://aistudio.google.com/apikey
如果你有编程软件的会员,用它的本地 CLI 来识图(配置驱动,无需改代码):
config:
ideCli:
enabled: true
exe: claude # 或 gemini / qwen / 任意 CLI
argsTemplate: "-p {prompt}" # {prompt} 替换为提问 + 图片引用
imageRefTemplate: "{path}" # Gemini CLI 用 "@{path}"
timeoutMs: 120000
通道把提问 + 图片文件路径传给 CLI,stdout 即回复——Claude Code、Gemini CLI、Qwen Code、MiMo 等都用同一套配置接入。
deepseek-vision 路由,粘贴图片发送——模型自动调用识图。豆包 Web 通道自动化的是你已登录的浏览器,而不是调 API:
DSH 插件 (WSL) ──submit──▶ 队列服务 (127.0.0.1:9340)
▲ 轮询
Windows 桥接 (node + puppeteer-core) ──┘
│ CDP 连接 Chrome(调试端口)
▼
豆包侧边栏:上传图片 → 输入提问 → 回车 → 等回复
│
▼ 回复文本 → POST /result → DSH 插件
bridge.mjs 随仓库分发——在 DSH 旁边跑一次(node bridge.mjs),永久轮询。天真的"看图→描述"循环在密集截图、表格、UI 原型和多图对比面前会崩。dsh-vision 把识图做成了结构化、自动升级、带记忆的流水线:
detail: auto 走两遍策略:
第一遍(standard + 预判)──▶ complexity == "simple" ──▶ 完成
└─▶ complexity == "complex" ──▶ 第二遍(deep)──▶ escalated 结果
视觉模型自己判断复杂度。以下情况都判为 complex 并自动触发深度检查:
| 模式 | 干什么 | 典型场景 |
|---|---|---|
glance |
通用理解,围绕你的问题选证据 | 日常提问 |
ocr |
按自然阅读顺序转录文字,保留标题/段落/表格/界面层级 | 截图、文档、报错 |
region |
聚焦一个区域——归一化坐标 0.1,0.2,0.8,0.9 或自然语言("右上角") |
UI bug、图表细节 |
compare |
逐项列出 ≥2 张图的异同与置信度 | 前后对比、版本对比、A/B |
每次识图都要求输出严格 JSON 证据对象:
{
"complexity": "simple|complex",
"base_evidence": {
"summary": "中性概述",
"ocr": "可见文字(没有则为空)",
"layout": ["布局观察"],
"entities": ["实体"],
"relations": ["关系"],
"uncertainty": ["明确的不确定项"]
},
"query_answer": "直接回答用户"
}
观察与推断分离、不确定性显式写出(绝不脑补)、每项列表限长——上下文保持紧凑。
<dsh-vision-evidence> 记录写入会话时间线。缓存键 = SHA-256(图片字节) + prompt + detail + mode + region + model + channel + prompt版本,进程内 LRU。
| Key | 默认 | 说明 |
|---|---|---|
defaultChannel |
auto |
auto(配置了反重力则优先反重力,否则豆包 Web)/ web / antigravity / genlang / cockpit / aicode |
defaultModel |
gemini-3.7-flash |
面板默认模型(名字含 pro → 反重力 pro 档) |
webChannel.enabled |
true |
豆包 Web 通道开关 |
webChannel.queuePort |
9340 |
WSL 队列端口 |
webChannel.timeoutMs |
240000 |
网页回复等待超时 |
antigravityWorkspace |
"" |
反重力工作区(WSL 路径) |
antigravityProjectId |
"" |
反重力项目 id |
antigravityLsExe |
"" |
language_server.exe 路径 |
antigravityWindowsHome |
"" |
Windows 主目录(项目文件用) |
antigravityBrainDir |
"" |
Brain transcript 目录 |
genlangKey |
"" |
Gemini API key(AIza… / AQ.) |
cockpitBaseUrl / cockpitKey |
http://127.0.0.1:65386 / "" |
Cockpit 反代 |
oauthAccount / oauthClientId / oauthClientSecret |
"" |
aicode 直连(自带凭据,不内置) |
visionUpstreams |
["deepseek"] |
对话流包装的上游 LLM |
cacheMax |
64 |
内存 LRU 缓存条数 |
allowedImageDirs |
[] |
非空时仅允许 image_path 读取这些目录 |
curlPath |
/mnt/c/Windows/System32/curl.exe |
WSL 降级用 Windows curl |
| 症状 | 原因 & 解决 |
|---|---|
| Web 通道超时 | 桥接没跑(node bridge.mjs)或 Chrome 没登录豆包——两个都查 |
桥接报 fetch failed |
队列服务没起(DSH 插件启动它;确认插件已加载) |
| 反重力报「找不到 language_server.exe」 | Antigravity IDE 没运行——启动并登录 |
Gemini 503 high demand |
Gemini 过载;重试或换模型 |
| WSL 连不上 API | 配 curlPath(Windows curl)——API 通道自动降级用它 |
src/
├── index.ts # 服务端:适配器、vision 工具、/api/vision、compaction 恢复
├── vision-core.ts # 提示词构建、响应归一、证据记录、流修复
├── web-channels.ts # 豆包 Web 队列服务(WSL 侧)
└── client/
└── plugin.tsx # 客户端面板(多图/粘贴/模式/档位/通道)
bridge.mjs # Windows 桥接:轮询队列,CDP 驱动豆包
git clone https://github.com/54xkeee/dsh-vision
cd dsh-vision
npm install
npm run build # esbuild → lib/index.js + lib/client.js
npm test # node --test
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。