dsh-plugin-verified-search
f0909172434
Verified current-source search workflow for DeepSeek Harness
PROJECT TOPICS
PROJECT README
DeepSeek Harness(DSH)的纯文本模型路由看不见图片。本插件把聊天里收到的每一张图片通过 CDP 桥接发送到桌面豆包 App,让豆包代做识别并返回文字,模型据此正常回答用户。
它作为宿主级插件挂在 $DSH_HOME/cordis.patch.yml 用户补丁层,对所有预设、所有会话生效,可以随时热开关 —— 不需要切换模式,不绑定某个会话。
attachments/collected/(日期_哈希.ext),按内容去重ctx.get() 加 try/catch,DSH 升级后最坏情况是静默禁用,绝不会卡死启动DSH 的模型路由是纯文本的:模型看不到图片,聊天里发图要么被拒,要么模型对着图片附件干瞪眼。常见做法是把图片块换成文字说明,但那样界面里你的消息就变成了长长一段指令,图片也不显示了。
本插件的做法是:
What you need: Windows、已安装桌面豆包 App、DeepSeek Harness(DSH)。豆包不需要手动开,插件会自动拉起。
Step 1 — 打开终端
Win + R,输入 powershell,回车Step 2 — 复制两个文件到插件目录
插件只有两个文件:doubao-vision.mjs(实现)和 doubao-vision-entry.mjs(稳定入口)。
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.dsh\plugins" | Out-Null
Copy-Item .\doubao-vision.mjs "$env:USERPROFILE\.dsh\plugins\doubao-vision.mjs" -Force
Copy-Item .\doubao-vision-entry.mjs "$env:USERPROFILE\.dsh\plugins\doubao-vision-entry.mjs" -Force
Step 3 — 在 $env:USERPROFILE\.dsh\cordis.patch.yml 里挂一行
如果文件不存在就新建,内容如下;存在则在文件末尾追加 insert: 块:
- insert:
- id: doubao-vision
name: "file:///C:/Users/你的用户名/.dsh/plugins/doubao-vision-entry.mjs?v=21"
把路径里的 C:/Users/你的用户名 换成你的实际用户目录($env:USERPROFILE 的值)。
Step 4 — 完成。 保存补丁文件即热加载,无需重启。验证方法:任意对话的工具列表里出现 doubao_vision、doubao_recognize_attachment、doubao_cdp 三个工具;或看 $env:USERPROFILE\.dsh\plugins\doubao-vision.log 里出现 apply: doubao-vision loaded。然后直接在聊天里发一张图试试。
更新插件:替换
doubao-vision.mjs,并把 shim 与补丁行里的?v=N同时 +1(缓存击穿),保存补丁文件即可。
目录里只有两个文件,职责分明:
| 文件 | 职责 |
|---|---|
doubao-vision.mjs |
插件实现:消息钩子、CDP 桥接、三个工具、图片归档 |
doubao-vision-entry.mjs |
稳定入口 shim:加载失败时降级为空插件,绝不拖垮启动 |
依赖条件:
CdpClient 依赖内置 WebSocket)%LOCALAPPDATA%\Doubao\Application\app\Doubao.exe,可配置)--remote-debugging-port=9225 运行(插件检测不到时会自动先杀后起,历史对话保留)| 配置项 | 位置 | 说明 |
|---|---|---|
| 开关插件 | cordis.patch.yml 该行下加 disabled: true |
保存即生效,再删掉即恢复 |
| 豆包路径 | 插件行 config.doubaoExe |
默认 %LOCALAPPDATA%\Doubao\Application\app\Doubao.exe |
| 调试端口 | CDP_PORT 常量 |
固定 9225 |
| 缓存目录 | $env:USERPROFILE\.dsh\attachments\collected |
可读文件名副本,按内容哈希去重 |
| 版本后缀 | shim 与补丁行里的 ?v=N |
改 doubao-vision.mjs 后两处同时 +1 |
doubao_vision 传入文件路径识别截图、照片| 工具 | 用途 |
|---|---|
doubao_vision |
识别本地图片文件(传路径),豆包未运行时自动拉起 |
doubao_recognize_attachment |
识别聊天里的图片附件;省略 attachment_id 时识别本会话最近一张图 |
doubao_cdp |
管理豆包调试连接:status / restart / new-chat / ask |
用户发图
└─ agent/pre-step:保留图片块(界面正常显示图),缓存附件引用,后台预热豆包
└─ agent/inbox/claimed + system-prompt/assemble:附件 ID 注入系统提示词(模型的私有通道)
└─ adapter.stream:剥离图片块(纯文本模型收到的消息里没有图,不会报错)
└─ 模型调用 doubao_recognize_attachment(可被停止按钮取消)
├─ CDP(9225)驱动桌面豆包:上传图片 → 注入问题 → 点击发送
├─ 轮询豆包回复(所有等待都尊重取消信号,硬超时兜底)
└─ 返回识别文字
└─ 图片自动归档到 attachments/collected(日期_哈希.ext,按内容去重)
图片存储有两处:原始缓存 attachments/v1/objects/(内容寻址,识别依赖它,不要删)和可读副本 attachments/collected/(方便浏览,可随意删)。
doubao-vision.log。插件全部能力走 ctx.get() 加 try/catch,最坏情况是静默禁用,不会阻塞启动;多为内部 API 变动,欢迎提 Issue。dsh-plugin · deepseek-harness · doubao · deepseek · vision · ocr · cordis · image-recognition
见 CONTRIBUTING.md。核心约束:改 doubao-vision.mjs 后必须同步把 shim 与补丁行里的 ?v=N 加一,否则改完不生效。
| 角色 | GitHub | 贡献 |
|---|---|---|
| 作者 / 维护者 | hawkongz | 全部功能设计与实现 |
PR 被合并后,请把你的名字加进这张表。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。