dsh-pdf:在 DeepSeek Harness 中本地讀取 PDF 文本、元數據和頁碼範圍

前言

當模型需要讀取一份本地 PDF 時,常見做法是先把文本整理進上下文,或依賴外部解析服務。下面介紹 sunshine-lang/dsh-pdf,這是一個 DeepSeek Harness(DSH)插件:在本地解析 PDF,提取文本、元數據與頁碼範圍,解析過程無需 API key、無需網絡。

這是什麼

dsh-pdfsunshine-lang 維護,許可證爲 MIT。它爲 DSH 提供一個 PDF 工具箱,基於 PDF.js / pdfjs-dist 做本地解析,把“讀取 PDF 文本、查看標題和總頁數、按頁碼範圍取內容”變成模型可以調用的工具。

核心功能

  • 提供 pdf_read 工具,逐頁提取文本並帶頁碼標記。
  • 支持頁碼範圍選擇,例如 "1-3,5""all"
  • 讀取文檔元數據(標題)與總頁數。
  • 內置文件字節上限、單次解析頁數上限、單次調用字符上限。
  • 通過 harness 文件系統接縫(ctx.fs)讀取 PDF,讀取行爲受當前 dsh 進程的權限與沙箱策略約束。
  • 基於 PDF.js / pdfjs-dist 本地解析,解析過程無需 API key、無需網絡。

安裝與啓用

package.json 要求 Node >=22.19。從 GitHub 安裝時,使用:

dsh plugin --profile web add "github:sunshine-lang/dsh-pdf"

通過 registry 或 GitHub 安裝時,依賴會自動處理。本地 link: 安裝不會自動安裝依賴,需要手動添加。

典型用法

啓動 Web UI 後,可以向模型提問:

讀取 paper.pdf 的前 3 頁並總結。

也可以詢問某頁內容:

contract.pdf 第 7 頁寫了什麼?

模型會調用 pdf_read。參數 path 必填;可選 pages,取值可以是 "1-3,5""all"。例如:

{
  "path": "paper.pdf",
  "pages": "1-3"
}

當輸出達到上限時,會在頁邊界截斷並給出提示;模型可以用頁碼範圍繼續讀取。

內置限制

dsh-pdf 內置了三個與讀取規模相關的配置項:

  • maxFileBytes 默認 20971520(20 MiB),是整個 PDF 的字節上限(含);超過直接報錯。
  • maxPages 默認 500,是單次調用最多解析的頁數;超出則截斷並提示。
  • maxCharsPerCall 默認 12000,是單次調用返回的最大字符數;結果在頁邊界截斷。

配置無效時,插件加載會直接失敗,並給出可操作的錯誤信息。

適用場景與注意

  • 適合在 DSH 中讀取本地 PDF 文本、查看標題和總頁數、按頁碼範圍分塊處理大文檔。
  • 因爲通過 ctx.fs 讀取 PDF,插件讀取文件時會受當前部署的權限與沙箱策略約束;安裝前應檢查源碼和許可證。
  • 本地 link: 安裝不會自動安裝依賴;通過 registry 或 GitHub 安裝會自動處理。
  • 需要 Node >=22.19

鏈接

倉庫:https://github.com/sunshine-lang/dsh-pdf

羽毛球分组比赛记分
小程序二维码

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

小夜