dsh-cn-doc-formatter:按 GB/T 9704-2012 生成公文并做输出自检

前言

在 DeepSeek Harness(DSH)里让智能体起草中文材料时,常见做法是套 Word 模板或手工调页边距、字号。模板容易「看起来差不多」,却很难逐项对照《党政机关公文格式》核对;交给模型直接导出,又常留下水印、注释或层级被当成正文等问题。下面介绍社区插件 dsh-cn-doc-formatter(npm 包名 @deepwhale-cn/dsh-cn-doc-formatter):把排版规则写进脚本,生成 .docx / .pdf / .txt 后还会跑自检,不合规则报错,便于在交付或 CI 卡口拦截。

这是什么

dsh-cn-doc-formatter 是面向 DeepSeek Harness 的客户端 skill 插件,由 feely0208 维护,源码在 GitHub。当前 package 版本为 0.1.2,许可 MIT;插件本身不包含任何字体文件,只负责按 GB/T 9704-2012 排版,仿宋等商业字体需使用者自行取得授权并配置。

核心功能

版式规则

插件 README 中列出的主要版式项包括:

项目 规范值
标题 仿宋,二号(22pt)加粗,居中,行距 33–36 磅
一/二/三/四级标题 仿宋,三号(16pt)加粗,左空二字
正文 仿宋,四号(14pt),固定行距 28 磅,首行缩进严格 2 字
版头(可选) 份号 / 密级 / 紧急程度 / 发文字号,仿宋三号
署名与日期 距正文下空 3 行,日期阿拉伯数字右空 4 字
页码 「- 1 -」,单页居右空一字、双页居左空一字
页边距 上 3.7 / 下 3.5 / 左 2.8 / 右 2.6 cm
文档网格 每面 22 行、每行 28 字

产出物设计上不出现 AI 痕迹:无水印、无生成标记、无作者信息、无版本说明、无注释。

输出自检

生成结束后可调用 verify_output.py,打开产出文件逐项核对页边距、字号、行距、字体、页面尺寸等。退出码 0 表示通过,1 表示存在不符合项,README 说明可直接用于 CI 或交付卡口。

Markdown 输入适配

md_adapter.py 将常见 Markdown 结构映射为公文层级(例如 ## 一、小节 → 一级标题,### 1.1 → 二级标题等),并合并同段软换行,避免源稿手工折行导致孤立标点。

字体与跨平台探测

插件不分发字体。可通过环境变量指定字体文件或目录:

# 方式一:直接指定字体文件(推荐)
export DSH_CN_FANGSONG=/path/to/仿宋.ttf
export DSH_CN_FANGSONG_BOLD=/path/to/仿宋加粗.ttf   # 可选

# 方式二:指定目录,按文件名查找
export DSH_CN_FONT_DIR=~/my-fonts

也可安装到系统字体目录(macOS ~/Library/Fonts/,Windows C:\Windows\Fonts\,Linux ~/.fonts/ 或 ~/.local/share/fonts/)。找不到字体时 PDF 会退回系统宋体并在 stderr 打印指引;仅有常规仿宋、无加粗体时,标题仍用仿宋族(可能不加粗),不换成宋体。

字体探测通过 fontTools 读字体 name 表,避免依赖 macOS 上未必存在的 fc-list。

其它设计取舍

排版、探测、自检均在本地完成,不联网;文种(通知、报告等)不参与排版分支,规范一致,由正文内容区分。

安装与启用

官方安装命令(README 原文):

dsh plugin --profile web add @deepwhale-cn/dsh-cn-doc-formatter

若使用其它 profile,将 web 换成你的 <profile>:

dsh plugin --profile <profile> add @deepwhale-cn/dsh-cn-doc-formatter

安装后重启 dsh;技能在 agent 需要时自动可用。package.json 要求 dsh 版本 >=0.1.0-rc.6。

排版脚本为 Python,需自行安装依赖:

pip install python-docx reportlab fontTools pypdf
库 用途
python-docx 生成 Word
reportlab 生成 PDF
fontTools 探测本机字体
pypdf 自检 PDF 是否嵌入目标字体

典型用法

技能正文中有完整说明;README 给出的核心命令如下。将 <插件目录> 换为本机安装路径,<目录> 换为输出目录。

生成 Word / PDF:

python "<插件目录>/scripts/docx_formatter.py" --output <目录> \
  --title "标题" --body "正文..." --sender "发文机关" --date "2026年9月25日"
python "<插件目录>/scripts/pdf_formatter.py"  --output <目录> \
  --title "标题" --body "正文..." --sender "发文机关" --date "2026年9月25日"

输出自检(README 建议不要跳过):

python "<插件目录>/scripts/verify_output.py" --dir <输出目录>

注意:早期文档中的 --type notice 参数在当前脚本中不存在,加上会报 unrecognized arguments;文种由内容决定,脚本不做区分。

适用场景与注意

适合需要在 DSH 工作流里可重复、可校验地产出党政机关格式公文(Word / PDF / 纯文本)的开发者或团队,尤其是希望用退出码做自动化检查的场景。

使用前请注意:

  1. 字体合规:MIT 许可的是排版软件,不含字体;在文档中使用仿宋等字体须自行确保授权。
  2. Python 环境:需本机具备上述 pip 包,与 DSH 进程所在环境一致。
  3. 插件权限:DSH 插件以当前 dsh 进程权限运行;安装前建议阅读 源码与许可证,确认符合你的安全与合规要求。
  4. 生态定位:DSH 社区插件目录(如 SkillHub 条目)为独立站点,与 DeepSeek / 幻方无官方从属关系;本插件按生态倡议书强调组合优先、声明清晰、兼容优先,不覆盖其它插件内部实现。

结尾

dsh-cn-doc-formatter 把 GB/T 9704-2012 的版式参数、Markdown 适配和产出自检收进一个 DSH 客户端插件,并刻意不分发字体、不联网排版。若你要在 Harness 里生成「能对照标准验一遍」的公文,可按上文命令安装依赖与插件,配置仿宋后走生成与 verify_output.py 流程。

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

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

小夜