dsh-file-explorer — 文件浏览器与多格式预览
为 DeepSeek Harness 增加一个与「对话」「轨迹」并列的 文件 标签:左侧是会话工作区的目录树, 右侧的预览会按文件本身决定形态 —— 渲染后的 Markdown、JSON 树、语法高亮源码、图片,或纯文本。 只读、无需配置、不落任何数据。
| npm 包 | @jaxzhou/dsh-file-explorer(无作用域的 dsh-file-explorer 属于另一位作者) |
|---|---|
| 版本 / 许可 | v0.1.5 · MIT |
| 源码 | github.com/jaxzhou/dsh-file-explorer |
| 环境要求 | DeepSeek Harness 0.1.5-rc.2 的 Web 界面(dsh web);headless / SDK profile 没有浏览器,不会出现该标签 |
| 配置 | 无(cordis.yml 无需任何设置) |
$ dsh plugin --profile web add @jaxzhou/dsh-file-explorer
$ dsh --profile web # bundle 成员在启动时读取
$ dsh --profile web # bundle 成员在启动时读取
演示
文件标签与对话、轨迹并列:左侧工作区目录树,右侧渲染后的 Markdown;工具栏带复制、源码与导出。
能力一览
| 类别 | 预览 |
|---|---|
| Markdown | 渲染为 GFM(标题、表格、任务列表、引用、公式、脚注、引用文件旁的图片、代码围栏),带 源码 切换与 导出 菜单 |
| HTML | 在沙箱 iframe 中当作页面绘制:文件自己的 CSS 生效,脚本运行于不透明源、无法触达本应用;带源码切换与导出 |
| JSON | 可折叠树,每个值可单独复制,带源码切换 |
| 源码 | 24 种语法高亮 + 行号 + 复制:TS/JS、shell、Python、Ruby、Go、Rust、Java、C/C++、C#、Kotlin、Swift、PHP、YAML、TOML、INI、HTML、CSS、SCSS、Less、SQL、XML、Lua、MDX |
| 图片 | PNG / JPEG / GIF / WebP / AVIF / BMP / ICO / SVG,自动适配窗格;SVG 经 <img> 绘制,脚本不执行 |
| 其它 | 带行号的纯文本;未映射后缀(.vue、.proto、.txt)保持纯文本,绝不猜一个错误的高亮 |
导出文档
渲染态的 Markdown 与 HTML 可直接下载文件(不走打印对话框),两种格式:
| 格式 | 说明 |
|---|---|
| 页面的图像:按 A4 排版并分页切分;文字不可选中(刻意取舍,避免内嵌数 MB 的 CJK 字体) | |
| Word(.docx) | 真正的 Word 文档:标题、列表、表格、代码与图片都在,文字仍可编辑、可搜索,中文交给 Word 自己的字体渲染 |
文档自带的本地资源会一起带上:Markdown 旁边引用的图片,以及 HTML 链接的图片与样式表。
隐私与权限
- 1只读读取走 Harness 自带的
workspaceFilesRemote 命名空间,可读性由 Host 的文件系统决定;插件不持有文件权限、不做路径解析、不接触凭据。 - 2不落数据不写磁盘、不写会话日志;视图状态保存在内存中,随会话释放。
- 3Host 半边是空实现包的 Node 侧不注册任何服务、工具、提示词片段或事件。
- 4沙箱边界HTML 预览在不透明源中执行;导出前先剥除脚本;SVG 经
<img>绘制,脚本完全不执行。
已知限制
- 1只预览,不编辑没有编辑、保存、diff,也不监听文件变化。
- 2JSON 按严格语法解析JSONC(注释 / 尾逗号)会提示原因并回退到高亮源码。
- 3文本预览上限 2000 行会明确提示已截断,没有「加载更多」。
- 4无搜索 / 重命名 / 右键菜单仅目录列表;已加载的预览最多保留最近 5 个标签的内容。
- 5单一根目录目录树以会话工作目录为根,Host 拒绝列出工作区之外的目录。
- 6导出上限超长文档在 60 页 PDF 处截断;单张超过 8 MiB 的图片会被跳过;Markdown 旁图每篇最多 24 张、单张 8 MiB。
常见问题
这个插件能编辑文件吗?
不能。它只做预览:不编辑、不保存、不做 diff,也不监听文件变化;某一层内容通过「重新读取」更新。
为什么打开 tsconfig.json 显示的是源码而不是 JSON 树?
插件按严格 JSON 语法解析,注释或尾逗号会让文件变成 JSONC 并被 JSON.parse 拒绝。此时窗格会说明原因并展示高亮源码,而不是勉强猜出一棵树。
支持哪些文件类型?
Markdown(渲染 + 源码)、HTML(沙箱预览)、JSON(折叠树)、24 种语法的源码高亮、图片(PNG/JPEG/GIF/WebP/AVIF/BMP/ICO/SVG)、其余按纯文本展示;文本预览上限 2000 行,截断会明确提示。
预览里的 HTML 安全吗?会执行脚本吗?
HTML 预览在一个不透明源的沙箱 iframe 中绘制,脚本无法触达本应用的 DOM、存储或会话;SVG 经 <img> 绘制,其中的脚本不会执行;导出时会先剥除脚本再打印。
导出的 PDF 为什么不能选中文字?
PDF 是页面的图像(按 A4 排版分页),文字不可选中是刻意取舍 —— 文本模式生成中文 PDF 需要在插件里内嵌 CJK 字体(数 MB)。需要可编辑、可搜索的文字请导出 Word(.docx)。