前言¶
DSH 原生的 read / write / edit 主要面向 UTF-8 文本,而 PDF、DOCX、XLSX、PPTX 这类办公文档通常是二进制格式,文本处理工具不能直接覆盖。
下面介绍 dsh-basic-office。它是一个 DSH 办公文件插件,提供一组 office_* 工具,用于在 DSH 会话中读取常见办公文档,并生成常见办公文件。
这是什么¶
dsh-basic-office 是一组用于 DSH 会话的办公文件读写工具。
仓库地址为:
https://github.com/pqkisvery666/dsh-basic-office
许可证为 MIT,要求 Node.js >=20。
它主要解决两件事:
- 读取 PDF、DOCX、XLSX、PPTX 等常见二进制文档。
- 生成 DOCX、XLSX、PPTX、PDF、CSV 等常见办公文件。
核心功能¶
读取¶
插件提供以下读取工具:
office_read_pdf:提取 PDF 文本,支持page_start/page_end页范围与max_chars截断。office_read_docx:提取 Word.docx文本,包括标题、段落、表格文字。office_read_xlsx:读取.xlsx/.xls/.csv,按工作表返回制表符分隔的行;支持sheet/range/max_rows。office_read_pptx:提取 PowerPoint.pptx每页幻灯片的文字,包括表格文字。
生成¶
插件提供以下生成工具:
office_write_docx:生成 Word 文档,支持标题、heading1-3/quote/ 普通段落样式和带表头底色的表格。office_write_xlsx:生成 Excel 工作簿,支持多工作表、字符串/数字/布尔/空单元格、自动列宽。office_write_pptx:生成 PPT,支持 16:9 宽屏、标题/副标题/分级项目符号/表格。office_write_pdf:生成 PDF,支持多页、标题/段落/项目符号/表格;非 ASCII 文本使用 Windows 系统字体。office_write_csv:生成 CSV,支持可选表头、comma/tab/semicolon分隔符、默认 UTF-8 BOM。
安装与启用¶
先执行下面的安装命令。该命令将插件安装到 web profile:
dsh plugin --profile web add https://codeload.github.com/pqkisvery666/dsh-basic-office/tar.gz/refs/heads/main
安装后重启 dsh web 服务,新工具对会话生效。
典型用法¶
安装并重启后,可以直接在会话中描述任务,例如:
- 读一下
C:\path\报告.pdf的前 10 页 - 把这个表格生成
data.xlsx和data.csv - 把以下内容生成一份
周报.docx(带标题和表格)和一个 5 页的汇报.pptx - 把这段总结输出成
总结.pdf
与原生行为的一致性¶
dsh-basic-office 在文件读写行为上沿用了 DSH 会话的既有策略:
- 沙箱一致:生成文件受会话沙箱策略约束,越界会得到与原生相同的
[sandbox: ...]拒绝提示。 workspace-write下只能写入工作区与系统临时目录。- 支持
sandbox_permissions+justification的一次性升级,需要用户批准。 - 读前保护:未读过的已有文件不会被直接覆盖。
- 路径解析:相对路径按会话工作区解析。
- 观察事件:读取/生成都会发出
fs/observed。
运行环境与依赖¶
运行环境要求 Node.js >=20。
许可证为 MIT。
依赖包括:
docx
jszip
mammoth
pdfkit
pptxgenjs
unpdf
xlsx
@deepseek-ai/dsh-tools 为可选 peerDependency,版本为 ^0.1.0-rc.0。
注意与限制¶
使用前需要留意以下限制:
- 扫描版 PDF(纯图片无文字层)无法提取文本。
- 老式二进制
.doc不支持,请先另存为.docx;.xls受支持。 - 非 Windows 平台生成 PDF 时,如果没有 CJK 系统字体,中文无法渲染。
- PPTX 读取不含图片/绘图中的文字。
- 插件会在
dsh会话中运行并读写文件,安装前建议检查源码与 MIT 许可证。
结尾¶
dsh-basic-office 的价值在于补齐 DSH 会话对常见办公二进制文档的读取和生成能力,同时沿用 DSH 的沙箱、观察和路径解析机制。
GitHub 仓库:
https://github.com/pqkisvery666/dsh-basic-office