前言¶
在 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 明确说明):
- 索引有预算(行数与字节)。超限会拒绝写入而非截断,并提示把细节拆到 note。
- 摘录必须字面存在于全文 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