前言¶
在 DeepSeek Harness Web 裏,圖片附件有原生流程,文檔則沒有現成入口。想讓模型看一份 PDF 報告或一個 XLSX 表格,常見做法是把文本複製出來粘進輸入框:長文檔容易被截斷,表格結構和排版也會丟失;自己搭一套上傳解析管線,又要處理存儲、格式支持和上下文佔用等問題。
DSH 的理念是「一切皆插件」,文件輸入這件事同樣可以交給插件。下面介紹的 dsh-file-resource 做的就是這件事:在輸入框原有 + 菜單頂部增加 attach 入口,文檔在本機解析爲會話隔離的私有資源,模型通過一個受限讀取工具按需讀取。
這是什麼¶
dsh-file-resource 是 DeepSeek Harness Web 的本地文件輸入插件,由 liznee 維護,許可證爲 MIT。倉庫 package.json 中的版本號爲 0.4.9,更新日誌最新條目爲 v0.4.9(2026-08-29)。
它解決的問題可以概括爲三件事:
1、給 Web 輸入框一個統一入口,圖片、文檔、文本和常見代碼文件都能選;
2、文檔在本機解析爲會話隔離的私有資源,模型只在需要時通過受限工具讀取;
3、每次讀取的字符數有默認值和硬上限,上下文佔用可控。
核心功能¶
attach 入口與文件選擇¶
插件不再單獨增加一個按鈕,而是在輸入框原有 + 菜單頂部增加 attach。一個文件選擇器同時接收圖片、文檔、文本和常見代碼文件,可多選;也支持全局拖拽(把文件拖到窗口任意位置)和在輸入框 Ctrl+V 粘貼文件。
文檔以卡片形式顯示在圓角輸入框內部,顯示真實上傳進度與本地解析狀態;卡片右側的灰色圓形 × 可取消上傳或移除文件。
圖片與文檔分開處理¶
圖片仍由 Harness 原生的預覽、刪除、持久化和多模態模型流程處理,插件不接管這條鏈路。文檔解析則完全在本機完成,上傳或解析本身不調用模型、無遙測。
@文件名 引用與分欄預覽¶
發送消息(包括只傳文件、不輸入文字)時,插件自動在消息末尾附上 @文件名 引用:聊天記錄裏能直接看出這條消息帶了哪些文件,模型按文件名對應到資源 ID 再讀取。
點擊聊天中的藍色 @文件名,右側以分欄方式預覽文件內容,Excel/CSV 顯示帶格線的表格,× 或 Esc 關閉。發送過的文件即使已從輸入框移除附件卡,本會話內仍可預覽。
受限讀取工具 read_uploaded_resource¶
插件固定增加一個讀取工具 read_uploaded_resource。模型不是一次性拿到文檔全文,而是在需要時調用這個工具;默認每次最多返回 8,000 字符,硬上限 24,000 字符。
支持格式與限制¶
| 類別 | 格式 |
|---|---|
| 文檔 | PDF、DOCX、XLSX、PPTX、ODT、ODS、ODP、RTF、EPUB |
| 文本與代碼 | 常見文本與代碼文件 |
使用前注意兩條限制:
- 舊二進制
DOC、XLS、PPT不支持,需先另存爲DOCX、XLSX、PPTX。 - PDF 只讀取文字層,純掃描件不會自動 OCR。
本地存儲與緩存¶
容量與緩存規則:
- 單文件上限 50 MiB;單次選擇上限 20 個文件、合計 200 MiB。
- 總緩存上限 1 GiB,按內容 SHA-256 去重;達到上限按 LRU 只清理已發送的舊資源。
- 已解除引用的對象保留最多 7 天。
默認緩存路徑:
$DSH_HOME/resources/dsh-file-resource/v1
未設置 DSH_HOME 時爲:
~/.dsh/resources/dsh-file-resource/v1
安全與隱私¶
- 瀏覽器接口要求同源請求與插件專用請求頭。
- 擴展名、聲明類型、文件魔數交叉驗證,拒絕僞裝文件。
- ZIP/Office 文件做防解壓炸彈處理。
- PDF.js 固定爲已修復版本,並關閉腳本與動態求值。
- 插件不包含統計、遙測或第三方上傳;只有用戶發送消息後,模型提供方纔按正常 Harness 流程收到內容。
安裝與啓用¶
環境要求與當前 DeepSeek Harness 一致:Node.js 22.19+ 或 24+;README 標註 v0.1.1 已在 DeepSeek Harness 0.1.1-rc.1 上驗證。
從 npm 安裝:
dsh plugin --profile web add dsh-file-resource
也可以直接安裝對應的 GitHub Release:
dsh plugin --profile web add github:liznee/dsh-file-resource#v0.4.9
安裝完成後先驗證配置是否寫入,再重啓服務:
dsh --profile web --dump-config
輸出中應出現 # == dsh-file-resource。隨後重啓 dsh web,從輸入框左下角的 + 選擇 attach。
不再使用時卸載:
dsh plugin --profile web remove dsh-file-resource
本地開發與驗證¶
如果修改了源碼,可在本地構建並安裝:
npm install
npm run build
dsh plugin --profile web add C:\absolute\path\to\dsh-file-resource
倉庫自帶測試,改動後建議完整跑一遍:
npm test
npm run test:coverage
npm audit --omit=dev
npm run pack:check
典型用法¶
經過上面的步驟,插件已啓用。一次完整的使用流程如下:
1、點擊輸入框左下角的 +,選擇頂部的 attach,一次選擇多個文件;也可以把文件拖到窗口任意位置,或在輸入框按 Ctrl+V 粘貼。
2、等附件卡片上的上傳進度與解析狀態完成;期間可用卡片右側的 × 取消上傳或移除文件。
3、正常發送消息,也可以只傳文件不寫字;消息末尾會自動附上 @文件名。
4、點擊聊天中的藍色 @文件名,在右側分欄查看內容;不需要時按 × 或 Esc 關閉。
適用場景與注意¶
適合的場景:經常需要把 PDF、DOCX、XLSX 等文檔交給模型,又不想手動複製粘貼文本;希望文檔解析留在本機、附件鏈路上沒有遙測。
使用前注意:
- 插件以當前 dsh 進程的權限運行,安裝前建議自行檢查源碼與許可證(MIT)。
- 舊格式文件先轉換,掃描版 PDF 不會自動識別文字。
- 發現安全問題請按倉庫 SECURITY.md 私下報告,不要在公開 Issue 中披露細節。
小結¶
dsh-file-resource 做的事情不復雜:把本地文檔變成會話內可引用、可預覽、模型可按需讀取的資源,並把解析過程留在本機。如果你在用 DeepSeek Harness Web 處理文檔,值得一試。
- GitHub 倉庫:https://github.com/liznee/dsh-file-resource
- 社區目錄頁:https://www.skillhub.cn/plugins/liznee/dsh-file-resource (社區目錄爲獨立站點,與 DeepSeek、幻方無官方從屬關係)