markdown_monitor:让 DSH Agent 通过本机 doc2md 把文档转成 Markdown

前言

在 DeepSeek Harness(DSH)里做知识库、长文档问答或 RAG 时,语料往往是 Word、Excel、PDF 或图片,而不是现成的 Markdown。Agent 若只能读纯文本,就要么让人先手工导出,要么在对话里反复说明「请先转换」。本仓库同时提供 doc2md 命令行(监控目录、批量转换、OCR)和 npm 包 dsh-doc2md,后者在 DSH 中注册 doc2md 工具,把转换能力接到 harness 上。插件本身不解析文档,只确定性调用本机已安装的 doc2md CLI。

这是什么

项目名是 markdown_monitor,命令行与安装产物仍沿用 doc2md 命名,已装过的实例不受影响。

核心功能

本机 doc2md 能做什么(插件透传的能力)

监控模式下,watchdog 监听多个根目录的新增与修改,带写入防抖与自触发保护(生成的 .md 不会再次触发)。state.db 记录已处理文件,重启或重复投放不会重转。改 config.json 可热加载监控目录、排除规则、扩展名、防抖时长、输出位置、PDF 引擎等(OCR 相关改动需重启)。

支持的输入包括 docx / doc / xls / xlsx / pdf / 图片。本地直转路径包括 mammoth(docx)、openpyxl(xlsx)、Office COM 或 LibreOffice(老式 doc/xls)、pymupdf4llm(有文本层 PDF)。扫描件或无文本层 PDF 走多后端 OCR(paddle、mineru、sf-deepseek-ocr 等),配额用尽或鉴权失败时会熔断并切换后端。

批量转换仍可用 doc2md convert <目录>;监控常驻用 doc2md watch。

DSH 插件暴露的四个 action

插件在 harness 中注册工具 doc2md,提供下表动作(参数会进入会话日志,勿把含密钥的路径当秘密):

action 作用
convert 转换给定绝对路径(文件或目录),报出每个「源文件 → md」的落点
read 读回某个 .md 或源文档旁同名 md 的正文
scan 试运行:只列分流与 OCR 量,不写任何文件
status 打印转换统计(含各后端今日用量)

插件只读写你点名的路径;不解析文档、不抓网页、不加载远程资源。文档解析与是否上传云端 OCR 均由本机 doc2md 进程按自己的配置执行。

查找本机 doc2md

装插件前,机器上需要可用的 doc2md。插件按顺序解析,也可用环境变量指定:

环境变量 含义
DOC2MD_BIN doc2md / doc2md.exe 的绝对路径(最高优先级)
DOC2MD_REPO 源码仓库根,改用 <python> -m doc2md
DOC2MD_PYTHON 配合 DOC2MD_REPO 的解释器

未设置时再从 PATH 与常见安装目录查找(如 Windows 的 %LOCALAPPDATA%\Programs\doc2md、C:\Program Files\doc2md,Linux 的 ~/.local/bin、/opt/doc2md)。要求 Node ≥ 22.19。

convert 依赖 doc2md 1.0.3 起的 --print-outputs 以得到准确产出路径;更老版本会降级为同目录同名推断,并在结果中注明。

安装与启用

1、安装 doc2md(本机 CLI,插件前置条件)

Linux(推荐一条命令,默认装到 ~/.local,约 130M):

curl -fsSL https://raw.githubusercontent.com/jessehoo89/markdown_monitor/main/install.sh | bash

老式 .doc / .xls 在 Debian/Ubuntu 上需 LibreOffice:

sudo apt install -y libreoffice-writer libreoffice-calc
bash install.sh

Windows: 在 Releases 下载 doc2md-*-win-x64-installer.exe 安装,或解压 *-win-x64.zip 运行 doc2md-gui.exe。

装完后建议:首次运行生成 config.json,把 roots 改成语料目录;在 .env 填云端 OCR 凭据(不填也能转 docx/xlsx/有文字层 PDF);执行一次 doc2md scan 看分流,不写文件。

2、在 DSH 中安装插件

dsh plugin --profile web add github:jessehoo89/markdown_monitor

也可在 DSH 桌面端市场里选「手动输入」,填 github:jessehoo89/markdown_monitor。装完重启该 profile。插件无 build 脚本,不会触发 allowBuilds。若缺少 pnpm,可先执行 corepack enable pnpm。

典型用法

Agent 侧通过 harness 的 doc2md 工具调用;本机调试时可对照 CLI:

doc2md scan  --root ~/语料        # 试运行
doc2md run   --root ~/语料        # 批量转换
doc2md convert a.docx b.pdf       # 只转指定文件
doc2md watch                      # 常驻监控目录

监控语料目录时,把文件丢进 config.json 里配置的 roots 即可随放随转;DSH 会话里更适合用 convert / scan / read / status 对明确路径操作。

指定非默认 doc2md 时,在加载插件前设置例如:

export DOC2MD_BIN=/opt/doc2md/doc2md

Windows 打包版 doc2md.exe 控制台输出为 GBK,插件会兼容解码。

适用场景与注意

适合: 已在 DSH 中跑 agent,语料是 Office/PDF/图片,希望 agent 能「转换 → 读 md → 继续推理」,且你愿意在本机维护 doc2md 与(可选)OCR 凭据。

注意:

  • 插件以当前 dsh 进程的用户权限 运行,只能访问该用户可读写的路径;安装前请自行审阅仓库源码与 MIT 许可证。
  • 扫描件是否上云、敏感目录是否标记不上云,由 doc2md 的 config.json(如 sensitive_markers)和 .env 控制,与插件无关。
  • 社区目录 skillhub.cn 是独立站点,与 DeepSeek / 幻方无官方从属关系;星标等元数据以各页面当时显示为准(目录页标注星标为 0)。

结尾

markdown_monitor / dsh-doc2md 把本机 doc2md 的转换、试跑、读回与统计接到 DSH,适合「文档进目录、Agent 用 Markdown 继续干活」的流程。先装 doc2md 并配好语料目录,再用官方命令装入 harness 即可。

羽毛球分组比赛记分
小程序二维码

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

小夜