前言¶
做 DSH 智能体时,经常会在对话里引用工作区文件、日志、CSV 或 artifact 输出。默认做法常常是先下载,再交给本地应用打开;对图片、PDF、JSON、源码和大日志,这种来回切换并不方便。
dsh-file-viewer 提供的是一个网页内只读预览层:在 DeepSeek Harness 中直接打开和查看文件,不要求外部应用。它强调 Preview ≠ Execute:预览不等于执行。
这是什么¶
dsh-file-viewer 由 liguobao 维护,MIT 许可证。
它定位是 DeepSeek Harness 的只读文件预览插件,支持图片、PDF、CSV、Markdown、JSON、YAML、源码和大文件预览。资料中的 package.json 版本号为 0.3.1,并给出 client.platform 为 web 的配置;资料线索也将其归为客户端插件。
核心功能¶
下面介绍已核实的能力。
支持的文件类型¶
- 图片预览
- 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 插件安装命令。本文不凭插件名拼接安装命令;具体安装方式以插件仓库或目录页给出的说明为准。
# 已核实资料未出现官方安装命令,此处不使用未经验证的命令
配置示例¶
文档配置示例包含 enabled 和 extraRoots;默认值未完整说明。
# 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许可证为 MITextraRoots会扩大允许读取的目录范围,应按需配置- 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 或幻方官方应用商店。