前言¶
在 DeepSeek Harness(DSH)里用 python-docx、python-pptx、openpyxl 或 LibreOffice 生成 docx、pptx、xlsx 时,文件里常会留下库名、Words=0、模板日期、Application 字段等一眼可辨的「工具指纹」。常见做法是伪造编辑时间或修订次数,但这与无法改动的 rsid、真实保存历史矛盾,解压 XML 即可识破。
下面介绍社区插件 dsh-finalize(维护者 hengyun721,分类:工作流)。它在文件交付的瞬间做一次 finalize pass,且只在这一处运行:能证明有误的元数据做规范化,能重算的统计量从正文重算,不会伪造的内容写入侧栏报告,而不是写进文件。设计原则是:fix what is provably wrong, never invent evidence。
这是什么¶
dsh-finalize 是 DeepSeek Harness 的 bundle 插件(MIT,当前 package 版本 0.3.0,Node >= 20)。它不注册新 tool、不注入 prompt 段落,通过 tools/pre-execute 钩子在配置的交付工具执行之前处理磁盘上的文件。
目录页:skillhub.cn/plugins/hengyun721/dsh-finalize
源码:github.com/hengyun721/dsh-finalize
社区插件目录为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,安装前请自行审阅源码与许可证。
核心功能¶
自动修复与仅报告项¶
各格式行为以 README 表格为准,摘要如下。
| 格式 | 自动处理 | 只报告、不写入 |
|---|---|---|
| docx | creator/description、模板日期、Application/AppVersion、字数/字符/段落/行数、模板缩略图 | TotalTime=0、缺批注/修订、页数 |
| pptx | 同上核心属性,幻灯片/备注/隐藏页计数、字数 | 无演讲者备注、裁剪图仍在 media、隐藏页 |
| xlsx | 核心属性、TitlesOfParts 与表名对齐 | 零公式、pivot 缓存、外链、隐藏表 |
| odt / ods / odp | meta:generator、creator、日期、document-statistic、缩略图及 manifest | editing-duration=PT0S、单次保存、无批注/修订 |
| 只读,不改字节 | Producer/Creator/XMP、增量更新、缺书签、签名等 |
Application 字段是删除,而不是替换成假的 Microsoft Office Word 16.0 字符串。
会话与 UI¶
同一次交付中的多个文件各自处理;同一会话内 30 分钟内的多次交付会合并为一份报告,避免互相覆盖。
用 present(或配置的 transport)交付文件时,无需额外调用,pass 在工具执行前完成,收件人拿到的已是规范化后的文件。
助手消息操作行(复制 / 赞 / 踩 / 分支旁)会出现盾牌图标:
| 状态 | 含义 |
|---|---|
| 灰色 | 本会话尚无交付 |
| 琥珀色带数字 | 有这么多项需人工处理 |
| 点击 | 面板展示各文件的 fixed / open / read-only |
面板还提供 Scan recent files:对工作目录下最新的 Office 文件跑一遍 pass,适合脚本直接落盘、未走 present 的情况。
安装与启用¶
插件为 DSH bundle(含 dsh.bundle.patch),无构建步骤、无运行时 npm 依赖。官方 README 给出的安装方式为本地目录安装(需先取得仓库到本机,安装命令如下,勿凭插件名拼接 dsh plugin add github:owner/repo):
git clone https://github.com/hengyun721/dsh-finalize.git
dsh plugin --profile desktop add /absolute/path/to/dsh-finalize
也可在 Harness 内用插件管理器的 install_bundle,target 为上述绝对路径。若提示 restart-required,重启一次 DSH。
配置¶
默认配置通过 cordis.patch.yml 写入 profile,可在设置中覆盖。示例:
- id: dsh-finalize
name: 'dsh-finalize'
config:
author: ''
triggerTools: [present, qqbot_send_file]
formats: [docx, pptx, xlsx, pdf, odt, ods, odp]
scanLimit: 5
autoFix:
stripGeneratorFields: true
dropApplicationField: true
recomputeStats: true
report:
surface: panel
| 键 | 说明 |
|---|---|
author |
写入 dc:creator、lastModifiedBy、meta:initial-creator;空字符串会清掉生成器名,不虚构人名 |
triggerTools |
触发 pass 的交付工具,默认 present、qqbot_send_file |
formats |
适配器白名单,其余格式在报告中为 skipped |
scanLimit |
「Scan recent files」处理的最近文件数量,默认 5 |
autoFix.* |
是否 strip 生成器字段、删除 Application、重算统计 |
report.surface |
panel 显示盾牌;silent 不渲染按钮 |
典型用法¶
- 按上文安装并重启(如需要)。
- 在 DSH 中让智能体生成或修改 docx/pptx/xlsx 等,通过
present交付。 - 交付前 pass 已改写 ZIP/ODF 内可证伪的元数据;点击盾牌查看仍须人工补充或只读观察的项。
- 若文件是外部脚本写入工作目录,可在面板用 Scan recent files 补跑一遍。
Host 侧还提供 /api/finalize.report 与 /api/finalize.scan;格式引擎在依赖-free 的 lib/office.js 中实现。
适用场景与注意¶
适合: 经常通过 DSH 交付 Office/ODF 文档、希望去掉库指纹并重算真实字数统计,同时接受「编辑时长、页数、批注」等无法诚实自动填写的项以报告形式呈现的团队或个人。
注意:
- 插件以当前 DSH 进程权限读写工作目录与交付路径,安装前应阅读
index.js、lib/office.js及 LICENSE。 - PDF 仅检测报告,不修改文件。
- 与同 profile 其他插件并列安装时,不改变其 tool 与 prompt 行为(README Compatibility 节)。
结尾¶
dsh-finalize 把「交付前最后一遍元数据卫生」收进 DSH 工作流:能改的改对,不能编的进面板。进一步了解可访问 插件目录页 与 GitHub 仓库。