dsh-file-resource:DeepSeek Harness Web 的本地文件輸入插件

前言

在 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
文本與代碼 常見文本與代碼文件

使用前注意兩條限制:

  • 舊二進制 DOCXLSPPT 不支持,需先另存爲 DOCXXLSXPPTX
  • 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、幻方無官方從屬關係)
羽毛球分组比赛记分
小程序二维码

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

小夜