DeepSeek Harness plugin

dsh-pdf

PDF toolbox for DeepSeek Harness: extract text, metadata, and page ranges from PDF files (local parsing, no API key).

Jump to install

Source facts

Repository
sunshine-lang/dsh-pdf
Latest update
Aug 14, 2026
Category
Tools & Capabilities
GitHub stars
7
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/sunshine-lang/dsh-pdf
Plugin: dsh-pdf
Author: sunshine-lang

Check the source files

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

File explorer4 files
README.en.mdSource · read only
README language

dsh-pdf

中文 | English

PDF toolbox for DeepSeek Harness: extract text, metadata, and page ranges from PDF files. Local parsing via PDF.js (pdfjs-dist) — no API key, no network.

Features

  • pdf_read tool: per-page text extraction with page markers.
  • Page selection: "1-3,5" or "all" — read large documents in chunks.
  • Document metadata (title) and total page count.
  • Bounded by design: byte cap on the file, page cap per parse, character cap per call — truncation is explicit and tells the model how to continue.
  • Reads through the harness filesystem seam (ctx.fs), so the deployment's permission and sandbox policy applies.

Install

From GitHub

dsh plugin --profile web add "github:sunshine-lang/dsh-pdf"

Then restart dsh --profile web. lib/ is prebuilt and committed, so no build permission is needed.

From npm

dsh plugin --profile web add dsh-pdf

From a local checkout (development)

dsh plugin --profile web add ./dsh-pdf

> Note: pnpm installs the dependencies of a link:-style local dependency only if you add them to the profile yourself. A registry/GitHub install handles them automatically: > > ``sh > dsh plugin --profile web add @deepseek-ai/dsh-tools @deepseek-ai/cordis @deepseek-ai/schemastery pdfjs-dist > ``

Use

Start the Web UI and ask the model, for example:

> Read the first 3 pages of paper.pdf and summarize them. > > What does page 7 of contract.pdf say?

The model calls pdf_read with path (required) and optionally pages ("1-3,5" or "all"). Large outputs stop at a page boundary with a note; the model continues with a page range.

Configuration

Override any key through cordis.patch.yml or the profile's patch layer:

- patch:
    - id: dsh-pdf
      config:
        maxFileBytes: 52428800
        maxPages: 200
        maxCharsPerCall: 20000
KeyDefaultMeaning
maxFileBytes20971520 (20 MiB)Inclusive byte cap on the whole PDF; larger files fail with a loud error.
maxPages500Maximum pages parsed in one call; larger documents truncate with a notice.
maxCharsPerCall12000Maximum characters returned by one call; the result truncates at a page boundary.

Invalid configuration fails the load with an actionable error.

Development

npm install        # or pnpm install
npm run build      # tsc → lib/

Rebuild from a DeepSeek Harness checkout (for type resolution against the workspace source) uses tsconfig.local.json instead: tsc -p tsconfig.local.json.

Tests: tests/fixtures/sample.pdf is generated by make-test-pdf.mjs (dependency-free); w3-dummy.pdf is the W3C dummy test file. Integration test: node --import tsx/esm test-integration.ts from a harness checkout.

More plugins by this author

All DeepSeek Harness plugins by this author, in one place: dsh-plugins

License

MIT.