Saltar al contenido principal
Z

dsh-assest-gallery

zyray233/dsh-assest-gallery

DSH 资产库 / 文件管理插件:按类型浏览工作区文件,聚合上传与生成产物,隐藏系统文件。Asset gallery & file manager plugin for DeepSeek Harness.

Instalar

dsh plugin --profile web add github:zyray233/dsh-assest-gallery

README

DeepSeek Harness(DSH)的「资产库」插件:把工作区里的文件按类型集中浏览,不再展示成一棵让人眼花的目录树。

  • 按类型分页签:全部 / 文档 / 图片 / 音视频 / 压缩包
  • 按工作区分组:工作区从 DSH 的 workspace.json 自动发现;大工作区的子目录折叠成一行,点开再展开
  • 三点操作菜单:复制路径、复制 @ 引用、预览文本、在浏览器打开图片/音视频
  • 隐藏系统文件:.dsh、.git、node_modules、__pycache__ 等默认不显示
  • 两个聚合页:「上传的」聚合 qq_files、DSH attachments、incoming;「生成的」聚合各工作区的 out/、outputs/、deliverables/、tmp_frames/、gen/ 里最近 7 天的媒体文件

只读插件:不写入、不删除、不上传任何文件。

环境要求

  • DSH Web(dsh web)>= 0.2.0
  • 浏览器端使用 DSH 的 client UI slots(@deepseek-ai/dsh-client-ui-slots)

安装

方式一:从 GitHub 安装

dsh plugin --profile web add git+https://github.com/ZyRay233/file-manager.git

方式二:克隆后 link(开发/本地使用)

git clone https://github.com/ZyRay233/file-manager.git
cd dsh-asset-gallery
npm install
npm run build
dsh plugin --profile web add link:"$PWD"

安装后重启 dsh-web:

systemctl restart dsh-web     # Linux systemd
# 或者手动重启 dsh web 进程

使用

打开任意会话,在会话头部会看到一个「🗂️ 资产库」按钮;点开是右侧面板:

  1. 顶部选择文件类型页签;
  2. 顶部下拉框切换工作区;
  3. 子目录显示为一行,点开进入下一层,右上「← 上级」返回;
  4. 文件右侧「⋮」菜单:复制路径、复制 @ 引用、预览、浏览器打开。

工作区与聚合目录

  • 工作区:启动时读取 $DSH_HOME/storages/workspace.json(DSH 的工作区注册表),按 title / path 展示;如果文件不存在,回退到用户主目录。
  • 上传的:依次扫描 ~/qq_files、$DSH_HOME/attachments/v1/files、~/incoming(存在才扫描)。
  • 生成的:默认扫描每个工作区下的 out/、outputs/、deliverables/、tmp_frames/、gen/,以及 ~/tmp_frames,取最近 7 天的图片/音视频。
  • 可用环境变量覆盖「生成的」目录(逗号分隔):
DSH_ASSET_GALLERY_GENERATED_DIRS="/data/outputs,/data/render" dsh web --no-open

HTTP API

所有路由都挂在 DSH 的 webServer 上:

方法路径说明
GET/dsh-ag/api/scan?type=all&ws=<工作区名>&dir=<相对目录>扫描一层,返回文件与子目录摘要
GET/dsh-ag/api/collected?which=uploaded|generated聚合页文件列表
GET/dsh-ag/api/peek?path=<绝对路径>只读预览文本(≤32KB)

路径限制:scan 的 dir 不能越出所选工作区;peek 只允许工作区根目录或主目录之内的路径。

开发

npm install
npm run typecheck
npm run build      # 输出 lib/index.js(host)与 lib/client.js(client)

构建产物说明:

  • lib/index.js:Node ESM,Cordis 插件,inject: ['webServer'];
  • lib/client.js:浏览器 CJS bundle,外层是 window.__ModuleLoader__.load({ id, factory }),DSH client loader 直接加载。

目录结构

.
├── src/
│   ├── index.ts          # host:扫描 + HTTP API
│   └── client/index.tsx  # client:资产库面板
├── cordis.patch.yml      # 把插件行插入 profile
├── dsh.plugin.json       # 插件清单(main / client.main)
├── tsdown.config.ts      # host + client 双构建
├── tsconfig.json
├── tsconfig.build.json
└── lib/                  # 构建产物(已提交,装完即用)

安全边界

  • 纯只读:没有写入/删除/上传接口;
  • 隐藏点开头文件与常见系统目录;
  • peek 限制 32KB,避免把大文件塞进浏览器;
  • 所有路径都经过 resolve + 前缀校验,不能跳出工作区。

License

MIT

Plugins relacionados