dsh-tool-pdf
DSH PDF reader plugin (pdf_info / pdf_extract / pdf_render)
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 28, 2026
- Updated
- Aug 28, 2026
Introduction
dsh-tool-pdf
给 DeepSeek Harness (DSH) 的 PDF 读取/解析工具插件(npm 包名 dsh-tool-pdf)。用纯 JS 的 pdf.js 实现,无原生编译依赖,装到任何 DSH 环境即可让 Agent 直接读本地 PDF。
提供的工具
| 工具 | 作用 | 输出 |
|---|---|---|
pdf_info | 页数、文档元数据(标题/作者/关键词/日期)、每页字符数 | JSON |
pdf_extract | 提取全文/指定页文本,可选按页分隔、字符上限 | 纯文本 |
pdf_render | 渲染页面为 PNG(供视觉模型看图/OCR 扫描件) | JSON(图片路径列表) |
给用户:安装
# 1. 安装包到某个 Profile
dsh plugin --profile <profile-name> add dsh-tool-pdf
# 2. 在某个 agent preset 的 agent.cordis.yml 里加一行插件
# (本地 preset 位于 ${DSH_HOME:-~/.dsh}/.agent-presets/<id>/agent.cordis.yml)
agent.cordis.yml 中的行:
- id: tool-pdf
name: 'dsh-tool-pdf'
然后启动(或重启)该 preset 的会话,模型即可调用 pdf_info / pdf_extract / pdf_render。
pdf_render依赖可选的@napi-rs/canvas(有预编译二进制,通常随npm install自动装好)。 若环境装不了,pdf_info/pdf_extract仍可用——它们是纯 JS 的。
给开发者:发布到 GitHub + npm
-
改
package.json:name→ 已设为dsh-tool-pdf(如需 scope 可改为@你的名字/dsh-tool-pdf)repository.url→ 已指向https://github.com/HuanyuTan777/dsh-tool-pdf.git
-
本地验证:
npm install node test/smoke.mjs # 应打印 SMOKE OK -
推 GitHub,然后发布:
npm publish -
之后任何人都能
dsh plugin --profile <name> add dsh-tool-pdf安装。
架构说明
DSH 的每个能力都是 Cordis 插件,工具插件导出四个键:
export const name = "tool-pdf"; // 插件名
export const inject = ["tools"]; // 硬依赖(工具注册表)
export function apply(ctx) { // 用 ctx.tools.register(defineTool({...})) 注册工具
// ...
}
defineTool 来自 @deepseek-ai/dsh-tools,是 DSH 官方工具包(@deepseek-ai/dsh-tool-goal、dsh-tool-bash 等都用它)。本插件只声明 @deepseek-ai/cordis 和 @deepseek-ai/dsh-tools 为 peer 依赖,由 DSH 宿主提供。
- 纯 PDF 逻辑在
lib/pdf.js(不依赖 DSH 类型,可独立测试) - 工具注册在
lib/index.js
目录
dsh-tool-pdf/
├── package.json
├── lib/
│ ├── index.js # 插件入口:注册三个工具
│ ├── index.d.ts # 类型声明
│ └── pdf.js # pdf.js 封装:info / extract / render
└── test/
└── smoke.mjs # 冒烟测试:挂载插件 + 跑三个工具