# @huiliyi37/dsh-office 面向 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)(`dsh`)的 Office 文档工具插件:生成、读取、编辑电子表格(`.xlsx`)、PDF、演示文稿(`.pptx`)和 Word 文档(`.docx`)。 移植自 [天枢](https://github.com/Tianshu-Tui) 终端编程智能体的 office 插件(上游同为 Apache-2.0 许可),适配 dsh 的 cordis 工具模型。 ## 工具列表 | 工具 | 功能 | | --- | --- | | `xlsx_read` | 列出 `.xlsx` 工作表,或将指定工作表读取为 markdown 表格(大文件支持 range 分页;公式单元格保留公式文本) | | `xlsx_write` | 将二维数组写入新的 `.xlsx`(支持公式单元格、表头加粗、列宽、数字格式) | | `xlsx_edit` | 编辑已有 `.xlsx`:新增工作表、更新单元格(值或公式)、追加行 | | `xlsx_recalc` | 用轻量纯 TS 引擎重算全部公式,报告错误值(`#REF!`/`#DIV/0!`/`#VALUE!`/`#N/A`/`#NAME?`/`#NUM!`)及位置 | | `xlsx_audit` | 静态审计公式结构:数组公式陷阱、聚合范围漏行、公式被硬编码覆盖、同列公式不一致、自引用、字面除零 | | `pdf_create` | 生成真实 PDF:标题、段落、表格、列表、代码块、页脚页码;中文内容通过自动探测的系统字体渲染 | | `pdf_read` | 提取 PDF 文本供上下文阅读 | | `pdf_merge` | 按给定顺序将多个 PDF 合并为一个 | | `pdf_split` | 将 PDF 拆分为单页文件,或按 "1,3,5-7" 抽取指定页 | | `pptx_create` | 按幻灯片定义生成 `.pptx`(标题 / 章节 / 内容 / 双栏 / 图片 / 表格 / 图表),支持主题配色与演讲者备注 | | `pptx_read` | 将幻灯片文本提取为 markdown,可选包含演讲者备注;`include` 可附加结构(summary/layouts/images/tables:形状名与 cm 坐标、图片目标、表格行列) | | `pptx_edit` | 在现有 `.pptx` 内查找替换文本(`` 手术式替换),保留全部版式与样式,适合改错字、更新数字 | | `docx_create` | 按内容块生成 `.docx`(标题 / 段落 / 表格 / 列表 / 代码块),支持条纹表格、页面背景色、对角文字水印 | | `docx_read` | 提取 `.docx` 文本供上下文阅读 | ## 安装与装载 > **兼容性**:要求 `dsh` ≥ `0.1.0-rc.5`(即 `@deepseek-ai/dsh-tools` ≥ `0.1.0-rc.5`)。安装在 `dsh-tools` 为 `0.0.1` 系列的旧核心上会重复安装一份 dsh-tools,导致所有工具调用崩溃(`Cannot read properties of undefined (reading 'prepare')`)。 ### 全量装载(14 个工具) ```sh dsh plugin --profile <名称> add @huiliyi37/dsh-office dsh --profile <名称> ``` 首次执行 `dsh plugin` 会初始化 profile(`@deepseek-ai/dsh-base` 作为首个 bundle)并把本包追加到 profile 的 `bundles` 列表。之后启动该 profile 即自动注册全部工具。 ### 按需装载(只装需要的工具族) 在 profile 的 `cordis.patch.yml` 中传入 `config` 行按族开关。未列出的族保持启用;设为 `false` 即排除(适合控制工具面大小): ```yaml # cordis.patch.yml - insert: - id: dsh-office name: '@huiliyi37/dsh-office' config: enable: xlsx: false # 不用电子表格工具 pdf: true # 保留 PDF 工具 ppt: false # 不用演示文稿 docx: true # 保留 Word 工具 ``` 工具族:`xlsx`(read/write/edit/recalc/audit)、`pdf`(create/read/merge/split)、`ppt`(create/read/edit)、`docx`(create/read)。 ### 卸载 ```sh dsh plugin --profile <名称> remove @huiliyi37/dsh-office ``` ### 手动安装备选 把包装到 Node 可解析的位置,并在自己的 `cordis.patch.yml` 中引用(同样支持 `config.enable` 开关): ```sh npm install @huiliyi37/dsh-office ``` ```yaml # cordis.patch.yml - insert: - id: dsh-office name: '@huiliyi37/dsh-office' ``` ## 使用示例 ```jsonc // xlsx_write — 创建工作簿 { "file_path": "report.xlsx", "data": [["Name", "Score"], ["Alice", 92]], "header_bold": true } // pdf_create — 带标题、表格和列表的文档 { "destination_path": "doc.pdf", "title": "Quarterly Report", "content": [ { "type": "heading", "text": "Summary" }, { "type": "table", "headers": ["Region", "Revenue"], "rows": [["APAC", "120"]] }, { "type": "list", "items": ["Alpha", "Beta"] } ], "page_numbers": true } // pptx_create — 标题页 + 要点页的演示文稿 { "destination_path": "deck.pptx", "slides": [ { "type": "title", "title": "Roadmap 2026" }, { "type": "content", "title": "Highlights", "items": ["Plugin runtime", "Office tools"] } ] } ``` ## Skill(使用指导) 本包附带使用指导 skill(`skills/SKILL.md`,anthropics 兼容格式),教会模型大文件分页读取与生成纪律。安装到 skill 发现根目录: ```sh mkdir -p ~/.dsh/skills && cp -r node_modules/@huiliyi37/dsh-office/skills/dsh-office ~/.dsh/skills/ ``` ## 开发 ```sh npm install npm run build # tsc → lib/ npm test # vitest:经工具执行路径的往返测试 ``` ## 许可 Apache License 2.0。工具逻辑移植自天枢 office 插件(同为 Apache-2.0 许可,版权归 Tianshu contributors);各文件头保留来源说明。