一个 DeepSeek Harness 插件包@jiaoqsh/dsh-document,给模型提供…
31.5/100
综合分
2
GitHub 星标
500
npm 周下载
—/5
用户评分
数据截至 2026/10/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @jiaoqsh/dsh-documentnpm 源 · @jiaoqsh/dsh-document 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · tool
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 30 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@jiaoqsh/dsh-document @ 0.1.3
✓Node 引擎要求 >=22.19 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 01:46:44
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 1 处,展示前 1 条)
- 读取本地文件lib/pdf-worker.js:16
initSync({ module: readFileSync(require.resolve("@firecrawl/pdf-inspector-wasm/pdf_inspector_wasm_bg.wasm")) });
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-fs@deepseek-ai/dsh-fs-local@deepseek-ai/dsh-llm@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 读取多种文档格式
- 转换为Markdown
- 供模型使用
README
由 DeepSeek 最新模型翻译生成dsh-document
一个 DeepSeek Harness 插件包(@jiaoqsh/dsh-document),给模型提供 read_document 工具:Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV 和 PDF 文件都会转成带行号的 Markdown,模型可以用 offset/limit 翻页读取。
转换在本地完成:office 格式走 @firecrawl/anydoc(Rust 内核,Node 绑定),PDF 走 @firecrawl/pdf-inspector(WASM 构建,跑在 worker 线程里)——不需要 API key,不联网,不依赖外部二进制文件;两者都是 MIT。PDF 支持选页,会插入 标记,并给出页面信息:总页数、文本型 / 扫描型 / 混合型,以及哪些页没有可提取文本。文件通过 harness 的 ctx.fs 接缝读取,所以部署挂载什么文件系统服务商和沙箱策略,就原样生效。
安装
装进已有配置档(web、headless 或你自己的),从 npm 安装:
dsh plugin --profile web add @jiaoqsh/dsh-document
npm 包直接带构建好的代码,安装时不会跑任何东西。
展开完整文档(README 剩余 1 节)
dsh-document
一个 DeepSeek Harness 插件包(@jiaoqsh/dsh-document),给模型提供 read_document 工具:Word、PowerPoint、Excel、OpenDocument、RTF、EPUB、CSV 和 PDF 文件都会转成带行号的 Markdown,模型可以用 offset/limit 翻页读取。
转换在本地完成:office 格式走 @firecrawl/anydoc(Rust 内核,Node 绑定),PDF 走 @firecrawl/pdf-inspector(WASM 构建,跑在 worker 线程里)——不需要 API key,不联网,不依赖外部二进制文件;两者都是 MIT。PDF 支持选页,会插入 标记,并给出页面信息:总页数、文本型 / 扫描型 / 混合型,以及哪些页没有可提取文本。文件通过 harness 的 ctx.fs 接缝读取,所以部署挂载什么文件系统服务商和沙箱策略,就原样生效。
安装
装进已有配置档(web、headless 或你自己的),从 npm 安装:
dsh plugin --profile web add @jiaoqsh/dsh-document
npm 包直接带构建好的代码,安装时不会跑任何东西。发布由本仓库的 release.yml 通过 npm trusted publishing 完成,附带 provenance 证明。
改用 GitHub 安装
dsh plugin --profile web add github:jiaoqsh/dsh-document#<commit-sha>
git 安装会拉取源码,所以 pnpm ≥ 10 会拒绝执行包的 prepare(用 tsdown 转译 src/),直到你放行:第一次 add 会失败,并打印出要复制进配置档 pnpm-workspace.yaml($DSH_HOME/profiles/<name>/pnpm-workspace.yaml)的确切键名。这个键名指向解析后的 tarball,所以光写包名匹配不上:
allowBuilds:
'@jiaoqsh/dsh-document@https://codeload.github.com/jiaoqsh/dsh-document/tar.gz/<commit-sha>': true
重新跑一遍 add。放行构建意味着安装时会在你机器上执行这个包的代码;请固定到某个 commit,这样之后的推送就改不了实际运行的内容。
dsh plugin 会为 @deepseek-ai/* 包打印 "missing peer" 警告:这是正常的。dsh 安装本身在运行时提供这些包;配置档有意不安装 peer。
验证,然后启动:
dsh --profile web --dump-config # shows a "# == @jiaoqsh/dsh-document" layer
dsh --profile web
卸载用 dsh plugin --profile web remove @jiaoqsh/dsh-document。
从 harness 源码检出安装
pnpm dsh web --patch /absolute/path/to/dsh-document/overlay.yml
其中 overlay 用绝对路径插入构建好的入口:
- insert:
- id: document-tools
name: '/absolute/path/to/dsh-document/lib/index.js'
配置
插件包的层插入一行 document-tools,用 schema 默认值。在配置档的 cordis.patch.yml 里按 id 覆盖它;补丁会替换整个 config,所以需要的每个键都要重新写全:
- id: document-tools
config:
maxInputBytes: 104857600 # 100 MiB
readLimit: 2000
maxLineLength: 2000
maxOutputBytes: 51200
pdfMaxPages: 100
pdfProfile: fidelity
| 键 | 默认值 | 含义 |
| maxInputBytes | 52428800 (50 MiB) | 源文件的字节上限,含边界。文件系统服务商在缓冲任何字节之前就会强制执行;超过上限的文件直接拒绝。 |
| readLimit | 2000 | 单次调用返回的 Markdown 行数默认值与最大值。 |
| maxLineLength | 2000 | 每行返回的最大字符数;超出部分截断,并加上 … [line truncated]。 |
| maxOutputBytes | 51200 (50 KiB) | 单次调用返回的行文本最大字节数;窗口会提前停止,页脚会说明如何继续。 |
| pdfMaxPages | 100 | 一次 pages 选择最多能指定的不同页数。 |
| pdfProfile | fidelity | PDF 的 Markdown 配置档:fidelity 保留源结构,compact 消耗更少 token。 |
每个数值都必须是正整数,pdfProfile 必须是这两个名字之一;否则插件加载失败,报错信息会指出是哪个键。
工具
read_document(file_path, offset?, limit?, pages?)
- file_path —— 由文件系统后端解析;相对路径按调用会话的工作区解析。
- offset —— 转换后 Markdown 的起始行,从 1 开始计数(默认 1)。
- limit —— 返回的行数(默认值与最大值都是 readLimit)。
- pages —— 仅 PDF:要转换的页,从 1 开始计数,可写数字和范围,如 "1-3,7"(最多 pdfMaxPages 页)。默认:全部页。指定的页超出最后一页会报错,并说明总页数。
支持的扩展名:.pdf、.doc、.docm、.docx、.ppt、.pps、.pot、.pptx、.pptm、.ppsx、.ppsm、.xls、.xlsx、.xlsm、.xlsb、.odt、.ods、.odp、.rtf、.epub、.csv。格式由扩展名决定,绝不靠内容嗅探(CSV 没有签名)。
规范值(Code Mode 收到的内容):
{ path: string, format: 'pdf' | 'docx' | ..., offset: number,
lines: { number: number, text: string }[], totalLines: number, truncatedByBytes: boolean,
pdf?: { pageCount: number, kind: 'text' | 'scanned' | 'image' | 'mixed',
pagesNeedingOcr: number[], pages?: number[], title?: string } }
面向模型的文本(一个 PDF,共 5 页,取第 2 页和第 4 页):
<path>/work/report.pdf</path>
<format>pdf</format>
<pdf>5 pages, text-based; showing pages 2, 4</pdf>
<content>
1:
2:
3: Revenue grew 12% year over year.
(Showing lines 1-3 of 8. Use offset=4 to continue.)
</content>
混合型 PDF 会在 <content> 之前加上 <warning>Pages 3, 7-8 contain no extractable text (scanned or image content); their content is missing below and would need OCR.</warning>。非 PDF 格式不输出 <pdf> 行。
失败在模型看来就是工具错误:不支持的扩展名(纯文本请用 read)、对非 PDF 传 pages、pages 值格式错误、文件不存在、不是普通文件、超过 maxInputBytes、加密、损坏或不完整、引擎资源限制、页码超出末页、取消,或者没有可提取文本(扫描件或纯图片 PDF 会明确说明需要 OCR;本工具不做 OCR)。
模型体验
系统提示词段落 tool:read_document
模型看到的内容
一句固定的话,顺序 100,紧挨着随包发布的 tool:read 指引:
Use the read_document tool — not read or shell commands — to inspect PDF, Word, PowerPoint, Excel, OpenDocument, RTF, EPUB, and CSV files. It returns the document converted to line-numbered Markdown; use offset and limit to continue reading long documents. For a PDF, pass pages (for example "1-3,7") to read only those pages; page markers like show where each page starts.
Token 影响
固定:段落和工具 schema 给每个请求增加常量数量的 token;结果每次调用最多增加 maxOutputBytes。
KV Cache 影响
前缀稳定:段落文本和 schema 在请求之间从不变化,因此不会让已缓存的提示词前缀失效。
已知限制与后续工作
- 不做 OCR —— 没有文本层的页面会被报告出来(pagesNeedingOcr、<warning> 行),但不会被读取;完全扫描或纯图片的 PDF 会报错并说明原因。
- PDF 转换每次调用都在新的 worker 线程中运行 —— 取消会终止它,harness 事件循环保持空闲,代价是每次调用约 50 ms 的 WASM 启动时间。Office 格式转换(anydoc)跑在 libuv 线程池上,一旦开始就无法取消;maxInputBytes 是它的边界。
- 排版复杂的 PDF 可能把段落压成长行(随后被 maxLineLength 截断);pdfProfile: compact 用结构换 token。
- 引擎是固定的 —— src/converter.ts 里的 DocumentConverter 接口和 routeConverters 是接入托管引擎或支持 OCR 引擎的接缝;目前一个都没接。
- 没有使用 pdf-inspector 原生二进制 —— 它的 npm 构建不提供 darwin-x64 二进制,所以统一跑 WASM 构建,只维护一条代码路径。
开发
pnpm install # also builds lib/ via prepare
pnpm run typecheck
pnpm test # real Cordis Context + real registry + real local fs; no API key
pnpm run build
发布:在 main 上更新 package.json 里的 version,然后推送匹配的 tag(git tag v0.2.0 && git push origin v0.2.0)。release.yml 会校验 tag 与版本是否一致,跑检查,通过 trusted publishing 发布到 npm,并用自动生成的说明创建 GitHub release。
tests/fixtures/ 下的测试夹具是用 macOS 的 textutil 和 cupsfilter 一次性生成的(包括一份五页 PDF 和一份纯图片 PDF),已提交到仓库,因此测试套件在任何地方都能跑。在源码模式下,PDF worker 以 .ts 形式启动,并带上 --experimental-strip-types,所以它不依赖任何 TypeScript 专有的运行时语法。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
jiaoqsh/dsh-document
一个 DeepSeek Harness 插件包@jiaoqsh/dsh-document,给模型提供…
相关插件 · 工具 / 效率
破甲管控台kingcharleslzy-ai/dsh-purge
dsh-purge Community · DeepSeek Harness 社区维护版:宿主兼容、状态诊断、提示词管理、更新与本机备份回滚。基于小杨 / YuJunZhiXue 的 dsh-purge。
★ 4,330已汉化DeepSeek 客户端
74.5
网文长卷lingfengQAQ/webnovel-writer
基于 Claude Code 的长篇网文辅助创作系统,解决 AI 写作中的「遗忘」和「幻觉」问题,支持 200…
★ 7,636已汉化DSH
72.2
多智能体协作HKUDS/AutoSwarm
AutoSwarm: Unify Your Agents. Unify Your Context (Codex · Claude Code · DeepSeek Harness · Muse · Grok · WorkBuddy· nanobot · and more)
★ 2,349已汉化DSH
71.6
Vox 拼贴视频生成Alisa0808/vox-director
🎬 Vox Director拼贴动效导演
★ 2,129已汉化DSH
71.4
Agent 演化引擎Q00/ouroboros
智能体 OS:智能体自己变聪明,我们只守住底线:面试准入、分阶段评估、带预算的进化循环。MCP 服务器,14 种运行时:Claude Code、Codex CLI、Gemini CLI、OpenCode、Copilot、Kiro 等。
★ 6,311已汉化DSH
71.4
智能体运行框架路由HarnessRouter/harnessrouter
智能体 harness 的统一接口。
★ 3,984已汉化DSH
71.3
这是你的仓库?认领条目