在会话标签页中浏览宿主机文件并就地阅读
29.3/100
综合分
0
GitHub 星标
29
npm 周下载
—/5
用户评分
数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-files-panenpm 源 · dsh-files-pane 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · browser
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 55 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-files-pane @ 1.0.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/9/22 19:20:39
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
- 发起网络请求client/client.js:273
const response = await fetch('/dsh-files-pane/' + operation, {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 浏览宿主机文件
- 两栏目录导航
- 就地阅读文件
DSH 网页图形界面里的浏览器内文件面板:一个「会话视图」标签,用来浏览宿主机上的文件并就地阅读。· DSH 网页「文件」视图标签:两栏目录导航 + 就地阅读文件
最近更新
在 GitHub 查看全部 →v1.0.12026-09-10
打包发布:行为不变。· 新增 dsh.bundle 清单和根目录 cordis.patch.yml,插件既能按名字挂载(dsh plugin add dsh-files-pane),也能从检出路径挂载。· 新增 MIT LICENSE 和面向 npm 的元数据,包不再是私有。· README:两种安装方式,以及不要同时从两个来源挂载同一个包的提醒。
v1.0.02026-09-10
首次公开发布。
DSH Web GUI 新增「会话视图」标签页(对话 / 轨迹 / 文件),直接浏览并就地读取主机上的文件,不再把路径交给原生桌面打开器——无头主机根本没法响应这种请求。
· 主机侧:两条同源 POST 路由(/dsh-files-pane/list、/dsh-files-pane/read),走部署自带的 fs 服务。
· 浏览器侧:一个手写的模块表 bundle——不用构建,零依赖。
· Markdown 和代码交给内置的 MarkdownText / CodeBlock 渲染;Markdown 里的相对图片从主机读取。
· 双栏目录导航,路径可编辑并支持 ~ 展开,合并式页头带 fish 风格缩写,列表可折叠,加载状态不白屏。
安装——克隆到 ~/.dsh/plugins/,再往配置档补丁里加一行;详见 README。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-files-pane
一个用于 DeepSeek Harness Web GUI 的浏览器内文件面板:一个会话视图标签页(对话 / 轨迹 / 文件),用于浏览宿主机上的文件并就地读取它们——而不是把路径交给原生桌面打开器,因为无头宿主机无法响应这种请求。
在 DSH 网页面板里内置一个「文件」视图标签:左侧两栏目录导航,右侧阅读文件内容。不改动主窗体,复用聊天窗自己的 Markdown 与代码渲染,点击会话里的任意文件即在其中打开。
为什么需要它
dsh web 运行在持有文件的机器上;浏览器通常不在那台机器上。点击对话中的文件
引用会调用 remote.session.openWorkspacePath,而在无头宿主机上这会启动 xdg-open 却什么也打不开。
本插件拦截那一次调用,改为在页面中渲染该文件。
功能特性
- 文件作为会话视图标签页 —— 与聊天和轨迹并列的第三个标签页,全宽,一次只显示一个视图。
没有浮动窗口,也不接管侧边栏。
- 从对话中点击直达 —— 工具卡片、@path 提及和产出文件标签都会在此打开,并自动为你选中该标签页。
- 聊天窗口自身的渲染器 —— Markdown 走内置的 MarkdownText,代码走内置的 shiki CodeBlock,因此两者的外观与对话中完全一致。
展开完整文档(README 剩余 1 节)
dsh-files-pane
一个用于 DeepSeek Harness Web GUI 的浏览器内文件面板:一个会话视图标签页(对话 / 轨迹 / 文件),用于浏览宿主机上的文件并就地读取它们——而不是把路径交给原生桌面打开器,因为无头宿主机无法响应这种请求。
在 DSH 网页面板里内置一个「文件」视图标签:左侧两栏目录导航,右侧阅读文件内容。不改动主窗体,复用聊天窗自己的 Markdown 与代码渲染,点击会话里的任意文件即在其中打开。
为什么需要它
dsh web 运行在持有文件的机器上;浏览器通常不在那台机器上。点击对话中的文件
引用会调用 remote.session.openWorkspacePath,而在无头宿主机上这会启动 xdg-open 却什么也打不开。
本插件拦截那一次调用,改为在页面中渲染该文件。
功能特性
- 文件作为会话视图标签页 —— 与聊天和轨迹并列的第三个标签页,全宽,一次只显示一个视图。
没有浮动窗口,也不接管侧边栏。
- 从对话中点击直达 —— 工具卡片、@path 提及和产出文件标签都会在此打开,并自动为你选中该标签页。
- 聊天窗口自身的渲染器 —— Markdown 走内置的 MarkdownText,代码走内置的 shiki CodeBlock,因此两者的外观与对话中完全一致。
- Markdown 中的相对图片 —— 会从宿主机读取并渲染在 Markdown 文本旁边(MarkdownText 本身只渲染 http(s) 图片)。
- 两栏导航 —— 当前目录旁边有一个父级栏(同级项,仅目录,当前项高亮),因此横向跳转无需先向上返回。
- 可编辑路径 —— 点击标题栏中的粗体名称,输入路径,按回车。~ 会被展开;文件路径会定位到其内容,目录路径会定位到其列表。
- 面向阅读的界面 —— 一行合并的标题栏(祖先路径 + 固定的当前名称,仅在整行会溢出时才采用 fish 风格的 ~ 和缩短),一个可将列表完全收起的折叠开关(跨重载记住),以及绝不会让它所替换的面板变空的加载反馈。
- 文本每个文件上限 400 KB,图片上限 4 MB;二进制文件会被提示而非直接倾倒。
安装
该包是纯 ESM,带有手写的浏览器 bundle:无需构建步骤,无依赖。
从检出安装 —— 克隆它,然后将其作为一行挂载到你的 profile 的 patch 层(~/.dsh/profiles//cordis.patch.yml):
git clone https://github.com/liooil/dsh-files-pane ~/.dsh/plugins/dsh-files-pane
- insert:
- id: files-pane
name: '/home//.dsh/plugins/dsh-files-pane/lib/index.js'
加载器接受类路径的条目名称,dsh-client-modules 会从它向上查找到本包的 package.json,以获取 dsh.client 声明和 ./client bundle。该 bundle 随后在 /plugins/dsh-files-pane/client.js 处提供服务。
作为包安装 —— 该仓库声明了 dsh.bundle 清单(cordis.patch.yml),因此已发布的副本可以直接按名称挂载:
dsh plugin add dsh-files-pane
⚠️ 二选一使用。同时从两个来源挂载同一个包会导致客户端模块扫描失败(resolves from multiple active Loader sources),因此在安装该包之前先删除本地路径那一行(反之亦然)。
更改插件集(包括这第一次挂载)会在下一次 dsh 启动时生效:
systemctl --user restart dsh # 或者你的主机所采用的任何监管方式
布局
| 路径 | 半边 | 负责 |
| lib/index.js | 主机端(Node) | 两个同源 POST 路由,/dsh-files-pane/list 和 /dsh-files-pane/read,通过部署自身的 fs 服务读取文件系统。 |
| client/client.js | 浏览器端 | View 标签页、头部操作、文件打开拦截,以及所有呈现。 |
| package.json | — | dsh.bundle 清单(可安装)、dsh.client 声明(platform: web),以及模块扫描器读取的 ./client 导出。 |
| cordis.patch.yml | — | 当此包作为包安装时,按名称挂载此包的 bundle 补丁。 |
浏览器半边是客户端模块表格式(window.__ModuleLoader__.load({id, factory}))的手写 bundle——与已发布的客户端包所采用的形态相同——因此它可以直接 require("react") 和 require("@deepseek-ai/dsh-client-ui-primitives")。
两个值得了解的接缝
两者都通过 Cordis 服务访问,且都能安全降级,但两者都足够内部化,值得记一笔:
- 打开标签页。 当前活动的 View 并不由某个服务拥有:会话头部和主体都从 conversation.session 槽 store(actions.setView)读取它。因此以编程方式选择此标签页的路径是 uiSession.adapter.resolve(sessionId) → slots.resolveStore(entry.store, binding) → store.actions.setView('files'),这与头部读取的是同一个按会话缓存的实例。如果未来版本重命名了其中任一环节,失败会被记录,插件会回退到手动切换标签页。
- 接管文件打开器。 remote.session.openWorkspacePath 在 Remote 命名空间服务上被替换(保存描述符,卸载时恢复),并以调用方期望的 Remote 信封 {ok, value} 作出响应。正是这一点让对话中的点击落到这里。
这两个主机路由位于 /api 之外(不涉及网关),因此它们自带防护:仅限 POST,外加 Origin/Host 同源检查。
开发
没有构建步骤:编辑 client/client.js 并重新加载。
- 仅浏览器半边 —— 让主机就地重新哈希 bundle,然后刷新页面:
ctx.get('clientModules').rebuilt('dsh-files-pane')
(一个调用此方法的微型 Cordis 插件就足够了;随后刷新页面即可获取新修订版本。)
- 主机半边或 package.json —— 重启 dsh。
客户端 HMR 驱动仅在 pnpm run dev:web 从检出目录重新构建 bundle 时才有用;此包是从其自身目录提供的,因此上述两步就是整个循环。
许可证
MIT — 参见 LICENSE。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
liooil/dsh-files-pane
在会话标签页中浏览宿主机文件并就地阅读
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,967已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这是你的仓库?认领条目