dsh-session-deliverables:会话顶栏「文件」视图与一键附件下载

前言

在 DeepSeek Harness(DSH)Web 里跑长会话时,模型往往通过 present 工具把 Word、表格、PDF 等当作最终交付物交给用户。默认界面里这些文件分散在对话与工作区里,想按附件名一次性下载,通常要自己在工作区里找路径,或依赖预览页另存。社区插件 dsh-session-deliverables(维护者 xiaoran0829,GitHub 仓库 xiaoran0829/dsh-session-deliverables)在每个会话顶栏增加「文件」视图,列出本会话声明的交付物,并支持 Host 以 Content-Disposition: attachment 流式下载;内网直连与经公网反向代理访问 GUI 时行为一致。下面介绍它是什么、能做什么,以及如何安装与使用时需注意的点。

这是什么

dsh-session-deliverables 是一个 DSH Web Cordis 插件(dsh.bundle.patch + dsh.client),分类上属于客户端侧 UI 扩展。它不单独起服务,而是在 DSH Connection 上注册两个需登录态的 HTTP 路由,继承 GUI 的登录态与 Host/Origin 校验。

列表数据主要来自可持久化的会话日志路径 deliverables/presented——也就是会话里经内置 present 工具声明过的交付物。插件当前版本为 1.0.3(见仓库 package.json),许可证 MIT。社区目录页:skillhub.cn/plugins/xiaoran0829/dsh-session-deliverables(独立社区站点,与 DeepSeek / 幻方无官方从属关系)。

核心功能

顶栏「文件」视图

「文件」入口位于会话顶栏,与「画廊 / 团队」等并列。视图中列出通过 present 声明的交付物类型包括:Word、Excel、PPT、PDF、Markdown、图片、视频、音频、压缩包等(以 README 列举为准)。

一键附件下载

点击列表整行或其「下载」按钮时,Host 以附件形式返回文件流,Content-Type 与文件名(含中文文件名)按常规浏览器下载行为处理。

可选「含工作区成果」

勾选该选项后,插件会在有界预算内对工作区再做一次扫描,额外列出会话运行期间在工作区创建的文档与媒体类文件;代码、脚本、日志、上传文件等不会进入列表。扫描有上限:最多 200 个文件、3 秒预算、深度 12,并跳过 node_modules 等目录;超出预算的文件不会出现。

预览页侧栏下载

在 DSH 原生文档预览页(Excel、PDF、图片及原生预览支持的其它格式)头部,插件会增加「下载」按钮,便于从预览上下文直接走同一套下载路径。

为什么体量可以很小

作者说明:列表先读会话日志,仅在勾选「含工作区成果」时做有界工作区扫描。下载路径被限定在会话工作区内,或会话日志中已声明过的文件;其它路径一律 403。插件不写文件、不跑后台任务、不发起第三方 HTTP 外发。

对外 API(均需已登录所有者浏览器通过 Connection fence):

  • GET /api/session-files.list?sessionId=… — 仅返回元数据。
  • GET /api/session-files.download?sessionId=…&path=… — 组合文件系统路径后流式返回;越界拒绝。

路由注册做了跨版本兼容:DSH Web 0.2.x 使用 ctx.connection.fetch.register;0.1.0-rc.6 使用 ctx.webServer.register。若两者均不存在,插件仍会加载但跳过路由并输出 warn。注意:0.1.0-rc.6 没有 deliverables/presented 会话事件,基线下列表为空,「含工作区成果」的有界扫描仍可用。

安装与启用

插件没有配置项。package.json 中 dshWorkshop.install 为 guided + third-party adapter,当前无 Workshop 事务安装能力;以下命令来自 README,作者标注为本机经验,安装或升级后需重启 dsh web 对应 profile 才生效。

从 npm 安装:

dsh plugin --profile web add dsh-session-deliverables

从 GitHub 仓库安装:

dsh plugin --profile web add github:xiaoran0829/dsh-session-deliverables

从本地源码目录安装:

dsh plugin --profile web add /path/to/dsh-session-deliverables

环境要求

  • DSH Web:作者在 0.2.1-rc.3 上测试通过。
  • Host:Linux / macOS / Windows,Node.js 20+。
  • 会话需通过内置 present 工具声明最终交付物,「文件」视图才以这些声明为主列表来源。

典型用法

README 未给出独立「场景脚本」,可复现流程如下:

  1. 在 DSH Web 中安装插件并重启 dsh web profile。
  2. 在会话中让智能体用 present 声明要交付的文件(Word / Excel / PPT / PDF 等)。
  3. 打开该会话顶栏的 「文件」 视图,确认列表与 deliverables/presented 一致。
  4. 点击行或「下载」,验证浏览器以附件保存;若需要工作区内新生成的文档,勾选 「含工作区成果」 后刷新列表(受扫描预算限制)。
  5. 在原生预览页打开支持的文件时,使用头部 「下载」 按钮走同一下载路由。

开发侧静态检查(仓库 README):

node --check index.js
node --check client.js

适用场景与注意

适合谁:经常在 DSH Web 里做文档 / 表格 / 演示稿交付,希望在一个会话内集中查看 present 成果并附件下载的团队或个人;内外网统一走 GUI 登录态,不想另搭文件服务时也可考虑。

权限与安全:插件以当前 DSH 进程权限运行,声明权限包括 filesystem:read、session:read、http:route;安装前应阅读源码与 MIT 许可证,确认组织策略允许注册 /api/session-files.* 路由。公网反向代理无需为插件单独改配置,但仍依赖 GUI 登录栅栏。

已知限制(README):

  • 主列表只认 present 与会话日志;工作区补充列表有界,不是完整目录镜像。
  • dshWorkshop.lifecycle.dispose 为 unknown,无 dispose 证据。
  • 无单元 / 集成测试;Workshop evidence 四项均为 null。

生态背景:DSH 理念是「一切皆插件」;本插件是社区贡献的 Web 客户端扩展,星标与成熟度以仓库当前状态为准(目录页标注 GitHub 1 stars)。

结尾

dsh-session-deliverables 把会话交付物从「散落在日志与工作区」收拢到顶栏「文件」视图,并在 Host 侧用登录态与路径校验约束下载范围。若你要在 DSH Web 里统一列出 present 成果并一键附件下载,可按上文命令安装并重启 profile。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