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