前言¶
在 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 / 幻方無官方從屬關係。
方式二:本地目錄(開發調試)
- 將插件目錄記爲
<PLUGIN_DIR>。 - 在 profile 的
package.json的dependencies增加"dsh-docx-format": "link:<PLUGIN_DIR>"(或已發佈版本如"^1.0.0")。 - 同一
package.json的dsh.profile.bundles追加"dsh-docx-format"。 - 保證
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