DeepSeek Harness Hub
← 返回列表

工作区文件浏览器YZz-S/dsh-workspace-files-explorer

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

浮层浏览工作区文件树,点击即可预览代码与 Markdown

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/15 · 已提供中文文档

一组用于 DeepSeek Harness (DSH) 的动态 Cordis 插件:token 成本计量、余额检查、更新检查,以及带代码与 Markdown 预览的工作区文件浏览器。纯 JavaScript,粘贴即可运行。

综合分
28.3
GitHub 分
28.3
用户评分
★ Stars
2
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add YZz-S/dsh-workspace-files-explorer
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

workspace-files-explorer

English · 中文

DeepSeek Harness(dsh)Web GUI 的工作区文件浏览器插件:在浮层面板中浏览当前会话工作区(cwd)的文件树,点击文件即可预览——代码文件带行号与语法高亮,Markdown 文件渲染为富文本。

DeepSeek Harness(dsh)Web GUI 的工作区文件浏览器插件:在浮层面板中浏览当前会话工作区(cwd)的文件树,点击文件即可预览——代码文件带行号与语法高亮,Markdown 文件渲染为富文本。

文件预览效果 1

文件预览效果 2

English

中文 · ← Back to DeepSeekHarnessPlugins

Features

- 浮动文件面板:注册在 shell.overlay 上,采用增量注册——不替换任何内置 UI;默认停靠在右上角
- 文件树:懒加载展开,目录优先,隐藏文件(以点开头)置灰显示,显示文件大小,每个目录超过 500 项时显示截断提示,一键刷新
- 代码预览:行号 + 轻量级语法高亮(按扩展名支持 30 多种语言:JS/TS/Python/Go/Rust/Java/C#/PHP/Bash/SQL/JSON/YAML/CSS/HTML……),自动适配浅色/深色主题,超大文件会被截断
- Markdown 预览:渲染标题 / 列表 / 表格 / 引用 / 链接 / 代码块,内嵌代码块也会高亮;整个 HTML 在渲染前会被转义,链接仅允许 http/https 并强制使用 rel="noopener noreferrer"
- 面板交互:拖动标题栏移动,拖动右下角调整大小(400–1400 × 280–900),关闭 / 刷新
- 会话标题栏按钮:标题栏操作区中的“Workspace Files”按钮(点亮 = 面板已打开),点击可切换可见性
- 跟随会话:工作区根目录来自当前会话的 cwd(标准 useSessions hook);切换会话会重置面板并自动加载新的工作区

Installation (dsh.bundle)

本仓库同时也是一个可安装的 dsh 插件包(package.json 声明了 dsh.bundle + dsh.client):

dsh plugin --profile web add github:YZz-S/dsh-workspace-files-explorer

安装后,“Workspace Files”按钮会出现在会话标题栏操作区,浮层面板会自动生效。动态用法(cordis_define 加载 host.js / client.js)也保留;两者任选其一。

Files

| File | Description |
| --- | --- |
| index.js | Host 半部分(安装形式):webServer 路由 /api/wsf-explorer/,只读文件浏览 API |
| lib/client.js | Client 半部分(安装形式):__ModuleLoader__ 浏览器模块,通过 fetch 调用 Host 路由 |
| cordis.patch.yml | Bundle 补丁:将插件行插入 dsh 组合中 |
| host.js | Host 半部分(动态形式):用于 cordis_define,通过 harness.handle 进行包内私有 RPC |
| client.js | Client 半部分(动态形式):用于 cordis_define,通过 host.call 调用 Host |
| README.md | 本文档 |
| LICENSE | MIT 许可证 |
| package.json | 包元数据 + dsh.bundle / dsh.client 声明 |

用法

方式 1:动态 Cordis 插件(临时)

在 dsh Web GUI 会话中使用 Cordis 工具定义并运行:

1. 调用 cordis_define:将 host.js 内容粘贴为 code.host,将 client.js 内容粘贴为 code.client(plugin.kind: 'new',idPrefix 为 3–6 个小写字母)
2. 调用 cordis_run 以激活,并在 UI 中允许授权
3. 面板默认打开;标题栏右侧会出现“Workspace Files”按钮,用于切换可见性

注意:动态插件的生命周期与当前 dsh 进程相同。重启 dsh 后,必须重新定义并运行它。

方式 2:可安装插件(持久化)

参见上文“安装(dsh.bundle)”:dsh plugin --profile web add github:YZz-S/dsh-workspace-files-explorer —— 插件会随 profile 持久化,无需每次手动运行。

工作原理

- 工作区根目录:Client 通过标准 hook useSessions((s) => s) 读取当前会话的 cwd,并在每次请求时将其传递给 Host;当没有会话时,回退到 sandboxPolicy.workspaceRoot
- Host 为只读:仅使用 fs 的 resolve / stat / listDir / readText / contains / processPath —— 完全不写入;每个路径都必须通过 fs.contains 校验,以确保位于工作区内
- 预览安全:代码和 Markdown 内容在渲染前会进行 HTML 转义;Markdown 链接仅允许 http/https,并强制使用 rel="noopener noreferrer";原始 HTML 永远不会被透传
- 限制:文本预览 256 KB,代码渲染 2000 行,Markdown 渲染 4000 行,目录列表 500 项 —— 超出限制时会显示友好提示

隐私

- 仅读取当前会话工作区内的文件和目录列表 —— 无外部网络请求、无文件写入、无遥测、无持久化存储
- 任何超出工作区边界的路径都会被拒绝(path outside the workspace)

已知限制

- 二进制文件和超过 256 KB 的文本仅显示提示,不提供预览
- 语法高亮为内置轻量实现(关键字 / 字符串 / 注释 / 数字),并非完整的语义高亮
- 面板按钮注册在会话头部操作区;空白新会话(无标题栏)不会显示该按钮,但面板仍会默认打开
- 动态插件是进程级的:重启后必须重新运行

发布前检查清单

- [x] 无硬编码密钥 / 令牌 / 密码(已扫描 api[_-]?key、secret、token、password、私钥头等模式)
- [x] 无个人信息(用户名、机器路径、内部 IP、电子邮件);工作区路径来自运行时会话状态,而非硬编码在代码中
- [x] 无外部网络请求、无遥测、无第三方数据收集
- [x] 已采用 MIT 许可证,README 完整
- [x] 代码仅使用 dsh 插件公开接口(Services / webServer / slots / React);所有副作用都挂在插件 Fiber 上,并在 stop 时清理
- [x] 输入(文件名 / 文件内容)在渲染前均经过 HTML 转义;链接协议白名单 + noopener —— 无注入面

许可证

MIT

中文

English · ← 返回 DeepSeekHarnessPlugins

DeepSeek Harness(dsh)Web GUI 的工作区文件浏览器插件:在浮层面板中浏览当前会话工作区(cwd)的文件树,点击文件即可预览——代码文件带行号与语法高亮,Markdown 文件渲染为富文本。

功能

- 浮层文件面板:注册在 shell.overlay,加法式注册,不替换任何自带 UI;默认停靠右上角
- 文件树:懒加载展开、目录优先排序、隐藏文件(点开头)淡化显示、文件大小标注、单目录最多 500 项截断提示、一键刷新
- 代码预览:行号 + 轻量语法高亮(JS/TS/Python/Go/Rust/Java/C#/PHP/Bash/SQL/JSON/YAML/CSS/HTML 等 30+ 语言按扩展名识别),深浅色主题自适应,超长文件截断
- Markdown 预览:标题 / 列表 / 表格 / 引用 / 链接 / 代码块等渲染,内嵌代码块同样高亮;渲染前整体 HTML 转义,链接仅允许 http/https 且强制 rel="noopener noreferrer"
- 面板交互:标题栏拖拽移动、右下角拖拽缩放(400–1400 × 280–900)、关闭 / 刷新
- 会话头部按钮:标题栏动作区显示「工作区文件」按钮(点亮 = 面板已打开),点击切换显隐
- 跟随会话:工作区根目录取自当前会话的 cwd(useSessions 标准 hook),切换会话时面板自动重置并加载新工作区

安装(dsh.bundle)

本仓库同时是可安装的 dsh 插件包(package.json 声明 dsh.bundle + dsh.client):

dsh plugin --profile web add github:YZz-S/dsh-workspace-files-explorer

安装后「会话标题栏动作区」出现「工作区文件」按钮,浮层面板自动生效。
动态用法(cordis_define 加载 host.js / client.js)仍保留,两种方式二选一。

文件说明

| 文件 | 说明 |
| --- | --- |
| index.js | Host 半部分(安装版):webServer 路由 /api/wsf-explorer/,只读文件浏览 API |
| lib/client.js | Client 半部分(安装版):__ModuleLoader__ 浏览器模块,fetch 调用 Host 路由 |
| cordis.patch.yml | bundle 补丁:把插件行插入 dsh 组合 |
| host.js | Host 半部分(动态版):供 cordis_define 使用,harness.handle 包私有 RPC |
| client.js | Client 半部分(动态版):供 cordis_define 使用,host.call 调用 Host |
| README.md | 本说明 |
| LICENSE | MIT 许可证 |
| package.json | 包元信息 + dsh.bundle / dsh.client 声明 |

使用方法

方式一:动态 Cordis 插件(临时运行)

在 dsh Web GUI 的会话中,用 Cordis 工具定义并运行:

1. 调用 cordis_define:code.host 粘贴 host.js 的内容,code.client 粘贴 client.js 的内容(plugin.kind: 'new',idPrefix 取 3–6 个小写字母)
2. 调用 cordis_run 激活,在界面上允许授权
3. 面板默认打开;标题栏右侧出现「工作区文件」按钮用于切换显隐

注意:动态插件的生命周期与当前 dsh 进程相同。重启 dsh 后需重新定义运行。

方式二:可安装插件(常驻)

见上文「安装(dsh.bundle)」:dsh plugin --profile web add github:YZz-S/dsh-workspace-files-explorer,插件随 profile 常驻,无需每次手动运行。

工作原理

- 工作区根:Client 端通过标准 hook useSessions((s) => s) 读取当前会话的 cwd,随每次请求传给 Host;无会话时回退 sandboxPolicy.workspaceRoot
- Host 只读:仅使用 fs 的 resolve / stat / listDir / readText / contains / processPath,无任何写入;所有路径经 fs.contains 校验必须位于工作区内
- 预览安全:代码与 Markdown 内容一律先做 HTML 转义再渲染;Markdown 链接仅允许 http/https 协议并强制 rel="noopener noreferrer";原始 HTML 不直通
- 上限:文本预览 256KB、代码渲染 2000 行、Markdown 渲染 4000 行、目录列表 500 项,超出部分友好提示

隐私说明

- 仅读取当前会话工作区内的文件与目录列表,无外部网络请求、无文件写入、无遥测、无持久化存储
- 工作区边界外的路径一律拒绝(路径超出工作区范围)

已知限制

- 二进制文件与超过 256KB 的文本只提示,不预览
- 语法高亮为内置轻量实现(关键字 / 字符串 / 注释 / 数字),非完整语义级高亮
- 面板按钮注册在会话头部动作区;空白新会话(无标题栏)时按钮不显示,面板仍默认打开
- 动态插件为进程级生命周期,重启后需重新运行

开源前检查
- [x] 无硬编码密钥 / Token / 密码(已扫描 api[_-]?key、secret、token、password、私钥头等模式)
- [x] 无个人信息(用户名、机器路径、内部 IP、邮箱);工作区路径来自运行时会话状态,未写入代码
- [x] 无外部网络请求、无遥测、无第三方数据收集
- [x] MIT 许可证齐全,README 完整
- [x] 代码仅使用 dsh 插件公开接口(Services / webServer / slots / React),副作用全部挂在插件 Fiber 上,停止即清理
- [x] 输入内容(文件名 / 文件内容)均经 HTML 转义后渲染,链接协议白名单 + noopener,无注入面

License

MIT

English · 中文

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群