dsh-file-viewer:DeepSeek Harness 内的只读文件预览

前言

做 DSH 智能体时,经常会在对话里引用工作区文件、日志、CSV 或 artifact 输出。默认做法常常是先下载,再交给本地应用打开;对图片、PDF、JSON、源码和大日志,这种来回切换并不方便。

dsh-file-viewer 提供的是一个网页内只读预览层:在 DeepSeek Harness 中直接打开和查看文件,不要求外部应用。它强调 Preview ≠ Execute:预览不等于执行。

这是什么

dsh-file-viewerliguobao 维护,MIT 许可证。

它定位是 DeepSeek Harness 的只读文件预览插件,支持图片、PDF、CSV、Markdown、JSON、YAML、源码和大文件预览。资料中的 package.json 版本号为 0.3.1,并给出 client.platformweb 的配置;资料线索也将其归为客户端插件。

核心功能

下面介绍已核实的能力。

支持的文件类型

  • 图片预览
  • PDF 预览
  • CSV / TSV 表格预览
  • 文本 / 日志预览
  • 源码预览
  • Markdown 预览
  • JSON / JSONL 预览
  • YAML 预览
  • 未知类型回退

大文件策略

大文件按大小分级处理:

  • < 5 MB:整文件预览
  • 5–50 MB:分块处理
  • > 50 MB:头部加载,并可继续加载

只读边界

插件严格只读:

  • 预览不执行 shell 命令
  • 不执行脚本
  • 不执行宏
  • 不执行 HTML
  • SVG 通过 <img> 渲染
  • Markdown 清理后显示

客户端 API

插件提供 fileViewer.openFile 客户端 API。

它可以用于:

  • 打开本地路径
  • 打开 artifact:// locator
  • 指定行号
  • 强制指定 renderer

示例接口:

fileViewer.openFile(path, { line, renderer })

内容提供者

插件支持其他 host/client 插件注册内容提供者,用于读取自定义 locator,例如:

  • artifact://
  • object storage
  • remote APIs

远程预览依赖受信任 transport 插件的端点 allowlist。openExternal 不属于远程 surface。

主题适配

预览样式跟随 Harness 主题自动适配明暗样式。

版本兼容

v0.3.1 起兼容:

  • DSH v0.1.1-rc.2
  • DSH v0.1.2-alpha.1 包图

DSH v0.1.2 alpha 包为 host-provided peer dependencies。部分包可能尚未发布到 npm;重生成 lockfile 时保持:

autoInstallPeers: false

安装与启用

已核实资料未出现明确的 DSH 插件安装命令。本文不凭插件名拼接安装命令;具体安装方式以插件仓库或目录页给出的说明为准。

# 已核实资料未出现官方安装命令,此处不使用未经验证的命令

配置示例

文档配置示例包含 enabledextraRoots;默认值未完整说明。

# cordis.patch.yml / settings
- id: dsh-file-viewer
  name: dsh-file-viewer
  config:
    enabled: true
    extraRoots:
      - /srv/data

其中 extraRoots 用于增加允许读取的目录,例如 /srv/data

Workspace 菜单补丁

workspace 行中的“浏览文件 / Browse files”入口是兼容性补丁。更新 Harness 后,需要重新运行补丁脚本:

DSH_HARNESS_SOURCE=/path/to/deepseek-harness node scripts/patch-workspace-menu.mjs

这个补丁脚本可以重复执行;当版本发生偏差时,脚本会报错退出。

典型用法

打开本地文件

可以直接打开工作区内的文件:

const fileViewer = ctx.get('fileViewer')

fileViewer.openFile('/workspace/output/report.csv')

打开 artifact locator

也可以打开 artifact:// 类型的 locator:

fileViewer.openFile('artifact://run-42/report.csv')

指定行号

打开源码或文本文件时,可以指定行号:

fileViewer.openFile('/workspace/src/main.ts', { line: 125 })

强制 renderer

如果希望强制使用某个 renderer,可以传入 renderer

fileViewer.openFile('/workspace/data.bin', { renderer: 'text' })

通过 workspace 菜单打开

经过上面的配置和补丁步骤后,可以通过 workspace 行的“浏览文件 / Browse files”菜单打开文件。

浏览器端注册内容提供者

浏览器插件可以直接注册类似 memory://preview.md 的内容提供者,并调用:

viewer.openFile('memory://preview.md')

适用场景与注意

适合以下场景:

  • 在 DeepSeek Harness 中快速查看 agent 输出文件
  • 预览工作区中的 CSV、JSON、YAML、Markdown、文本或源码
  • 查看 artifact:// 指向的文件
  • 处理大日志、大 CSV 或大文本文件
  • 让其他 DSH 插件通过内容提供者接入预览

使用前注意:

  • DSH 插件通常会在当前 Harness 进程权限范围内运行;安装前应检查源码、依赖与许可证
  • dsh-file-viewer 许可证为 MIT
  • extraRoots 会扩大允许读取的目录范围,应按需配置
  • workspace 浏览入口依赖兼容性补丁,更新 Harness 后需要重跑 scripts/patch-workspace-menu.mjs
  • DSH v0.1.2-alpha.1 相关 peer dependencies 可能尚未发布到 npm;重生成 lockfile 时保持 autoInstallPeers: false
  • 远程预览依赖受信任 transport 插件的端点 allowlist

参考

  • 社区目录页:https://www.skillhub.cn/plugins/liguobao/dsh-file-viewer
  • GitHub:https://github.com/liguobao/dsh-file-viewer

社区目录页是独立站点,不等同于 DeepSeek 或幻方官方应用商店。

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

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

小夜