@jiaoqsh/dsh-document
DeepSeek Harness bundle: the read_document tool reads Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, and PDF files as Markdown for the model
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:jiaoqsh/dsh-document说明文档
阅读完整 README ↗dsh-document
A DeepSeek Harness plugin bundle (@jiaoqsh/dsh-document) that gives the model a read_document tool: Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, CSV, and PDF files are converted to line-numbered Markdown the model can page through with offset/limit.
Conversion runs locally through @firecrawl/anydoc (Rust core, Node bindings, MIT): no API key, no network, no external binaries. Files are read through the harness ctx.fs seam, so whatever filesystem provider and sandbox policy a deployment mounts applies unchanged.
Install
Into an existing profile (web, headless, or your own):
dsh plugin --profile web add github:jiaoqsh/dsh-document#
pnpm ≥ 10 refuses to run a git dependency's prepare script until you allow it; the first add fails and prints the exact key to copy into the profile's pnpm-workspace.yaml ($DSH_HOME/profiles//pnpm-workspace.yaml). The key names the resolved tarball, so a bare package name does not match:
allowBuilds:
'@jiaoqsh/dsh-document@https://codeload.github.com/jiaoqsh/dsh-document/tar.gz/': true
Re-run the add. Allowing the build means executing this package's prepare (a tsdown transpile of src/) on your machine at install time; pin a commit so a later push cannot change what runs. A packed tarball (pnpm pack → dsh plugin add ./jiaoqsh-dsh-document-.tgz) needs no allowance.
dsh plugin prints "missing peer" warnings for the @deepseek-ai/* packages: expected. The dsh installation supplies them at runtime; profiles deliberately do not install peers.
Verify, then boot:
dsh --profile web --dump-config # shows a "# == @jiaoqsh/dsh-document" layer
dsh --profile web
Remove with dsh plugin --profile web remove @jiaoqsh/dsh-document.
From a source checkout of the harness
pnpm dsh web --patch /absolute/path/to/dsh-document/overlay.yml
where the overlay inserts the built entry by absolute path:
- insert:
- id: document-tools
name: '/absolute/path/to/dsh-document/lib/index.js'