Lightweight literature management, portable PDF annotations and AI reading for DeepSeek Harness
在 DeepSeek Harness 终端运行:
dsh plugin --profile web add mappedinfo/dsh-paper-libraryPaper Library 是独立的 DeepSeek Harness 插件,将文献收集、PDF 阅读与批注、DSH 对话、知识整理和 LaTeX 写作放在同一个工作环境中。文献与数据集留在自己的资料库,模型功能沿用 DSH 当前配置;也可以打开独立本地界面管理和阅读文献。
DSH 社区介绍与讨论包含合成演示截图与当前能力说明。
项目原创代码采用 MIT。默认 PDF 引擎 PyMuPDF 采用 AGPL/商业许可,CSL 等第三方组件保留原许可;完整安装的依赖栈并非仅受 MIT 约束。详见 第三方许可。
继续开发前先读 项目交接,其中记录当前能力、验证证据和待验证项。 版本变更见 CHANGELOG。
从文献库检索、整理条目,打开 PDF 阅读,再将摘录与自己的问题保存在批注中。以下演示只使用通用的阅读、思考与写作练习。演示说明


文献画板把练习文档与阅读步骤放在一起,整理“阅读 → 思考 → 写作 → 返回阅读”的学习循环。

LaTeX 工作台支持并排编辑源码和预览编译结果,继续完成写作。

安装与开发说明当前源码与已发布 npm 版本的区别。
插件右上角 设置,或 DSH 设置 → 插件 → 插件配置 → Paper Library,均可调整后台自动整理、整理后补齐空缺资料、实时伴学、阅读侧栏位置与 LaTeX 工作台选项。两个入口读写同一个 DSH paper-library 设置区,保存后同步;模型和外观继续使用 DSH 原有设置。
DSH 0.1.7 起,插件把偏好字段声明为 cordis Config 的 volatile 字段,DSH 据此自动生成上述表单,改动即时生效、无需重启;用户改动保存在当前 DSH profile 的插件配置里(旧版 DSH 的 $DSH_HOME/settings.yaml 会在升级时自动迁入)。首次接入时只迁移 DSH 中尚未明确设置的旧偏好,并保留旧记录与备份。并发修改会提示重新读取,恢复默认不会重新导入旧值。资料库路径、Python 和执行权限等部署项继续由安装配置管理。
DSH 设置 → 插件 → 插件列表 可查看已加载的 @mappedinfo/dsh-paper-library;全局插件可能默认折叠,也可按包名搜索。此列表表示本机已安装插件。社区展示见上述讨论链接。
npm 安装的包不含 Python 虚拟环境;首次执行文献操作时插件会自动安装(优先 uv sync,无 uv 时回退系统 python3 建 venv 安装 PyMuPDF),需要网络且只需一次。两者都不可用时按报错提示安装 uv 或 Python 3.11+ 后重试即可。
独立预览服务(npm start)始终可以保存本地设置。旧版本曾把"库已交给 DSH 管理但 DSH 端入口缺失"误判为只读;现在只要 DSH 没有真正接管该命名空间,预览页就回退到本库存储继续读写,避免形成死锁。不同浏览器访问同一个 DSH 服务时共享主机设置。
按下方步骤安装到 Harness profile 后,重启 Harness,在右侧面板的入口页选择 文献库 / Paper Library。启动时不会导入或扫描现有 Zotero 文献。
exports/ 目录写入规范 references.bib 与身份审计 bibliography.audit.json(引用键冲突、DOI 重复、缺失字段、受管 PDF 文件核对;缺 DOI 的条目按"有页面链接可补全/只能手工"分别列出);AI 会话也可用 library_bibliography 工具触发同一构建,并可显式分批核验 DOI 的公开登记信息——逐字段比较题名、年份、期刊与第一作者,冲突会同时保留目录值与登记值,只比较,不回写。草稿、引用选择、阅读位置、旧版偏好、语言记录与难词本存入 $DSH_HOME/paper-library/<文献库哈希>/state;未设置 DSH_HOME 时使用 ~/.dsh。不同浏览器连接同一个 DSH 服务时共享这些文件。文献与 PDF 继续放在配置的文献库目录,主对话继续使用 DSH 原生会话文件。浏览器只保留当前操作所需的内存数据,不把内容写入 localStorage 或浏览器缓存。旧版浏览器草稿会在首次打开时迁移并核对;冲突版本另存为本机备份,可从「导出旧草稿」取回。同时编辑发生冲突时,界面保留当前未保存文字并提供导出,不会覆盖另一窗口的版本。
资料库默认在 ~/.local/share/dsh-paper-library。PDF 导入时复制到该目录;原件不修改。关闭 Zotero 后可以继续使用全部本地功能。模型功能需要连接经过身份验证的 DSH 服务;同一服务可从不同浏览器访问。独立预览服务可以管理和阅读资料,但没有单独连接 DSH 模型的代理。
界面沿用 DSH 的中性色、系统无衬线字体、按钮与侧栏样式。在 DSH 中打开时,浅色/深色主题和内容字号随主应用实时更新,不需要刷新阅读页;独立网页跟随系统的浅色/深色设置。主题变化只调整阅读工具、面板和表单,PDF 原文及所选批注颜色保持原样。插件不另存一套主题偏好。
读到值得追问的地方,先高亮,再点这条批注的 手写。直接在原页写字、圈出图表、画箭头,笔迹会关联到这条批注。需要整页自由写画时,也可以使用顶部的 手写 工具。
1. 标准高亮,原页写画:高亮、下划线与删除线绑定正文文字。选好批注后,在 PDF 上继续写画,保留原文、图表与笔迹的空间关系。进入手写时就显示固定的一行工具栏;落笔和自动保存不会再把页面往下推。

