dsh-lit-library: DSH Literature Library with Budget Indexing and Verbatim Checking

前言

在 DeepSeek Harness(DSH)里用模型读论文,常见麻烦往往不是「读不懂」,而是读多了之后检索变难、笔记里的数字回原文对不上、索引越写越长却没人再看。把文献丢进普通文件夹或随手记 Markdown,很难用固定规则检查「索引是否膨胀」「摘录是否字面存在」。

下面介绍社区插件 dsh-lit-library(维护者 hellocyhgy,SkillHub 分类:记忆)。它不做 PDF 阅读器,也不做文献检索;只做一件事:导入论文、抽取全文、每条文献占索引一行,并在反复使用后仍保持可检索、可核对、不随意膨胀。

这是什么

dsh-lit-library 是面向 DSH 的受控文献库插件。库按项目区划分:一个课题一个完整小库,顶层还有一张总览,不同课题的文献与索引预算互不挤压。

插件当前版本为 0.2.1(见 GitHub 仓库 package.json),许可证 MIT。运行环境需要 Node >=20,依赖 unpdf、fflate 做 PDF 文本层抽取;扫描件 OCR 需另行配置外部命令(见后文)。

核心功能

README 中列出的工具与职责如下。

工具 作用
lit_init project=<名> / register=<旧库根> 建项目区;或原地接管旧库(只写 .lit.json,不动原件 / txt / notes)
lit_import project=<名> paths=[...] 导入:去重 → 抽文本(扫描件未配 OCR 则登记「待 OCR」)→ 预算预检 → 追加一行索引
lit_find tags=[...] 按标签查文献(同标签内规范名 + 别名 OR,多标签默认 AND)
lit_prefs 读 / 改项目偏好(如 askBeforeImport、预算、页偏爱等)
lit_check project=<名> 或 all=true 体检:索引超限、孤儿 note、断链、摘录逐字回查;all 还核对顶层总览

辅助工具包括 lit_repair(补 OCR / 重试失败行)、lit_migrate(单表 → 分片)、lit_undo(用 .bak 回滚最近一次写索引)。插件内嵌 Skill lit-library,用于约束模型「什么该写进笔记、什么算核过」——笔记内容仍须人工核对,插件不会自动代写正文。

设计上有两条硬性规则(README 明确说明):

  1. 索引有预算(行数与字节)。超限会拒绝写入而非截断,并提示把细节拆到 note。
  2. 摘录必须字面存在于全文 txt。嵌套引号、跨页拼接、抄错一字,lit_check 会报错;插件还包含针对「整条摘录从检查中消失」的额外检测。

能做与不能做

能做 不能做
电子版 PDF 文本层抽取,逐页页标 扫描件:未配置 OCR 时仅登记「待 OCR」
带预算的索引追加 旧 .ppt(需先另存为 PDF)
摘录逐字回查与嵌套引号检查 自动写笔记内容
孤儿 note / 断链检查 Web 界面(纯工具 + Skill)
多项目区隔离,各自编号不串 跨项目自动汇总(仅提供 项目/编号 引用写法)

安装与启用

DSH 生态采用「一切皆插件」;社区目录在 SkillHub,与 DeepSeek / 幻方无官方从属关系。安装前建议自行查看 GitHub 源码与 MIT 许可证;插件以当前 DSH 进程权限运行,导入路径会触及本地文件系统。

官方 README 给出的安装方式如下(勿凭仓库名自行拼接其它 install 命令):

在 DSH 的插件管理里安装本包:把 dsh-lit-library 加进 profile 的 dsh.profile.bundles,或使用插件管理器的 install_bundle。装好后重启 DSH,8 个工具与内嵌 Skill lit-library 才会生效。

需要 DSH >= 0.2.0-rc.2。

扫描件 OCR 为可选项。默认用 pdftoppm 栅格化,再配合你在 .lit.json 或 profile 的 lit-library config 里配置的 OCR 引擎;未配置则登记「待 OCR」,不会假装抽取成功。示例配置:

{
  "ocr": {
    "command": "<python>",
    "args": ["<ocr_engine.py>", "{input}", "{output}"],
    "timeoutMs": 120000,
    "render": { "command": "pdftoppm", "args": ["-r", "200", "-png", "{input}", "{outdir}/{prefix}"] }
  }
}

{input} / {output} 为单页图片与 OCR 文本输出;{outdir} / {prefix} 为栅格化输出目录与文件名前缀。README 注明真实环境曾用 pdftoppm + RapidOCR(ocr_engine.py)验证过带页标的中文 txt。

默认目录与预算可在 profile 的 cordis.patch.yml 中覆盖:

- id: lit-library
  config:
    projectsRoot: lit-projects
    origDir: refs/外部资料
    txtDir: work/外部资料_txt
    notesDir: refs/notes
    indexFile: refs/参考资料总表.md
    maxBytes: 8192        # 索引字节预算(项目级可在 .lit.json 覆盖)
    maxEntries: 150       # 篇数安全阀
    maxTxtBytes: 1048576  # 单篇 txt 安全阀
    shardEntries: 200     # indexMode: sharded 时每片条数

项目根默认取当前会话工作区;多项目工作区才需要传 project 名字。

典型用法

先做项目区,再导入,最后体检。README 第一次使用示例:

lit_init project=我的课题      # 建项目区
lit_import project=我的课题 paths=[D:\papers\xxx.pdf]
lit_check project=我的课题     # 应该 0 FAIL / 0 WARN

多个课题可分别建立 lit-projects/我的课题/、lit-projects/另一个课题/ 等目录,索引与编号互不串扰。已有旧库时,可用 lit_init register=<旧库根> 原地接管。

导入后可用 lit_find tags=[...] 按标签检索;偏好与预算用 lit_prefs 调整;索引写入失败或 OCR 未完成时,用 lit_repair 补处理。

适用场景与注意

适合需要在 DSH 会话里长期维护课题文献、且希望索引行数可控、摘录能机械回查的开发者或研究者。不适合把它当作替代 Zotero / 网页检索的全功能文献管理,也不提供图形界面。

务必记住:索引预检失败是预期行为(逼你把长文细节放进 note);摘录核对失败说明 txt 与笔记不一致,应改笔记或改引用,而不是关掉检查。

结尾

dsh-lit-library 把「找得到哪篇、数字对得上原文、索引不会无限变长」收成可重复执行的导入、单行索引与 lit_check 流程。需要详情时,可看 SkillHub 目录页与 GitHub README。

  • 目录页:https://www.skillhub.cn/plugins/hellocyhgy/dsh-lit-library
  • 仓库:https://github.com/hellocyhgy/dsh-lit-library
羽毛球分组比赛记分
小程序二维码

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

Xiaoye