DSH 插件介绍:lateralcircle83/dsh-officecli-connection

前言

在用 DeepSeek Harness(DSH)做智能体开发时,一个常见问题是:希望调用本地已安装的工具,而不是让系统再去下载或写入文件。对于 Office 文档这种场景,已有的做法往往依赖远程服务或需要大量文件写入,而本地 OfficeCLI 提供了另一种选择。lateralcircle83/dsh-officecli-connection 就是为了让 Harness 指向你自己的 OfficeCLI 二进制,并把它内置的指南作为运行时技能挂载起来。

这是什么

这是一个极简的 DSH 插件,把一个本地安装的 OfficeCLI 二进制包成一个 Harness 工具。插件本身不提供二进制,不下载任何东西,也不更新任何文件。它只负责让 Harness 知道二进制在哪里,并通过技能注入的方式,把 OfficeCLI 自带的十份指南(pptx、word、excel、word-form、morph-ppt、morph-ppt-3d、pitch-deck、academic-paper、data-dashboard、financial-model)暴露为运行时技能。

维护者:LateralCircle83
分类:工作流

核心价值是:让模型在本地 OfficeCLI 引擎上工作,而不需要远程服务或额外文件写入。

核心功能

设置页与测试按钮

在 DSH 的设置页面中,有一个「OfficeCLI」区域:

  • 二进制路径(binary path):填写你已安装的 OfficeCLI 可执行文件路径。
  • 测试按钮:点击后会检测版本并报告已挂载的指南数量。清除路径即可关闭 Office 能力。

指南是 Workflow 的一部分,不提供「卸载指南」的开关。要禁用,就把路径指向一个不存在的路径(或清空),指南会随之退出目录。

officecli 工具

插件向 Harness 注册了一个名为 officecli 的工具,参数是 command(命令行字符串或已分割的 argv 数组)。

  • 工具在会话工作目录中启动进程,因此相对路径会像 Shell 一样解析。
  • 渲染出来的页面会以附件形式返回(图片)。

技能映射

OfficeCLI 自带的十份指南通过技能注入的方式暴露,命名规则与 OfficeCLI 的内部 ID 一致:

  • pptx → officecli-pptx
  • word → officecli-docx
  • excel → officecli-xlsx
  • word-form → officecli-word-form
  • morph-ppt → officecli-morph-ppt
  • morph-ppt-3d → officecli-morph-ppt-3d
  • pitch-deck → officecli-pitch-deck
  • academic-paper → officecli-academic-paper
  • data-dashboard → officecli-data-dashboard
  • financial-model → officecli-financial-model

另外还有一个额外的条目 officecli-workflow,这是插件自己的入口,说明哪些指南处理哪些格式、它们都驱动同一个工具,以及与其它 Office 引擎的边界与陷阱列表。

输出边界

输出通道的处理方式如下:

  • stdout:原样作为文本块返回,最多 8 MB。
  • stderr:追加到文本块中,不做解析或丢弃。
  • 退出码:原样透传,不重试或重解释。退出码 2 表示「有注意事项」,需查看 warnings;success 可能为 false。
  • 命名现有图片文件的行:作为持久附件返回为图片块;超出部署大小时会返回路径加提示。
  • 其他内容:不做 JSON 解析、HTML 渲染或文件监视。

已知上游行为

插件在工具描述中复述了 OfficeCLI 的已知行为,以避免模型每次请求都重新发现。已知问题包括但不限于:

  • 二进制按 argv 运行,不支持 &&、\|、>、$VAR 等 shell 语法。
  • 长或非 ASCII 参数建议写入文件,通过 batch <file> --input <json> 传递,避免行内引用破坏。
  • 部分单位行为与直觉相反(如 margin=26 为 EMU,spacing 为无单位点)。
  • add 与 set 对属性名称支持不同,错误名称仅打印 UNSUPPORTED props 但仍退出 0。
  • batch 在失败时会回滚,但汇总行仍计为成功。
  • 字体需同时设置 font.latin 和 font.ea,否则 CJK 可能回退到等宽字体。
  • 表格默认边框与填充需要显式配置,否则文字可能不可见。
  • 写操作会保持进程占用,需要用 close <file> 释放。
  • validate 检查的是包结构而非布局,溢出内容不会报错。
  • xlsx 截图是 HTML 近似,图表与合并单元格可能重叠或裁切。
  • 公式条件中引号处理需注意,避免纯字符串形式丢失引号。
  • 公式写入范围时相对引用不自动偏移,每个单元格独立存储。
  • 修改前提条件会删除缓存值,需用 view issues 或 <x:calcPr fullCalcOnLoad="1"/> 强制重算。
  • colWidths 在创建时固定,后续无法修改,需一次性估算宽度。
  • create 会留空样式部分,需在第一批操作中设置 Normal/Heading 字体,否则 CJK 回退为等线。
  • view text 不展开表格单元格,需用 XML 路径读取内容。
  • 截图页超出范围会返回第一页而非失败;xlsx 截图依赖浏览器,依赖宿主机可用性。
  • view issues 对某些横向 INDEX(..., MATCH(...)) 会误报 #REF!。

与其它 Office 技能共存

在桌面构建中,通常会同时挂载 @deepseek-ai/dsh-skill-office(7 个通过 LibreOffice Kit 渲染/导出的技能)。这个插件不再尝试通过 modelInvocable: false 隐藏其它引擎,而是通过技能名称前缀 officecli-* 与其它家族在目录中机械分离,让模型自行判断使用哪一套技能栈。

安装与启用

在 DSH 中,通过官方命令安装插件:

dsh plugin add github:LateralCircle83/dsh-officecli-connection

安装完成后,在设置页的「OfficeCLI」区域填写你的 OfficeCLI 二进制路径,点击测试按钮确认版本与指南数量。

典型用法

工具调用示例

在 DSH 中,模型可以通过 officecli 工具调用本地 OfficeCLI:

officecli --command "pptx create --file demo.pptx --template demo.pptx --add slide --prop title=Hello --prop content=World"

命令在会话工作目录中执行,相对路径会按 Shell 行为解析。

技能调用示例

模型可以调用对应的 skill 来加载指南和资源:

officecli load_skill pptx --path assets/templates/base.pptx
officecli load_skill word --path assets/guides/academic-paper.md

对应的 skill 名称是 officecli-pptx、officecli-word 等,它们通过 officecli load_skill <slug> 从 stdout 获取 body,并通过 resourceBase 指示相对资源路径。

适用场景与注意

适合需要本地 OfficeCLI 引擎的场景,例如:

  • 对文件写入敏感的环境,希望尽量减少外部文件写入。
  • 已有现成 OfficeCLI 二进制,希望直接复用,而不重新下载或安装。
  • 需要稳定、可控的 Office 文档生成流程,且能接受与其它 Office 技能并存。

注意:

  • 插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。
  • 不要依赖插件来下载或更新 OfficeCLI 二进制,它只负责指向你已有的安装。
  • 输出以文本块和附件形式返回,不涉及 JSON 解析或 HTML 渲染,但要注意输出大小限制。

结尾

这个插件提供了一个干净的路径,让 Harness 使用本地 OfficeCLI,并把它内置的指南作为技能挂载起来,而不需要下载或写入额外文件。如果你已经在用 OfficeCLI,并且希望在 DSH 中直接调用它,可以尝试安装这个插件。

  • 目录页:https://www.skillhub.cn/plugins/LateralCircle83/dsh-officecli-connection
  • GitHub:https://github.com/LateralCircle83/dsh-officecli-connection
羽毛球分组比赛记分
小程序二维码

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

Xiaoye