Creates, reads, and edits DOCX, PDF, PPTX, and XLSX through `/documents`, `/pdf`, `/presentations`, and `/spreadsheets`; renders pages to check layout, and turns selections in the sidebar preview into edit requests for the session. Python 3.10-3.13 required.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-office-kit
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:hairyf/dsh-office-kit
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
This plugin publishes its README in Chinese only.
DSH Office Kit
为 DeepSeek Harness (DSH) 提供本地 Word、PDF、演示文稿与电子表格能力,支持 / 菜单、引用 Chip,以及侧边栏预览中的选区标注与修改请求。
📦 安装
在官方插件中安装 dsh-office-kit
或使用命令行安装
dsh plugin add dsh-office-kit
- 在 设置 → 插件 中启用。
- 需要 DSH ≥
0.2.1-rc.2、Python(无需,没有将自动安装)3.10–3.13。 - Windows 缺少兼容 Python 时自动安装;macOS / Linux 使用现有 Python。
特性
- 📝 Word:
/documents创建、读取和编辑 DOCX,支持表格、图片、公式与页眉页脚。 - 📄 PDF:
/pdf创建、读取和编辑 PDF,支持合并、旋转、删页与元数据。 - 📽️ 演示文稿:
/presentations创建、读取和编辑 PPTX,支持项目符号、表格、图表与图片。 - 📊 电子表格:
/spreadsheets创建、读取和编辑 XLSX,支持公式、样式、图表、冻结窗格与重算。 - 🖍️ 侧边栏标注:在 PDF、DOC/DOCX、PPTX、XLSX 预览中吸附段落或框选区域,批量提交修改要求。
- 🔗 会话引用:通过 Chip 调用文档技能;注释链接可悬停查看文件名与要求,PDF 标注附选区截图。
- 🖼️ 渲染校验:DOCX/PPTX/XLSX 经 DeepSeek Harness 自带的 LibreOffice Kit(Windows/macOS 原生引擎,Linux 走 WASM)栅格化,PDF 直接用 PyMuPDF;缺失字体会在报告里点名,不再静默产出豆腐块。SVG/PDF 素材可用
ensure_raster_image.py转成 PNG 后嵌入。 - 🧮 活体表格:
excel-live-control技能通过 COM 驱动已经打开的 Excel / WPS 表格(读区、写值、样式、图表、重算、保存)。
🚀 快速开始
通过菜单处理文档
- 在输入框键入
/,选择 文档、PDF 文档、演示文稿 或 电子表格。 - 回车插入 Chip,描述创建、读取或修改任务。
- 打开生成的文件,在侧边栏预览结果。
在预览中请求修改
- 打开 PDF 或 DOC/DOCX,点击工具栏的 请求修改。
- 悬停吸附段落,点击或拖动框选,输入要求并添加注释。
- 悬停底部 注释数量 查看列表,点击 发送;取消 清空本批。
- Esc:先取消当前选区,再按一次退出标注模式。
- 附件:PDF 附选区截图;DOC/DOCX 仅发送文字与定位信息。
- 草稿:已有输入时先合入草稿,由你确认发送;暂存注释刷新后不保留。
💡 示例文档
📚 配置与限制
- Python:
DSH_OFFICE_PYTHON可指定解释器。 - 标注范围:仅 PDF、DOC/DOCX;扫描 PDF 可框选截图,不提供 OCR。
- 本地文件:不支持 Google Docs / Slides / Sheets 或远程编辑。
- 完整清单:能力与未支持项。
🛠️ 开发与贡献
pnpm install
pnpm run lint --fix
pnpm run typecheck
pnpm run test -- --run
pnpm run build
📜️ 许可证
- MIT
- 示例文档保留 Apache Tika 的许可与声明。
Links
More in this category
tt-a1i/archify#integrations/deepseek-harness★ 87151
Generate validated, self-contained interactive architecture, workflow, sequence, data-flow, and lifecycle diagrams from repositories or system descriptions.
dream-num/dsh-univer-office★ 581
Give DeepSeek Harness a real office environment. Univer Office Plugin brings spreadsheets, docs, slides, canvases, relational tables, and more into one runtime — with connected data, validation, versioned changes, and isolated worktrees for multi-agent collaboration.
ECNU/EduWork#dsh-knowledge-studio★ 214
A workspace-based Studio for source-grounded reports, slides, tables, mind maps, quizzes, flashcards, audio and video, using DSH models and shared artifact services. Office generation requires Python 3.12+ with its dependencies and DSH_OFFICE_PYTHON configured; media rendering requires Chromium, and local ASR additionally requires whisper.cpp and a model.
PerryLink/dsh-industry-research★ 211
Deterministic industry research reports for DeepSeek Harness — company and industry research flows produce structured, verifiable reports from staged evidence.
HuanLinOTO/dsh-plugin-mineru★ 48
Expose MineRU document parsing tools to the model.
PolinniZhong/dsh-knit★ 47
Puts the Markdown documents, source files, images and video that already exist anywhere in the session workspace into the DSH sidebar, ranked by relevance to the current conversation. The default lexical mode matches your recent messages against title, summary and body locally with IDF weighting (BM25) — no model calls, no network, nothing leaves the machine. The list comes from scanning the workspace rather than from a recent-files list, so restarting DSH or opening a new session does not empty it. Results are organised into a three-tier reading order (primary / supporting / related) with a verifiable reason on every row — which field matched, which document cites this one — and one click opens an in-place preview: Markdown as rendered text, relative-path images actually drawn, source code with the host's own syntax highlighting, video streamed over HTTP Range. The same Context Pack is exposed to the agent as a knit_docs tool. Later versions added read evidence and lifecycle tracking (attribution is frozen at the moment of reading), pin / exclude (exclusion applies before retrieval, and is undoable), relation evidence (references / imports / tests, with line numbers) and an incremental index reused across restarts. Since v0.23 there is also an optional hybrid mode: it is off by default and only runs once you configure an Ollama or OpenAI-compatible embedding provider yourself. When it runs, what leaves the machine is your query text plus each candidate file's title and summary — a Markdown summary is an excerpt of the body's first paragraph (at most 60 characters), a code file's summary is its workspace-relative directory, and an image or video contributes its file name; full bodies and absolute paths are not sent, and a loopback provider keeps everything on this machine. Since v0.24 it also associates uncommitted changes: a read-only git status (fixed argv, no shell, whitelisted child-process environment) combined with the same reference / import / test / mention evidence shows which files a change is likely to drag along, and it is off by default. The benefit of semantic retrieval still awaits a real-provider run, so no recall improvement is claimed.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.