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。

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

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

小夜