DeepSeek Harness 插件

dsh-file-panel

DeepSeek Harness plugin: a right-side panel that lists files the agent created or downloaded, with inline preview and "reveal in folder".(英文原文)

跳到安装方式

来源信息

GitHub 仓库
yu2025-luo/dsh-file-panel
最近更新
2026年8月15日
分类
界面增强
GitHub stars
4
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/yu2025-luo/dsh-file-panel
插件名:dsh-file-panel
作者:yu2025-luo

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器4 个文件
README.zh.md来源说明 · 只读预览
README 语言

dsh-file-panel

![CI](https://github.com/yu2025-luo/dsh-file-panel/actions/workflows/ci.yml) ![License: MIT](LICENSE)

面向 DeepSeek Harnessdsh Web 图形界面)的插件:实时追踪会话中 Agent 创建或下载到本地的文件与图片,并在右侧弹出面板中展示——类似 Codex 的文件查看器。

会话期间只要有文件或图片写入本地磁盘,面板就会自动在右侧弹出。每个文件条目支持:

  • 👁 预览 — 图片直接内联显示;文本文件显示前 256 KB 内容;其他类型显示元信息。
  • 📂 所在位置 — 在系统文件管理器中定位该文件(Windows 用 explorer.exe /select,macOS 用 open -R,Linux 用 xdg-open)。
  • 打开 — 用系统默认程序打开文件(复用 Harness 内置的 host.openPath RPC)。
  • 📋 复制路径 — 复制绝对路径到剪贴板。

面板底部还提供「打开工作目录」快捷入口。

English

截图

![会话文件面板](screenshots/panel-session-files.png)

右侧停靠的会话文件面板:每行可预览、打开、定位、复制路径;底部按钮打开会话工作目录。面板支持按住标题栏自由拖动,左边缘与底边可拖拽缩放,缩得过窄时自动出现滚动条。

安装

需要已安装 DeepSeek Harness 的 dsh 命令行(npm 包 @deepseek-ai/dsh)以及 pnpm。

从本地源码安装

cd dsh-file-panel
npm install          # 仅安装开发依赖 esbuild
npm run build        # 生成 lib/index.js 与 lib/client.js(已提交进仓库)

# 注册到 web 配置(link: 方式会实时跟踪你的源码目录)
dsh plugin --profile web add link:.

从 GitHub 安装

dsh plugin --profile web add github:yu2025-luo/dsh-file-panel

构建产物已随仓库提交,安装时无需执行任何构建脚本。

启用

重启 dsh web 服务(插件集合在重启时生效),然后刷新 http://127.0.0.1:3080。无需任何配置。

卸载:

dsh plugin --profile web remove dsh-file-panel

使用说明

操作效果
Agent 创建/下载文件面板自动弹出(新文件带 徽标)
单击条目内联预览(图片 / 文本 / 元信息)
悬停条目上的按钮预览、打开、所在位置、复制路径
🔔 铃铛开关「新文件自动弹出」
/ ×收起为右下角悬浮按钮(带新文件角标)或完全隐藏
底部「打开工作目录」打开当前会话的工作目录

面板状态(打开/收起)与自动弹出偏好保存在 localStorage。自动弹出的 基线按会话计算:面板首次看到该会话时已存在的文件不会再次触发弹出。

工作原理

一个 npm 包包含两个半边,通过一条 loader 行(cordis.patch.yml → 行 file-panel)注册:

宿主半边 (src/index.js)                     浏览器半边 (src/client.jsx)
───────────────────────                     ─────────────────────────────
ctx.on('fs/observed')         ──┐
  write/edit 等工具上报的        │            shell.overlay 插槽入口:
  文件(精确、归属到会话)        │            右侧停靠的悬浮面板
按会话工作目录的递归             ├──▶ FileTracker(按会话维护文件列表、
  fs.watch                         │     忽略规则、容量上限、访问栅栏)
  (覆盖 curl、Invoke-WebRequest ─┘                │
   等 shell 下载场景)                             ▼
                                        RPC 通道 /file-panel
                                        authority: 'loopback'
                                        list · readText · readImage
                                        reveal · describe
                                                  ▲
                                                  │ 每 1.5 秒轮询
                                    客户端:ctx.connection.rpc.call()
                                    打开文件:内置 api.host.openPath

