DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Office Tools — DeepSeek Harness 插件(DSH Plugin)
← Plugins

dsh-office-tools

Office Tools

面向 DSH 模型的 Office 工具:完全通过官方 DSH 文件系统服务,在会话工作区内创建、读取和更新 Word(.docx)、Excel(.xlsx)和 PowerPoint(.pptx)文件。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-office-tools@1.0.3
README兼容性版本

兼容性与来源证明

Office Tools 以 dsh-office-tools 发布,当前版本为 1.0.3。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
npm
Registry 更新时间
2026/9/20

版本

1.0.3stable
2026/9/17
1.0.2stable
2026/9/14
1.0.1stable
2026/9/4
查看其余 6 个版本收起版本
1.0.0stable
2026/9/4
0.6.0stable
2026/9/1
0.5.0stable
2026/9/1
0.4.0stable
2026/8/30
0.2.0stable
2026/8/30
0.1.0stable
2026/8/15

相关插件

正在加载相关插件…

最新版
1.0.3
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
162.8 kB
文件数
17
Surface
any
许可证
MIT
发布源
npm
GitHub
★ 21
周下载
2,123
安全扫描
✓ v1.0.3 扫描通过
最近提交
2026/9/18
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

README

dsh-office-tools

Eight model-facing Office file tools for DeepSeek Harness, running entirely in the plugin host half.

Install: dsh plugin --profile web add github:kw78/dsh-office-tools

DSH Store lists a fixed Commit; verify the installed source against it: ae1ddd40f98debf4b1430748d287951f35faaf36 (tag v1.0.0). Later commits on main carry test/doc additions only unless the version bumps.

Eight model-facing Office file tools for DeepSeek Harness, running entirely in the plugin host half — dependency-free since 1.0.0: every package is generated and parsed by this plugin's own OOXML engine, and every byte crosses the official DSH filesystem service (ctx.fs), never the raw file system.

ToolPurpose
word_createCreate .docx (title, paragraphs, bullets, one table)
word_readExtract text from any .docx; format: "markdown" renders headings, lists, and tables structurally
word_updateAppend paragraphs, bullets, and/or a table to an existing .docx
excel_createCreate a multi-sheet .xlsx from scalar cell grids
excel_readRead one or all sheets as scalar rows; formulas return cached values or '=…' strings
excel_updateReplace/create whole sheets, or write cells by A1 address
ppt_createCreate a 16:9 .pptx (title slide, titles, paragraphs, bullets, notes, linked PNG/JPG/GIF images) and echo every element's landing position
ppt_readExtract per-slide paragraphs, tables, speaker notes, image counts, alt texts — plus every shape's bounding box in inches and a text wireframe sketch

String cells starting with = are written as real Excel formulas (Excel computes them on open).

Demo

One prompt, a quarterly-report trio — Word with a metrics table, Excel with =SUM/variance formulas, PowerPoint with speaker notes:

One prompt generating report.docx, budget.xlsx, and deck.pptx

The prompt behind that session:

Generate the Q3 quarterly-report trio: report.docx (title, two summary paragraphs, three highlights, a metrics table), budget.xlsx (a Budget sheet with =SUM totals and plan-vs-actual variance formulas, plus a Summary sheet), and deck.pptx (title slide + three content slides with speaker notes).

The model turns it into word_create → excel_create → ppt_create (reads come back through word_read / excel_read / ppt_read; freshly written formulas read back as '=…' strings until Excel caches values). The whole flow is pinned by tests/demo-trio.spec.ts, so the demo cannot drift from the tools. The file sizes in the image come from a real run of that test scenario.

Harness integration

