dsh-finalize:交付前 Office 元數據收尾

前言

在 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、單次保存、無批註/修訂
pdf 只讀,不改字節 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 不渲染按鈕

典型用法

  1. 按上文安裝並重啓(如需要)。
  2. 在 DSH 中讓智能體生成或修改 docx/pptx/xlsx 等,通過 present 交付。
  3. 交付前 pass 已改寫 ZIP/ODF 內可證僞的元數據;點擊盾牌查看仍須人工補充或只讀觀察的項。
  4. 若文件是外部腳本寫入工作目錄,可在面板用 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 倉庫。

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

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

小夜