dsh-multimedia-webui-input:爲 DSH Web 客戶端添加文件輸入與工作區附件

前言

在 DSH 的 Web 客戶端裏和 Agent 協作,經常要把本地文件交給對方處理。常見的兩條路都不省心:要麼修改官方 DSH 源碼,給輸入區補一個上傳入口,之後每次升級都要重新維護;要麼在終端裏手動把文件搬進 Agent 工作區,步驟繁瑣且容易漏。

下面介紹的 dsh-multimedia-webui-input 換了一種做法:不修改官方 DSH 源碼樹,在 WebUI 輸入區直接加文件/文件夾選擇與拖放上傳;發送時再把所選資源複製進當前 Agent 工作區,讓 Agent 用普通工作區工具讀寫。本文按功能、安裝與注意事項依次展開。

這是什麼

dsh-multimedia-webui-input 的定位一句話概括:跨平臺的 DSH WebUI 多媒體輸入與工作區附件(Workspace Attachments)。維護者是 LCYLYM,採用 MIT 許可證,分類屬於客戶端。

先說身份:它不是 DSH 官方倉庫的插件,而是一個獨立的社區雙 face 插件(Cordis + dsh.client profile bundle),由 DSH 原生的 profile 插件命令安裝。公開 NPM 包名是 dsh-multimedia-webui-input,GitHub 倉庫是 LCYLYM/dsh-attachments。

核心功能

文件、文件夾選擇與拖放上傳

第一層能力在輸入區。插件在 DSH Web 客戶端中加入文件/文件夾選擇與輸入框拖放上傳,全程不修改官方 DSH 源碼樹。實現上它不 hook、不 patch 聊天 DOM,集成走的是官方 Cordis/Web 表面,細節見後文。

Workspace Attachments:發送時才寫入工作區

第二層是文件怎麼到 Agent 手裏。插件只在用戶發送時上傳:Host 解析活動會話的工作區,把所選資源流式寫入下面的目錄,再由 DSH 的異步引用序列化器把生成的絕對路徑前置到模型消息:

.dsh/tmp/attachments/<session>/<send>/

Agent 側不需要爲這個插件做任何適配,用普通工作區工具就能讀取、編輯、校驗這些文件。如果準備失敗,DSH 會保留草稿與附件芯片。

設置面板中的檢查與清理

文件寫入工作區後需要管理手段。插件的設置面板有一個按需的 Multimedia input & file management 區塊,可以檢查並清理兩類範圍:

1、活動會話;
2、活動工作區內全部會話。

清理操作需要確認,且只刪除帶本插件所有權標記的已提交目錄,不跨工作區,也不刪除未知內容。

安裝與啓用

安裝走 DSH 原生的 profile 插件命令。先啓動官方 DSH Web UI:

npx --yes @deepseek-ai/dsh web

再在另一個終端把插件加入 web profile:

npx --yes @deepseek-ai/dsh plugin --profile web add dsh-multimedia-webui-input

更改 profile 後需要重啓 Web UI。卸載同樣是一條命令:

npx --yes @deepseek-ai/dsh plugin --profile web remove dsh-multimedia-webui-input

版本方面,插件針對當前的 @deepseek-ai/dsh NPM 運行時(README 發佈時爲 0.1.0-rc.6),engines 要求 node ^22.19.0 || >=24.0.0,安裝前先確認本地環境。

註冊表不可用時的回退與本地安裝器

註冊表鏡像不可用時,可以用 GitHub 回退安裝,直接把公開倉庫作爲安裝源:

npx --yes @deepseek-ai/dsh plugin --profile web add github:LCYLYM/dsh-attachments

倉庫裏還保留了一個本地安裝器,但僅用於源碼 QA 與舊版指紋 DSH checkout,公開 NPM 路徑用不到它:

./install.sh

對應的卸載命令是:

node scripts/install.mjs uninstall

這個安裝器在失敗時會回滾。

實現層面的幾個點

安裝前可以瞭解三點實現細節:

1、雙 face 聲明。插件同時聲明官方 dsh.bundle 與 dsh.client 兩個 face,沒有生產依賴;已廢棄的 dsh.plugin.json 清單被有意不再作爲第二個公開契約。

2、集成走官方表面。插件不 hook 或 patch 聊天 DOM,集成使用官方 Cordis/Web 表面:conversation.input.left、conversation.input.overlay、conversation.input.dock、異步引用序列化、settings.section,以及一條同源 Host HTTP 路由。

3、跨平臺。文件處理僅使用 Node 的文件系統能力。

適用場景與注意

適合把 DSH Web 客戶端當主工作界面、需要經常給 Agent 提供文件或整個文件夾的用戶,也適合不想修改官方 DSH 源碼樹的使用場景。

使用前注意:

1、插件以當前 dsh 進程的權限運行,安裝第三方插件前建議先閱讀倉庫源碼、確認許可證(本項目爲 MIT)。
2、上傳只在用戶發送時發生,草稿階段不會向工作區寫入文件。
3、清理功能只刪除帶本插件所有權標記的已提交目錄,不會跨工作區;執行前留意確認對話框中的範圍。

小結

經過上面的步驟,Web 客戶端輸入區就多了文件/文件夾選擇與拖放入口;發送時文件自動進入活動會話的工作區,Agent 用普通工作區工具即可讀寫;設置面板裏還留有檢查與清理的入口。對想給 DSH Web 客戶端補上文件輸入、又不動官方源碼的用戶,這是一個可以直接裝進 web profile 的社區插件。

  • 插件目錄頁(社區收錄):https://www.skillhub.cn/plugins/LCYLYM/dsh-attachments
  • GitHub 倉庫:https://github.com/LCYLYM/dsh-attachments
羽毛球分组比赛记分
小程序二维码

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

小夜