Paper reading in a DSH sidebar tab: the PDF keeps its original layout and fonts, a selection becomes a highlight, a note or a question in the current chat, and annotations plus paper-level notes are mirrored to Markdown in a per-paper folder that also holds the parsed text and the linked open-source code. Ships a `vibe_reading` tool and a reading skill so the agent can build that record itself.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:jypjypjypjyp/dsh-vibe-reading
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
This plugin publishes its README in Chinese only.

右侧边栏里的论文工作台:PDF 原样打开,读到的留下,AI 接着用。
Why use
- AI 伴读:AI 不替你思考,只是阅读伙伴。
- 论文连着实现:关键实现细节,AI 帮你找,帮你验证。
- 嵌入 DSH 生态:选中一段直接问,
@一下把这篇论文交给 agent;它记得你读过什么、判断过什么。
界面

| 选中即用 | 标注与笔记 |
|---|---|
![]() |
![]() |
| 论文级笔记 | 代码:开源 / 本地两套目录 |
![]() |
![]() |
安装
# 从 GitHub 安装
dsh plugin --profile web add github:jypjypjypjyp/dsh-vibe-reading
# 或在本地插件目录里 link 进去(开发调试)
dsh plugin --profile web add link:./projects/dsh-vibe-reading
装完重启一次 dsh web(Host 路由在启动时注册),右侧边栏的 + 里就有「Vibe Reading」。
阅读器的入口挂在 better-sidebar 上,所以插件把 dsh-better-sidebar 声明成依赖:pnpm 装插件时会一并装下来。若目标 profile 里它还没被激活(插件列表里没有 dsh-better-sidebar 这一层),插件页会出现一条「缺少依赖:右侧边栏」的横幅,点「安装依赖」会自动跑 dsh plugin --profile <名字> add dsh-better-sidebar 并把它写进 dsh.profile.bundles,重启后生效;没有侧栏时插件本身照常加载,只是没有入口。
使用
- 打开右侧边栏,点
+,选「Vibe Reading」。 - 点工具栏的上传按钮(或把 PDF 拖进面板)导入论文。导入后静默用 markitdown 转一份 Markdown;「更多 → 解析正文(MinerU)」会中断它、改用 MinerU(要 Token),底部进度条实时走。
- 选中正文文字,使用浮出菜单;工具栏的
</>打开「代码」页,@把/dsh-vibe-reading与论文目录写进输入框,⋯里有「解析正文(MinerU)」与「设置」。 - 面板三栏:标注(挂在某页某段原文上的高亮与批注,第二行显示它的笔记)、笔记(论文级的分块结论,可多条,随时增删改)、代码(再分「开源仓库 / 本地复现仓库」两个页签,各有目录浏览)。
设置(工作目录、MinerU Token、模型、语言)统一放在左侧「插件」→ dsh-vibe-reading 详情页,用 DSH 自带的设置表单渲染(@deepseek-ai/dsh-client-ui-primitives 的 SettingsForm / SettingsValueField / SettingsSecretField,与「网页搜索」等内置设置页同一套控件);阅读器里的「设置」直接跳到那一页。
结构
| 文件 | 作用 |
|---|---|
index.js |
Host:/vibe-reading 路由(库、上传、元数据/标注、设置、双引擎解析、论文文件夹、目录浏览、PDF 字节、pdf.js 静态资源)与 vibe_reading 工具 |
client.js |
Client:向 ctx.betterSidebar 注册 vibe-reading tab(阅读器、标注/代码面板),并向 plugins.detail.section 注册插件页里的「阅读器设置」 |
public/ |
vendored pdf.js 3.11(pdf.min.js、worker、cmaps、standard_fonts),Apache-2.0,许可证见 public/LICENSE-pdfjs.txt |
存储:~/.dsh/vibe-reading/ 是内部库(<uuid>.pdf 原件、<uuid>.json 元数据、settings.json 设置);对外的论文文件夹在 ~/.paper_reading/<论文名>/,按 pdf/ 原件、markdown/ 解析结果(可能带 images/)、remote/ 开源实现、local/ 本地复现分开放,标注与笔记统一写 notes.md、元信息写 meta.md。
批注工具
vibe_reading 面向模型:action=list 不带 docId 列出论文库,带 docId 读该论文的全部标注与笔记;action=create 写一条标注(page + text + note,作者记为 AI);update / delete 按 id 改删;action=note / update_note / delete_note 管论文级笔记;action=code 读或写这篇论文的代码仓库(repo / path),阅读器「AI 查找仓库」按钮就是让 agent 走这条路自动回填。
跨会话记忆 skill
插件在 apply() 里用 ctx.inject(['skills']) + ctx.skills.register() 注册了一个运行时 skill dsh-vibe-reading:工具清单(vibe_reading 的每个 action)、论文目录里有什么、什么时候该写、每条写多短、什么不该写。
它出现在 agent 的 skill 目录里,模型可以自行调用;点阅读器的 @ 时,输入框里写的是 /dsh-vibe-reading 这个手势加论文目录信息,由 DSH 的 skill 机制按需加载正文(dsh-tool-skill 用 /(^|\s)\/([a-z0-9-]+)(?=\s|$)/ 扫描用户消息),而不是把正文粘进对话。
规则很短:标注挂原文、笔记记判断,每条一句话不超过 40 字,只写结论与依据,不写推测与过程。
损坏的 PDF
文件按原样保存,阅读器不会尝试改写。若 PDF 结构损坏(例如缺少 xref / %%EOF,常见于下载中断),打开时会给出说明,并提供「下载原件」和「重试」,方便用其它工具修复后再导入。
License
MIT,见 LICENSE。随包分发的 pdf.js 仍为其 Apache-2.0 许可,副本在 public/LICENSE-pdfjs.txt。
Links
More in this category
tt-a1i/archify#integrations/deepseek-harness★ 92724
Generate validated, self-contained interactive architecture, workflow, sequence, data-flow, and lifecycle diagrams from repositories or system descriptions.
dream-num/dsh-univer-office★ 657
Give DeepSeek Harness a real office environment. Univer Office Plugin brings spreadsheets, docs, slides, canvases, relational tables, and more into one runtime — with connected data, validation, versioned changes, and isolated worktrees for multi-agent collaboration.
ECNU/EduWork#dsh-knowledge-studio★ 275
A workspace-based Studio for source-grounded reports, slides, tables, mind maps, quizzes, flashcards, audio and video, using DSH models and shared artifact services. Office generation requires Python 3.12+ with its dependencies and DSH_OFFICE_PYTHON configured; media rendering requires Chromium, and local ASR additionally requires whisper.cpp and a model.
PerryLink/dsh-industry-research★ 215
Deterministic industry research reports for DeepSeek Harness — company and industry research flows produce structured, verifiable reports from staged evidence.
HuanLinOTO/dsh-plugin-mineru★ 51
Expose MineRU document parsing tools to the model.
PolinniZhong/dsh-knit★ 48
Puts the Markdown documents, source files, images and video that already exist anywhere in the session workspace into the DSH sidebar, ranked by relevance to the current conversation. The default lexical mode matches your recent messages against title, summary and body locally with IDF weighting (BM25) — no model calls, no network, nothing leaves the machine. The list comes from scanning the workspace rather than from a recent-files list, so restarting DSH or opening a new session does not empty it. Results are organised into a three-tier reading order (primary / supporting / related) with a verifiable reason on every row — which field matched, which document cites this one — and one click opens an in-place preview: Markdown as rendered text, relative-path images actually drawn, source code with the host's own syntax highlighting, video streamed over HTTP Range. The same Context Pack is exposed to the agent as a knit_docs tool. Later versions added read evidence and lifecycle tracking (attribution is frozen at the moment of reading), pin / exclude (exclusion applies before retrieval, and is undoable), relation evidence (references / imports / tests, with line numbers) and an incremental index reused across restarts. Since v0.23 there is also an optional hybrid mode: it is off by default and only runs once you configure an Ollama or OpenAI-compatible embedding provider yourself. When it runs, what leaves the machine is your query text plus each candidate file's title and summary — a Markdown summary is an excerpt of the body's first paragraph (at most 60 characters), a code file's summary is its workspace-relative directory, and an image or video contributes its file name; full bodies and absolute paths are not sent, and a loopback provider keeps everything on this machine. Since v0.24 it also associates uncommitted changes: a read-only git status (fixed argv, no shell, whitelisted child-process environment) combined with the same reference / import / test / mention evidence shows which files a change is likely to drag along, and it is off by default. The benefit of semantic retrieval still awaits a real-provider run, so no recall improvement is claimed.




Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.