前言¶
DeepSeek Harness (DSH) 的原生工作区打开器仅支持循环回环访问。在 DSH 0.1.2 中,文件链接调用 ctx.remote.session.openWorkspacePath({ path });在远程页面上,此原生操作无法在远程设备上打开桌面应用程序。该插件通过包装 Remote 方法并在路径白名单 HTTP 端点支持的 GUI 覆盖层中打开请求路径来解决这个问题。回环页面继续使用原生操作系统打开器。
功能¶
- 点击远程页面上的文件链接打开 GUI 覆盖层查看器(全文本、可滚动、可选择、可编辑、可保存、触控友好)。
- 左侧边缘的“文件”手柄打开目录浏览器(多根切换器、面包屑、父级)。
- 回环页面保持原生操作系统打开行为。
- 编码阶梯:BOM (UTF-8 / UTF-16LE / UTF-16BE) → UTF-8 → GB18030;保存保留原始编码、BOM 和 EOL 样式 (CRLF/LF)。
- 二进制文件:图像 (PNG/JPG/GIF/WebP/BMP) 内联显示;其他文件显示提示。
- 大文件 (> 2 MB) 以只读分页窗口打开。
- 原子保存(临时文件 + 重命名)。
安装与配置¶
使用 insert 指令插入插件。inject: [webServer] 确保在注册路由前等待 webServer。
- insert:
- id: fileview
name: dsh-fileview
inject: [webServer]
config:
roots:
- 'D:\workspace'
- 'C:\Users\me\projects'
writeRoots:
- 'D:\workspace'
修改 composition 或 Host 代码后需要重启 dsh web。Client-only client.js 变更需要在重新构建/重新加载客户端插件后生效。
典型用法¶
config.roots 是必需的读写路径白名单(绝对目录;允许子路径,其他所有内容返回 403)。config.writeRoots 可选地将保存范围缩小到子集。
注意事项¶
此插件已弃用(2026-09-13)。自 DSH 0.1.5 起,内置 Web 侧边栏预览文件(Markdown、代码、HTML、PDF 和图像)并显示模型交付的文件,取代了此插件的核心用例。它不再维护;最后一个目标版本是 DSH 0.1.2。
安全设计:
- 同源保护(Origin 必须匹配 Host;无 Origin 调用者遵循 DSH API 平面姿态)。
- 路径白名单(大小写不敏感的包含检查;根目录外的请求和遍历请求接收 403)。
- 安全未配置状态(没有 config.roots 意味着没有文件路由被注册)。
- 保存限制(6 MB 内容上限;GBK/GB18030 文件拒绝在线保存,因为它们无法无损往返,因此以只读打开)。