dsh-crawshrimp-office:DSH 本地 Word / PowerPoint 与 OOXML 工具

前言

在 DeepSeek Harness(DSH)里让智能体产出 Office 文档,常见做法是依赖外部服务、Python 运行时,或把内容留在聊天里由人手工粘贴。这类路径要么需要联网和额外部署,要么难以在本地复核文件是否真实生成、结构是否完整。

dsh-crawshrimp-office(抓虾 Office 插件)把 Word、PowerPoint 的生成、文本提取和 OOXML 校验收进 DSH 插件形态:在配置好的工作区内产出真实的 .docx 和 .pptx,不调用抓虾 API、共享 connector 或模型服务,也不要求 Python 或抓虾后端。下面介绍它的定位、能力与安装用法。

这是什么

dsh-crawshrimp-office 是维护者 howtimeschange 发布的 DSH 客户端类插件,面向本地、可复核的小型 Word 和 PowerPoint 工作流。一句话概括:在 DSH 里注册 7 个工具,用于生成 DOCX/PPTX、从 Markdown 转 DOCX、读取文档纯文本、检查 OOXML ZIP 结构,并按预期文本或数量做校验。

插件在 SkillHub 插件目录 可检索;源码与文档在 GitHub。当前发布标签为 v0.2.0,许可证为 MIT。

核心功能

插件实际注册以下 7 个工具(写操作遵循 DSH 原生权限;只读工具不需要审批):

工具 用途
crawshrimp_office_word_create 用标题、段落和简单字符串表格生成 DOCX
crawshrimp_office_word_read 从现有 DOCX 提取有上限的纯文本
crawshrimp_office_slides_create 生成标题页以及标题/项目符号页组成的 PPTX
crawshrimp_office_inspect 查看 DOCX/PPTX 的 OOXML ZIP 结构、条目元数据和数量
crawshrimp_office_word_from_markdown 将有上限的 Markdown 标题、段落、列表和简单表格转换为 DOCX
crawshrimp_office_slides_read 读取 PPTX 每一页的有上限纯文本,不解码媒体
crawshrimp_office_validate 校验 DOCX/PPTX 必需部件及可选的预期文本、表格数或幻灯片数

安全与落盘方面,所有文件名必须是工作区内的相对路径;插件解析真实路径,拒绝目录穿越和逃逸到工作区外的符号链接,不覆盖已有输出,并先写临时文件再以不可覆盖的原子方式落盘。

Markdown 转换支持标题、段落、有序/无序列表、引用、作为纯文本保留的围栏代码和简单管道表格;行内强调和链接会展平为文本。HTML 会被剥离并返回 warning;图片和媒体语法会保留 alt 文本并返回 warning。插件不会抓取或嵌入外部媒体,也不执行 HTML。

实现范围是 OOXML 包的生成、读取和结构校验:不转 PDF/PNG,不运行 LibreOffice,不涉及 office_run、Office COM、宏、公式、图表、媒体解码或任意 Python 执行。生成成功结果会返回 visualReview: "not_rendered"。

与同系列的 Browser、Data 包可独立安装;PDF、标签、模板和渲染在 Office 路线图中,0.2.0 尚未实现。

安装与启用

环境要求:

  • Node.js ^22.19.0 || >=24.0.0
  • 已验证的 DSH 0.2.1-alpha.4(package.json 中 engines.dsh 为 >=0.2.1-alpha.4 <0.2.1-alpha.5)

通过 DSH 官方插件加载器从 GitHub 安装当前标签 v0.2.0:

dsh plugin --profile demo add -w github:howtimeschange/dsh-crawshrimp-office#v0.2.0

-w 表示在 profile workspace 中添加插件。安装器会读取 package.json 中的 dsh.bundle.patch,并自动加载 cordis.patch.yml。

插件默认将 ./crawshrimp-office-output 作为工作区。启动 profile 前可指定专用目录:

export CRAWSHRIMP_OFFICE_WORKSPACE="$HOME/crawshrimp-office-output"

若宿主需要直接嵌入插件,可加载完整模块命名空间,让 Cordis 同时注册 apply 和工具 schema:

import * as office from 'dsh-crawshrimp-office'

await ctx.plugin(office, { workspaceDir: './crawshrimp-office-output' })

写调用使用宿主的 DSH 原生权限信号;插件没有单独绕过原生审批的配置项。默认限制包括:单个输入文件 16 MiB、单个生成文件 16 MiB、Markdown 输入 512 KiB、文本提取 128 KiB,以及段落、表格、幻灯片等数量上限。可通过插件配置中的 workspaceDir、maxInputBytes、maxOutputBytes、maxTextBytes、maxMarkdownBytes 在限定范围内调整。

典型用法

安装后,可以让 DSH 用自然语言串联本地任务,例如:用 crawshrimp_office_word_from_markdown 把周报保存为 reports/weekly.docx,再用 crawshrimp_office_validate 检查是否包含「本周总结」。也可以直接调用工具;仓库内 examples/word-from-markdown.json 等文件提供示例参数。

用结构化字段生成 Word:

{
  "filename": "reports/brief.docx",
  "title": "Weekly brief",
  "paragraphs": ["A short, reviewable summary."],
  "tables": [{
    "headers": ["Metric", "Value"],
    "rows": [["Orders", "12"]]
  }]
}

用 Markdown 生成 Word:

{
  "filename": "reports/weekly.docx",
  "title": "Weekly brief",
  "markdown": "# Weekly brief\n\n- Orders: 12\n- Returns: 1\n\n| Metric | Value |\n| --- | --- |\n| Conversion | 4.2% |"
}

生成 PPTX:

{
  "filename": "reports/launch-plan.pptx",
  "title": "Launch plan",
  "slides": [{
    "heading": "Milestones",
    "bullets": ["Design", "Review"]
  }]
}

crawshrimp_office_slides_read 返回 slideCount 和每页有上限的文本。crawshrimp_office_validate 在预期文本或数量不满足时返回 valid: false;损坏 ZIP、缺失 OOXML 必需部件、无效 XML 及 DTD/entity 声明会作为工具错误返回。

适用场景与注意

适合在 DSH 会话里本地生成会议纪要、周报、简短方案、简单演示文稿,并对生成结果做结构或关键词校验,文件留在工作区内便于人工打开核对。

插件以当前 DSH 进程权限运行;安装前应自行查看 源码仓库 与 MIT 许可证。它不编辑已有 Office 文档的复杂排版,也不替代 PDF 导出或视觉审查;需要「看起来对不对」时,仍需在本地用 Office 或其它工具打开文件。

DSH 生态强调「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-crawshrimp-office 把 Word/PowerPoint 生成、Markdown 转 DOCX、逐页读 PPT 文本和 OOXML 校验放进 DSH,独立运行、工作区落盘、不依赖抓虾后端。需要试用或查版本时,可看目录页 howtimeschange/dsh-crawshrimp-office 与 GitHub howtimeschange/dsh-crawshrimp-office。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