DeepSeek Harness plugin

read-paper

A paper-review panel for the DeepSeek Harness: converts PDF papers into structured, selectable text (columns, headings, tables, sub/superscripts, table of contents) with figure and display-equation

Jump to install

Source facts

Repository
louwenbo580/read-paper
Latest update
Aug 21, 2026
Category
Docs & Rendering
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/louwenbo580/read-paper
Plugin: read-paper
Author: louwenbo580

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

paper-review

A paper-review panel for the DeepSeek Harness: upload a PDF paper and read it as structured, selectable text beside the conversation, with figures and display equations rendered visually.

Features

  • PDF → structured text (runs on the Harness host, via poppler):

- two-column layout reconstruction (gutter detection + full-width line reassembly) - headings (size + all-caps normalization) and run-in heading splitting - tables (geometric column detection, wrapped-cell continuation) - sub/superscripts, dot-leader table of contents - scanned-PDF fallback to page images

  • Figures and display equations rendered as images (pdftoppm crops +

pdfimages raster extraction), with equation text kept as hidden spans so it stays searchable.

  • Right-side reader panel: real third column when space allows (the harness

details column), auto sidebar-collapse to make room, floating fallback for narrow windows, slim tab when collapsed.

  • Ask dialog: select text → a small dialog appears → type a question

("explain this", "how does this relate to…") → the question plus the selection, its surrounding context, and the abstract are sent to the model.

  • Projects: Create project materializes the paper (paper.pdf,

paper.md, paper.html, figures, README with title/abstract) into a Paper workspace, opens a session there, and asks the agent to load the paper — each project keeps its own paper, so multiple papers coexist.

Requirements

  • DeepSeek Harness (dsh) installed.
  • poppler CLI tools on PATH: pdftotext, pdftoppm, pdfimages.

- macOS: brew install poppler - Debian/Ubuntu: sudo apt-get install poppler-utils

Install

From npm (recommended)

dsh plugin --profile readPaper add @deepseek-ai/dsh-web-app paper-review
# then start the harness:
dsh --profile readPaper

dsh plugin installs the packages, then reconciles dsh.profile.bundles — packages that declare dsh.bundle join the profile's layer stack automatically.

> Why @deepseek-ai/dsh-web-app is included: a profile created on a > machine that has never used it before is seeded with only > @deepseek-ai/dsh-base (the web surface bundle is not a default for > unknown profile names). Adding @deepseek-ai/dsh-web-app explicitly is what > gives the profile the browser GUI this plugin's panel renders into. On a > machine where a readPaper profile already exists with the web app, plain > dsh plugin --profile readPaper add paper-review is enough.

Prerequisites

  • poppler CLI tools on PATH (pdftotext, pdftoppm, pdfimages) —

see [Requirements](#requirements).

  • pnpm for the dsh plugin command (it forwards to pnpm). If pnpm is

missing: corepack enable pnpm or npm i -g pnpm.

Manual install (no npm)

1. Copy this directory into ~/.dsh/profiles/readPaper/packages/paper-review. 2. Make it resolvable (no pnpm needed): ``bash mkdir -p ~/.dsh/profiles/readPaper/node_modules ln -s ../packages/paper-review ~/.dsh/profiles/readPaper/node_modules/paper-review ` 3. Add "paper-review" to dsh.profile.bundles in ~/.dsh/profiles/readPaper/package.json. 4. dsh --profile readPaper`

Usage

  • Paper tab on the right edge opens the reader column.
  • Load PDF… uploads (drag-and-drop onto the reader also works).
  • Select text → the ask dialog appears → type a question, press Enter.
  • Create project writes the paper into the Paper workspace and opens a

session with the paper loaded as context.

  • The converted documents are stored under ~/.dsh/paper-review/ and survive

restarts.

How it works

  • lib/index.js (host half): HTTP routes (/paper-review/…) for upload,

conversion, documents, figures, projects, and per-session stores. The converter extracts word geometry with pdftotext -bbox, rebuilds columns and lines, classifies blocks (headings, tables, ToC, math), and rasterizes figure/equation regions with pdftoppm.

  • lib/client.js (client half): the panel, tab, ask dialog, and project

flow. Ships as a hand-written __ModuleLoader__ CJS bundle — no build step.

  • cordis.patch.yml: the bundle patch that inserts the plugin row.

Development

  • npm run check — syntax checks.
  • npm run eval — downloads 10 recent astro-ph papers with their arXiv HTML

versions, converts them, and scores text coverage against the references (PAPERS=2 npm run eval for a quick run). The corpus lands in eval/run/ (gitignored).

Limitations

  • Conversion fidelity depends on the PDF's text layer (scanned papers render

as page images).

  • Display equations are images (their text is preserved as hidden spans);

inline math is reconstructed as sub/superscript text.

  • Content that exists only as PDF annotations (e.g., giant author lists in

some journals) cannot be extracted.

  • The plugin's HTTP routes follow the harness's localhost trust model.