WeKnora
Tencent
Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:GGboya/dsh-paper-reader
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
English: README_EN.md
DeepSeek Harness (dsh) 插件:论文伴读工作台 —— PDF 转录 / 检索 + 原生对话伴读 + 内置阅读器。
👉 普通用户不用看这一页。 如果你只是想装一个能用的 App,请直接去 PaperReader 论文伴读桌面版 —— 那是把本插件预装好的桌面应用,下载 DMG 拖进「应用程序」就能用,不需要任何环境。本仓库面向的是想自己装插件、或想改代码的用户。
功能迁移自本地独立产品 pdfqa(Go 实现的论文伴读工具)。原则:agent 循环 / 模型层 / 会话持久化全部交给 dsh 框架,插件只做「转录 + 检索 + 阅读器 UI」的薄壳组合。
安装后不改动官方界面 —— 侧栏底部多一行「📚 论文伴读」开关,点击才进入伴读模式(左侧变为文献库树),再点即还原官方工作区列表:



<文献>.study.json 学习档案,跨会话累积;快速问答(选中即问)则直接回答,不上课translate 端点;无需预装 Python——首次生成时自动下载 uv + 托管 Python + babeldoc(macOS / Linux / Windows,约几分钟),全程落在用户目录data/ 缓存布局(旧缓存读取时自动补建页码索引)PaperReader 是把本插件预装好的桌面应用(基于社区桌面客户端 DSH Desktop 打包):
打开就是文献库 + 阅读器 + 伴读对话,不用再执行任何命令。
如果你已经在用 DSH Desktop(社区的 DeepSeek Harness 桌面客户端,macOS / Windows,开箱即用,不需要装 Node.js),可以把本插件装进去:
dsh/pnpm,只对那个终端生效)dsh plugin add @ggboy123/dsh-paper-reader@1.1.0已在 DSH Desktop 2.0.13(内置 dsh 0.1.5-rc.2)上实测通过:侧栏文献库、PDF 阅读器、选中即问、页码跳转、原生对话伴读、翻译引擎自动安装(uv + Python + babeldoc 全程落在用户目录)全部可用。 注意:Desktop 的
desktopprofile 被 Electron 独占管理,外部 CLI 直接dsh plugin --profile desktop add会被拒(managed exclusively by the Electron application)——必须从 Desktop 自己的终端进。
dsh plugin --profile web add @ggboy123/dsh-paper-reader
npm 包名走
@ggboy123作用域:裸名dsh-paper-reader已被另一个插件占用(那是「输入文献、吐精读报告」的一次性分析工具,与本插件的「阅读器 + 会话伴读」定位不同)。 不要用github:GGboya/dsh-paper-reader安装 —— dist 不入库,git 安装会导致 profile 起不来(构建产物只随 npm 包分发)。
已装过的用户升级必须带显式版本号——不带版本的 add 对已存在的依赖是 no-op(pnpm 按首次安装时记录的版本范围解析,不会追新):
dsh plugin --profile web add @ggboy123/dsh-paper-reader@1.1.0
# 重启 dsh web 生效;浏览器 Cmd+Shift+R 强刷,避免旧阅读器页面缓存
确认当前装的是哪个版本:
grep '"version"' ~/.dsh/profiles/web/node_modules/@ggboy123/dsh-paper-reader/package.json
pnpm 若开了供应链策略
minimumReleaseAge(发布 N 小时内的新包拒装):要么等过窗口期,要么在~/.dsh/profiles/web/.npmrc加一行minimum-release-age-exclude[]=@ggboy123/dsh-paper-reader(只豁免本插件,不动全局策略)。
本地开发:
git clone https://github.com/GGboya/dsh-paper-reader
cd dsh-paper-reader && pnpm install && pnpm run build
dsh plugin --profile web add ./dsh-paper-reader # 从父目录执行,或用绝对路径
dsh --profile web # 侧栏变为文献库树
文献库目录默认 ~/.dsh-paper-reader/data;在 profile 的 cordis.patch.yml 里可改:
- id: dsh-paper-reader
config:
dataDir: /path/to/pdfqa/data # 直接指向 pdfqa 文献库即可复用全部缓存
# translate: # 可选:生成中文版(babeldoc)用的 OpenAI 兼容端点。
# baseUrl: https://api.deepseek.com/v1 # 一般不用写在这里——阅读器里点「中」
# apiKey: sk-... # 或右上角 ⚙ 可直接填,存到
# model: deepseek-chat # ~/.dsh/.dsh-paper-reader/translate.json(0600)
中文版端点:优先在阅读器 UI 里填(点「中」→ 没配会自动弹表单,或点 ⚙)——填完会先测连接再落盘,不用重启。 上面的
translate配置退为部署方默认值,仅当 UI 未配置时生效。babeldoc 只支持 OpenAI 协议端点, Anthropic 协议的端点(如api.kimi.com/coding/)不能直连。翻译引擎零预装:找不到 babeldoc 时自动走 uv 链路安装——uv 独立二进制(GitHub Releases API 下载 + sha256 校验)→ uv 托管 Python 3.12 →
uv pip install babeldoc,落在~/.dsh/.dsh-paper-reader/bin/与文献库同级.venv-pdf2zh/, 不碰系统 Python。已装有 uv / babeldoc(含 pdfqa 的.venv-pdf2zh)则直接复用。macOS / Linux / Windows 均支持自动安装(Windows 走 uv 的 zip 包 + 系统自带 tar 解包)。
伴读模式是按需开启的:默认不注册
sidebar.workspaces(官方工作区/会话列表原样),侧栏底部「📚 论文伴读」开关点击才接管,再点还原;模式选择记在 localStorage。退出模式时已打开的 PDF 页签和伴读会话不受影响。
src/
index.ts Cordis 壳:inject tools;webServer 等服务就绪后挂路由
tools.ts 5 个 agent 工具:list_papers / transcribe_pdf / search_paper / study_progress / study_update
host.ts webServer 路由(/paper-reader/*),connection.requestRejection 鉴权;
sessionController.create/prompt(agentPreset=paper-reader)+ follow SSE 桥
library.ts 纯函数:文献库目录约定与解析
transcribe.ts 纯函数:pdf.js 提取 + 页码偏移表(视觉兜底后置)
search.ts 纯函数:分段 + 关键词打分 + 页码映射
study.ts 纯函数:学习档案(计划 + 检验成绩)读写
translate.ts 纯函数:babeldoc 调用(中文/中英对照 PDF 生成)
babeldoc-install.ts 纯函数:无 Python 环境时自动安装 babeldoc(uv → 托管 Python → venv)
translate-config.ts 纯函数:翻译端点配置读写($DSH_HOME 下 0600)+ 保存前连接预检
rerank.ts 纯函数:search_paper 语义重排(TypeSafe/Jev,无凭据时退回关键词排序)
typesafe-config.ts 纯函数:TypeSafe 端点配置读写(与翻译配置同一套约定)
preset.ts 纯函数:自带 agent preset 安装到 $DSH_HOME/.agent-presets/
presets/paper-reader/ 「论文伴读」agent preset(persona 完整提示词 + compaction)
reader/index.html 阅读器页面(pdf.js,独立于 React 宿主,iframe 承载)
lib/client.js 浏览器半边:文献库树(sidebar.workspaces 接管) + PDF 页签 + 主面板
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: paper-reader、paper-reading、pdf、pdf-reader、rag、research-paper。