前言¶
在 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