dsh-office-preview
Manifest validPreviews Word (.docx) and Excel (.xlsx) files in the DeepSeek Harness sidebar document pane — OOXML parsed in the browser, no Office, no network.
dsh-office-preview
Word (.docx) and Excel (.xlsx) previews for the DeepSeek Harness sidebar document pane — read-only, no Office installation, no network.
Without this plugin, opening a .docx or .xlsx in the sidebar falls through to the plain-text renderer and shows "Not a text file, preview is unavailable for now."
What it renders
| Extension | Rendered |
|---|---|
.docx .docm .dotx .dotm | Headings, paragraphs with indentation and bullets kept, bold / italic / underline, tables including nested ones |
.xlsx .xlsm .xltx .xltm | Sheet tabs, row and column headers, merged cells, column widths, number and date formats, cached formula results |
Legacy binary formats (.doc, .xls) are not claimed by this plugin and still fall back to plain text. .pptx is out of scope today.
How it works
- No dependencies, no services. The plugin registers two renderers on the official extension points
ctx.documentPreviewsand thesidebar.right.tab.documentslot. It patches no Harness source, calls no external service, and its only import isreact. - OOXML is parsed in the browser.
lib/client.jscontains a ZIP central-directory reader (raw-DEFLATE throughDecompressionStream) and a small XML reader; no JSZip, SheetJS or mammoth. - The host half is empty.
lib/index.jsexists only so the Cordis loader carries a client entry; all visible behaviour lives in the browser bundle.
Install
From the plugin market (recommended). In Harness: Settings → Plugin Market → Discover → search dsh-office-preview → Install → restart Harness when asked.
From the prebuilt tarball (no market, no npm).
dsh plugin --profile web add https://github.com/JohnGD/dsh-office-preview/releases/latest/download/dsh-office-preview.tgz
Manual, offline — install.ps1 on Windows, install.sh on macOS and Linux:
powershell -ExecutionPolicy Bypass -File install.ps1
The script does three things:
- copies the package to
<home>\plugins\dsh-office-preview; - links
<home>\profiles\node_modules\dsh-office-previewat it — a root the Cordis loader resolves plugin entry names through; - appends one
insertrow to the profile's own patch layer<home>\profiles\web\cordis.patch.yml, backing that file up first.
The patch layer is watched (patchReload: live), so a page refresh (Ctrl+R) usually activates the plugin; if nothing changes, restart DSH Desktop.
This package is not published to npm: npm writes the publisher's account e-mail into every published package's public metadata (maintainers[].email). Shipping a prebuilt tarball on a GitHub Release avoids that entirely.
Where it shows up
- Harness → Settings → Plugin inventory lists
dsh-office-previewas an active plugin, next to the built-in ones. - Plugin market → Installed lists it only when it is installed as a profile dependency (
dsh plugin add, or alink:dependency). There it is labelled "local development" and can be enabled, disabled or uninstalled. Theinstall.ps1form — patch layer plus fallback link — does not appear in that list; its advantage is that it touches no profile dependency, lockfile or generation projection. The two forms must not be enabled at once: mounting one entry id twice collides.
Uninstall
powershell -ExecutionPolicy Bypass -File uninstall.ps1 # keeps the copied files
powershell -ExecutionPolicy Bypass -File uninstall.ps1 -RemoveFiles # removes them as well
If the plugin was installed as a profile dependency, remove it from the market instead: Market → Installed → Uninstall.
Self-check
$node = "$env:APPDATA\dsh-desktop\harness\.desktop-bin\node.cmd" # or any Node >= 20
& $node test\parse.mjs samples\sample.xlsx samples\sample.docx # parsers
& $node test\render.mjs samples\sample.xlsx samples\sample.docx # render path, edge cases included
& $node test\plugin.mjs # client registration contract
Each script prints ALL CHECKS PASSED on success. samples/ carries a small workbook and a small document, so the checks run without any external file.
Limits
- Read-only: a preview never writes to the document.
- Images, comments, tracked changes, charts and macros are not rendered; their text is still shown.
- The per-file read cap comes from Harness's
workspaceFiles.readAll— 32 MiB by default. - Large sheets are truncated at 4000 rows × 160 columns, with a notice.
License
MIT
中文说明
dsh-office-preview —— DeepSeek Harness 右侧栏文档面板的 Word(.docx)与 Excel(.xlsx)预览插件:只读、不依赖 Office、不联网。
没有这个插件时,在右侧栏点开 .docx / .xlsx 会落到纯文本渲染器,显示「非文本文件,暂时无法预览」。
渲染能力
| 扩展名 | 渲染内容 |
|---|---|
.docx .docm .dotx .dotm | 标题层级;段落(保留缩进与项目符号);加粗 / 斜体 / 下划线;表格(含嵌套表格) |
.xlsx .xlsm .xltx .xltm | 工作表分页签;行列号表头;合并单元格;列宽;数字与日期格式;公式的缓存值 |
旧二进制格式(.doc、.xls)本插件不接管,仍走官方纯文本回退;.pptx 目前不在范围内。
实现方式
- 零依赖、无外部服务。 插件只在官方扩展点
ctx.documentPreviews与插槽sidebar.right.tab.document上注册两个渲染器;不修改 Harness 任何源码,不调用外部服务,唯一引入的模块是react。 - OOXML 在浏览器内解析。
lib/client.js内置 ZIP 中央目录读取器(用DecompressionStream解 raw-DEFLATE)与一个小型 XML 读取器,不引入 JSZip、SheetJS 或 mammoth。 - 宿主半是空的。
lib/index.js的唯一作用是让 Cordis loader 里存在这个条目,全部可见行为都在浏览器半。
安装
从插件市场安装(推荐)。 在 Harness 里:设置 → 插件市场 → 发现 → 搜索 dsh-office-preview → 安装 → 按提示重启 Harness。
用预构建包安装(不用市场、不用 npm)。
dsh plugin --profile web add https://github.com/JohnGD/dsh-office-preview/releases/latest/download/dsh-office-preview.tgz
离线手动安装 —— Windows 用 install.ps1,macOS 与 Linux 用 install.sh:
powershell -ExecutionPolicy Bypass -File install.ps1
脚本只做三件事:
- 复制包到
<home>\plugins\dsh-office-preview; - 建立
<home>\profiles\node_modules\dsh-office-preview联结指向它 —— 这是 Cordis loader 解析插件条目名所用的回退根目录; - 在 profile 自己的补丁层
<home>\profiles\web\cordis.patch.yml追加一条insert行,改前自动备份该文件。
补丁层被 live 监听(patchReload: live),通常刷新页面(Ctrl+R)即可生效;若界面无变化,重启一次 DSH Desktop。
本包不发 npm:npm 会把发布者的注册邮箱写进每个已发布包的公开元数据(maintainers[].email)。改为把预构建包挂在 GitHub Release 上,可以完全避开这一点。
它出现在哪里
- Harness → 设置 → 插件清单:会列出
dsh-office-preview处于活动状态,与内置插件并列。 - 插件市场 → 已安装:只有把它装成 profile 依赖(
dsh plugin add,或link:依赖)时才会出现,标记为「本地开发」,可在市场里启用 / 禁用 / 卸载。用install.ps1装的形式(补丁层 + 回退目录链接)不在该列表中;它的好处是完全不触碰 profile 依赖、锁文件与代际投影。两种形式不能同时启用:同一条目 id 挂两次会冲突。
卸载
powershell -ExecutionPolicy Bypass -File uninstall.ps1 # 保留已复制的文件
powershell -ExecutionPolicy Bypass -File uninstall.ps1 -RemoveFiles # 连文件一起删除
若插件是以 profile 依赖装的,请在市场 → 已安装 → 卸载里移除它。
自检
$node = "$env:APPDATA\dsh-desktop\harness\.desktop-bin\node.cmd" # 或用任意 Node >= 20
& $node test\parse.mjs samples\sample.xlsx samples\sample.docx # 解析器
& $node test\render.mjs samples\sample.xlsx samples\sample.docx # 渲染路径(含边界用例)
& $node test\plugin.mjs # 客户端注册契约
三个脚本成功时都会打印 ALL CHECKS PASSED;samples/ 里带了一个小工作簿与一个小文档,不需要外部文件就能跑。
边界
- 只读:预览不会写回文档。
- 图片、批注、修订痕迹、图表、宏不渲染,其文字内容仍会显示。
- 单文件读取上限取决于 Harness 的
workspaceFiles.readAll,默认 32 MiB。 - 大表格最多渲染 4000 行 × 160 列,超出部分给出提示。
许可
MIT
Versions
| Latest version | Published | Size |
|---|---|---|
| 1.0.0 | — | — |
Comments
Loading…
From the same category
by awesome-dsh-plugin
A curated list of plugins for DeepSeek Harness (dsh) · DeepSeek Harness 插件精选列表
★ 17.6k
CC0-1.0
Python
Oct 1, 2026
by zhu1090093659
DeepSeek Harness (DSH) Web Plugin Aggregation Ecosystem · Everything is a plugin, distributed via the Creative Workshop
★ 8.3k
↓ 203/wk
Apache-2.0
TypeScript
Oct 2, 2026
dsh plugin --profile web add dsh-webby yjh051108
dsh-routing-suite — injector + router-standard kit: install the runtime injector first, then the task-aware reasoning-mode router preset (measured P1-P23).
★ 7k
MIT
JavaScript
Sep 18, 2026
dsh plugin --profile web add @dsh-external/dsh-super-injectorby strukto-ai
The World's First Virtual Terminal for AI Agents
★ 3.7k
↓ 308/wk
Apache-2.0
TypeScript
Oct 2, 2026
dsh plugin --profile agent add @struktoai/mirage-dshby xmanrui
通过扫码或机器人凭据把IM机器人接入DeepSeek Harness(支持飞书、微信、钉钉、企业微信、QQ、Slack、Telegram、Discord和WhatsApp)。 Connect IM bots to DeepSeek Harness via QR code or credentials (9 channels).
★ 1.6k
↓ 17.2k/wk
MIT
JavaScript
Oct 2, 2026
dsh plugin --profile web add @xmanrui/dsh-imby hyhmrright
AI code reviews grounded in 12 classic engineering books — decay risk diagnostics with book citations, severity labels, and 6 analysis modes including full-sweep auto-fix
★ 1.5k
MIT
JavaScript
Sep 28, 2026