dsh-inline-images:让 DeepSeek Harness 对话直接显示本地图片

前言

DeepSeek Harness(dsh)把模型、工具、会话和界面都做成可插拔能力,官方仓库的说法是「一切皆插件」。智能体在本地干活时,经常会把截图、生成图、导出图写成磁盘路径:Windows 盘符、UNC 共享、POSIX 绝对路径,或者 Markdown 里的 ![](本地路径)。Web 界面默认把这些内容当普通文本或链接处理,对话里只能看到一串路径,看不到图本身。

dsh-inline-images 做的事情很具体:扫描助手回复里真实存在的本地图片路径,改写成与页面同源的回环 URL,交给产品自带的 Markdown 渲染,把图嵌进消息正文。本文按社区插件目录页、GitHub 仓库 README 与源码交叉核对后整理。需要说明:DeepSeek Harness 由 DeepSeek AI 开源;deepseek-harness-plugin.com 是独立的社区目录,与 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。

这是什么

dsh-inline-images 是一款界面增强插件,由 GitHub 用户 3403473060 维护,仓库地址是 3403473060/dsh-inline-images,许可证为 MIT。目录页收录日期为 2026-08-14;仓库 package.jsondsh.plugin.json 里的版本均为 1.0.0。截至 2026-08-18,目录页与 GitHub 上的星标均为 2。仓库带有 deepseek-harnessdsh-plugin 主题。

它解决的问题可以一句话说清:助手回复里出现本地图片路径时,在 Web 对话正文里直接把图画出来,而不是只显示链接或路径文本。dsh.plugin.json 把客户端平台标成 web,也就是说它挂在网页界面上,不是终端 TUI 插件。

核心功能

README 列出的能力,可以和 src/index.tssrc/client.ts 对上。

消息正文内联渲染

插件在 host 侧包装 llm/stream,在文本块结束时扫描助手回复。能识别的路径形态包括:

  • Windows 盘符路径,例如 C:\截图\a.png
  • UNC 路径
  • POSIX 绝对路径,例如 /tmp/out.webp
  • Markdown 图片或链接写法 ![](本地路径)
  • 反引号包裹的路径

扫描到候选路径后,会用文件系统确认文件存在且类型为文件,再按原始区间替换成:

