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

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

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

小夜