dsh-file-upload:DSH 文件上傳與文檔讀取插件

前言

在 DSH(DeepSeek Harness)裏和智能體協作時,經常需要把本地文件交給模型:PDF 報告、表格、截圖、代碼目錄。常見做法是手動複製粘貼內容,或依賴外部腳本先把文檔轉成文本。前者對大文件和格式複雜的文檔不現實,後者又要單獨維護轉換鏈路。

dsh-file-upload 是 HongMing-Huang 維護的 DSH 文件消息插件,在 Web 界面提供類似 Claude / Codex 的上傳體驗,並把文檔按需轉爲 Markdown 供智能體讀取。下面介紹它的定位、能力與安裝用法。

這是什麼

dsh-file-upload 是 DeepSeek Harness 的 file-message 插件,面向 Web 端工作流。維護者 HongMing-Huang,當前 npm 版本 0.5.2,MIT 許可證,GitHub 倉庫約 14 stars。

插件解決的核心問題:把「拖文件進對話」和「智能體讀文檔」串成一條零配置鏈路——上傳後消息裏出現 @relative/path 引用(類似 OpenAI Codex),智能體通過 read_document 工具按需讀取,文檔在讀取時轉爲 Markdown,而不是把整份文件原文塞進輸入框。

上傳與附件展示

插件在 composer 工具欄增加回形針按鈕,並支持全局拖放 overlay(鬆手即附加)、粘貼附加、多文件上傳。

上傳後,小文本文件(默認 8 KB 以內)會直接 inline 進 composer;較大的文檔以附件卡片展示,卡片帶類型色標(PDF 紅、DOC 藍、XLS 綠、TXT 灰、ZIP 紫、JSON 金),顯示文件名與大小,可單獨移除。

在 composer 裏輸入 @ 可彈出已上傳文件列表,按相對路徑選擇後插入 mention,與 Codex 的 @ 引用習慣一致。

文檔轉 Markdown(內置 MarkItDown)

文檔讀取不依賴用戶本機安裝 Python 或額外下載。插件內置 Microsoft MarkItDown 的 TypeScript 移植(markitdown-node),覆蓋 20+ 格式:PDF、DOCX、PPTX、XLSX、HTML、CSV、JSON、XML、RSS、Atom、ZIP、Jupyter notebook;圖片默認走 OCR(Tesseract,110+ 語言);音頻轉寫需模型憑據。解析在本地完成,無網絡調用。

若本機已有官方 MarkItDown CLI,或通過配置指定路徑,插件會優先使用 CLI(可額外支持 EPUB 等);未配置時始終回退到內置引擎。啓動日誌示例:

[dsh-file-upload] Document  Markdown ready: bundled MarkItDown engine (20+ formats, image OCR)  fully packaged, no downloads, no Python.

可選配置項 markitdownBin 指向 CLI 路徑;留空則僅用內置引擎。

圖片處理

上傳時插件會檢測當前會話的模型能力,分三條路徑:

  1. 多模態模型(聲明 image 輸入,如 GPT-4o、Qwen-VL、Claude、Gemini):走官方 read_image 工具,圖片直接進入模型上下文。
  2. 已安裝 vision bridge(如 dsh-vision-proxy,自動檢測其路由的 image 輸入聲明):同上。
  3. 純文本模型(DeepSeek 官方 API 爲 text-only):插件通過 vision discovery chain 自動生成圖片描述(「講解圖片」),隨消息插入,讓文本模型能基於描述推理。

Vision discovery chain 默認順序:顯式配置的 visionEndpoint / visionModel → 本機 Ollama(http://localhost:11434,自動選用 VL 模型如 DeepSeek-VL2,圖片不出本機)→ 使用 dsh credentials seam 中 OpenAI 兼容端點的 key。

read_document 工具

智能體通過 read_document <path> 讀取上傳文件。轉換後的 Markdown 支持分頁(offset / limit,單次最多 2000 行),帶行號;有按字節預算的 LRU 解析緩存(文件變更時失效),讀取走 ctx.fs,繼承沙箱與 fs-observation 策略。

典型用法:

  1. 點擊 composer 回形針,或將文件拖入窗口任意位置;
  2. 小文本直接出現在輸入框,文檔顯示爲附件卡片,消息攜帶路徑引用;
  3. 智能體執行 read_document <path>,按需分頁讀取 Markdown 內容。

安全與存儲

上傳路由僅 loopback;文件名經 sanitize;文件存放在會話隔離目錄 .dsh-uploads/<sessionId>;內容按 sha256 去重;併發上傳有上限(默認 4);未引用上傳默認 7 天 TTL,可按配置定期 sweep。

安裝與啓用

在 DSH Web profile 下安裝:

dsh plugin --profile web add dsh-file-upload
# restart dsh web

安裝後重啓 dsh web 進程即可。插件聲明零配置默認可用,無需單獨裝 Python 或挑選後端。

配置項(可選)

默認值已覆蓋常見場景,僅在需要時調整。主要字段如下:

字段 默認值 說明
uploadMaxBytes 25165824(24 MB) 單文件上傳上限
inlineTextLimit 8192(8 KB) 直接 inline 進 composer 的文本上限
readLimit 2000 單次 read_document 最大行數
uploadTtlMs 604800000(7 天) 未引用上傳存活時間
markitdownBin '' 可選 MarkItDown CLI 路徑
visionEndpoint '' 圖片描述用 vision 端點;空則自動發現
visionModel '' Vision 模型 id;空則自動

完整配置表見 GitHub README。

適用場景與注意

適合在 DSH Web 工作流中需要頻繁把本地文檔、表格、截圖交給智能體分析的場景:代碼審查附帶 PDF、數據分析附帶 XLSX、純文本模型下仍需理解截圖內容等。

使用前注意:插件以當前 dsh 進程權限運行,安裝前應閱讀源碼與 MIT 許可證,確認上傳與文件讀取範圍符合你的安全要求。Node 引擎要求 >=22.6.0

SkillHub 社區目錄(獨立站點,與 DeepSeek / 幻方無從屬關係)收錄了該插件,分類爲工作流。倉庫與文檔:

  • 目錄頁:https://www.skillhub.cn/plugins/HongMing-Huang/dsh-file-upload
  • GitHub:https://github.com/HongMing-Huang/dsh-file-upload
羽毛球分组比赛记分
小程序二维码

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

小夜