dsh-image-preview:在 DeepSeek Harness 中预览本地图片与视频

在 DeepSeek Harness(DSH)Web 界面中,助手返回的本地图片或视频路径通常只是纯文本。dsh-image-preview 插件通过重写这些路径,将它们渲染为可交互的媒体元素,同时保留一个可点击的原始地址链接。

核心功能

  • 本地媒体内联:助手回复中的本地图片/视频绝对路径会自动变成内联图片或可播放的视频。
  • 视频播放器:支持拖动进度条,基于 HTTP Range 206 分段响应实现。
  • 持久化:跨重启媒体不消失,持久 token 存于 $DSH_HOME/plugins/dsh-image-preview.token。
  • 系统打开:点击地址行(媒体下方)可用系统默认应用打开。
  • 点击拦截:客户端拦截点击,不开新 tab;无客户端模块时降级处理。
  • 样式与体积:媒体下方地址行小字号、紧贴媒体;零构建、纯 ESM。

安装与启用

该插件以普通依赖的形式安装在 DSH 的 profile 目录中。

  1. 进入 DSH 的 profile 目录:
   cd ~/.dsh/profiles/web
  1. 安装插件:
   pnpm add github:ywleeo/dsh-image-preview
  1. 在 ~/.dsh/profiles/web/cordis.patch.yml 中追加配置:
   - insert:
       - id: dsh-image-preview
         name: dsh-image-preview
  1. 重启 dsh web 后刷新页面即可。

工作原理

插件由 Host 侧和 Client 侧两部分组成,通过文件拆分隔离启动风险。

Host 侧(逻辑层)
- 包装 llm/stream 接口。当流式文本块结束时,扫描真实存在的本地媒体绝对路径(POSIX /…、Windows 盘符、UNC)。
- 验证文件存在后,将路径改写为同源回环 URL(127.0.0.1)。
- 注册三条路由:
- /image:读取文件字节,返回图片。
- /video:支持 HTTP Range 206 分段响应,返回视频。
- /open:调用系统命令(open/start/xdg-open)打开文件,并重定向至媒体路由。

Client 侧(渲染层)
- 注入 CSS 样式:控制播放器样式、小字号、间距。
- 将“▶ 播放视频”链接替换为 <video controls> 标签。
- 拦截对 /open 链接的点击事件,阻止默认跳转,改为触发本地打开。

文件结构
- index.js:启动壳,不依赖核心模块,确保审计通过。
- host.js:核心逻辑。
- client.js:前端渲染与交互。

注意事项与边界

  • 作用范围:只处理助手回复的流式文本(llm/stream),工具结果卡片里的路径文本不改写。
  • 路径校验:只处理真实存在的本地绝对路径;远程 http(s)、data:/、file: 协议及相对路径会被忽略。
  • 视频支持:仅支持浏览器原生可播放的容器/编码(mp4/H.264、webm、mov、ogv);mkv、avi 等不支持预览,但地址行点击仍可用系统播放器打开。
  • 性能限制:视频读取为整读后按 Range 切片,单文件上限 512MB。
  • 权限与安全:token 持久化在 $DSH_HOME/plugins/dsh-image-preview.token(600 权限),仅限本机使用,勿暴露到公网。
  • 特殊字符:路径含 ( ) [ ] 等特殊字符时,markdown 链接语法可能破损。
  • 平台差异:Windows/Linux 打开命令已实现但仅在 macOS 实测。

结尾

该插件通过 Host 与 Client 的协作,在 DSH Web 界面中实现了本地媒体的无缝预览。更多细节与更新可查阅插件目录或源码仓库。

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

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

小夜