![](http://127.0.0.1:<端口>/plugins/dsh-inline-images/image?t=<token>&p=<路径>)

<端口> 取当前 Web 服务端口;<token> 在插件每次激活时随机生成。图片字节由 host 上的 webServer 路由实时读取并返回,URL 与页面同源,README 写明这样可以避开 CSP 和混合内容问题。改写后的内容仍是纯文本 Markdown URL,README 特别指出:纯文本模型适配器不会因为嵌入图片块而拒绝。

源码里还有几条明确边界:以 https:data:file:mailto: 开头的地址直接跳过,因此远程图片链接不会被改写;路径必须带支持的扩展名,并且以盘符、UNC 或 / 开头,相对路径不会处理。

支持的格式

目录页与 README 一致,共 9 种:png、jpg、jpeg、webp、gif、svg、avif、bmp、ico。host 按扩展名设置 Content-Type 后把文件字节写回响应。

读取体积有上限:源码默认最多 20MB;若当前进程里挂了附件服务,则跟随附件服务的 maxImageBytes。超限或读失败时,这条路由返回 404,对话本身不会被中断。

点击放大灯箱

客户端在 shell.overlay 里注册灯箱。点击正文中由本插件渲染的图片(src/plugins/dsh-inline-images/image),进入全屏大图;点背景、点「关闭 (Esc)」或按 Esc 均可退出。其他图片不会被这个点击逻辑接管。

可调显示尺寸

Web 界面打开「设置 → 内联图片」,可以改正文图片的最大宽和高。允许范围是 64–2400 像素,默认 640×420。数值写入凭证存储,键名是 INLINE_IMAGE_MAX_WIDTHINLINE_IMAGE_MAX_HEIGHT。保存后,客户端会给匹配上述回环 URL 的 img 注入 CSS 的 max-width / max-height

安静降级

路径不存在、不是文件、或路径片段像占位符(源码会跳过「路径」「示例」「占位」「本地路径」「某某」「xx」「xxx」这类片段)时,插件静默跳过,原文保留,不影响对话。llm/stream 上如果请求带了 purpose 字段,包装器会直接放行,不做改写。

安装与启用

先有正在运行的 DeepSeek Harness。官方仓库给出的 Web 启动方式是:

npx @deepseek-ai/dsh web

或从源码启动:

git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web

默认 Web UI 地址是 http://127.0.0.1:3080

目录页给出的安装命令如下,在 DeepSeek Harness 终端里运行即可(不要自行拼接仓库名):

dsh plugin add github:3403473060/dsh-inline-images

需要可复现安装时,目录页的写法是在仓库后面固定 commit。当前 main 最新提交为 79f8ba778441c86738dedba574f5911fd2b5b2be(2026-08-14),可以写成:

dsh plugin add github:3403473060/dsh-inline-images#79f8ba778441c86738dedba574f5911fd2b5b2be

如果是从本地克隆开发,README 的构建与安装步骤是:

pnpm install
pnpm run build
dsh plugin --profile web add ./dsh-inline-images

安装后可用下面命令确认插件是否出现在当前配置里:

dsh plugins list

部分插件需要重启 Web UI 后才会在界面生效。本插件客户端声明平台为 web,请在网页界面里检查,而不是只在纯终端会话里找效果。

典型用法

装好并启用后,不需要额外调用工具。只要助手回复里写出一份真实存在的本地图片路径,正文就会尝试把它渲染成图。设置页里的说明用的例子是 C:\截图\a.png 这类路径。

可以按下面方式自检:

  1. 准备一张本地图片,记下绝对路径,扩展名落在上面 9 种之内。
  2. 让助手在回复中输出这条路径,或使用 Markdown 图片语法指向该路径。
  3. 若文件存在,消息正文应出现图片,而不是只剩路径文本。
  4. 打开「设置 → 内联图片」,改最大宽高后点「应用」,正文中由本插件渲染的图会按新的上限缩放。
  5. 点击正文图片,确认灯箱能打开;点背景或按 Esc 关闭。

如果路径是虚构示例、文件已经被删、或只给了相对路径,正文会保持原样,这是设计如此,不是安装失败。

token 每次激活都会重新生成。插件重新加载或 Harness 重启之后,旧消息里已经写进去的回环 URL 可能打不开,需要让助手再次输出路径,或重新走一遍当前会话的渲染流程。

适用场景与注意事项

比较适合这些用法:本地截图对照、智能体刚生成或导出的图片、工作区里已经落盘的设计稿 / 图表。前提是你主要在 DSH 的 Web UI 里看对话,并且图片就在当前 dsh 进程能读到的文件系统上。

使用前注意这几件事:

  • 权限与安全。目录页写明:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证。host 侧的图片路由会按查询参数读本地文件字节,虽然用随机 token 做了校验,仍应按不信任任意来源插件的标准做源码审阅。
  • 只处理本地绝对路径。HTTP(S) 图片、data URI、file: 链接、相对路径都不会被改写。
  • 只改助手流式文本。能力挂在 llm/stream 的文本块上,不是给用户消息做通用 Markdown 增强。
  • Web 界面。客户端平台是 web;没有 Web UI 时,这条插件没有对应的灯箱和设置页。
  • 体积上限。默认按 20MB 读取,具体还可能受附件服务限制。
  • 许可证。MIT,可查看源码后免费使用。

小结

dsh-inline-images 把「助手写出了本地图片路径」这件事接到 Web 对话的 Markdown 渲染上:确认文件存在,改写成同源回环 URL,正文直接出图,并带灯箱和可调尺寸。它不提供视觉理解,也不负责下载远程图片,边界很清楚。

目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-inline-images/

GitHub:https://github.com/3403473060/dsh-inline-images

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