前言¶
用 DeepSeek Harness(DSH)对接远程训练机或数据机时,常见做法是 SSH 终端、scp 或本机再开一个 SFTP 客户端。路径要在脑子里记,图片和视频往往要先拉到本地才能看。dsh-file-explorer 是社区客户端插件,在 DSH 左侧栏、右侧标签或本机浏览器里渲染类似 VS Code 的目录树,点开即可预览图片,视频走 HTTP Range 流式播放,并支持拖拽上传与基础文件操作。下面介绍它的能力、依赖、安装与配置。
这是什么¶
- 名称:npm 包
@bruce_young/dsh-file-explorer(仓库 BruceYounggit/dsh-file-explorer) - 维护者:BruceYounggit
- 分类:客户端(
dsh.client.platform: web) - 许可:MIT
插件为 DeepSeek Harness 增加远程服务器文件树:Host 侧在本机 127.0.0.1 起 HTTP 服务,通过 rclone 经 SFTP 读远程目录;Client 侧注册左侧「文件」入口、主区全屏树、右侧可停靠「文件树」标签,三者指向同一页面。
核心功能¶
三种入口¶
- 左侧导航栏「文件」(全屏文件树)
- 右侧栏通过
+添加「文件树」标签(与对话并排,可分割、可浮动) - 独立浏览器访问
http://127.0.0.1:8910/(默认端口,见配置)
浏览与预览¶
- 顶部路径栏可编辑:默认从配置的
treeRoot开始,输入绝对路径回车跳转;支持上一级、刷新。 - 目录懒加载;文本/代码预览前 256 KB;图片内联显示;视频原生播放器,依赖
Accept-Ranges,不整文件先下载;其它类型提供下载或新窗口链接。
上传与右键操作¶
- 从系统资源管理器拖文件到目录行或树空白处上传,经
rclone rcat流式写入,带进度。 - 右键:复制绝对/相对路径、重命名、移动到、删除、在此新建文件夹;空白处可新建文件夹、复制当前目录路径、刷新。
写操作与上传均可通过配置关闭(见下文「配置」)。
安全与权限模型¶
- HTTP 服务只监听
127.0.0.1。 - 默认可浏览任意绝对路径;
restrictToTreeRoot: true时将读写限制在treeRoot子树内。 - SSH 认证由系统 OpenSSH 密钥与 rclone 处理,插件不单独保管凭据。
依赖与环境¶
| 依赖 | 说明 |
|---|---|
| DeepSeek Harness ≥ 0.2.2 | 需要 sidebar.panellist / main / sidebarRightTabs 等槽位 |
| rclone | 外部唯一依赖:SFTP 列举与按字节范围读取 |
| OpenSSH 密钥 | 目标机免密登录(BatchMode 可用) |
| Node ≥ 20 | 见 package.json engines |
Windows 上可用 Chocolatey 安装 rclone(README 示例):
choco install rclone -y
亦可从 rclone.org 下载并加入 PATH。Linux/macOS 上 Host 侧可直接使用,但仓库提供的安装/卸载脚本为 PowerShell,需自行适配。
安装与启用¶
方式一:插件市场(推荐)¶
在 DSH 中添加市场索引地址,然后安装包名 @bruce_young/dsh-file-explorer:
https://bruceyounggit.github.io/dsh-file-explorer/index.json
索引 index.json 在仓库根目录,并通过官方 parseMarketIndex 校验;README 注明 0.3.0 起同时提供 npm 与 Git 源。当前仓库 package.json 版本为 0.3.5。
添加索引并安装后,重启 DeepSeek Harness(或在插件列表里停用再启用对应条目),否则 bundles 与条目不会重新加载。
方式二:仓库脚本(Windows)¶
README 提供 scripts/install.ps1,在本地已有插件源码的前提下可写入 profile 的 node_modules 联接,并在 cordis.patch.yml 末尾插入带 SSH 参数的 loader 条目。示例参数:
.\scripts\install.ps1 `
-SshHost 203.0.113.10 `
-SshPort 22 `
-TreeRoot /srv/data
卸载使用同目录下的 .\scripts\uninstall.ps1。
配置¶
配置可写在 cordis.patch.yml 的条目里,或放在 $DSH_HOME/file-explorer.json(默认 ~/.dsh/file-explorer.json);条目配置优先于独立 JSON。示例见仓库内 file-explorer.example.json 与 cordis.patch.example.yml。
| 字段 | 默认 | 说明 |
|---|---|---|
treeRoot |
/ |
文件树默认起始目录(非访问边界) |
restrictToTreeRoot |
false |
true 时仅允许 treeRoot 子树 |
allowUpload |
true |
是否接受 POST /api/upload |
allowWrite |
true |
是否允许重命名/移动/删除/新建文件夹 |
treePort |
8910 |
本机端口;若修改需同步 lib/client.js 中 TREE_URL |
ssh.host |
空 | 为空则不启动树服务 |
ssh.port |
22 |
SSH 端口 |
ssh.user |
root |
登录用户 |
ssh.keyFile |
空 | 私钥路径 |
ssh.knownHosts |
空 | known_hosts 路径 |
sources |
[] |
额外本地目录,每项通过 rclone HTTP 目录服务(id/path/httpPort) |
未配置 SSH 时,面板显示引导页,指出配置文件路径与示例内容,而不是白屏。
典型用法¶
- 安装插件并重启 DSH,在
file-explorer.json或 patch 条目中填写ssh.host、ssh.user、ssh.keyFile与treeRoot。 - 确认本机已安装 rclone,且对该主机
BatchModeSSH 可用。 - 打开左侧「文件」或右侧「文件树」,在路径栏进入数据目录;点击图片直接预览,点击视频即可拖动进度条播放。
- 需要将本地文件上传到当前远程目录时,从资源管理器拖入树中对应文件夹行。
- 若仅允许项目目录,设置
restrictToTreeRoot: true并将treeRoot设为项目根;只读场景可设allowUpload: false、allowWrite: false。
排错时若 http://127.0.0.1:8910/ 能打开但 DSH 内无入口,按 README 顺序检查:是否在 dsh.profile.bundles 与 cordis.patch.yml 重复注册;lib/client.js 中模块 id 是否与 package.json 的 name(含 scope)一致;是否从托盘完全退出后重启而非仅关窗口。
工作原理(简要)¶
DeepSeek Harness
├─ lib/client.js 注册侧栏/主区/右栏,iframe 加载树页面
└─ lib/index.js Host:127.0.0.1:8910
├─ GET /api/list → rclone lsjson
├─ GET /api/file(Range)→ rclone cat --offset --count
└─ explorer.html 纯 HTML/CSS/JS,无宿主 UI 框架依赖
可选 sources 会在其它本机端口起 rclone serve http,与远程树并列使用。
适用场景与注意¶
适合:在 DSH 会话旁直接查看远程日志、配置、小样本图片与短视频;需要 occasional 上传或重命名且希望留在同一客户端内完成时。
注意:
- 插件以当前 DSH 进程权限在本机起服务;安装前应阅读源码与 MIT 许可证,确认
allowWrite/allowUpload符合环境安全要求。 - 视频每次 Range 请求经 SSH 往返,首播可能比本地文件慢;端口固定为默认
8910,占用会导致树服务启动失败(日志报错)。 - README 标明 Windows 安装脚本优先;一次配置对应一个远程
treeRoot树服务主线。
社区目录页:SkillHub - dsh-file-explorer。生态上 DSH 奉行「一切皆插件」;SkillHub 等为独立社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-file-explorer 把远程 SSH 目录收成 DSH 内的 VS Code 式文件树,并补齐图片内联预览与 Range 流式视频,上传与基础文件操作可按配置收紧。需要上手时,优先添加市场索引安装 @bruce_young/dsh-file-explorer,并按 file-explorer.example.json 配好 SSH 与 treeRoot 后重启宿主。
- 目录页:https://www.skillhub.cn/plugins/BruceYounggit/dsh-file-explorer
- GitHub:https://github.com/BruceYounggit/dsh-file-explorer