DeepSeek Harness 插件:`read_document` 工具

DeepSeek Harness (DSH) 侧重于通过插件扩展功能。在模型推理场景中,让模型直接读取本地文档是常见需求。通常这需要借助外部 API 或 Shell 命令。@jiaoqsh/dsh-document 插件在 DSH 内部为模型添加了一个 read_document 工具,将本地文档转换为 Markdown 格式供模型解析。

核心功能

该插件通过 read_document 工具提供文件读取能力,支持多种格式转换和本地处理。

  • 格式支持:支持 Word (.doc, .docm, .docx)、PowerPoint (.ppt, .pps, .pot, .pptx, .pptm, .ppsx, .ppsm)、Excel (.xls, .xlsx, .xlsm, .xlsb)、OpenDocument (.odt, .ods, .odp)、RTF、EPUB、CSV 以及 PDF。
  • 本地转换:转换过程完全在本地运行,使用 @firecrawl/anydoc 处理 Office 格式,使用 @firecrawl/pdf-inspector (WASM) 处理 PDF。无需 API 密钥或网络连接。
  • 分页与元数据:提供 offset 和 limit 分页参数。对于 PDF,支持页面选择(如 “1-3,7”),并返回元数据(总页数、文档类型、需要 OCR 的页面)。
  • 文件系统集成:文件读取通过 DSH 的 ctx.fs seam 进行,兼容任何已挂载的文件系统提供程序和沙盒策略。

安装与启用

安装该插件需要指定一个已存在的 profile(例如 web、headless 或自定义 profile)。

dsh plugin --profile web add @jiaoqsh/dsh-document

安装后,可以通过以下命令验证插件是否加载成功:

dsh --profile web --dump-config

如果需要移除插件:

dsh plugin --profile web remove @jiaoqsh/dsh-document

配置

插件通过 cordis.patch.yml 配置。默认配置会插入一个 document-tools 层。可以通过配置覆盖来调整参数。

配置项 默认值 说明
maxInputBytes 52428800 (50 MiB) 输入文件大小的上限(字节)。在缓冲任何字节之前由文件系统提供程序检查,超出此限制的文件将被拒绝。
readLimit 2000 单次调用返回的 Markdown 行数的默认值和最大值。
maxLineLength 2000 返回行文本的最大字符数。超出部分会被截断。
maxOutputBytes 51200 (50 KiB) 单次调用返回的行文本字节上限。
pdfMaxPages 100 单次 pages 选择中可命名的最大不同页数。
pdfProfile fidelity PDF Markdown 配置文件:fidelity 保留源结构,compact 生成更少的 token。

使用示例

模型调用 read_document 工具的接口如下:

read_document(file_path: string, offset?: number, limit?: number, pages?: string)
  • file_path:通过文件系统后端解析。相对路径相对于调用会话的工作区解析。
  • offset:返回 Markdown 的起始行号(默认为 1)。
  • limit:返回的行数(默认和最大值为 readLimit)。
  • pages:仅 PDF 支持。1 基准的页码或范围,如 "1-3,7"(最多 pdfMaxPages 个页面)。默认为所有页面。

返回格式

工具返回的格式包含文档路径、格式、内容以及 PDF 特有的元数据。

<path>/work/report.pdf</path>
<format>pdf</format>
<pdf>5 pages, text-based; showing pages 2, 4</pdf>
<content>
1: <!-- Page 2 -->
2: 
3: Revenue grew 12% year over year.

(Showing lines 1-3 of 8. Use offset=4 to continue.)
</content>

错误处理

工具将错误视为模型术语中的工具错误。常见错误包括:
* 不支持的扩展名。
* 在非 PDF 文件上使用 pages 参数。
* 文件未找到、不是常规文件、超过 maxInputBytes、已加密、损坏或内容不可提取(如扫描 PDF)。

限制与注意

  • 无 OCR 支持:插件不会执行 OCR。如果 PDF 没有 text layer,会返回警告但不会读取内容。完全扫描或纯图片的 PDF 会报错。
  • 性能:PDF 转换在每次调用时运行在独立的 worker 线程中,启动开销约 50ms。Office 格式转换在 libuv 线程池中运行,一旦启动无法取消。
  • 布局问题:布局密集的 PDF 可能会将段落合并为长行,随后被 maxLineLength 截断。
  • 技术栈:使用 WASM 构建 pdf-inspector,而非原生二进制。需要 Node.js 版本 >= 22.19。
  • 依赖管理:peerDependencies 不会随 profile 自动安装,需确保环境已正确配置。

总结

该插件为 DSH 提供了本地、安全且无需网络交互的文档读取能力。通过 Markdown 转换和分页机制,模型可以高效处理长文档。开发者可以根据实际需求调整配置参数,以平衡性能和返回内容的质量。

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

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

小夜