DeepRead 是什么
DeepRead 是一个「证据优先」的阅读工具,以 dsh-deepread 为包名发布,版本 1.0.1,采用 MIT 许可证。它同时提供两种互相兼容的形态,而两者的区别几乎决定了本页后面所有的说明。
第一种是便携式 Agent Skill,面向 Codex、Claude Code 以及其他兼容 Agent Skills 的工具。它没有任何运行时依赖:由智能体使用自己的文件与网页工具,按同一套证据优先的阅读流程完成分析。第二种是 DeepSeek Harness 宿主插件,面向 DSH Web、DSH headless 与 dsh-TUI,提供 deepread 工具、PDF 抽取、可选的持久化/后台任务/Web 路由、批量对比、成本预估以及 HTML 与 FreeMind 导出;浏览器客户端是可选且仅限 Web 的入口。
README 明确说明两种形态的产物可以互换:导出的 .md 或 .html 交给任一宿主的智能体都能继续使用。但区别依然重要——Skill 形态借用的是你自己智能体的模型与工具,而插件形态则是「由插件直接调用模型来跑流水线」。
实际安装了什么
包的身份信息来自 package.json:名称 dsh-deepread,版本 1.0.1,"type": "module",许可证 MIT,主入口 ./lib/types/index.js,类型文件 ./lib/types/index.d.ts,仓库地址为 github.com/xiehuan123/dsh-deepread。
dsh 字段声明了三件事。bundle.patch 指向 ./cordis.patch.yml,也就是把自己插入组合(composition)的那份文件;client 声明 platform: web,并注入两个客户端包 @deepseek-ai/dsh-api-session-controller 与 @deepseek-ai/dsh-client-ui-conversation,因此浏览器那一半是可选的、且只在 Web 上生效;skills 指向 ./skills/dsh-deepread/SKILL.md,意味着打包的 Skill 与插件同在一个 npm 包里。README 还补充了第四个入口:dsh-plugin.json 里的 dsh-TUI Community Consensus v0.15 清单,它加载宿主入口 lib/types/index.js,并且刻意不加载 lib/client.js。
宿主依赖不打进包里。@deepseek-ai/cordis、@deepseek-ai/dsh-storage-domain、@deepseek-ai/dsh-tools、@deepseek-ai/schemastery、react(^18.2.0)与 zod 都写在 peerDependencies 里,版本标记为 *,README 将其解释为「跟随宿主版本」。发布文件清单里还包括 src/**/*.ts、test/、examples/、docs/、assets/、两份 README,以及 .claude-plugin/、.codex-plugin/ 和 plugin.json 等清单文件。
有两处「没有」值得点名:包内不存在 permissions 字段,两份来源也都没有记载安全复核、审计或审核流程。本条目上的 security: unverified 是这个目录自己的字段,不是该包自己作出的声明。
处理流水线:输入、切分与输出位置
官方记录在案的输入只有三种。url 必须是 mp.weixin.qq.com 上的稳定微信公众号文章链接;README 明确表示不会去抓取知乎、掘金这类带反爬页面的站点,而是让你把正文粘贴进来。path 是工作区文件路径,参数表列出 .txt、.md、.markdown、.html、.pdf 五种扩展名。最后是直接粘贴的 text。
这里必须纠正一个读者容易产生的假设:EPUB、MOBI、DOCX 以及任意网页 URL 都不在文档所述的输入清单里,README 也没有描述任何可插拔的抓取器来补上这些格式。
内容切分由配置决定,而不是藏在内部、你无法干预的规则里。chunkChars 默认 6000,maxParts 默认 20,maxInputChars 默认 400000,timeoutMs 默认 900000(十五分钟)。默认模式 deep 会把长篇材料自动切段,逐段精读后再汇总;book 按部分逐段处理整本书;batch 接受 2–10 份文档,每份可以是链接、路径或文本,并额外产出跨篇报告,包含对比矩阵、冲突、互补与综合结论。
PDF 文本由 README 所称的「内置纯 JS 抽取器」获得,支持中文 ToUnicode 映射、页码标记,以及对象流/交叉引用流。整个 manifest 里没有出现任何外部 PDF 可执行程序,package.json 也没有声明这类依赖——抽取器被描述为包内自带的一部分。
输出默认先停留在会话里:export: none 是默认值,而 export: md | mm | html | all 会把 Markdown 报告、可被 XMind 导入的 FreeMind .mm 思维导图,以及带明暗主题的 HTML 报告写入工作区的 deepread-output/ 目录。抓取到的文章全文会按官方 storageDomain 约定缓存进 deepread_url_cache 域(版本 1,经 zod 校验,记录字段为 url、text、fetchedAt),存放在 $DSH_HOME/storages/ 下并可跨进程重启保留;默认 TTL 为 168 小时,上限 200 条,过期条目在写入时惰性清除。如果某个组合没有提供 storageDomain,缓存会退化为进程内状态。Web 面板的「最近阅读」历史只存在 localStorage 里,不经过服务器。
证据、知识地图,以及「置信度」的真实含义
主张与证据的配对是这款产品的核心。重要主张会配上原文引用与可回溯的位置标记,README 将其呈现为 【第N页】;报告还带一张专门的引文表,把论点定位回原文。当原文并不支持某个主张时,文档说明 DeepRead 会写明「原文未提供证据」,而不是替你补上。
map 模式是这套结构最完整的呈现。文档列出的产出包括:核心问题与核心结论;十类内容分类(结论、子主张、机制、事实、数据、案例、隐含前提、反驳、局限、可执行建议);逐条主张与证据的配对;含数值与单位、时间范围、样本、基线、来源、位置等要素的关键数据表;八种关系标签(支持、反驳、导致、解释、依赖、例证、对比、限制);Mermaid 思维导图;FreeMind 大纲;以及 5 个主动回忆问题。所以这里的「知识地图」指的就是这一组具体产物,而不是一个可交互的图谱数据库,也不是自动建立双链的笔记库。
「置信度」这个词需要仔细读。README 称其为「四个置信度等级」:作者意图、原文事实与数据、合理推断、无法验证。它们是对某段内容属于哪一类陈述的分类标签,在抽取阶段由模型打上。两份来源都没有为这些标签定义数值刻度、阈值、聚合规则或测量程序,也没有对它们做过任何与真值对照的校准。请把它们理解为模型对某段内容性质的陈述性判断——不是概率,也不是可以跨文档比较的分数。
特性表里另有一个真正被测量过的量,很容易与此混淆。「Self-calibration(自校准)」指的是吞吐速度,而不是主张本身:插件会根据每次模型调用实测每秒 token 数,并在存储中维护滚动平均值,使时间与成本预估逐渐贴近你所用供应商的真实速度;冷启动默认值按模型家族给出(DeepSeek/Kimi/Qwen 约 100–110 tok/s,Claude 约 70,GPT 约 90)。这项校准关心的是「读一篇要多久、要花多少钱」。
它会调用模型吗?用谁的模型?
在插件形态下,会。README 直接对比了两种形态:Codex/Claude 的 Skill 是「方法论」形态,由智能体用自己的工具完成分析;而 DSH 的 deepread 是「工具」形态,「由插件直接调用模型来跑流水线」。因此模型参与的范围覆盖抽取、结构化生成与判断:摘要、主张与证据配对、关系标签、十类分类、数据表字段与回忆问题都由模型调用产出;模式对照表也把 quick 计为单次调用,把 map、book、feynman 计为多次调用。
「用谁的模型」这个问题,来源只给了间接答案。README 与 package.json 都没有点名任何供应商或模型,也没有说 DeepRead 自己需要 API Key。README 说的是:速率与延迟默认值「按模型家族挑选,并且可以被显式覆盖」,预估会收敛到「你实际使用的供应商速度」,自定义组合也可以自行提供这些值——这些线索指向宿主 Harness 已经配置好的模型路由,而不是 DeepRead 自带的某个模型。由于流水线要跑起来,文档内容必然会被送到那条路由上,也就必然被该 profile 指向的供应商处理。两份来源都没有说明那是哪家供应商、位于哪个区域、保留多久,也没有任何隐私政策,因此这些一律按「未说明」对待。
网络访问还有一条明确记录的路径。抓取微信公众号链接需要在 profile 里挂载 HTTP provider(README 点名 @deepseek-ai/dsh-web-fetch-http),并且因为微信会返回反爬验证页,建议给它配置浏览器 User-Agent。已缓存的链接在 refresh 为 false(默认)时会直接复用,不产生网络访问。
运行要求
package.json 的 engines 字段为 ^22.19 || >=24,README 转述为「需要 Node.js 22.19 或 24 及以上」。由于 Harness 的 profile 插件安装流程底层调用 pnpm,机器上必须存在 pnpm。
宿主版本下限在 README 里是一张兼容性表,而不是一个单一数字。DeepSeek Harness Web 0.1.2-rc.1 是经过验证的基线,对应固定 DeepRead 1.0.1;更旧的 0.1.0-rc.7 Web 运行时应继续使用 DeepRead 1.0.0。DeepSeek Harness headless 0.1.0-rc.7 受支持,但不带预算 HTTP 路由;dsh-TUI 最低 0.8.1(Community Consensus v0.15),既没有 Web 路由也没有浏览器界面。省略 storageDomain 的自定义组合同样可用,此时 URL 缓存与校准退化为进程内状态。本条目 frontmatter 里的 dshTarget 标记来自另一套版本写法,与 README 表中的版本名不可直接比较;要确认「哪个 DeepRead 配哪个宿主」,以 README 的表格为准。
存储与状态分布在三处:导出文件在工作区的 deepread-output/,URL 缓存在 $DSH_HOME/storages/,最近阅读历史在浏览器 localStorage。cordis 行可调的参数包括 timeoutMs(900000)、chunkChars(6000)、maxParts(20)、maxInputChars(400000)、cacheEnabled(true)与 cacheTtlHours(168,设为 0 即关闭缓存)。
已知限制与必须说明的注意事项
- 没有 OCR。 README 的 Skill 说明是:只有扫描层的 PDF 应先做 OCR。抽取器依赖文本层,包里也没有记录任何 OCR 或视觉环节。
- URL 只支持微信公众号。
mp.weixin.qq.com稳定链接是唯一记录的链接输入;带反爬页面的站点,README 的建议是粘贴正文。 - 文件格式止于五种扩展名,EPUB/MOBI/DOCX 不在其中。
- 批量上限为 2–10 份文档。
- 体量上限是默认值,不是保证。
maxInputChars400000、maxParts20、timeoutMs900000 共同框定一次运行;README 没有说明超出这些上限时会发生什么,也没有公布book模式的页数上限。不要假设任意长度的书都能读完。 - 没有准确率数据。 README 指向三份由公开文章真实生成、并非手写样稿的报告,这能说明它确实会运行,但不构成基准测试、精确率数字或错误率。没有任何与真值对照的评测。
- 无法验证的主张只是被标注,而不是被解决。 标出「原文未提供证据」只说明原文缺乏支撑,并不等于该主张为假。
- 缓存会把文章全文写到磁盘上,存放在
deepread_url_cache域,而 README 对是否加密只字未提。 - 升级警告。 在替换
0.5.4之前,README 要求先阅读升级与回滚指南,其中包含浏览器 origin 与DSH_HOME保留条件。 - 已知的 pnpm 兼容问题。 某些 DSH 版本把每个 profile 建成 pnpm workspace,却在转发 add/remove 时没有显式标记 workspace root,受影响的 pnpm 版本会在 DeepRead 任何代码运行之前就以
ERR_PNPM_ADDING_TO_ROOT失败。记录在案的修复是仅对那次失败操作重试并加上-w(即--workspace-root);README 同时明确不要删除 pnpm 缓存或手工改node_modules。至于哪些 pnpm 版本受影响,README 没有说明。 - 遥测:有或没有,两份来源都未提及。
什么时候用它,什么时候不要用
当你需要在转述之前先核实一条主张时,用它。主张与证据的配对、引文表,以及「原文未提供证据」这类显式标注,正是为研究与事实核查准备的;map 模式就是为「我打算引用它」这个场景而存在。如果你的目标是学习和记住内容而不是写摘要,用 feynman;如果你确实需要覆盖整本书而不只是翻几章,用 book。如果你本来就在 DSH Web profile 上工作,面板里的预算预估与后台任务的进度汇报,是普通摘要工具不会给你的便利。
有几种情况要谨慎。来源是没有文本层的扫描版 PDF,就别用它——记录在案的路径是你自己先做 OCR,插件不会代劳。EPUB、MOBI、DOCX,或者微信之外的普通网页,也不在支持范围内,除非你愿意把正文粘贴进去。不要把它的四个置信度标签当作校准过的概率展示给任何人:那只是模型对段落性质的判断,来源没有公布任何校准。不要在没有明确数据政策的前提下,把私人或客户文档交给它——两份来源都没有描述这样的政策。最后,如果你只想要一句话的梗概,普通摘要工具可能更划算:DeepRead 的价值出现在你需要「从结论回溯到页码」的那条链路时。
FAQ
所谓的「置信度」是校准过的概率吗?
不是,来源也不支持这样理解。README 把作者意图、原文事实与数据、合理推断、无法验证这四个等级称作「置信度等级」,但没有定义数值刻度、阈值或测量程序,也没有公布任何校准或准确率数据。它们是在抽取阶段为段落性质打的分类标签,属于模型的陈述性判断,而不是测量结果。README 里另有一个名为「Self-calibration(自校准)」的特性,与置信度无关:它测量的是每秒 token 数,用来改进时间与成本预估。
DeepRead 需要 API Key 或指定模型吗?
两份来源都没有这样说。README 没有点名任何供应商或模型,也没有为 DeepRead 本身提出 API Key 要求;它描述的是「按模型家族挑选」的速率与延迟默认值,以及会收敛到「你实际使用的供应商速度」的预估——这意味着插件使用的是 Harness profile 已经配置好的模型路由。来源完全没有说明的是:文档正文最终由哪家供应商接收,以及适用什么保留期或隐私条款。
完全不配置模型能用吗?
唯一记录在案的「无需模型」操作是成本预估:estimate: true 会在不调用模型的情况下给出各模式的预估 token 消耗、模型调用次数与预计耗时,依据是「CJK 约 0.6 token/字符」的启发式;estimate 模式还会对 PDF 前两页取样,从而对大文件做外推。来源没有描述任何在不调用模型的情况下产出报告、知识地图或引文表的方式。至于便携式 Agent Skill 形态,分析是由你自己的智能体完成的,所以那种形态同样需要一个带模型的智能体——它只是不自带运行时。
到底能喂给它哪些文档?
mp.weixin.qq.com 上的微信公众号文章链接、工作区里扩展名为 .txt、.md、.markdown、.html、.pdf 的文件,以及粘贴的文本;batch 一次可接受 2–10 份。除此之外——其他网站、EPUB、MOBI、DOCX——都不在记录的参数表里;对于带反爬页面的站点,README 的建议是粘贴正文。
扫描版 PDF 和超长书籍它处理得了吗?
扫描版 PDF 处理不了:README 说只有扫描层的 PDF 应先做 OCR,而包里不存在 OCR 环节。超长书籍有一条记录在案的路径——book 模式按部分处理整本书——但运行仍受 maxParts(20)、maxInputChars(400000)与 timeoutMs(900000)这些默认值约束,README 也没有说明超出这些边界时会发生什么。请把超长书籍当作未经检验的地带,而不是必然成功。

