← 返回列表
未验证
浮层浏览工作区文件树,点击即可预览代码与 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 · 中文
扫码进群