浏览器半边注册进官方 shell.overlay 插槽(附加式的整框悬浮层),通过 标准 useSessions 属性读取当前会话,并轮询插件自建的仅限本机的 RPC 通道。该通道用 ctx.connection.rpc.handle 注册——这是静态插件包官方 支持的 RPC 接口。

安全性

  • /file-panel 通道以 authority: 'loopback' 注册,只有从

127.0.0.1 提供的页面才能调用。通过局域网访问(--trusted-host)时 面板会显示提示并保持不活动。

  • 所有读取/定位接口只接受追踪器实际见过的绝对路径(工具写入或受监控

工作目录下的 watcher 事件),RPC 无法被当作任意读文件/定位的通用 能力滥用。

目录结构

src/
  index.js      宿主半边:追踪器装配 + /file-panel RPC 端点
  tracker.js    纯 Node 文件追踪器(fs/observed 接入、递归 watcher
                防抖、忽略规则、容量上限、RPC 栅栏)
  client.jsx    浏览器半边:右侧面板 UI(React、JSX)
build.mjs       两个半边的 esbuild 构建脚本
cordis.patch.yml  插入 loader 行的 bundle patch
tests/          node:test 单元测试 + 宿主半边冒烟测试
lib/            构建产物(已提交,安装时无需构建)

开发

npm install
npm run build   # 重新构建 lib/index.js 与 lib/client.js
npm test        # node --test

修改 src/client.jsx 后的快速迭代:

npm run build

然后强制刷新 GUI 页面(lib/client.jscache-control: no-cache 提供;插件集合只在重启后变化,但 bundle 内容每次请求都会重新 计算哈希——见 dsh-client-modules)。重度开发 UI 时也可以在 harness 源码目录运行 pnpm run dev:web,在文件变化时自动重建客户端 bundle。

兼容性

基于 @deepseek-ai/dsh 0.1.0-rc.x 的公开接口构建:

  • 宿主:ctx.connection.rpc.handle / ctx.on('fs/observed')
  • 客户端:shell.overlay 插槽、useSessions 标准属性、

ctx.connection.rpc.callctx.locale

DeepSeek Harness 目前处于预发布阶段,这些接口可能变动。升级 dsh 后如果面板失效,请检查 package.json 中的版本声明并重新构建。

已知限制

  • 递归 watcher 使用 fs.watch({ recursive: true })(需 Node ≥ 20)。

在不支持该能力的平台上,面板仍能追踪 Harness write/edit 工具 产生的全部文件,但 shell 侧下载可能漏报。

  • 面板数据是进程内的:重启后从空开始(只记录实际观察到的文件,不

扫描历史会话)。

  • 默认忽略 node_modules.git 及临时文件噪音。
  • 无桌面环境的 Linux 上 describe 返回 canReveal: false,隐藏

「所在位置」按钮。

发布到 GitHub / npm

1. 创建 GitHub 仓库并推送(本目录已是 git 仓库,且已打好 v0.1.4 标签):

``sh git remote add origin https://github.com/yu2025-luo/dsh-file-panel.git git push -u origin main --tags ``

2. 在仓库页面的 About → ⚙ → Topics 中加上 dsh-plugin 主题,以及 deepseek-harnessdshdeepseekfile-preview。加上主题后, 仓库会自动出现在公开的插件主题页面上。 3. 用户可用 dsh plugin --profile web add github:yu2025-luo/dsh-file-panel#v0.1.4 安装。 4. 也可以发布到 npm(npm publish),之后用 dsh plugin --profile web add dsh-file-panel 安装。

会从 dsh-plugin 主题自动聚合的社区目录: Oh-My-DSH(每 8 小时自动同步)和 awesome-deepseek-harness (PR 方式收录)。

发布前记得提升版本号并重新执行 npm run build

许可证

[MIT](LICENSE)