
reimu-create/dsh-vision
30Last commit Aug 14, 2026
dsh-vision DSH plugin
dsh-vision is a DSH plugin that automatically converts image messages into text descriptions using a visual model, so pure text models like DeepSeek-V4 can 'see' images. It works by intercepting image blocks in requests, generating descriptions, and appending them as user messages visible only to the model. The original image is preserved in the human transcript. It requires the uiopt plugin for a graphical configuration interface.
How to install the dsh-vision DSH plugin
dsh plugin --profile web add link:D:/dsh-plugins/dsh-visionCopying does not run this command. Review the repository and version before installing the dsh-vision DSH plugin.
dsh-vision DSH plugin data source
dsh-vision DSH plugin snapshot date: Aug 16, 2026
discovered
What the dsh-vision DSH plugin can do
- Automatically bridges images in pure text model requests to text descriptions
- Supports manual image query via see_image tool with optional question
- Works with any visual model that declares image input, configured via settings
- Hot-reloadable configuration through settings.yaml or uiopt UI
- Caches descriptions in conversation history, making prefix cache equivalent to text-only chats
- Recursively handles nested images from model tool calls (e.g., read_image)
Where the dsh-vision DSH plugin fits
- Use a pure text model (e.g., DeepSeek-V4) to analyze images without switching models
- Automatically describe images uploaded in chat for context-aware responses
- Manually ask the model to re-examine an image with a specific question
- Reduce costs by reusing a single API key for both text and vision models
- Enable image understanding in workflows where the primary model lacks vision capabilities
Who the dsh-vision DSH plugin is for
- Users running DSH with pure text models who need occasional image understanding
- Developers integrating vision capabilities into existing DSH profiles without changing the main model
dsh-vision DSH plugin limitations
- Depends on DSH preview APIs (llm/stream waterfall, surface replace, foldSurface) which may break on RC updates
- Requires the uiopt plugin for a graphical configuration interface; without it, only manual settings.yaml editing is possible
- The visual model must actually support image input; misconfiguration results in placeholder text without infinite loops
- When an image appears in the middle of conversation history for the first time, the prefix cache is invalidated from that point onward for that turn
dsh-vision DSH plugin: from the repository README
Quoted from the reimu-create/dsh-vision README, the upstream source of the dsh-vision DSH plugin. Copyright remains with the original authors.
> **⚠️ 依赖提示:本插件需要搭配 [uiopt](https://github.com/237229953-create/uiopt) 项目一起使用。** > 视觉模型的图形化配置界面(视觉模型下拉、输出上限、模式、超时)由 uiopt 的"额外插件 → 可配置插件"标签页承载;未安装 uiopt 时,只能通过 `settings.yaml` 手动配置,且无法在界面中切换视觉模型。 让 DeepSeek-V4 这类纯文本模型在 dsh 里"看到"图片:图片消息自动桥接为视觉模型生成的文字描述,原图保留在人类转录中。零新增凭据 —— 视觉模型复用 profile 已配置的 `llm-pi-ai` 路由(默认 `opencode-go / minimax-m3`,与主模型同一把 key)。 ## 原理(全部基于 dsh 官方机制,零 hack) 1. 包装 `llm/stream` 的 `streamWithRegistration` 方法:请求含 image 块且目标模型未声明 image 输入时触发(适配器层之前的准入门禁由 resolveModelInfo 包装放行,二者联动); 2. 用视觉模型把图片转为文字描述(描述带"识图结果"身份标记,主模型明确知道内容来自识图模型); 3. 把描述作为一条 `user/message` surface-replace 事件 append 进会话日志(与 compaction 压缩历史同款机制)——**只对模型可见,人类转录保留原图**; 4. 本次请求用同一份描述改写后放行,首轮即成功;模型调用 `read_image` 等工具返回的嵌套图片同样被递归识别改写; 5. 替换事件落库后,后续每轮历史投影天然给出稳定文本:网关前缀缓存与普通文本会话完全等价(历史全命中,仅新消息 miss)。 ## 安装 ```powershell # 1. 接线到 profile(把本地目录作为 link 依赖加入 bundle,依赖自动 reconcile 进层栈) dsh plugin --profile web add link:D:/dsh-plugins/dsh-vision # 2. 重启 dsh web 后验证挂载 dsh --profile web --dump-config | Select-String dsh-vision ``` ## 配置(官方 settings 通道,热生效) **界面方式(需 uiopt)**:设置 → 插件 → 额外插件 → 可配置插件 → 展开 **dsh-vision** 卡片: - **视觉模型下拉**:自动枚举当前所有 provider 中声明 `[text, image]` 输入的模型(按提供方分组); - 高级字段:输出上限、模式(auto/manua
Read the full READMERepository license: MIT
dsh-vision DSH plugin questions
How do I install dsh-vision?
Use the command `dsh plugin --profile web add link:D:/dsh-plugins/dsh-vision` to add the local directory as a link dependency. Then restart the DSH web server. You can verify the installation with `dsh --profile web --dump-config | Select-String dsh-vision`.
Do I need an extra API key for the vision model?
No. dsh-vision reuses the API key already configured in your profile for the `llm-pi-ai` route (default: opencode-go / minimax-m3). No additional credentials are required.
Can I use any vision model?
You can select any model that declares both text and image input from your configured providers. The plugin automatically enumerates such models in the dropdown (if using uiopt) or you can set the provider and model manually in settings.yaml.
Does dsh-vision increase costs?
Each image description consumes tokens from the vision model (typically a few hundred tokens). The cost is minimal and only occurs on the first encounter per image; subsequent turns reuse the cached description, so the cost approaches zero after the first use.
What happens if the vision model fails?
If the vision model call fails, the plugin places a placeholder text (e.g., '解析失败') in the message. The request still succeeds and the placeholder is not persisted, so it will be retried on the next encounter.