在 DeepSeek Harness 读取 Office / PDF 之前,先把它们转成 Markdown…
30.8/100
综合分
1
GitHub 星标
778
npm 周下载
—/5
用户评分
数据截至 2026/10/17 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-plugin-office-markdownnpm 源 · dsh-plugin-office-markdown 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 18 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-plugin-office-markdown @ 1.2.2
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 22:46:04
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 6 处,展示前 6 条)
- 发起网络请求lib/client.js:57
return fetch(API + path, { headers: { accept: "application/json" } }).then(function (r) { - 发起网络请求lib/client.js:63
return fetch(API + path, { - 写入剪贴板lib/client.js:395
navigator.clipboard.writeText(String(text || "")).then(function () { - 执行外部命令固定命令lib/convert.js:356
const killer = spawn('taskkill', ['/pid', String(child.pid), '/T', '/F'], { windowsHide: true, stdio: 'ignore' }) - 执行外部命令来自配置/变量lib/convert.js:380
child = spawn(cmd, args, { - 执行外部命令来自配置/变量lib/removal-watchdog.js:363
const child = spawn(options.python, [scriptPath, configPath], {
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 本地转换零依赖
- 卸载自动清理环境
展开完整介绍(175 字)↓
读取 Office / PDF 前先转成 Markdown,用一行路径代替整份全文 —— 省 token 的 DSH bundle 插件。0 npm 依赖,转换全在本地,产物归你所有,卸载自动清理 Python 环境。在 DeepSeek Harness 里读取前先把 Office/PDF 转成 Markdown —— 只给一行路径,不给整份文档。
最近更新
在 GitHub 查看全部 →v1.2.62026-11-01
主题:设置页从「维护者仪表盘」改成「用户向导」—— 一眼看到结论,点两下就能试转,装之前先确认。
改的全是界面与一个只读接口,转换逻辑一行未动。
· Added
· 顶部结论横幅(lib/client.js)。绿 = 已经就绪(带上当前转换器与解释器)、黄 = 正在用内置兜底(可选「一键配置」)、红 = 宿主半边没响应、灰 = 正在读取状态。
之前用户得把「转换器卡 / Python 环境卡 / 已配置环境卡」三张拼起来,才能回答「我现在到底能不能用」。
· 试转卡片可以从工作区里选文件(新增 lib/recent.js + GET /office-markdown/api/workspace-files)。
设置页跑在 HTTP 上下文里、没有 session,自己解析不出工作区;改为在工具调用时把工作区记进内存,页面再据此列出该目录下的 Office / PDF 文件。
扫描上限是硬的:深度 3 层、最多 200 个文件、最多 5000 个目录项,跳过 node_modules / .git / dist / .dsh,超出即截断并在响应里说明。接口只读目录,不转换、不写盘、不碰缓存。
这份记录只存在内存里,不落盘 —— 重启 DSH 后为空,届时页面回到手动填绝对路径,不会拿着过期路径乱扫。
· 试转失败长出下一步:一键配置 MarkItDown / 重新检查环境 / 复制错误。
· 进度日志支持「复制」:pip 的日志一键复制成文本,贴给别人不用手选 140 行。
· Changed
· 一键配置改为两步:先展开确认条(装到哪个解释器、需要联网、装完会自动登记以便精确卸载),点「开始安装」才真的跑 pip。
· 探测按钮不再打架:删掉转换器卡上那个只调 /status 的「刷新」;Python 环境卡保留「刷新」(走 probeTtlMs 缓存)+ 小字「强制重探」(?force=1)。
· 探测期间有回显:显示「正在探测解释器,通常 2–5 秒…」,不再是空白。
· lib/recent.js 进 CI 语法检查列表(.github/workflows/ci.yml 的列表是写死的)。
· Unchanged
· 转换逻辑一行未动:convert.js、env.js、fallback.py、fallback-node.js、removal-watchdog.js、paths.js 全部未修改。
· dependencies 仍是 {},没有新增任何依赖,也没有引入构建步骤(lib/client.js 依旧是浏览器直接执行的手写文件)。
· 三个原有的转换场景(单个文件、批量目录、纯文本跳过)行为不变。
v1.2.52026-10-25
主题:适配 DSH 0.2.1 —— 声明 engines.dsh,技能文案跟上新的 7 个内置 Office 技能。
· Changed
· 声明 engines.dsh(package.json)。DSH 0.2.1-alpha.4 起,第三方插件的版本兼容性优先按 engines.dsh 判断,未声明时沿用旧规则。本版声明 >=0.1.7。
这个范围是用市场自身的 satisfiesRange(version, range, { includePrerelease: true }) 实测选定的:单个 >=0.1.7 已实测覆盖 0.1.7、0.2.0、0.2.1、0.2.1-rc.3、0.2.2-rc.1、0.3.0、1.0.0 全部主机版本,不需要写多个 || 分支;而看起来更自然的 ^0.2.1 / >=0.2.1 会被当前预发布内核 0.2.1-rc.3 判为不满足(rc 低于同名正式版,又被上界卡住),属于会自判不兼容的写法。
· 技能里的分工说明更新到 7 个内置技能(lib/index.js 的 SKILL_CONTENT)。DSH 把 Office 技能从 3 个拆成 7 个,新增 office(路由)、office-render、office-export-pdf、office-recalculate。其中 office-export-pdf 是「把 Office 导出成 PDF」,方向与本插件的「把 PDF 读成 Markdown」相反,是最容易混的一对,已单独点明。另外补了一句:内置 office 路由会把任务引向用 Python 库直接操作文件的技能,照做会把全文读进上下文 —— 只要目的是读取内容,仍应先用本工具。
· Fixed
· SKILL_CONTENT 里 ## 注意 标题前缺少空行,严格 Markdown 解析下会被并入上一段。
· Known Issues
· DSH 内置的 office 路由技能(resources/runtime/office-skills/office/SKILL.md)没有把本插件的 office-pdf-to-markdown 列进路由表,而它的描述声称能转换 PDF。该文件属于 DSH 运行时,插件无法修改(升级会被覆盖),只能在本插件自己的技能文案里把分工说死。
---
v1.2.42026-10-17
主题:修掉 1.2.3 命令行守卫的误报。
· Fixed
· 命令行守卫不再误报(lib/index.js 的 SHELL_READ_HINT)。1.2.3 判断「命令行正在读 Office 文件」时,只要求整条命令里同时出现原始读取动作和 Office / PDF 扩展名,没有要求两者指向同一个文件 —— 于是 Get-Content build.log 与同一行里另一条语句 Get-ChildItem -Include *.xlsx 会被误判成「正在读表格」,而「列一下目录里有哪些表格」是高频操作,每次都被打断一次。
现在要求读取动作直接指向那个文件:Get-Content report.xlsx、cat /tmp/doc.pdf、pdftotext a.pdf out.txt、open('a.xlsx') 这些照样触发;动作与文件不挨着的(列目录、git add sheet.xlsx、soffice --convert-to、python make.py --out report.xlsx)一律放行。
这条误报不是推测 —— 它是 1.2.3 发布后在一次真实使用中撞上的:守卫拦下了一条只是列出工作区文件、顺带提到 *.pdf 的命令。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-plugin-office-markdown
在 DeepSeek Harness 读取 Office / PDF 之前,先把它们转成 Markdown ——进入模型上下文的是一个文件路径,而不是整份文件的原始内容。
中文 | English
安装 | 使用 | 转换器 | 文档 | 更新日志
🤖 本项目的代码与文档主要由 AI 生成 —— 由 DeepSeek Harness 里的编码 agent 撰写,经维护者审阅后发布。
配置项、HTTP 路由、转换器链与文件清单等内容都逐项对照过源码;但文档仍可能落后于实现,或存在表述不准、细节缺失,请以代码为准。详见文末说明。
转换在本机完成,不联网(可选的 MarkItDown 首次下载除外)、不修改原文件、不消耗 API 额度,插件本身没有任何 npm 依赖。
安装
在 DSH 的 设置 → 插件 → 安装 里填一行,回车,然后重启 DSH。
① 从 npm 安装(推荐) —— npm 上从 1.2.2 起有正式发布:
dsh-plugin-office-markdown
要锁版本就在后面加 @版本:dsh-plugin-office-markdown@<版本>,<版本> 形如 1.2.2。
⚠️ 框里只填包名。 下面那条 dsh plugin … 是终端命令,整行粘进框里不认。
展开完整文档(README 剩余 1 节)
dsh-plugin-office-markdown
在 DeepSeek Harness 读取 Office / PDF 之前,先把它们转成 Markdown ——进入模型上下文的是一个文件路径,而不是整份文件的原始内容。
中文 | English
安装 | 使用 | 转换器 | 文档 | 更新日志
🤖 本项目的代码与文档主要由 AI 生成 —— 由 DeepSeek Harness 里的编码 agent 撰写,经维护者审阅后发布。
配置项、HTTP 路由、转换器链与文件清单等内容都逐项对照过源码;但文档仍可能落后于实现,或存在表述不准、细节缺失,请以代码为准。详见文末说明。
转换在本机完成,不联网(可选的 MarkItDown 首次下载除外)、不修改原文件、不消耗 API 额度,插件本身没有任何 npm 依赖。
安装
在 DSH 的 设置 → 插件 → 安装 里填一行,回车,然后重启 DSH。
① 从 npm 安装(推荐) —— npm 上从 1.2.2 起有正式发布:
dsh-plugin-office-markdown
要锁版本就在后面加 @版本:dsh-plugin-office-markdown@<版本>,<版本> 形如 1.2.2。
⚠️ 框里只填包名。 下面那条 dsh plugin … 是终端命令,整行粘进框里不认。
② 从 GitHub 安装 —— npm 不可达时用这条:
github:Z8906/dsh-plugin-office-markdown
要锁 tag 就在末尾加 #<tag>:github:Z8906/dsh-plugin-office-markdown#<tag>, <tag> 形如 v1.2.2(见 Releases)。
③ 离线 / 没有 git —— 用 Releases 里的 .tgz,在安装框里填它的绝对路径;也可以填本地克隆目录的路径(file: 前缀或绝对路径)。
习惯命令行的话,dsh plugin 会把参数转发给 profile 目录里的 pnpm —— --profile 按你用的是哪个版本填:
Web 版 DSH
dsh plugin --profile web add dsh-plugin-office-markdown
桌面版 DSH(profile 名是 desktop)
dsh plugin --profile desktop add dsh-plugin-office-markdown
⚠️ --profile 必须填你实际在用的那个。 填错不会报错 —— DSH 会按模板新建一个 profile,插件装进那里,而你的界面读的是另一个,结果「装好了却看不到」。
全部安装方式、手工装法与升级步骤见 安装文档。
升级不要走「卸载 → 重新安装」。 本插件在真正被卸载时会清理它自己登记过的 Python 包(见 卸载文档),那条路的结果是「插件更新了、Python 环境却没了」。
正确做法:pnpm update dsh-plugin-office-markdown,或在插件市场里点更新,或直接在安装框里再 add 一次同一个地址。
怎么用
装好之后不需要记命令,直接说「读取并总结这个 xlsx」即可 —— 插件注册的技能会让模型先调用转换工具:
read_office_as_markdown({ path: "报表.xlsx" })
返回值里有转换后 .md 的路径、体积、行数,以及一份结构索引(章节 / 工作表 / 幻灯片的标题与大致行号),并给出读取建议:先读前 200 行看结构,再用 grep 在同一个 .md 里定位。
产物本身不会被裁剪 —— 交给模型的是一个完整的 Markdown 文件。
工具的其他用法:批量(paths,或把目录交给 path)、只要结构索引(action: "outline",不触发转换)、清理同一源文件的旧产物(action: "clean",默认先干跑)、查看当前转换器(action: "status")。全部参数见 使用文档。
转换器
按顺序探测,第一个可用的胜出。下表对照 lib/convert.js:
| 顺序 | 转换器 | 保真度 | 需要 |
| 1 | uvx markitdown(临时运行) | 高 | uv + 网络(首次) |
| 2 | 本机 markitdown 命令 | 高 | 已安装 markitdown |
| 3 | python -m markitdown | 高 | Python + markitdown |
| 4 | 插件内置 Python 兜底(lib/fallback.py) | 有限 | 任意 Python 3,可选库能提升效果 |
| 5 | 插件内置 Node 兜底(lib/fallback-node.js) | 有限 | 无 |
第 5 级不需要 Python、也不需要网络:它用 Node 内置的 zlib 直接解析 OOXML (.docx / .xlsx / .pptx 本身就是 zip + xml)。支持 .docx .docm .xlsx .xlsm .pptx .pptm; .pdf 与旧版二进制格式(.doc .xls .ppt)需要 MarkItDown 或第 4 级。
每份产物的第一行记录它是谁转的;命中缓存时插件从这一行读回真实的转换器与保真度,而不是无条件声称「高保真」:
想要高保真:打开 设置 → Office 转换,点「一键配置 MarkItDown 环境」。
安装脚本不会替你装任何 Python 包,装到哪个解释器由你在页面上选。
细节见 转换器文档。
设置页
设置 → Office 转换 提供:当前转换器、本机 Python 环境探测、一键配置 / 卸载 MarkItDown、插件登记的环境记录、以及「试转一个文件」(不进模型、不走缓存,直接在本机跑一遍转换链看结果)。
页面上的按钮走插件自己的 HTTP 路由 /office-markdown/api/*,路由清单见 使用文档。
卸载
在 设置 → 插件 里点卸载即可。插件会先确认自己真的被移除(而不是被禁用 / 关闭 / 重启),再派一个脱离宿主的看门狗进程,把它登记过的 Python 包 pip uninstall 掉。
禁用、关闭、重启都不会触发清理,也不会留下任何常驻进程。 清理范围严格限定在插件自己的环境记录里:DSH 运行时自带的包、被其它组件依赖的包、以及你自己装的包,一个都不动。细节见 卸载文档。
依赖与兼容
- Node ≥ 18,只用内置模块(fs / path / os / zlib / crypto / child_process / string_decoder), 0 个 npm 依赖,不需要 npm install。
- Python 与 MarkItDown 全部可选:两者都没有时走第 5 级 Node 兜底。
- 除宿主提供的 @deepseek-ai/dsh-tools(用于 defineTool)外,不 import 任何宿主包。
- 只支持 DeepSeek Harness。profile 没有 webServer 服务时(例如 CLI profile),设置页不会出现,工具与技能不受影响。
文档
| 文档 | 内容 |
| 安装 | 四种安装方式、手工安装、升级、验证 |
| 使用 | 工具参数、技能、read 守卫、设置页、HTTP 路由 |
| 转换器 | 转换器链、保真度、多个 Python 环境 |
| 配置 | 配置项与默认值(对照 lib/index.js 的 DEFAULTS) |
| 产物与文件 | .md 放在哪、插件会留下哪些文件 |
| 卸载 | 启用 / 禁用 / 卸载与清理范围 |
| 故障排查 | 常见现象与处理 |
| 开发 | 包内文件、本地开发、发布 |
| 更新日志 | 每个版本改了什么 |
关于本文档
本仓库的 README、docs/、CHANGELOG.md 以及各版本的 Release 说明,主要由 AI 生成 (DeepSeek Harness 里的编码 agent 撰写),由维护者审阅后发布。
其中配置项、HTTP 路由、转换器链、文件清单等内容都逐项对照过源码;但文档仍可能落后于实现,或存在表述不准、细节缺失之处,请以代码为准。发现问题欢迎提 issue。
文档中不写没有实测依据的数字(例如「能省多少 token」「占用多少内存」)——这类断言缺少可复现的测量过程,因此不列出。
许可证
MIT © 2026 dsh-plugin-office-markdown contributors预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Z8906/dsh-plugin-office-markdown
在 DeepSeek Harness 读取 Office / PDF 之前,先把它们转成 Markdown…
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这是你的仓库?认领条目