给纯文本模型装上眼睛:把用户图片转发给任意 OpenAI 兼容的视觉模型生成描述,并在 Web UI 右侧面板展示结果。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:jyh20030112/dsh-visual-plugin
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
DeepSeek Harness 插件。
特性
- 自动描述图片 —— 包装适配器递归处理上传图片及工具结果中的图片,只在发给模型的副本中生成
[视觉描述],聊天界面保留原内容。 - 对话内状态卡片 —— 自动解析开始后立即在原图片下方显示“正在解析”,成功或失败后原位更新;同一逻辑解析只显示一张卡片。
- 按问题定向描述 —— 发图同时带问题时,描述提示词由你的原话生成。
vision_describe工具 —— 模型可对任意已附图追问细节。- 右侧面板 —— 配置接口 / 模型 / Key、测试连接、查看最近描述(缩略图 + 2 秒自动刷新)、剩余额度。
- 密钥不落地 —— API Key 经 harness credentials 缝存储(只写不回显)。
工作原理
输入栏或工具结果产生图片 → 包装适配器递归发现 → 聊天记录保留原始图片
→ adapter stream → readImage → 视觉 API → 仅在模型私有请求中改写为 "[视觉描述] …"
→ 纯文本模型作答 → /vision-bridge/recent → 面板缩略图 + 描述(2s 轮询)
未配置或调用失败时降级为 [视觉描述失败] <原因> 占位文本,对话不会中断。
快速开始
dsh plugin --profile web add dsh-visual-plugin # 或:github:jyh20030112/dsh-visual-plugin
若使用本地 DeepSeek Harness 源码开发,请改为链接本地插件目录:
cd /absolute/path/to/dsh-visual-plugin
npm run bootstrap
dsh plugin --profile web add link:/absolute/path/to/dsh-visual-plugin
bootstrap 会自动查找同级或祖先目录旁的 Harness 检出。其他布局请显式指定:
HARNESS=/absolute/path/to/deepseek-harness npm run bootstrap
重启 dsh web 后:
- 从侧栏底部打开面板(视觉桥接 / Vision Bridge)。
- 配置接口地址、视觉模型名、API Key;点 保存配置 → 测试连接。
- 在模型选择器中选 DeepSeek (Vision) —— 插件的包装适配器声明支持图片输入,网关才会放行上传。
- 发送一张图片(可附带问题)。主模型基于生成的描述作答,面板约 2 秒内出现缩略图 + 描述。
参考本地模型
本项目目前使用本地部署的
Empero AI Qwythos-9B
作为视觉后端进行开发和验证。该模型可通过 SGLang 提供 OpenAI 兼容的
/v1 接口;在视觉桥接面板中填写接口地址和服务端注册的模型名称
(例如 Qwythos)即可。插件并不绑定 Qwythos-9B,也可以接入其他兼容的视觉模型。
卸载
dsh plugin --profile web remove dsh-visual-plugin
重启 dsh web。该命令会在 profile 内转发执行 pnpm remove,bundle 层列表会自动同步移除该插件。
项目结构
src/
index.ts host 插件:视觉编排 + vision_describe + HTTP 路由
vision.ts OpenAI 兼容视觉调用(describe / test / balance)
model-messages.ts 模型请求边界改写 + 按附件缓存
description-policy.ts 意图优先提示词 + 低信息重试
config.ts settings 命名空间 `vision-bridge` + schema
adapter.ts deepseek-vision 包装适配器(图片入站 + 私有改写边界)
client/ 浏览器半:面板 / 侧栏开关 / 自动解析与工具卡片 / 文案 / 样式
cordis.patch.yml bundle 补丁层
构建
npm run bootstrap && npm run typecheck && npm run build # 需要本地 harness 检出
预构建 lib/ 已提交,使用者无需构建。
CI/CD
ci.yml 在每次 push/PR 校验产物与打包内容;release.yml(tag v*)校验版本、打包、创建 GitHub Release 并发布到 npm。
相关资源
致谢
- HsiangNianian — 感谢开发过程中的帮助与建议。
- dsh-auto-continue — 网络错误等异常导致请求被中断时自动发送「继续」恢复的 DSH 插件(错误分类、自适应退避、浏览器通知),很好用的搭配。
许可证
链接
同类插件
Mars-Sea/dsh-commandcode-provider★ 9
非官方 Command Code 模型接入插件:注册 `commandcode` 路由,带实时模型目录与推理强度支持。
feibi-mochi/deepseek-harness-wallet★ 8
多供应商钱包标签:官方 DeepSeek 余额、本会话花费与 token、第三方合计 token、一键充值、低余额提醒。
franksong2702/dsh-codex-connect★ 7
通过 ChatGPT OAuth 将 OpenAI Codex 模型接入 DeepSeek Harness,并提供可选的搜索与图片工具。
Noob-stupid/dsh-github-login★ 4
零终端的 GitHub 可视化登录插件:窗口内完成设备码授权,令牌同步进 gh CLI,附宿主端状态与唤起接口。
btspoony/dsh-llm-fallbacks★ 4
基于角色的模型重试与备用策略。
omdsh-dev/Qwen-MM-Plugins★ 4
Qwen 多模态插件支持。