dsh-tool-hongtou:兩階段流水線生成標準紅頭公文

前言

在 DeepSeek Harness(DSH)裏做會話總結或事項歸檔,常見做法是讓模型直接輸出 Word 或 Markdown,再由人工調整版式。紅頭公文對機關名、文號、標題、正文縮進、落款與行距有固定規範,模型直接排版容易出現序號錯亂、佔位符殘留或版式偏差。

下面介紹 dsh-tool-hongtou:由 ExElectron 維護的工作流插件,採用「LLM 結構化提綱 + 確定性 Word 2003 XML 渲染」的兩階段解耦流水線,把內容生成與版式渲染分開處理。

這是什麼

dsh-tool-hongtou 是 Cordis 主機側 DSH 插件,當前版本 0.2.0,MIT 許可證。它在會話中提供 /hongtou 命令,讀取完整會話上下文,先產出合法 JSON 提綱,再注入標準紅頭模板骨架生成 .doc 文件並落盤到 output/

插件託管於 GitHub:ExElectron/dsh-tool-hongtou;社區目錄頁:SkillHub 插件頁(SkillHub 爲獨立社區目錄,與 DeepSeek / 幻方無官方從屬關係)。

架構:兩階段解耦

執行 /hongtou [事由/標題] 時,流水線如下:

/hongtou [事由/標題]

  ├─ 會話上下文:ctx.sessionQuery.readSession() 讀取完整原始事件日誌

  ├─ 階段一:LLM 結構化輸出(lib/phase1-llm.js)
  │    · 只輸出合法 JSON 提綱,嚴禁手寫 XML 標籤與 Markdown 符號
  │    · 輸出經 schema 校驗(lib/schema.js)+ Markdown/佔位符清洗
  │    · 失敗自動重試一次;仍失敗回退確定性提煉(lib/fallback.js,同爲 JSON)

  └─ 階段二:確定性排版渲染(lib/phase2-render.js)
       · Node.js 純代碼解析 JSON,注入 templates/document-skeleton.xml 骨架
       · 序號(一、/(一)/1.)、字體、行距、紅線全部由代碼確定性生成
       · 最終校驗:無文本框/批註/註釋/佔位符/Markdown 殘留 → 落盤 output/

階段一隻負責結構化內容;階段二由代碼接管版式,模型不參與排版。

核心能力

版式復刻

模板 templates/document-skeleton.xml 由一次性構建腳本從樣板真實片段組裝,主要保證包括:

  • 完整複製樣板 <w:fonts>(含方正粗宋簡體、華文中宋、宋體、仿宋_GB2312、黑體、楷體等)與 11 個 <w:styles>
  • 紅頭機關名使用 VML 藝術字 v:textpath(華文中宋加粗、紅色、高度 51pt,寬度按字數自適應居中);
  • 紅色分割線爲樣板原樣雙 VML 線條;
  • 文號、標題、正文首行縮進、落款、日期等段落屬性與 28 磅固定行距由代碼注入;
  • 模板不含文本框與批註,生成後移除佔位符並校驗無註釋殘留。

模型零排版權

LLM 輸出進入渲染層前經 stripMarkdownhasForbiddenContent 雙重清洗,過濾鏈接符號、佔位符(如 xxxx(空一行)(此處填寫…) 等)。非法內容直接回退,不進入文檔。

序號確定性生成

sections 編號爲「一、二、…」,子條款爲「(一)(二)…」,由階段二按數組順序生成,避免模型序號錯亂。

安裝與啓用

插件通過 dsh.bundle.patch 聲明掛載。安裝到 web profile 可用以下命令:

# 從 npm 安裝
dsh plugin --profile web add dsh-tool-hongtou

# 或從 GitHub 安裝
dsh plugin --profile web add github:ExElectron/dsh-tool-hongtou

也可手動在 profile 的 package.json 中添加依賴並聲明 bundle:

"dependencies": {
  "dsh-tool-hongtou": "^0.2.0"
  //  "dsh-tool-hongtou": "github:ExElectron/dsh-tool-hongtou"
},
"dsh": { "profile": { "bundles": ["dsh-tool-hongtou"] } }

掛載後需重啓 dsh(web profile 在啓動時裝配 bundle 補丁)。運行環境要求 Node.js >= 22.19.0;peer 依賴包括 @deepseek-ai/cordis ^4.0.1、@deepseek-ai/dsh-llm ^0.1.0-rc.6、@deepseek-ai/dsh-session-query ^0.1.0-rc.6。

典型用法

重啓 dsh 後,在會話中輸入:

/hongtou
/hongtou 紅頭公文插件重構事項

不帶參數時,插件從當前會話上下文提煉內容;帶參數時,參數作爲事由或標題線索參與結構化輸出。生成的 Word 2003 XML 文檔寫入 output/ 目錄。

適用場景與注意

適合需要將 DSH 會話內容整理爲標準紅頭公文格式的場景,例如事項總結、內部通報草稿等。兩階段設計把「寫什麼」與「怎麼排」分開,降低模型直接輸出 Word 時的版式風險。

使用前請注意:

  1. 插件以當前 dsh 進程權限運行,安裝前應閱讀源碼並確認 MIT 許可證條款;
  2. 輸出爲 Word 2003 XML 格式(.doc),需用兼容該格式的編輯器打開;
  3. 階段一依賴 LLM 與 schema 校驗,模型不可用時會回退到 lib/fallback.js 的確定性提煉,內容質量取決於會話上下文完整度。

開發與驗證

維護者在 README 中提供了語法檢查與測試命令:

node --check lib/index.js && node --check lib/schema.js && node --check lib/phase1-llm.js && node --check lib/phase2-render.js
node --test --test-isolation=none test/schema.test.js test/phase1.test.js test/phase2.test.js test/e2e.test.js

主要模塊:lib/index.js(入口與編排)、lib/phase1-llm.jslib/schema.jslib/phase2-render.jslib/fallback.jstemplates/document-skeleton.xml

結尾

dsh-tool-hongtou 把紅頭公文的生成拆成 LLM 結構化提綱與確定性 XML 渲染兩步,在 DSH 工作流裏提供可復現的版式輸出路徑。如需查看源碼或提交 issue,見 GitHub 倉庫;社區索引見 SkillHub 目錄頁

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

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

小夜