dsh-doc-read:在 DSH 里按页、按关键词读文档,少占上下文

前言

在 DeepSeek Harness(DSH)里让智能体读合同、报告或表格时,常见做法是把整份文件打进上下文。页数一多,窗口很快被占满,后面的推理要么被截断,要么不得不反复裁对话。社区插件 dsh-doc-read(维护者 dcd887)提供三个文档工具,按「先粗后细」查内容:先看每页一行预览,再按页范围读纯文本,或只用正则命中行定位事实。支持 PDF、DOCX、XLSX、TXT 等格式,并带字符预算,避免一次把整本文件读进来。

下面介绍插件定位、能力与安装用法;事实以 GitHub 仓库 README 为准。

这是什么

dsh-doc-read 是面向 DSH 的省 token 文档读取器。一句话:查一个数或一条条款时,不必把几百页 PDF 全文塞进上下文。

在 SkillHub 目录 中归类为「模型推理」;当前仓库星标为 0。许可证 MIT,package.json 版本 1.0.0,要求 Node.js ≥ 18。插件以当前 dsh 进程权限访问你指定的本地路径,安装前建议浏览源码与许可条款。

三个工具与推荐顺序

README 将三个工具按「越查越窄」排列:

工具 作用 适用时机
doc_outline 列页码、每页一行预览、总页数与字节数 先摸清文档结构
doc_read 按页范围读纯文本,带页码标记 已确定要读的页
doc_grep 只返回命中行与页码(支持正则) 只找某个关键词或模式

支持格式:.pdf、.docx、.xlsx、.txt、.md、.csv。三个工具都带字符预算;结果中会提示「下一页从哪读」,降低一次性撑爆窗口的风险。

安装与启用

在 dsh profile 目录执行:

dsh plugin add github:dcd887/dsh-doc-read

然后在 cordis.patch.yml 中启用插件(包内自带 cordis.patch.yml,:plugin 名与本包一致)。依赖 pdfjs-dist 由 pnpm 自动安装。

本地开发可 link,例如:

# package.json
"dependencies": { "dsh-doc-read": "link:../dsh-doc-read" }

DSH 生态是「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

doc_outline:先看目录式预览

先了解文档有多长、各页开头大致内容:

{ "path": "D:/docs/report.pdf", "maxPages": 60 }

返回示例(每页一行):

p.12  | 第三章 违约责任 ............
p.13  | 3.1 甲方未按期交付的,每逾期一日……

doc_read:按页范围读正文

已知页码后,只读该区间:

{ "path": "D:/docs/report.pdf", "from": 13, "to": 16, "maxChars": 6000, "pageChars": 1500 }

maxChars 为本次调用总字符预算,pageChars 为单页上限;两者有默认值,一般可不改。

doc_grep:按关键词或正则定位

只需命中处时:

{ "path": "D:/docs/report.pdf", "pattern": "违约金", "limit": 30, "snippet": 80 }

需要正则时加 "regex": true;大小写默认不敏感(ignoreCase 默认 true)。scanPages 限制扫描页数,默认 300,长文档可调大。

适用场景与限制

适合:智能体在工作流里需要引用本地合同、研报、表格中的片段,又不想把整文件放进上下文;先 doc_outline 再 doc_read 或 doc_grep 的组合与 README 描述的设计一致。

限制(README 原文要点):

  1. 只读,不写、不改文档。
  2. PDF 只取文本层;扫描件(纯图片)无文字时需先 OCR 再读。
  3. .xlsx 按 sheet 摊平读,不保留合并单元格结构。
  4. 单文件大小上限由配置 maxBytes 控制(默认见源码 DEFAULTS)。

自测与验证

维护者在仓库提供自测,不依赖自备大文件:

pnpm install      # 需要 pdfjs-dist
pnpm test         # node selftest.mjs

test/fixtures/ 含 sample.pdf、sample.docx、sample.txt 等小样例;自测对每个文件跑三个工具并打印 PASS/FAIL。用大目录压测可设:

DOC_READ_SAMPLES=/path/to/pdfs pnpm test

结尾

若你在 DSH 里经常让模型「打开整份 PDF 再答一个问题」,dsh-doc-read 把读取拆成提纲、分页与 grep 三步,并把输出压在字符预算内,更符合上下文工程的做法。

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

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

Xiaoye