Back to home@HuanyuTan777

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

  1. package.json

    • name → 已设为 dsh-tool-pdf(如需 scope 可改为 @你的名字/dsh-tool-pdf
    • repository.url → 已指向 https://github.com/HuanyuTan777/dsh-tool-pdf.git
  2. 本地验证:

    npm install
    node test/smoke.mjs      # 应打印 SMOKE OK
    
  3. 推 GitHub,然后发布:

    npm publish
    
  4. 之后任何人都能 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-goaldsh-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       # 冒烟测试:挂载插件 + 跑三个工具