dsh-docx-format:讓 DSH 生成的 Word 自動符合公文格式

前言

在 DeepSeek Harness(DSH)裏讓模型寫 .docx,常見做法是堆提示詞約束字體、行距和頁邊距,或在生成後再手工改 Word。模型仍可能漏項,腳本產出的 docx 也不會自動對齊同一套規範。下面介紹 Romebody 維護的工作流插件 dsh-docx-format:把《通用公文格式規範》落到工具、提示詞和結果鉤子三層,排版引擎在 lib/docxfmt.py(python-docx),插件只負責調度。

這是什麼

dsh-docx-format 面向 DSH 智能體與工作流:凡會話命中觸發條件且產出 .docx 的路徑,可自動或按需套用統一版式;也提供 docx_format、docx_read 供模型顯式調用。插件已發佈爲 npm 包 dsh-docx-format(當前資料中 package 版本爲 1.1.2,MIT 許可證)。社區目錄頁:skillhub.cn 插件頁;源碼:GitHub - Romebody/dsh-docx-format。

三層如何生效

任一層命中即可向規範靠攏;README 中的分工如下。

層 機制 作用
提示詞 systemPrompt.section(order 3260) 生成 docx 前模型已知字體、字號、行距、縮進、頁邊距
工具 docx_format mode=check 體檢;mode=apply 規範化並寫回
鉤子 tools/result 觀察者 任意工具(含 ops_bash、技能腳本)產出 .docx 路徑後自動排隊規範化

核心能力(與 README 一致)

版式要點

  • 頁面 A4;頁邊距上 3.6cm、下 3.0cm、左 2.7cm、右 2.7cm。
  • 正文仿宋三號(16pt),兩端對齊,首行縮進 2 字符(w:firstLineChars="200"),行距固定 29 磅,段前段後 0;空行用空段落表達,而非段前段後間距冒充。
  • 大標題方正小標宋簡體二號(22pt)居中;標題上 2 行、下 1 行空段。
  • 一級標題黑體三號、二級楷體三號、三級仿宋三號;編號如「一、」「(一)」「1.」(全角點)。
  • 數字與字母 Times New Roman;表格單元格段落水平與垂直居中;頁腳頁碼「— N —」等細節見倉庫 README「規範內容」一節。

請求門控與落款

默認 triggerKeywords 爲 ["公文"]:只看當前會話最後一條用戶消息,須含觸發詞才自動套版;未提「公文」時整條停用(鉤子不排隊、docx_format 返回 skipped,可傳 force=true 強制處理)。將 triggerKeywords 設爲空數組則任意請求都觸發(舊行爲)。提示詞要求用戶未要求署名/日期時不寫落款;引擎只格式化文檔裏已有的落款,不憑空新增。

附件與 v2 引擎行爲

附件縮進按 2 / 6 / 5 / 6 字符分段實現;長條目在裝有 Word 或 WPS 時可用實測折行拆段,無 Word/WPS 時退回 attachSplit.mode="indent-only" 並提示「附件自動分段不可用」。重複 apply 冪等,check 穩定。

docx_read

純標準庫 lib/docx_read.py,不需 python-docx、不改原文件,便於模型讀取已有 docx 正文(默認前 12000 字,可 max_chars / offset 續讀)。

安裝與啓用

環境要求:Node ≥ 20;Python 3.9+ 與 python-docx(DSH 自帶運行時中通常已有)。裝了 Word 或 WPS 時附件自動拆段能力完整;沒有則僅縮進、不拆段。

方式一:從 npm 安裝(推薦)

dsh plugin --profile <profile> add dsh-docx-format

收錄進插件市場後,也可在市場搜索 docx 安裝。DSH 生態以「一切皆插件」爲思路;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

方式二:本地目錄(開發調試)

  1. 將插件目錄記爲 <PLUGIN_DIR>。
  2. 在 profile 的 package.json 的 dependencies 增加 "dsh-docx-format": "link:<PLUGIN_DIR>"(或已發佈版本如 "^1.0.0")。
  3. 同一 package.json 的 dsh.profile.bundles 追加 "dsh-docx-format"。
  4. 保證 node_modules/dsh-docx-format 指向該目錄後重啓 dsh。

安裝後可在啓動日誌中確認類似 [docx-format] ready python=... trigger=["公文"]。

典型用法

命令行(可脫離 DSH)

python lib/docxfmt.py 報告.docx --mode check
python lib/docxfmt.py 報告.docx --mode apply
python lib/docxfmt.py ./docs --mode apply --recursive
python lib/docxfmt.py 報告.docx --mode check --json

check 有偏差時退出碼爲 2。

模型側

docx_format(path="C:/.../通知.docx", mode="apply")
docx_format(path="C:/.../通知.docx", mode="check")
docx_format(path="C:/.../公文目錄", mode="apply", recursive=true)
docx_format(path="C:/.../通知.docx", mode="apply", force=true)

讀取已有文檔:

docx_read(path="C:/.../畢業論文.docx")
docx_read(path="C:/.../畢業論文.docx", max_chars=60000)
docx_read(path="C:/.../畢業論文.docx", offset=12000)

常用配置

默認值在 cordis.patch.yml,可通過 profile 覆蓋。節選:

鍵 默認 說明
autoFormat true 關閉後只保留工具與提示詞
formatExisting false true 時連插件加載前的舊文件也處理
triggerKeywords ['公文'] 空數組 = 任何請求都觸發
skipPatterns *格式要求* 等 路徑命中則跳過自動改
debounceMs 1200 結果鉤子去抖
defaults {} 透傳給 docxfmt.py,覆蓋引擎 DEFAULTS

附件相關可寫在 defaults 內,例如 attachSplit.enabled、attachSplit.mode(word / indent-only)、attachSplit.minCharsToMeasure(默認 20)等,詳見 README「配置」表。

適用場景與注意

適合在 DSH 中批量生成或修訂機關公文類 Word,且希望模型提示、顯式工具與腳本產出三條路徑共用同一套規範的團隊或個人。寫週報、簡歷等非公文 docx 時,默認因未命中「公文」而不會改文件,避免誤傷。

插件以當前 dsh 進程權限運行 Python 子進程讀寫磁盤上的 docx;安裝前應閱讀 源碼與許可證,確認 skipPatterns 與觸發詞符合本單位安全與合規要求。未生效時先重啓 dsh,並查日誌是否出現「本條請求未提「公文」 — 不自動格式化」。

結尾

dsh-docx-format 把公文版式從「靠模型記憶」變成可檢查、可重複執行的引擎加 DSH 集成:提示詞預防、工具糾偏、鉤子兜底。需要細節時以 README 爲準。

  • 目錄頁:https://www.skillhub.cn/plugins/Romebody/dsh-docx-format
  • GitHub:https://github.com/Romebody/dsh-docx-format
羽毛球分组比赛记分
小程序二维码

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

小夜