前言¶
在 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 原文要点):
- 只读,不写、不改文档。
- PDF 只取文本层;扫描件(纯图片)无文字时需先 OCR 再读。
.xlsx按 sheet 摊平读,不保留合并单元格结构。- 单文件大小上限由配置
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 三步,并把输出压在字符预算内,更符合上下文工程的做法。