The plugin follows the standard DSH host-plugin contract:

  • It exports name / inject / apply / Config; inject = ['tools', 'fs'] — the official tool registry and the official filesystem service (@deepseek-ai/dsh-tools, @deepseek-ai/dsh-fs) are its only runtime service dependencies.
  • apply(ctx) wraps every ctx.tools.register(defineTool({...})) in ctx.effect(...) so Cordis disposes the registrations with the plugin fiber.
  • defineTool declares model-visible parameters, a validated canonical output.schema, and a pure output.render text projection.
  • execute(args, exec) resolves every path against exec.agent.session.header.cwd; relative paths stay in the session workspace and absolute paths are accepted only when still inside it. Containment and symlink resolution are enforced by the ctx.fs backend (plus a lexical pre-check here).
  • All reads arrive as raw bytes via ctx.fs.readBytes; all writes leave as UTF-8 text via ctx.fs.writeText — published atomically by the backend; overwrite defaults to false.
  • Generated packages are pure ASCII by construction (an ASCII-safe STORE zip planner pads each XML part and aligns offsets so every CRC/size/offset field stays byte-safe), which is exactly what lets real .docx/.xlsx/.pptx files travel through the text channel byte-identically. Non-ASCII text encodes as XML character references; every Office suite opens the result.
  • Reads accept any real-world package (STORE and DEFLATE entries, bounded by the zip-bomb guard).
  • word_update / excel_update re-publish through the text channel, so they work on packages whose every part is text (always true for files these tools write, and for OOXML packages without binary media); packages carrying binary media are refused with a clear error instead of being corrupted.
  • Images are LINKED, not embedded: the model controls placement fully (x/y/w/h inches, contain/cover cropping, alt text; PNG/JPG/GIF headers are sniffed so omitted dimensions default to natural size), and the deck references the workspace image file. Keep the image files next to the deck when moving it — that is the trade-off of a dependency-free, binary-free package.
  • ppt_create echoes the full layout (every element's box in inches + the canvas size + a text wireframe sketch per slide); ppt_read returns the same geometry for any deck, so the model can see and re-author compositions.

Build

pnpm install
pnpm run check   # typecheck + tests + build

Artifacts: lib/index.js (ESM host bundle of this plugin's own code only — ~116 kB, zero runtime dependencies) and lib/types/**/*.d.ts. Every @deepseek-ai/* package (cordis, the dsh services, schemastery) stays external and is provided by the profile's node_modules.

Install

# npm (recommended)
dsh plugin --profile web add dsh-office-tools

# GitHub source
dsh plugin --profile web add github:kw78/dsh-office-tools

# local checkout
dsh plugin --profile web add /path/to/dsh-office-tools

Restart the DSH server after installation. The eight tools appear in the next prompt assembly. Since 1.0.0 the plugin has zero runtime dependencies — no npm fetch, no CDN, no postinstall scripts; installation is the committed source, nothing else. The host must provide the fs service (every DSH profile that ships the built-in read/write tools does).

Configuration

The plugin declares a schemastery Config the Loader validates at load time. One option exists today:

OptionTypeDefaultEffect
enablePptToolsbooleantrueRegister ppt_create / ppt_read. Set to false to load this plugin for Word/Excel only.

enablePptTools: false exists for coexistence: dedicated presentation plugins such as dsh-ppt also register a ppt_create, and DSH refuses duplicate tool names at startup (tool "ppt_create" is already registered). Disable the PPT pair here and let the dedicated plugin own presentations:

# profile cordis.patch.yml
- insert:
    - id: dsh-office-tools
      config:
        enablePptTools: false

Community indexes

  • Registration blocks for awesome-dsh-plugin / dsh-market are in docs/hub-registration.md.
  • Recommended repository topics: dsh, dsh-plugin, deepseek-harness, office.

Safety

  • All file access is confined to the calling agent's session workspace.
  • Reads are capped at 50 MiB compressed; before anything is inflated, the archive's own declared sizes are checked against budgets (256 MiB per entry, 512 MiB per archive, 100 000 entries), so zip bombs are refused rather than decompressed. XML parts carrying DOCTYPE/ENTITY declarations are refused outright.
  • Text/cell results are bounded and mark truncated.
  • Creates/updates are bounded by row and cell limits and refuse overwrites by default.
  • No LibreOffice/PowerPoint/Word subprocess is spawned and no third-party library is shipped: formats are generated and parsed by this plugin's own ASCII-safe OOXML engine over node:zlib.
  • The plugin's own code never touches the file system directly — there is no node:fs import anywhere in src/; every byte flows through the official, user-visible ctx.fs service. This is what lets third-party store automation verify the whole runtime source deterministically (DSH Store issue #334: 1.0.0 passes the complete automatic low-risk policy — zero runtime dependencies, zero file/network/commands/credentials signals, bounded source, exact per-release compatibility declarations).
  • Roadmap: docs/ROADMAP.md.

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / git-graph / pet / remote-web-ui / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。Mnemondsh-mnemon面向 DeepSeek Harness 的可组合三层记忆控制平面:持久化运行时上下文、可搜索的项目文档、可插拔的长期记忆、受保护的策略、WebUI 和无头工具。