DeepSeek Harness(DSH)的设计理念是「一切皆插件」。在 0.1.7 之前的版本中,内置的 read_image 工具仅负责将图片放入模型上下文,在纯文本模式下会拒绝处理,且在旧版 Web 客户端中仅显示一行文本。dsh-viewer 插件反转了这一逻辑:它的职责是将文件呈现在屏幕上,而非仅仅放入上下文。只要浏览器能播放的媒体,都在其覆盖范围内。
插件简介¶
该插件由 Crosery 维护,基于 MIT 许可证。它通过 display_file 工具,在 DeepSeek Harness 的 Web UI 和桌面应用中,直接内联渲染图像、视频、音频、PDF、Office 文档和本地网页,并附带真正的播放器而非文件名和字节数。
核心功能¶
- 多格式渲染:支持 36 种文件扩展名,涵盖 6 种渲染类型:图像、视频、音频、PDF、文档和网页。
- 媒体能力:视频和音频支持范围请求(seekable),具备真实进度条。
- 网页沙箱:本地网页通过沙箱 iframe 渲染。
- 文档缓存:转换后的 PDF 存储在本地缓存中,避免重复转换。
安装与启用¶
Web 界面安装¶
dsh plugin --profile web add github:crosery/dsh-viewer
配置与重启¶
将包名添加到 profile 的 package.json 中的 dsh.profile.bundles,然后重启配置文件。插件代码随发布版本附带了编译好的文件,无需额外构建步骤。
桌面应用安装¶
在桌面应用中,打开 Plugins -> Add plugin,粘贴 release tarball URL(例如 https://github.com/Crosery/dsh-viewer/releases/latest/download/dsh-viewer.tgz)。由于桌面 profile 由 Electron 应用管理,CLI 不支持直接安装。
依赖要求¶
渲染 RTF 和 OpenDocument 文档需要安装 LibreOffice。安装后,该插件会自动调用 LibreOffice 进行转换。
安全与注意事项¶
安全机制¶
- 路径通过 HMAC 签名验证,不接受浏览器直接传入的路径,需通过签名 URL 访问。
- 签名密钥位于
$DSH_HOME/.dsh-viewer-asset-key,权限为0600。 text/html和image/svg+xml携带 Content-Security-Policy,防止跨站脚本攻击。
缓存策略¶
- 缓存路径:
$DSH_HOME/.dsh-viewer-cache/。 - 过期规则:30 天不活动过期。
- 大小限制:最大 256 个文档或 512MB,采用最近最少使用(LRU)淘汰策略。
版本兼容性¶
- Harness 0.1.7 需要 0.2.0 或更高版本。
- Harness 0.1.0-rc.2 到 0.1.7 需要 0.2.1 或更高版本。
总结¶
dsh-viewer 解决了 DSH 插件生态中文件展示缺失的问题,通过统一的 display_file 工具,将文件处理从模型上下文分离到了用户界面层。更多详情可参考插件目录或 GitHub 仓库。