在 DSH 与 LM Studio 结合使用的场景中,read_image 工具生成的图片附件有时会被 LM Studio 的 openai-completions 路由拒绝,报错提示 'url' field must be a base64 encoded image。dsh-read-image-jpeg-fallback 插件正是为了解决这一传输层的格式兼容问题。
这是一个零配置的 DSH 图像兼容层插件。它通过 DSH 的 tools/post-execute 钩子,在 read_image 工具执行后介入,将模型可见的 PNG/WebP 图片块转换为不透明 sRGB 格式的 JPEG,而 JPEG 及其他媒体类型则保持原样。
核心功能¶
- 格式转换:将
image/png和image/webp附件转换为不透明 sRGB JPEG。 - 兼容透传:JPEG 和其他媒体类型保持不变。
- 零配置:无需修改配置文件或编写脚本。
- 钩子机制:利用 DSH 的
tools/post-execute钩子实现透明转换。
安装与启用¶
该插件依赖 DSH 0.1.1-rc.2、Node.js >= 22 以及 sharp 0.35.3。安装命令如下:
dsh plugin --profile web add dsh-read-image-jpeg-fallback
安装完成后需要重启 DSH Web。
典型用法¶
使用方式与原生 read_image 一致。插件在后台自动运行,当检测到 PNG/WebP 图片时,会自动生成 JPEG 替代品供模型使用。不需要调用新的工具或修改代理工作流。
适用场景与注意¶
- 适用场景:主模型已支持图像输入,且使用 LM Studio 的 OpenAI 兼容接口;
read_image在构建下一个模型请求时报错。 - 注意点:该插件是媒体格式兼容层,不是视觉模型或 OCR 插件。若转换失败,插件采用 Fail Open 策略,保留原始
read_image结果并记录警告,不会导致工具调用失败。 - 环境要求:已确认在 Windows 环境下可用。
结语¶
该插件在保持原生 DSH 多模态流程的前提下,解决了传输层格式不匹配的问题。随着上游支持完善,该插件可能不再需要。