前言¶
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