2. 收笔继续读,批注里看原笔迹:关联手写时,停笔约 1.5 秒后自动暂存;点击 完成手写 立即回到之前的标注工具,保存继续在后台进行。批注卡片展示原笔迹预览,原文摘录和手写想法一起保留。接入 DSH 视觉模型后,还可以自动转文字并校对,原笔迹继续保留。

3. 点笔迹,回到写下它的地方:点卡片摘录回到原文,点笔迹预览回到手写位置。目标区域会短暂描亮;查看后点 返回刚才位置 继续阅读。笔迹写入标准 PDF,导出再导入也能恢复关联。

以上三图为当前 main 的实际 Chromium 界面,使用合成文档和程序输入的演示笔画,无真实论文或模型生成内容。复现演示 · 安装当前源码
面向 Apple Pencil 随航阅读场景开发,目前以 Chrome 验证。笔与手指能否分开识别取决于系统和浏览器传入的事件;物理 Pencil/随航、Safari 和 Electron 仍需设备验证,当前没有压感笔宽或双击、挤压切换工具。
结束、保存、笔迹预览与定位已按 交互设计 接入插件;合成 Chrome 验证与真机待验范围见下文。
在 Mac 上打开文献库,将窗口移到随航的 iPad。在 批注 工具栏选择 高亮、下划线或删除线,用 Pencil 拖过正文:标注绑定选中的文字,保存为标准 PDF 批注。支持跨行与部分词语选择;同一次选文限定在一页内。没有文字层的扫描页可先添加「便笺」。Apple 随航说明
/Ink,以 /IRT 回复关系关联高亮;识别文字单独保存为带来源标记的回复。导出后重新导入可恢复,不依赖原目录数据库。旧的 SVG 手写便签通过「打开原便签」继续编辑,导入原件不修改。笔与手指分工:在手写、高亮、下划线和删除线工具中,浏览器报告的笔输入负责标注,手指拖动负责滚动;放大后也可左右拖动。书写中的额外触控不会移动页面或取消笔画。默认保留鼠标兼容书写;打开 笔输入 可查看实际识别类型,确认 Pencil 显示「手写笔」后,可开启 仅用笔标注。若显示「鼠标兼容输入」,应保持关闭。该开关只限制上述标注工具,普通选择和便笺继续支持鼠标。
浏览器中断输入、失去指针捕获或笔移出未捕获区域时,已采集的笔画部分会保留,并提示继续书写;明确点「撤销」或「清除」才删除草稿。若再次出现笔画消失,打开 笔输入 → 导出手写诊断:本机最多保留最近 256 条输入、保存与重绘事件,仅含时间、内部标识、笔数和状态,不含正文、图片或笔迹坐标。诊断在后台分批记录,不能追溯升级前或尚未传回主机的事件。
当前先适配 Chrome,后续验证 Electron。macOS 27 与 iPadOS 27 的随航支持更完整的触控,但框架可能只转发兼容鼠标/滚动事件,不能仅凭系统版本保证网页能辨认笔与手指。Apple 开发说明 接收浏览器提供的捕获、中断取消与合并采样,使用固定笔宽;当前没有压感笔宽、Pencil 双击或挤压切换工具。待保存笔迹可逐笔撤销。
验证包括结束、预览与定位、笔与触控分工、关联页面手写、识别和旧便签兼容、标准文字标注及真实 Harness 图片接口,均使用合成文档,涉及模型时使用确定性替身。各回执保留实际日期;物理 Pencil/随航手感和真实识别准确率仍需实际试用。
文献库顶部的「阅读项目」把文献组织成可复用的主题清单:选一个项目,文献库就只列它的成员;选「全部文献」回到整库。
library_projects 工具列出、新建、改名、归档、恢复项目,关联或移出文献,并查询一篇文献所属的项目(for_paper)。它读写的就是同一个目录数据库,不复制文献。验证记录见 9 项真实 Chromium 回执(PLAYWRIGHT_MODULE=/path/to/playwright/index.mjs node scripts/project-ui-fixture.mjs,合成文献库、零外部请求)。
顶部「画板」打开一张自由画布:拖拽平移、滚轮滚动、Ctrl/⌘ + 滚轮缩放,工具条提供文本、便签、矩形、椭圆、菱形节点;拖动节点移动,右下角手柄改尺寸,右侧圆点拖到另一个节点即建立有向连线。多选(框选或 Shift 点击)后可删除、复制、方向键微调,Ctrl/⌘ + Z 撤销、Shift + Ctrl/⌘ + Z 重做。窄侧栏里可以点「全屏 ⤢」用整块屏幕画,Esc 或再点一次退出。
web/board.js,页面通过 ?view=board 以画板模式打开,并且先判定入口再加载,不会先闪一下文献库。flowchart/graph(带 TB/TD/BT/LR/RL 方向)后点「解析为源文件」,它会解析成画板自己的源文件(节点形状、连线箭头/虚线、边标签、& 分支、<br/> 换行与实体都认),并自动按图示方向排版;随后仍用同一个「校验并应用」写入画板。反向的「画板导为 Mermaid」把当前画布写成可直接粘进 README 的文本。不引入 mermaid 依赖:只实现我们内部结构能表达的子集,看不懂的(classDef/style/linkStyle/click)会被忽略,subgraph 会展开,~~~ 与粗线等近似都会在状态栏里按行号说明,不会猜。board.json(标题、节点、连线;短标识、稳定键序、不含像素坐标)与board.style.json(配色、尺寸、字号、按关系的连线样式、排版方式与间距、固定坐标)。library_board 工具列出、读取、创建与修改画板。模型新增或改动的节点与连线会标为「AI 提议」(虚线边框)等待你确认,未改动的内容保留你的署名,只有你能「接受 AI 改动」;AI 新建的画板在你保存前一直是待核对状态。画板只在打开时存在于浏览器内存:没有常驻渲染进程、没有后台任务,打开、列表与绘制都不调用模型。验证记录见 34 项真实 Chromium 回执(含按 DOM 变更量而非耗时衡量的绘制代价守卫)(含画板入口以纯画布打开、420px 窄栏下工具栏收纳与画布占满整栏、按实测路径量出的连线夹角下限、粘贴 Mermaid 后写入画板并再导出、打开 draw.io 文件(含 draw.io 自己保存的压缩页)后写入画板并再导出为 .drawio,以及空形状不阻塞保存)与 7 项原生 DSH 回执,设计与边界见 docs/whiteboard-design.md。
画板与 draw.io 双向互通:.drawio/mxGraph XML(未压缩与他们保存的压缩形式都读)可以从「☰ → 源文件与来源 → draw.io」导入并走同一条「校验并应用」,也能把画板导出成 draw.io 与官方 draw.io MCP 都能打开的文件;无法表达的部分逐条带行号报告。同一份格式之上还有本仓库自己的 MCP 服务器 mcp/server.mjs(stdio、零依赖、默认只读、画板路径限定在 --root 内):读写可读源文件与 .drawio,加 --library <文献库> 后另外提供三个只读文献工具(检索、元数据、批注),node scripts/mcp-probe.mjs mcp/server.mjs --root <目录> 可直接查看它的工具面。许可证核查、实测的格式契约与边界见 draw.io 互通与 MCP。
同一份画布代码也作为一个独立静态画板发布在 GitHub Pages 上,不需要 DSH、不需要服务器:
https://mappedinfo.github.io/dsh-paper-library/
(用 URL 渲染仓库里的源文件:?src=boards/example.json)
(2026-09-18 已用真实浏览器在线核对:资源可访问、可绘制、刷新后恢复、自动排版、连线与折线、导出 PNG、并用 URL 渲染仓库源文件,零第三方请求,见 线上回执)。它由 .github/workflows/pages.yml 在 main 上自动构建部署;
页面里的文献库、阅读器、对话引用控件在独立模式下隐藏而不是假装可用。存储用的是浏览器localStorage(按来源与浏览器各自独立,容量约 5 MB,上限 40 张画板 / 4 MiB,界面会报告用量),
因此**「导出 JSON」才是长期备份**;导入同标识的文件不会覆盖,而是另存为新画板。独立站支持 PNG 导出
(按模型绘制,不依赖页面样式与字体)。构建与边界见 docs/board-pages.md,
本地回执见 docs/validation/board-standalone.json(15 项,含粘贴 Mermaid 成图),线上回执见 docs/validation/board-pages-live.json(node scripts/verify-pages.mjs 可随时复核,其中也验证 Mermaid 入口可用)。所有回执的「回执 ← 复现命令」索引见 docs/validation/README.md。
在连接 DSH 的阅读页打开工具栏「实时伴学」,此后保存或修改带文字评论的批注会自动排队,使用本篇论文当前的 DSH 模型回应。连续约 1.8 秒内修改同一条待处理批注会合并;不同批注依次回应。单纯高亮、历史批注和 AI 回复不会自动重发。「保存并放入主对话」仍只准备草稿。
AI 按连续阅读方式回应释义、复述、追问、批判或联想,区分原文依据、读者理解和 AI 推断。需要时留下可稍后验证的问题,不强制当场考试,也不把解释过等同于已经掌握。每次只发送当前批注与所在物理页最多 7,000 字符的文字;不是全文、图表或 OCR 解读。复杂问题可以继续在同一篇论文的对话中补充材料。
任务和状态保存在 DSH 主机,关掉阅读页后继续;完成后回复写进 PDF,显示在来源批注下面。未开始的任务重启可恢复;不确定的生成不会默默重试。批注下显示等待、已保存或失败,PDF 写回失败可只重试保存已有回答。停止生成仍使用 DSH 主对话的停止按钮。关闭伴学会暂停未提交的任务,已交给 DSH 的任务继续完成。
这一版由插件内保存事件触发,不监听 WPS 或其他阅读器中的文件修改。也不自动更新私有伴学档案、数学基础库或领域知识库;这些知识沉淀仍属于明确选择材料后的工作流。实现与恢复规则见 API。
「库」支持按全部/文献/数据集检索和筛选。点击「添加数据集」登记名称、创建者、发布者、入口、许可与覆盖范围;无需 PDF 或介绍论文。数据集可以有多个版本,每个版本保留独立的 DOI、引用键和引用信息。未知版本保持为空。
在数据集页面「关联论文」,或在论文工具栏「数据集」,记录提及、引用、实际使用、发布或介绍关系。用途、使用范围、实际版本、原文、已知页码及核对状态分别保存;两边都能查询关系。名字相同不会自动合并,AI 提议始终待审阅。
「连接文件」登记运行 DSH 的主机上的文件绝对路径,或只保存远程入口。点击预览才读取本地 CSV/TSV/JSONL:最多 100 行、50 列、512 KiB 响应;另有 4 MiB 输入、64 KiB 单行和 2 秒解析预算。遇到预算或编码问题明确显示部分结果与原因。这里不会下载整个数据包、复制大文件、统计全量或为整个目录建立内容索引。
从论文、数据集或版本打开「知识工作流」:保存摘录或选择已保存批注,勾选本次材料,再生成关系草稿或知识笔记草稿。调用当前条目的 DSH 原生模型,一次最多 40 条来源、合计 24,000 字符;不会扫描全库。原文快照固定在主机目录,已有批注后来改变时可显式检查,新旧版本分开保留。模型建议先待审阅;接受笔记草稿后,还可以编辑并保存为 Markdown。审阅草稿时可点「结构检查」做只读体检:无支撑主张、孤立节点、未被引用的证据、重复关系与悬空端点会逐条列出,不自动修改草稿。
插件内置三个项目技能:paper-library-knowledge 负责 Evidence/Observation/Claim、Edge/Assertion 的有来源编码;paper-library-notes 负责可读笔记;paper-library-review 负责论文证据图谱评审(案例拆分、八维编码、归因三态、联合覆盖反拼接、逐项状态机),并在后台整理时自动生成一份「证据图谱评审」待审草稿。它们使用插件工具和当前 DSH 模型,不安装原技能的私有专家库、Wiki 自动发现或 Zotero 依赖;个人阶段标准与投稿侧重放在使用方自己的私有仓库,通过 reviewProfile 配置注入,不随插件发布。
数据集、版本、关联、固定来源和结构化草稿位于资料库 SQLite;笔记正文在 knowledge/notes/*.md,草稿和生成请求记录使用 DSH-home 文件存储。支持 CAS 冲突提示、显式核对和中断后的笔记恢复。浏览器缓存不承担持久化。
导出范围有明确区别:APA/BibLaTeX/CSL JSON 是引用元数据;CSL JSON 还保留数据集与版本的身份映射。「导出知识记录」包含当前范围的已审核图、笔记及它们引用的来源。「RKOS」是带映射和损失报告的兼容子集;原版不支持的数据集原生来源仍保留在知识 JSON 中。以上均不等同于包含原始文件、全部草稿与会话的整库备份。详见实施与存储约定和验证记录。
库标题行提供紧凑检索。表格题名和作者各占最多两行,完整题名可悬停或聚焦查看;更多列通过表格内部横向滚动浏览。
查看 LaTeX 工作台:源码与编译后的 PDF 并排阅读
一个装着 .tex 和对应 PDF 的文件夹可以登记为 LaTeX 项目:源码、参考文献与编译产物留在原处,插件只索引主文件与页面。顶栏「LaTeX」把整页切成独立的 LaTeX 工作台(和画板一样,也可用 ?view=latex 作为单独入口,工具栏「返回文献库」返回),深浅色都跟随主题。插件自己维护论文目录(默认 ~/.dsh/manuscripts,部署配置 latexRoot 可覆盖),☰ 菜单里新建项目、写入最小 main.tex、登记已有文件夹、与其他项目对比与写作设置;该目录默认作为独立源加入数据同步服务(先备份、只新增、不删改其他源)。工作台本身是源码在左、PDF 在右、中间可拖拽分栏(比例落库);「修改提案」(逐字替换的提案先审后写,接受时走同一套 CAS 写入并记为 ai:<model>)与「问 DSH」(选区或整篇作为有界上下文,就地回答、不改文件)放在阅读侧栏里——和「批注」共用同一套侧栏(左右切换、宽度拖拽、标题栏),打开工作台时自动展开,工具栏的「DSH 写作」可随时收起。原生工具 library_latex 读、library_latex_edit 写:列出项目内文件、带修订号地读写 .tex、调用你本机的 latexmk 编译(xelatex / pdflatex / lualatex,可设超时,失败时给出错误行与日志尾部)、渲染项目 PDF,并在同一文件的历史版本之间或两个项目之间做 unified diff。写入是原子且带 CAS 的,路径始终被限制在项目目录内,clean 只删构建副产物。设计与边界见 LaTeX 项目。
数据同步服务(例如 Vault Sync)同步来的 PDF 目录可以按符号链接纳入同一个访问地址:在插件设置里填同步服务配置文件路径,再写上选中哪些目录(或 [{"select":"all"}]),书库下会出现 external/<source>/… 的虚拟文件夹,几千个 PDF 不复制、不移动、不删除,扫描按大小/修改时间增量进行。第一次给其中一篇写批注时才复制进 pdfs/,同步目录始终只读。配置、扫描预算、重命名与文件消失的处理见**外部文献源**。不配置时插件与从前完全一致,两个插件都可以独立安装。
带 PDF 的文献默认阅读全文并自动整理。通过 DSH 导入或关联 PDF 后,文献进入主机队列;选中尚无整理记录的论文也会排队。读取范围留空表示全部,也可填写 1-5,8。使用本篇论文的 DSH 模型构建有出处的图谱并提出基础资料建议,不向主对话发送消息。
从导入到草稿的完整链路、每阶段写下的数据与存放位置见落库后的自动解析流程(含 Mermaid 图与数据产出对照表)。
「新增或选中文献后自动整理」和「完成后补齐空缺资料」默认开启,可在插件或 DSH 设置中关闭。关闭自动整理会暂停待处理队列,当前任务可单独取消。已有、失败、取消或中断的整理记录不会自动重跑,可点击「重新整理」。补缺只采用有原文依据的建议,保留已有值、DOI、引用键和 JCR;AI 填入内容仍待核对,并发修改时停止补写。升级保留已保存的开关选择。
全文按小批次连续读取:一次最多访问 8 页、8 段文字、24,000 字符;长页按文字位置继续读取,整篇不受 8 页限制。不同论文可有界并行整理(部署项 analysisConcurrency,1–4,默认 2),同一篇论文内部仍逐批串行,逐批保存来源和图谱;界面显示已完成页数,可切换批次审阅。扫描页和图像暂不做 OCR,未读取内容不纳入结论。整理完成后会基于已落盘的批次图谱再生成一份精读笔记草稿(一句话概括、研究问题、核心主张附页码、方法与数据、主要结果、局限与疑点、证据等级、待核实与未覆盖),同样待核对;笔记生成失败不影响已保存的图谱与资料。
在所需批次勾选节点并点击「选中材料加入论文对话」,只把选中节点及其关系加入草稿。关闭页面后队列继续运行,重启后恢复尚未开始的排队项;结果不确定的模型调用不会自动重发。取消或后续批次失败时,已完成批次仍可查看。分批图谱分别保留来源,当前不会自动合并跨批次同名节点。所有记录位于主机磁盘,不扫描现有全库寻找待处理项。
侧栏卡片以两行 12 px 题名、一行作者/年份,以及紧凑的期刊/引用键/PDF 行展示文献。完整信息可通过卡片提示或打开文献查看;标签与分区保留在表格和详情中。展开表格后,可新建元数据条目、编辑资料,按标题、第一作者、年份、期刊、引用键、导入/修改时间或 JCR 排序。检索、排序和分页由磁盘目录完成,不会打开全库 PDF。JCR 排序使用已提供记录中最新年份的最差学科分区,详情仍显示各条分区及来源。
「移入回收站」保留论文身份、管理副本 PDF、批注和图谱记录;在文献范围中选择「回收站」,点击「恢复」即可返回文献库。回收站中的文献不能直接阅读或编辑,先恢复后继续使用。
资料表单支持作者对应机构及发表、在线发表、印刷发表、收稿和接收日期。日期可以只填已知的年或年月。「补全资料」按已保存的 DOI 或论文链接获取公开元数据,身份匹配后仅补缺,打开可核对的编辑草稿;保存前不会改动目录或 PDF。已有手工资料与 JCR 记录保留。JCR 每条记录须有年份、学科、Q1–Q4 分区及来源;插件不依据引用次数或影响因子猜测分区,也不会把 Crossref 注册日期、更新日期或 arXiv 提交日期当作期刊收稿/发表日期。
图谱按论文保存读者添加的节点、方向关系、原文、解释、来源和已知页码。元数据节点只读,需通过资料编辑改变;读者节点和关系可编辑、删除,删除节点会同时删除其读者关系。每次最多显示 200 个节点、400 条关系,超出时提示缩小范围。未知页码留空,相同姓名不会自动合并为同一个人。交互与边界见工作台设计约定,调用方式见 API。
首次建立论文对话时,沿用当时 DSH 会话可读取的模型选择和推理强度;没有来源选择时采用 Harness 默认。之后由这篇论文的主对话管理模型,插件显示其实际选择。模型服务、对话历史、工具执行和权限处理均由 Harness 提供。需要查看完整历史、处理工具权限或停止回复时,点击「打开主对话」。
尚未发送消息时,对话已经保存,但 DSH 侧栏会隐藏非当前的空对话,当前空对话则显示「新会话」并收起主页面标题栏。可以从论文的「打开主对话」进入;首次发送后,侧栏会正常显示论文标题。
「查看/调整」支持检索、按页筛选和多选,每页显示 20 条。目录最多读取 1,000 条用户批注,原文和评论各显示 240 字符摘要;发送前会核对所选版本并读取完整正文。已编辑的选中项需显式采用当前版本,已删除项需移除。「全部」只在目录完整且身份可区分时可用,排除 AI 回复。
默认一次来源预算为批注原文、评论与选文合计 24,000 字符,超过时提示减少选择、分次提问,不会静默截断。部署方可用 maxAnnotationCharacters 调整至 1,000–96,000;这不是模型的上下文长度保证。尚未实现自动分批汇总。选文上限为 8,000 字符,问题上限为 4,000 字符。
准备引用会保存不可变的私有快照。之后编辑 PDF 不会改变已经放入主输入框的材料,失败重试继续使用同一快照。保存、选择和排队都不单独计作「已发送」;只有原生会话实际记录来源正文并确认持久化,才更新「未发送/发送后已更新/已发送」状态。长期对话压缩后可以重新选择旧批注,「已发送」不代表模型始终记得。
插件内只显示最近最多 20 条已提交的用户/AI 文本,每条最多 6,000 字符,总计最多 48,000 字符。点击历史中的「查看当次引用」可读取固定材料并返回 PDF 页码。主对话使用 DSH 原生 Paper Library 上下文显示来源正文;输入标签可打开快照检查器。刷新后标签暂时恢复为普通引用 token,仍可发送和查看,尚不自动重建标签。批注带上题名、引用键、真实页码及标识,与问题分别记录;AI 回复仍需由读者判断。
对话历史保存在 Harness,标准批注和已保存的 AI 回复保存在 PDF,引用快照保存在文献库的私有 .paper-library/ 目录。快照用于复现当次发送材料,PDF 仍是可编辑批注的权威来源。引用与问题草稿按论文保存到本机,每条记录上限 256 KiB;内存工作集受限,旧草稿不会因切换论文而被淘汰。发送版本投影最多保留 5,000 个身份,超出时返回不完整标识。回复关联只采用本轮已实际写入 DSH 日志、且与固定快照一致的批注引用,不根据 AI 措辞猜测,也不把上一轮引用自动沿用到无引用的追问。旧的未关联回复若仍能在当前历史窗口找到可靠引用,会补上关联并保留原文;否则保持未关联状态。归档的论文对话会显示状态;当前 Harness 没有供插件调用的恢复归档接口,插件不会自动复制对话。移动文献库目录后,目前不会自动迁移原来的论文会话对应关系。详见持续批注与对话引用。
支持公开 PDF 直链、DOI、arXiv 链接,以及带论文下载元数据的页面。文件按流写入磁盘,再用 PDF 解析器检查可读性。默认读取最多前三页和文件内元数据;检测到 DOI 时,在线题名必须与 PDF 解析标题匹配,才补全作者、年份等字段。不会因正文出现了另一篇论文的 DOI 就替换当前资料。
管理副本命名为 作者-年份-标题--稳定标识.pdf;缺失作者或年份使用 unknown-author / undated,显示“资料待核对”。编辑资料后文件名随之更新。来源链接、获取记录和解析依据保留在条目及 PDF 内。仅取得元数据时明确显示“尚未取得 PDF”,可以稍后补入已有文件。
插件内置 paper-fetch-skill 的独立文献库版本:paper-library-fetch,通过 Harness 技能目录提供给当前会话。可以在 DSH 中要求“用 paper-library-fetch 把这个 DOI / 链接的论文保存到文献库”,技能调用插件的 library_import,继续使用会话现有模型。内置公开下载流程,不需要额外安装 Zotero、MCP 服务或浏览器抓取运行时。改编来源见 出处记录。
导入队列最多 50 项,PDF 上限 250 MiB。一次失败不会阻断后续文件,结果面板提供重试或重新拖入提示。扫描件暂不自动 OCR;需要登录、验证码或付费的页面可能只能取得元数据,此时使用已有合法 PDF 继续导入。
支持 CSL JSON、Zotero/Better BibTeX 风格 JSON 的 items 数组、RIS 和 BibTeX。带 attachments[].path 的 JSON 可保留相对目录结构并一并复制 PDF;保留 citationKey / citation-key / Citation Key:。BibTeX、RIS、CSL JSON 主要用于文献元数据,不能保证携带附件和原生批注。
只有 Zotero 数据库中存在的批注,需要先导出到 PDF,或提供带位置数据的 JSON。 原样复制 Zotero 存储目录中的 PDF 不一定带有这些批注;Zotero 官方说明对此有明确区分。插件可读取已嵌入的外部批注,也可导入 JSON 中带 annotationPosition 的高亮和文字批注;缺少坐标会显示警告。
导入前保留 Zotero 原库及导出副本。重复 DOI、同来源引用键、相同 PDF 哈希会去重;引用键与不同论文发生冲突时明确跳过并报告,避免误合并。当前不迁移 Zotero 收藏夹层级、独立笔记、快照附件或文字处理器中的动态引用字段。
/Highlight、/Text 对象保存高亮和评论,/Contents 是普通可读评论;包含作者、日期、标识与坐标。paper-library.csl.json 内嵌附件保存,复制 PDF 后重新导入可恢复标题和引用键。backups/,验证新文件后原子替换;每篇仅保留一个上一版备份。恢复时关闭该文件,复制对应备份覆盖管理副本后刷新。已通过 PDF 复制至新位置、导入全新资料库后的批注恢复测试。WPS 的实际保存往返尚未验证;本机原生应用自动化未成功完成打开副本,因此没有将格式测试宣称为 WPS 兼容性认证。当前没有 WPS 动态引用插件。
按约 2,000 条记录、1,000 个 PDF 设计验证规模。SQLite FTS5 trigram 索引在磁盘,缓存预算 2 MiB;短于 3 字符的查询使用字面检索回退。检索不会打开 PDF。PDF 渲染、修改和 CSL 引用格式化均使用短时进程,完成后退出;界面只保留当前页,隐藏 Harness 阅读面板时卸载 iframe。
PDF 上传和下载均使用流式处理,不做整份 Base64 拷贝。服务器限制同时接收的 PDF / JSON 请求,导入队列还设有独立载荷预算,避免大量排队的元数据文件持续占用内存。下载只在导入时触发;资料补全仅在导入或点击「补全资料」时按需请求。
打开论文时只保存一个轻量的原生对话记录,不启动 Agent 或调用模型;不会在批量导入时为所有文献启动对话。批注目录只在当前论文打开、保存或明确刷新时按需解析,快照检查器只保留当前预览。插件只在当前对话视图可见时刷新有限历史,隐藏后停止刷新。真正打开 DSH 主对话或发送消息后,Agent 的驻留与释放由 Harness 管理;当前未测量大量已激活对话长期阅读后的总内存。
没有常驻向量模型、后台 OCR 或全库 PDF 预解析。目前快速检索覆盖元数据和摘要,不包含全文检索。这是当前版本的功能边界,不能据此判断 Zotero 的高内存原因。
本轮合成 2,000 条记录/1,000 个 PDF 的检查中,读取一篇 45 条批注的论文、打开另外 20 篇冷会话并刷新历史 30 次后,Harness 主进程闲置 RSS 为 569.88 MiB,采样最大值为 602.17 MiB;精确批注读取的短时 PDF worker 峰值为 58.14 MiB。历史刷新没有打开 PDF,闲置时没有 PDF worker 或活跃 Agent。上述数字不包含浏览器,不能相加当作应用总峰值,也不能与较早的独立运行直接比较性能改进。详细方法见验证记录。合成文件是小型文字 PDF,不能代替真实扫描件/大图 PDF 的容量验证。
试用上述手写功能,请安装当前 main 源码。 截至 2026-10-04,npm 上的 @mappedinfo/dsh-paper-library@0.2.2 已发布,但不包含这轮手写更新。
Node ^22.19 || >=24、Python >=3.11、uv 和已构建的本地 DeepSeek Harness。
git clone https://github.com/mappedinfo/dsh-paper-library.git
cd dsh-paper-library
npm ci --ignore-scripts --legacy-peer-deps
uv sync --locked
npm run build
node scripts/install-harness.mjs --harness /absolute/deepseek-harness --home /absolute/dsh-home --profile web
将示例中的路径替换为本地已构建的 Harness checkout 和目标 DSH 配置目录。不传 --home 时安装脚本使用项目内隔离 profile;不会默默修改用户全局配置。脚本仅链接声明的 Harness 运行时依赖,并调用官方插件命令注册。重装依赖后可重新运行它恢复本地依赖链接。源码更新与 npm 发版分别进行;升级时请核对所安装版本的 变更记录。
独立本地界面与 JSON CLI:
npm start -- --library /absolute/library --port 43121
node src/cli.mjs --library /absolute/library < request.json
默认服务仅监听 127.0.0.1,拒绝跨来源写入;Harness 内使用其现有认证服务。论文对话不读取其他应用的密钥,不创建第二套服务配置。部署配置支持绝对路径 library、python;localStateHome 可覆盖状态文件所在的 DSH home。provider、model、maxOutputTokens 保留给原有独立反馈 API,论文对话和语言工具使用 Harness 自身的论文会话配置。语言生成独立使用 maxLanguageOutputTokens,默认 8,192,以容纳完整译文和词汇释义。analysisConcurrency 控制同时自动整理论文的上限,默认 2,可调 1–4。translationServer 可指向一个自部署的本机 Zotero translation-server(仅回环 http,如 http://127.0.0.1:1969):「补全资料」在主路径(Crossref/页面元数据)取不到结果时,把同一 DOI/arXiv/页面链接交给侧车的 translators 再试一次;候选条目仍须通过既有的 DOI/题名人身份核对才生成可核对草稿,不会写目录。插件不打包、安装或启动该服务(其许可证为 AGPL-3.0,见 第三方许可),也绝不向它发送 PDF 正文、批注或草稿。详见 API 与 cordis.patch.yml。
验证命令:
node scripts/validate.mjs
npm run test:harness
uv run python scripts/benchmark.py --output artifacts/capacity-new
node --expose-gc scripts/benchmark-node.mjs artifacts/capacity-new/library artifacts/capacity-new/node-report.json
测试使用合成数据,产物与文献目录不进入 Git。CSL 使用官方 APA 样式与 citeproc-js,BibLaTeX 使用 Citation.js;出处、版权声明及依赖的许可义务见 THIRD_PARTY.md。
当前共享侧栏更新通过 297 项 JavaScript、105 项 Python 测试,以及 13 项侧栏浏览器流程;另重跑通过 12 项主题和 18 项阅读流程。浅色/深色下验证了紧凑卡片、文献与批注切换、左右移动、阅读位置保持、批注编辑、表格和窄屏/全屏恢复;合成卡片最大高度约 84.06 px,低于测试上限 90 px。侧栏检查没有调用模型、外部请求或浏览器存储写入。
主题专项的 12 项浏览器检查覆盖浅色/深色、430/741/1400 px 布局、键盘焦点、抽样文字对比度和不刷新页面的主题/字号同步。同步检查使用真实 DSH 样式和插件桥接代码,主题事件来自隔离测试环境;验证范围见对应回执。
此前语言学习与本机保存通过两套独立浏览器上下文的 12 项流程,以及真实 DSH 的 6 项集成检查:覆盖翻译、优化、难词积累、跨浏览器草稿、冲突恢复和重启后的幂等重试。该里程碑也验证了阅读、目录工作台、主对话引用的 17、13、11 项浏览器流程;这些专项流程保留此前证据。模型输出采用确定性本地替身,没有外部模型请求。自动化测试、安装核验和此前容量测量的准确范围见验证记录。
登录后即可为该插件评分和评价。
还没有人评价这个插件,来抢个沙发吧!