gongwen-skill 2.8.0 → 2.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.dsh/skills/gongwen-skill/SKILL.md +15 -12
- package/.dsh/skills/gongwen-skill.md +15 -12
- package/CHANGELOG.md +48 -0
- package/README.md +41 -13
- package/SKILL.md +15 -12
- package/dsh/index.js +4 -1
- package/engine/core/pipeline.py +96 -0
- package/engine/core/rules/checker.py +6 -0
- package/engine/core/rules/manager.py +50 -2
- package/gongwen/__init__.py +1 -1
- package/gongwen/__main__.py +1 -1
- package/gongwen/_legacy.py +135 -349
- package/gongwen/cli/__init__.py +1 -1
- package/gongwen/cli/app.py +406 -0
- package/gongwen/cli/content_cmds.py +841 -710
- package/gongwen/cli/doctor_cmds.py +15 -15
- package/gongwen/cli/draft_cmds.py +170 -0
- package/gongwen/cli/font_cmds.py +6 -6
- package/gongwen/cli/misc_cmds.py +5 -2
- package/gongwen/cli/review_cmds.py +122 -39
- package/gongwen/cli/wizard_cmds.py +24 -11
- package/gongwen/md2docx_render.py +9 -6
- package/package.json +3 -2
- package/prompts/usage-prompts.md +1 -1
- package/pyproject.toml +1 -1
|
@@ -44,6 +44,8 @@ metadata:
|
|
|
44
44
|
| **dsh** | 加载 SKILL.md + cordis 插件,可执行命令、有 Web UI | 加载 skill 后调用 CLI 命令,或通过 DSH 插件 API 调用;配置面板可调整排版参数 |
|
|
45
45
|
| **dialogue-only** | 纯对话,**不能执行命令** | 不应直接执行命令,应引导用户手动操作;同时可读取项目内的文字性资源库(`prompts/style-prompts.md`、`prompts/usage-prompts.md`、`rules/official/*.yaml`、`SKILL.md` 等)作为公文写作指导的知识库,在对话中提供用词用语、写作规范、风格指引等专业建议;参考 README.md 中的「纯对话 LLM 使用指引」
|
|
46
46
|
|
|
47
|
+
> **格式兼容性**:工具链基于 OOXML(`.docx`),**不支持旧版 `.doc`(OLE2/WPS 二进制格式)**。用户提供 `.doc` 文件时,Agent 应先用 WPS/Word「另存为 .docx」;本机装有 WPS 时可用 COM 转换:`KWPS.Application` → `Documents.Open(src)` → `SaveAs(dst, 12)`(WPS 枚举 12 = OOXML),再走 `check/optimize/optimize-content` 全流程。
|
|
48
|
+
|
|
47
49
|
### 二、聚合禁令(违反任一条即为不合格执行)
|
|
48
50
|
|
|
49
51
|
```
|
|
@@ -186,7 +188,7 @@ python -m gongwen handoff --latest --summary # 最新交接文档(Markdown 摘
|
|
|
186
188
|
|
|
187
189
|
- **路径 A - 格式修复**:用户有文档,只需排版标准化(GB/T 9704),不改文字内容
|
|
188
190
|
- **路径 B - 内容优化**:用户有文档,需要润色文字并生成修订对比版(原稿 vs 优化稿,红色标注修改处)
|
|
189
|
-
- **路径 C - 生成公文**:用户没有文档,根据背景和要求从零生成新的公文。四步流程:编写 Markdown 草稿 → md2docx 转换 → 引用路径 A optimize 套国标格式 → check
|
|
191
|
+
- **路径 C - 生成公文**:用户没有文档,根据背景和要求从零生成新的公文。四步流程:编写 Markdown 草稿 → md2docx 转换 → 引用路径 A optimize 套国标格式 → check 验证交付;也可用 `gongwen draft 草稿.md -o 成品.docx -t 类型` 一条命令完成(含自动格式修复 + 验证)。
|
|
190
192
|
- **路径 D - 一键格式修复**(`fix-common` 新增):用户有文档,只需快速规范化常见格式问题(段落类型修正/编号拆分/首句加粗/加粗范围修复),一步到位,输出不含 AI 声明段的干净文档。与路径 A 的区别:不依赖规则引擎、不追加 AI 声明段,适合对"干净中间稿"做最终格式规范化。
|
|
191
193
|
- **路径 E - 样式学习**(`style-learn` 新增):用户提供一份**标准文档**(如本单位定稿的红头公文/排版规范的样例),要求"学习排版样式""按这个格式生成模板""做成模板以后都用这个格式"。Agent 应调用 `style-learn` 解析文档的字体/字号/字间距/行距/缩进/页边距,生成命名自定义模板(注册到 user_rules),后续所有文档可用 `optimize -t 模板名` 套用该格式。
|
|
192
194
|
|
|
@@ -242,7 +244,7 @@ python -m gongwen handoff --latest --summary # 最新交接文档(Markdown 摘
|
|
|
242
244
|
│
|
|
243
245
|
├─ 包含"生成/写/起草" + 未指定已有文档
|
|
244
246
|
│ └── 识别为路径 C(生成公文)
|
|
245
|
-
│ └── 必须走 md2docx → [bold-first] → optimize → check
|
|
247
|
+
│ └── 必须走 md2docx → [bold-first] → optimize → check(或 `draft 草稿.md -o 成品.docx -t 类型` 一步到位)
|
|
246
248
|
│
|
|
247
249
|
└─ 不确定
|
|
248
250
|
└── 必须追问用户:是改格式还是改内容?不得猜测路径直接执行
|
|
@@ -259,7 +261,7 @@ python -m gongwen handoff --latest --summary # 最新交接文档(Markdown 摘
|
|
|
259
261
|
|
|
260
262
|
## 用户交互指引(Agent 必须遵守)
|
|
261
263
|
|
|
262
|
-
> **终端用户也可直接运行 `python -m gongwen wizard`**:交互式向导以菜单方式完成同样的 A/B/C/D 路径选择与逐步确认(详见下文「向导式交互」小节)。Agent 读到本条时,若用户表示「不熟悉命令/不想记参数」,应主动引导其使用向导,而非逐字念命令行参数。
|
|
264
|
+
> **终端用户也可直接运行 `python -m gongwen wizard`**:交互式向导以菜单方式完成同样的 A/B/C/D/E 路径选择与逐步确认(详见下文「向导式交互」小节)。Agent 读到本条时,若用户表示「不熟悉命令/不想记参数」,应主动引导其使用向导,而非逐字念命令行参数。
|
|
263
265
|
|
|
264
266
|
### 第一步:确认路径(必须,严禁跳过)
|
|
265
267
|
|
|
@@ -288,12 +290,12 @@ python -m gongwen handoff --latest --summary # 最新交接文档(Markdown 摘
|
|
|
288
290
|
当用户**不熟悉命令行**、希望**逐步确认后再执行**,或 Agent 需要**把交互决策委托给工具**时,使用向导:
|
|
289
291
|
|
|
290
292
|
```
|
|
291
|
-
python -m gongwen wizard # 终端交互:菜单选 A/B/C/D → 逐项填参 → 预览确认 → 执行
|
|
293
|
+
python -m gongwen wizard # 终端交互:菜单选 A/B/C/D/E → 逐项填参 → 预览确认 → 执行
|
|
292
294
|
python -m gongwen wizard --answers 答案.json # Agent 非交互:跳过提问直接执行
|
|
293
295
|
python -m gongwen wizard --answers 答案.json --dry-run # 只打印将执行的命令,不真正执行
|
|
294
296
|
```
|
|
295
297
|
|
|
296
|
-
- **路径菜单**:A 格式优化(`optimize`)|B 内容优化(`optimize-content`)|C 生成模板(`template`)|D 一键格式修复(`fix-common`)
|
|
298
|
+
- **路径菜单**:A 格式优化(`optimize`)|B 内容优化(`optimize-content`)|C 生成模板(`template`)|D 一键格式修复(`fix-common`)|E 样式学习(`style-learn`)
|
|
297
299
|
- **交互流程**:选择路径 → 收集参数(公文类型支持 序号 / id / 中文名,如 `1`、`notice`、`通知`)→ A/B/D 先预览再 y/n 确认 → 执行;C 无修改风险直接执行
|
|
298
300
|
- **`--answers` JSON 扁平结构**(Agent 场景,顶层带 `path`):
|
|
299
301
|
```json
|
|
@@ -321,7 +323,7 @@ python -m gongwen wizard --answers 答案.json --dry-run # 只打印将执行
|
|
|
321
323
|
| "按上级文件要求调整" | 用户有政策依据但未提供 | 追问具体文件名或文号,或用 web 搜索相关政策 |
|
|
322
324
|
| "弄漂亮一点" | 希望格式规范 | 解释 GB/T 9704 标准是唯一合规格式 |
|
|
323
325
|
|
|
324
|
-
**原则**:不确定时 **先确认路径**(A/B/C/D,向导模式同),再用 **具体示例引导用户选择**,不猜测。
|
|
326
|
+
**原则**:不确定时 **先确认路径**(A/B/C/D/E,向导模式同),再用 **具体示例引导用户选择**,不猜测。
|
|
325
327
|
|
|
326
328
|
#### 2. 充分利用 skill 知识库
|
|
327
329
|
|
|
@@ -872,7 +874,7 @@ python -m gongwen fix-common 文件.docx -o 成品.docx
|
|
|
872
874
|
|
|
873
875
|
---
|
|
874
876
|
|
|
875
|
-
## 附录:全部命令速查(
|
|
877
|
+
## 附录:全部命令速查(29 个,按用途分组)
|
|
876
878
|
|
|
877
879
|
> Agent 遇到用户需求时,先在此表定位对应命令;命令用法不明确时运行 `python -m gongwen <命令> --help` 查看完整参数。
|
|
878
880
|
|
|
@@ -880,7 +882,7 @@ python -m gongwen fix-common 文件.docx -o 成品.docx
|
|
|
880
882
|
|
|
881
883
|
| 命令 | 用途 | 最小用法 |
|
|
882
884
|
|------|------|---------|
|
|
883
|
-
| `wizard` | 交互式路径引导(A/B/C/D)+ 一键执行;Agent 用 `--answers` 非交互 / `--dry-run` 只打印命令 | `python -m gongwen wizard` |
|
|
885
|
+
| `wizard` | 交互式路径引导(A/B/C/D/E)+ 一键执行;Agent 用 `--answers` 非交互 / `--dry-run` 只打印命令 | `python -m gongwen wizard` |
|
|
884
886
|
|
|
885
887
|
### 🏗️ 生成与模板
|
|
886
888
|
|
|
@@ -889,7 +891,8 @@ python -m gongwen fix-common 文件.docx -o 成品.docx
|
|
|
889
891
|
| `list-types` | 列出 24 种支持的公文类型 | `python -m gongwen list-types` |
|
|
890
892
|
| `template` | 按类型生成 GB/T 9704 空白模板 | `python -m gongwen template notice -o 通知.docx` |
|
|
891
893
|
| `generate` | 从 DocumentModel JSON 生成 .docx | `python -m gongwen generate 模型.json -o 公文.docx` |
|
|
892
|
-
| `md2docx` | Markdown 草稿 →
|
|
894
|
+
| `md2docx` | Markdown 草稿 → 格式化公文(初稿) | `python -m gongwen md2docx 草稿.md -o 公文.docx -t notice` |
|
|
895
|
+
| `draft` | Markdown 草稿 → 国标成品 + 验证(路径 C 四步合一) | `python -m gongwen draft 草稿.md -o 成品.docx -t notice` |
|
|
893
896
|
| `style-learn` | 从标准文档学习排版样式生成模板 | `python -m gongwen style-learn 标准.docx -n 模板名` |
|
|
894
897
|
| `style-list` | 列出已学习的自定义样式模板 | `python -m gongwen style-list` |
|
|
895
898
|
|
|
@@ -905,9 +908,9 @@ python -m gongwen fix-common 文件.docx -o 成品.docx
|
|
|
905
908
|
|
|
906
909
|
| 命令 | 用途 | 最小用法 |
|
|
907
910
|
|------|------|---------|
|
|
908
|
-
| `optimize` | 检查+修复+生成(默认预览,--apply
|
|
911
|
+
| `optimize` | 检查+修复+生成(默认预览,--apply 执行;`--verify` 单命令闭环自动复查输出、P0 存在时退出码非 0;`--json` 结构化输出) | `python -m gongwen optimize 公文.docx -o 成品.docx --apply --verify` |
|
|
909
912
|
| `fix-common` | 一键修复常见格式问题(路径 D) | `python -m gongwen fix-common 公文.docx -o 成品.docx` |
|
|
910
|
-
| `optimize-content` | 内容优化:修订+批注对比版(路径 B
|
|
913
|
+
| `optimize-content` | 内容优化:修订+批注对比版(路径 B;`--precheck` 预检 changes 与原文一致性、`--preset quick/full/review` 参数收敛) | `python -m gongwen optimize-content 原文.docx --changes 修订.json --apply --preset full` |
|
|
911
914
|
| `full-review` | 完整审校:格式修复→内容优化→批注,一条命令 | `python -m gongwen full-review 公文.docx -o 成品.docx` |
|
|
912
915
|
| `bold-first` | 正文段落首句加粗(公文规范) | `python -m gongwen bold-first 公文.docx -o 成品.docx` |
|
|
913
916
|
|
|
@@ -1950,7 +1953,7 @@ python -m gongwen check 成品.docx -t <类型> --json
|
|
|
1950
1953
|
|
|
1951
1954
|
第二步至第四步使用同一 `-t` 类型。
|
|
1952
1955
|
|
|
1953
|
-
> **推荐做法**:Agent 先根据用户需求在对话中生成 Markdown
|
|
1956
|
+
> **推荐做法**:Agent 先根据用户需求在对话中生成 Markdown 草稿(使用下方段落模板),再走上述四步流程生成格式化成品并验证合规;需要一步到位时可直接 `python -m gongwen draft 草稿.md -o 成品.docx -t <类型>`(自动完成格式修复 + check 验证,P0 存在时退出码非 0)。
|
|
1954
1957
|
|
|
1955
1958
|
### 路径 C / 交付后的用户修改处理
|
|
1956
1959
|
|
|
@@ -44,6 +44,8 @@ metadata:
|
|
|
44
44
|
| **dsh** | 加载 SKILL.md + cordis 插件,可执行命令、有 Web UI | 加载 skill 后调用 CLI 命令,或通过 DSH 插件 API 调用;配置面板可调整排版参数 |
|
|
45
45
|
| **dialogue-only** | 纯对话,**不能执行命令** | 不应直接执行命令,应引导用户手动操作;同时可读取项目内的文字性资源库(`prompts/style-prompts.md`、`prompts/usage-prompts.md`、`rules/official/*.yaml`、`SKILL.md` 等)作为公文写作指导的知识库,在对话中提供用词用语、写作规范、风格指引等专业建议;参考 README.md 中的「纯对话 LLM 使用指引」
|
|
46
46
|
|
|
47
|
+
> **格式兼容性**:工具链基于 OOXML(`.docx`),**不支持旧版 `.doc`(OLE2/WPS 二进制格式)**。用户提供 `.doc` 文件时,Agent 应先用 WPS/Word「另存为 .docx」;本机装有 WPS 时可用 COM 转换:`KWPS.Application` → `Documents.Open(src)` → `SaveAs(dst, 12)`(WPS 枚举 12 = OOXML),再走 `check/optimize/optimize-content` 全流程。
|
|
48
|
+
|
|
47
49
|
### 二、聚合禁令(违反任一条即为不合格执行)
|
|
48
50
|
|
|
49
51
|
```
|
|
@@ -186,7 +188,7 @@ python -m gongwen handoff --latest --summary # 最新交接文档(Markdown 摘
|
|
|
186
188
|
|
|
187
189
|
- **路径 A - 格式修复**:用户有文档,只需排版标准化(GB/T 9704),不改文字内容
|
|
188
190
|
- **路径 B - 内容优化**:用户有文档,需要润色文字并生成修订对比版(原稿 vs 优化稿,红色标注修改处)
|
|
189
|
-
- **路径 C - 生成公文**:用户没有文档,根据背景和要求从零生成新的公文。四步流程:编写 Markdown 草稿 → md2docx 转换 → 引用路径 A optimize 套国标格式 → check
|
|
191
|
+
- **路径 C - 生成公文**:用户没有文档,根据背景和要求从零生成新的公文。四步流程:编写 Markdown 草稿 → md2docx 转换 → 引用路径 A optimize 套国标格式 → check 验证交付;也可用 `gongwen draft 草稿.md -o 成品.docx -t 类型` 一条命令完成(含自动格式修复 + 验证)。
|
|
190
192
|
- **路径 D - 一键格式修复**(`fix-common` 新增):用户有文档,只需快速规范化常见格式问题(段落类型修正/编号拆分/首句加粗/加粗范围修复),一步到位,输出不含 AI 声明段的干净文档。与路径 A 的区别:不依赖规则引擎、不追加 AI 声明段,适合对"干净中间稿"做最终格式规范化。
|
|
191
193
|
- **路径 E - 样式学习**(`style-learn` 新增):用户提供一份**标准文档**(如本单位定稿的红头公文/排版规范的样例),要求"学习排版样式""按这个格式生成模板""做成模板以后都用这个格式"。Agent 应调用 `style-learn` 解析文档的字体/字号/字间距/行距/缩进/页边距,生成命名自定义模板(注册到 user_rules),后续所有文档可用 `optimize -t 模板名` 套用该格式。
|
|
192
194
|
|
|
@@ -242,7 +244,7 @@ python -m gongwen handoff --latest --summary # 最新交接文档(Markdown 摘
|
|
|
242
244
|
│
|
|
243
245
|
├─ 包含"生成/写/起草" + 未指定已有文档
|
|
244
246
|
│ └── 识别为路径 C(生成公文)
|
|
245
|
-
│ └── 必须走 md2docx → [bold-first] → optimize → check
|
|
247
|
+
│ └── 必须走 md2docx → [bold-first] → optimize → check(或 `draft 草稿.md -o 成品.docx -t 类型` 一步到位)
|
|
246
248
|
│
|
|
247
249
|
└─ 不确定
|
|
248
250
|
└── 必须追问用户:是改格式还是改内容?不得猜测路径直接执行
|
|
@@ -259,7 +261,7 @@ python -m gongwen handoff --latest --summary # 最新交接文档(Markdown 摘
|
|
|
259
261
|
|
|
260
262
|
## 用户交互指引(Agent 必须遵守)
|
|
261
263
|
|
|
262
|
-
> **终端用户也可直接运行 `python -m gongwen wizard`**:交互式向导以菜单方式完成同样的 A/B/C/D 路径选择与逐步确认(详见下文「向导式交互」小节)。Agent 读到本条时,若用户表示「不熟悉命令/不想记参数」,应主动引导其使用向导,而非逐字念命令行参数。
|
|
264
|
+
> **终端用户也可直接运行 `python -m gongwen wizard`**:交互式向导以菜单方式完成同样的 A/B/C/D/E 路径选择与逐步确认(详见下文「向导式交互」小节)。Agent 读到本条时,若用户表示「不熟悉命令/不想记参数」,应主动引导其使用向导,而非逐字念命令行参数。
|
|
263
265
|
|
|
264
266
|
### 第一步:确认路径(必须,严禁跳过)
|
|
265
267
|
|
|
@@ -288,12 +290,12 @@ python -m gongwen handoff --latest --summary # 最新交接文档(Markdown 摘
|
|
|
288
290
|
当用户**不熟悉命令行**、希望**逐步确认后再执行**,或 Agent 需要**把交互决策委托给工具**时,使用向导:
|
|
289
291
|
|
|
290
292
|
```
|
|
291
|
-
python -m gongwen wizard # 终端交互:菜单选 A/B/C/D → 逐项填参 → 预览确认 → 执行
|
|
293
|
+
python -m gongwen wizard # 终端交互:菜单选 A/B/C/D/E → 逐项填参 → 预览确认 → 执行
|
|
292
294
|
python -m gongwen wizard --answers 答案.json # Agent 非交互:跳过提问直接执行
|
|
293
295
|
python -m gongwen wizard --answers 答案.json --dry-run # 只打印将执行的命令,不真正执行
|
|
294
296
|
```
|
|
295
297
|
|
|
296
|
-
- **路径菜单**:A 格式优化(`optimize`)|B 内容优化(`optimize-content`)|C 生成模板(`template`)|D 一键格式修复(`fix-common`)
|
|
298
|
+
- **路径菜单**:A 格式优化(`optimize`)|B 内容优化(`optimize-content`)|C 生成模板(`template`)|D 一键格式修复(`fix-common`)|E 样式学习(`style-learn`)
|
|
297
299
|
- **交互流程**:选择路径 → 收集参数(公文类型支持 序号 / id / 中文名,如 `1`、`notice`、`通知`)→ A/B/D 先预览再 y/n 确认 → 执行;C 无修改风险直接执行
|
|
298
300
|
- **`--answers` JSON 扁平结构**(Agent 场景,顶层带 `path`):
|
|
299
301
|
```json
|
|
@@ -321,7 +323,7 @@ python -m gongwen wizard --answers 答案.json --dry-run # 只打印将执行
|
|
|
321
323
|
| "按上级文件要求调整" | 用户有政策依据但未提供 | 追问具体文件名或文号,或用 web 搜索相关政策 |
|
|
322
324
|
| "弄漂亮一点" | 希望格式规范 | 解释 GB/T 9704 标准是唯一合规格式 |
|
|
323
325
|
|
|
324
|
-
**原则**:不确定时 **先确认路径**(A/B/C/D,向导模式同),再用 **具体示例引导用户选择**,不猜测。
|
|
326
|
+
**原则**:不确定时 **先确认路径**(A/B/C/D/E,向导模式同),再用 **具体示例引导用户选择**,不猜测。
|
|
325
327
|
|
|
326
328
|
#### 2. 充分利用 skill 知识库
|
|
327
329
|
|
|
@@ -872,7 +874,7 @@ python -m gongwen fix-common 文件.docx -o 成品.docx
|
|
|
872
874
|
|
|
873
875
|
---
|
|
874
876
|
|
|
875
|
-
## 附录:全部命令速查(
|
|
877
|
+
## 附录:全部命令速查(29 个,按用途分组)
|
|
876
878
|
|
|
877
879
|
> Agent 遇到用户需求时,先在此表定位对应命令;命令用法不明确时运行 `python -m gongwen <命令> --help` 查看完整参数。
|
|
878
880
|
|
|
@@ -880,7 +882,7 @@ python -m gongwen fix-common 文件.docx -o 成品.docx
|
|
|
880
882
|
|
|
881
883
|
| 命令 | 用途 | 最小用法 |
|
|
882
884
|
|------|------|---------|
|
|
883
|
-
| `wizard` | 交互式路径引导(A/B/C/D)+ 一键执行;Agent 用 `--answers` 非交互 / `--dry-run` 只打印命令 | `python -m gongwen wizard` |
|
|
885
|
+
| `wizard` | 交互式路径引导(A/B/C/D/E)+ 一键执行;Agent 用 `--answers` 非交互 / `--dry-run` 只打印命令 | `python -m gongwen wizard` |
|
|
884
886
|
|
|
885
887
|
### 🏗️ 生成与模板
|
|
886
888
|
|
|
@@ -889,7 +891,8 @@ python -m gongwen fix-common 文件.docx -o 成品.docx
|
|
|
889
891
|
| `list-types` | 列出 24 种支持的公文类型 | `python -m gongwen list-types` |
|
|
890
892
|
| `template` | 按类型生成 GB/T 9704 空白模板 | `python -m gongwen template notice -o 通知.docx` |
|
|
891
893
|
| `generate` | 从 DocumentModel JSON 生成 .docx | `python -m gongwen generate 模型.json -o 公文.docx` |
|
|
892
|
-
| `md2docx` | Markdown 草稿 →
|
|
894
|
+
| `md2docx` | Markdown 草稿 → 格式化公文(初稿) | `python -m gongwen md2docx 草稿.md -o 公文.docx -t notice` |
|
|
895
|
+
| `draft` | Markdown 草稿 → 国标成品 + 验证(路径 C 四步合一) | `python -m gongwen draft 草稿.md -o 成品.docx -t notice` |
|
|
893
896
|
| `style-learn` | 从标准文档学习排版样式生成模板 | `python -m gongwen style-learn 标准.docx -n 模板名` |
|
|
894
897
|
| `style-list` | 列出已学习的自定义样式模板 | `python -m gongwen style-list` |
|
|
895
898
|
|
|
@@ -905,9 +908,9 @@ python -m gongwen fix-common 文件.docx -o 成品.docx
|
|
|
905
908
|
|
|
906
909
|
| 命令 | 用途 | 最小用法 |
|
|
907
910
|
|------|------|---------|
|
|
908
|
-
| `optimize` | 检查+修复+生成(默认预览,--apply
|
|
911
|
+
| `optimize` | 检查+修复+生成(默认预览,--apply 执行;`--verify` 单命令闭环自动复查输出、P0 存在时退出码非 0;`--json` 结构化输出) | `python -m gongwen optimize 公文.docx -o 成品.docx --apply --verify` |
|
|
909
912
|
| `fix-common` | 一键修复常见格式问题(路径 D) | `python -m gongwen fix-common 公文.docx -o 成品.docx` |
|
|
910
|
-
| `optimize-content` | 内容优化:修订+批注对比版(路径 B
|
|
913
|
+
| `optimize-content` | 内容优化:修订+批注对比版(路径 B;`--precheck` 预检 changes 与原文一致性、`--preset quick/full/review` 参数收敛) | `python -m gongwen optimize-content 原文.docx --changes 修订.json --apply --preset full` |
|
|
911
914
|
| `full-review` | 完整审校:格式修复→内容优化→批注,一条命令 | `python -m gongwen full-review 公文.docx -o 成品.docx` |
|
|
912
915
|
| `bold-first` | 正文段落首句加粗(公文规范) | `python -m gongwen bold-first 公文.docx -o 成品.docx` |
|
|
913
916
|
|
|
@@ -1950,7 +1953,7 @@ python -m gongwen check 成品.docx -t <类型> --json
|
|
|
1950
1953
|
|
|
1951
1954
|
第二步至第四步使用同一 `-t` 类型。
|
|
1952
1955
|
|
|
1953
|
-
> **推荐做法**:Agent 先根据用户需求在对话中生成 Markdown
|
|
1956
|
+
> **推荐做法**:Agent 先根据用户需求在对话中生成 Markdown 草稿(使用下方段落模板),再走上述四步流程生成格式化成品并验证合规;需要一步到位时可直接 `python -m gongwen draft 草稿.md -o 成品.docx -t <类型>`(自动完成格式修复 + check 验证,P0 存在时退出码非 0)。
|
|
1954
1957
|
|
|
1955
1958
|
### 路径 C / 交付后的用户修改处理
|
|
1956
1959
|
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,54 @@
|
|
|
4
4
|
Licensed under the MIT License. See the LICENSE file for details.
|
|
5
5
|
-->
|
|
6
6
|
|
|
7
|
+
## v2.10.0 (2026-09-04)
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- **测试补强(整改 A / P1-1)**:新增 `tests/test_checker.py`/`test_optimize.py`/`test_content_cmds.py`/`test_json_output.py` 26 用例,覆盖 check/optimize/content 核心路径与 `--json` 输出(tests/ 本地-only,不同步仓库)
|
|
11
|
+
- **`parse`/`md2docx`/`rule-export` 统一 `--json`(整改 B / P1-2)**:Agent 高频命令补齐结构化输出,向后兼容(不带 `--json` 保持原行为)
|
|
12
|
+
- **CHK-L003 语义类规则静默跳过**:`language.*` 字段不再刷「未支持检查字段」告警(语言规范类由人工/LLM 审校覆盖,规则定义保留)
|
|
13
|
+
- **`optimize --json` 新增 `verify_executed`/`verify_passed` 明确字段(P2-3)**:`verify_passed = (verify_p0 == 0)` 与退出码语义一致,消除旧 `verified` 字段命名歧义(旧字段保留向后兼容)
|
|
14
|
+
- **README 新增 Windows 控制台编码说明(P2-5)**:原生 cmd GBK 乱码排查(chcp 65001 / Windows Terminal / PYTHONIOENCODING=utf-8)
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- **`main()`/命令注册迁出 `_legacy.py`(整改 C / P0-1)**:29 个 add_parser 注册 + 命令分组/格式化器迁至 `gongwen/cli/app.py`;`_legacy.py` 1320→936 行,仅保留 10 个核心命令实现与兼容转发;入口 `from gongwen.cli.app import main`;迁移前后 29 命令 help/version 快照零差异
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- `tests/test_netcheck.py` 既有 F841(未使用变量)清理
|
|
21
|
+
- **8 处静默降级 pass 补日志(P2-4)**:md2docx_render 3 处 / draft_cmds 1 处 / wizard_cmds 1 处 / font_cmds 3 处,异常不再无声吞掉(新增 3 个模块 logger)
|
|
22
|
+
- **清理本地 dist/ 与 build/ 残留(P2-2)**:删除 2.7.0/2.8.0 旧构建产物(gitignore 忽略,不影响发布流程)
|
|
23
|
+
|
|
24
|
+
### Notes
|
|
25
|
+
- 审计整改 D 决策(2026-09-04):remote token 保持现状(已查证未进入 git 历史,风险记录在本地审计报告);CI 接受现状(本地跑测试作发布门禁),详见 `docs/design/2026-09-04-project-audit-report.md` §6(本地存档)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## v2.9.0 (2026-09-04)
|
|
30
|
+
|
|
31
|
+
### Added
|
|
32
|
+
- **`optimize --verify` 单命令闭环**:修复后自动复检输出文件,存在 P0 时退出码非 0(Agent 可感知),`--json` 结构化输出(`verified`/`verify_p0` 等字段)
|
|
33
|
+
- **`draft` 一站式生成**:Markdown 草稿 → 国标成品(md2docx + optimize + 校验四步合一),`--json` 输出完整执行轨迹
|
|
34
|
+
- **`wizard` 交互引导补 E 路径**:A/B/C/D/E 五路径菜单 + `--answers` 非交互 + `--dry-run` 只打印命令
|
|
35
|
+
- **`optimize-content --preset` 参数收敛**:`quick|full|review` 三档预设映射参数组合,显式参数优先
|
|
36
|
+
- **`optimize-content --precheck` 预检**:逐段比对 changes.json 与原文一致性的三级递进匹配(精确/归一化/去空格),`--json` 输出、不匹配项退出码 1
|
|
37
|
+
- **规则加载共享缓存**:`load_rules_merged` 模块级缓存(mtime 失效 + deepcopy 隔离),重复调用零解析开销
|
|
38
|
+
- **`--help` 按场景分组**:6 组(生成/格式/内容/审校/版式/运维)29 命令全覆盖,单命令 `--help` 不变
|
|
39
|
+
- **统一 Pipeline 编排层(O9)**:新增 `engine/core/pipeline.py`(PipelineContext + Pipeline 阶段注册/顺序执行),`full-review` 重构为 3 阶段试点(一次解析、多次操作、一次生成,source_path 全程携带)
|
|
40
|
+
- **DSH 插件位置参数修复(O12)**:`POSITIONAL_ARGS` 补 `draft`/`rule-import`/`font` 声明,修复插件转发构造 `--input`/`--key`/`--action` 导致的调用失败
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
- **内容优化引擎阶段化(O10)**:`cmd_optimize_content`(原 ~800 行)内联块机械抽取为 `_run_comment_mode`/`_run_tracked_change_mode`/`_run_tracked_mode` 三个阶段函数,主函数变编排者;输出/退出码/批注与重构前一致
|
|
44
|
+
- **SKILL.md 命令计数修正(O11)**:命令速查表计数 26→29(实测 29 命令全覆盖),三处副本字节级同步(修复 CRLF/LF 行尾差异)
|
|
45
|
+
- **README 能力概述 25 项→29 项命令能力**;新增「架构边界(O12 · DSH 插件)」小节(CLI 唯一业务入口)
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
- 清理 `doctor_cmds.py` 既有 15 处 F541(无占位符 f-string),CI lint 门槛保持绿色
|
|
49
|
+
- 修复 `.dsh/skills` 副本行尾符不一致导致的 doctor「SKILL.md 同步」误报
|
|
50
|
+
|
|
51
|
+
### Notes
|
|
52
|
+
- 工具链仅支持 OOXML .docx;旧版 .doc(OLE2/WPS)需经 WPS COM `SaveAs(dst, 12)` 转换后使用(README/SKILL 已注明)
|
|
53
|
+
- 正式发布流程:见 RELEASE.md(一键 bump + 三 remote 推送触发 CI 自动发布)
|
|
54
|
+
|
|
7
55
|
## v2.8.0 (2026-09-03)
|
|
8
56
|
|
|
9
57
|
### Added
|
package/README.md
CHANGED
|
@@ -32,9 +32,10 @@ Licensed under the MIT License. See the LICENSE file for details.
|
|
|
32
32
|
| 🏗️ 模板生成 | `template` | 按类型生成 GB/T 9704 标准空白模板 |
|
|
33
33
|
| 🔍 解析 | `parse` | `.docx` → 结构化 DocumentModel |
|
|
34
34
|
| ✅ 格式检查 | `check` | 按国标检查,分级 P0/P1/P2(只读) |
|
|
35
|
-
| 🔧 格式修复 | `optimize` |
|
|
36
|
-
| ✍️ **内容优化** | **`optimize-content`** | 内容润色:默认 **Word
|
|
35
|
+
| 🔧 格式修复 | `optimize` | 自动修复字体/字号/行距/页边距,输出合规文档;`--verify` 单命令闭环自动复查、P0 存在时退出码非 0;`--json` 结构化输出 |
|
|
36
|
+
| ✍️ **内容优化** | **`optimize-content`** | 内容润色:默认 **Word 原生修订+批注**(审阅面板逐条接受/拒绝),可选行内差异对比版;`--precheck` 预检 changes 与原文一致性、`--preset quick/full/review` 参数收敛 |
|
|
37
37
|
| 📝 草稿转公文 | `md2docx` | Markdown 文本直接转为格式化 `.docx`(支持 Front Matter) |
|
|
38
|
+
| 🚀 一站式生成 | `draft` | Markdown 草稿 → 国标成品 + 自动验证(路径 C 四步合一) |
|
|
38
39
|
| 📄 模型生成 | `generate` | 从 JSON 模型生成 `.docx` |
|
|
39
40
|
| 🔴 版头 | `header` | 注入发文机关标志 + 发文字号 + 签发人 + 红色反线 |
|
|
40
41
|
| 📑 版记 | `footer` | 注入抄送机关 + 印发机关 + 印发日期 + 分隔线 |
|
|
@@ -50,7 +51,7 @@ Licensed under the MIT License. See the LICENSE file for details.
|
|
|
50
51
|
| 🕵️ 文档审计 | `audit` | 检查删除线/加粗/AI 声明等痕迹 |
|
|
51
52
|
| 🤝 会话交接 | `handoff` | 跨会话上下文传递(`--list` / `--latest` / Agent 长任务收尾必写) |
|
|
52
53
|
| ⚙️ 规则管理 | `rule-export/import/list` | YAML 规则三层定制(官方/单位/用户) |
|
|
53
|
-
| 🧭 向导式交互 | `wizard` | 交互式路径引导(A/B/C/D)+ 一键执行;Agent 用 `--answers` 非交互 / `--dry-run` 只打印命令 |
|
|
54
|
+
| 🧭 向导式交互 | `wizard` | 交互式路径引导(A/B/C/D/E)+ 一键执行;Agent 用 `--answers` 非交互 / `--dry-run` 只打印命令 |
|
|
54
55
|
|
|
55
56
|
## 使用示例
|
|
56
57
|
|
|
@@ -69,7 +70,7 @@ Licensed under the MIT License. See the LICENSE file for details.
|
|
|
69
70
|
|
|
70
71
|
> **如果你是无法执行代码的纯对话 AI**(如豆包、Kimi、ChatGPT 网页版等),请按以下方式协助用户:
|
|
71
72
|
|
|
72
|
-
1. **告知工具性质**:向用户说明「这是一个本地运行的 Python 命令行工具,需要在你自己的电脑上安装后使用」,并说明它能做什么(格式检查、自动修复、内容优化、模板生成等
|
|
73
|
+
1. **告知工具性质**:向用户说明「这是一个本地运行的 Python 命令行工具,需要在你自己的电脑上安装后使用」,并说明它能做什么(格式检查、自动修复、内容优化、模板生成等 29 项命令能力)。
|
|
73
74
|
2. **引导安装**:请用户在自己的电脑上执行以下步骤:
|
|
74
75
|
```bash
|
|
75
76
|
# 步骤 1:克隆仓库
|
|
@@ -130,8 +131,8 @@ python -m gongwen template notice -o 通知模板.docx
|
|
|
130
131
|
# 检查公文格式(只读)
|
|
131
132
|
python -m gongwen check 公文.docx -t notice --json
|
|
132
133
|
|
|
133
|
-
# 自动修复格式(--apply
|
|
134
|
-
python -m gongwen optimize 公文.docx -o 成品.docx -t notice --apply
|
|
134
|
+
# 自动修复格式(--apply 确认执行,默认预览);--verify 生成后自动复查,P0 存在时退出码非 0
|
|
135
|
+
python -m gongwen optimize 公文.docx -o 成品.docx -t notice --apply --verify
|
|
135
136
|
|
|
136
137
|
# 一步到位:检查 + 修复 + 版头/版记/页码全注入(--layout 指向 JSON 配置)
|
|
137
138
|
python -m gongwen optimize 公文.docx -o 成品.docx --layout 版式.json
|
|
@@ -139,9 +140,18 @@ python -m gongwen optimize 公文.docx -o 成品.docx --layout 版式.json
|
|
|
139
140
|
# Markdown 草稿 → 正式公文(支持管道输入和 Front Matter 元数据)
|
|
140
141
|
python -m gongwen md2docx 草稿.md -o 正式公文.docx -t report --signer "XX单位" --date "2026年8月1日"
|
|
141
142
|
|
|
143
|
+
# 一步到位:Markdown 草稿 → 国标成品 + 自动验证(路径 C 四步合一)
|
|
144
|
+
python -m gongwen draft 草稿.md -o 正式公文.docx -t report --signer "XX单位" --date "2026年8月1日"
|
|
145
|
+
|
|
142
146
|
# 内容优化(默认 tracked 模式:Word 原生修订+批注,审阅面板逐条接受/拒绝)
|
|
143
147
|
python -m gongwen optimize-content 原文.docx --changes 修订内容.json --apply --mode tracked -t news
|
|
144
148
|
|
|
149
|
+
# 预检 changes 与原文一致性(不生成文档,输出不匹配清单+相似度诊断;不匹配时退出码 1)
|
|
150
|
+
python -m gongwen optimize-content 原文.docx --changes 修订内容.json --precheck
|
|
151
|
+
|
|
152
|
+
# 预设组合:quick 精简快速 / full 完整默认 / review 完整审稿(显式参数优先)
|
|
153
|
+
python -m gongwen optimize-content 原文.docx --changes 修订内容.json --apply --preset full
|
|
154
|
+
|
|
145
155
|
# 注入版头(发文机关标志 + 发文字号 + 签发人 + 红色反线)
|
|
146
156
|
python -m gongwen header 公文.docx -o 红头公文.docx --org-name "XX单位" --doc-number "〔2026〕1号"
|
|
147
157
|
|
|
@@ -164,6 +174,17 @@ python -m gongwen style-learn 标准公文.docx -n 模板名
|
|
|
164
174
|
python -m gongwen style-list # 列出已学习的模板
|
|
165
175
|
```
|
|
166
176
|
|
|
177
|
+
### 🖥️ Windows 控制台编码(GBK 乱码排查)
|
|
178
|
+
|
|
179
|
+
工具内部已统一按 UTF-8 输出(`gongwen/_bootstrap.py` 强制 stdout/stderr/stdin 重配置为 UTF-8,
|
|
180
|
+
保证管道/Agent 调用无编码问题)。若在原生 `cmd`(默认 GBK 代码页 936)看到中文乱码,任选其一:
|
|
181
|
+
|
|
182
|
+
- **推荐**:改用 Windows Terminal / VS Code 终端(默认 UTF-8,无乱码)
|
|
183
|
+
- 在 cmd 中先执行 `chcp 65001` 切换 UTF-8 代码页,再运行命令
|
|
184
|
+
- 或设置环境变量 `PYTHONIOENCODING=utf-8`(与工具内部行为一致)
|
|
185
|
+
|
|
186
|
+
> 说明:GBK 乱码仅影响原生 cmd 的**交互显示**,不影响文件内容与 `--json` 的机器可解析性。
|
|
187
|
+
|
|
167
188
|
### 🔤 字体管理
|
|
168
189
|
|
|
169
190
|
公文标准字体是 GB/T 9704 排版的关键。项目内置 3 个标准字体文件(`assets/fonts/`),支持自动安装:
|
|
@@ -265,7 +286,7 @@ python -m gongwen optimize-content 新闻稿.docx --changes changes.json \
|
|
|
265
286
|
交互式引导选择处理路径并一键执行,适合不熟悉命令行的用户;Agent 可走非交互模式:
|
|
266
287
|
|
|
267
288
|
```bash
|
|
268
|
-
python -m gongwen wizard # 终端交互:菜单选 A/B/C/D → 逐项填参 → 预览确认 → 执行
|
|
289
|
+
python -m gongwen wizard # 终端交互:菜单选 A/B/C/D/E → 逐项填参 → 预览确认 → 执行
|
|
269
290
|
python -m gongwen wizard --answers 答案.json # Agent 非交互:跳过提问直接执行
|
|
270
291
|
python -m gongwen wizard --answers 答案.json --dry-run # 只打印将执行的命令
|
|
271
292
|
```
|
|
@@ -328,7 +349,7 @@ python -m gongwen rule-list notice
|
|
|
328
349
|
|
|
329
350
|
- **路径 A**:格式修复(不改文字,只修排版)
|
|
330
351
|
- **路径 B**:内容优化(润色文字,Word 原生修订+批注 / 差异对比版)
|
|
331
|
-
- **路径 C
|
|
352
|
+
- **路径 C**:生成公文(从零创建,四步流水线;`draft` 命令可一步到位)
|
|
332
353
|
|
|
333
354
|
**平台适配**:`SKILL.md` 采用通用 frontmatter(`name/description/whenToUse/user-invocable`),兼容 **WorkBuddy、CloudCode、Claude Code、AtomCode、DeepSeek Harness** 等以 `SKILL.md` 为技能清单的平台;纯对话 LLM(无代码执行能力)请参见上方「纯对话 LLM 使用指引」。
|
|
334
355
|
|
|
@@ -356,7 +377,7 @@ DSH 采用 **Cordis 模块化微内核架构**:技能体系基于本地文件
|
|
|
356
377
|
git clone https://github.com/linhut/gongwen-skill.git
|
|
357
378
|
cd gongwen-skill
|
|
358
379
|
pip install -r requirements.txt # 或 pip install gongwen-skill(已上 PyPI)
|
|
359
|
-
python -m gongwen --version # 检验:gongwen-skill v2.
|
|
380
|
+
python -m gongwen --version # 检验:gongwen-skill v2.10.0
|
|
360
381
|
```
|
|
361
382
|
|
|
362
383
|
### 方式一:作为 DSH Skill 注册(基于本地文件系统)
|
|
@@ -412,7 +433,7 @@ pnpm add -w gongwen-skill
|
|
|
412
433
|
"dependencies": {
|
|
413
434
|
"@deepseek-ai/dsh-base": "...",
|
|
414
435
|
"@deepseek-ai/dsh-web-app": "...",
|
|
415
|
-
"gongwen-skill": "^2.
|
|
436
|
+
"gongwen-skill": "^2.10.0"
|
|
416
437
|
},
|
|
417
438
|
"dsh": {
|
|
418
439
|
"profile": {
|
|
@@ -441,6 +462,14 @@ dsh plugin --profile web add -w "link:/path/to/gongwen-skill"
|
|
|
441
462
|
# - dsh.profile.bundles 包含 "gongwen-skill"
|
|
442
463
|
```
|
|
443
464
|
|
|
465
|
+
### 架构边界(O12 · DSH 插件)
|
|
466
|
+
|
|
467
|
+
> 规则:**CLI(`python -m gongwen`)是唯一业务逻辑入口**,DSH 插件(`dsh/`)只做 UI 代理与结果展示。
|
|
468
|
+
|
|
469
|
+
- 插件通过 `spawn("python", ["-m", "gongwen", ...])` 子进程转发命令,**不直接 import 引擎、不操作 docx**,避免双入口行为分裂
|
|
470
|
+
- `dsh/index.js` 的 `POSITIONAL_ARGS` 声明各命令的位置参数(如 `draft: ["input"]`);新增/调整 CLI 命令位置参数时**必须同步更新该表**,否则插件转发会构造出 `--input` 而 CLI 只接受位置参数
|
|
471
|
+
- 插件保持薄层:业务逻辑全在 CLI / engine,改动引擎不影响插件;改动 CLI 参数形态时需同步检查 `dsh/index.js` 转发(doctor 自检覆盖 DSH 文件存在性)
|
|
472
|
+
|
|
444
473
|
### 🚀 启动 DSH Web 服务
|
|
445
474
|
|
|
446
475
|
```bash
|
|
@@ -593,7 +622,7 @@ pip install -r requirements.txt
|
|
|
593
622
|
用户:帮我优化这份会议通知的第二章节措辞
|
|
594
623
|
|
|
595
624
|
Agent:📋 合规自检报告
|
|
596
|
-
Skill 版本: v2.
|
|
625
|
+
Skill 版本: v2.10.0(版本自检已确认最新)
|
|
597
626
|
路径判定: B(内容优化)
|
|
598
627
|
依据: 用户指定了已有文档,且要求"优化措辞"
|
|
599
628
|
命令调用: 1. python -m gongwen optimize-content 会议通知.docx --changes changes.json --apply --paragraphs "5-8"
|
|
@@ -637,7 +666,7 @@ Skill 定位为**工具层**,默认不依赖 LLM(确定性工作全自包含
|
|
|
637
666
|
|
|
638
667
|
**原理**:安全 DNS(DoH,DNS over HTTPS)通过加密 HTTP 查询 DNS,避免中间设备篡改解析结果,可拿到域名的真实 IP。本工具内置阿里(dns.alidns.com)、腾讯(doh.pub / 1.12.12.12)等国内公共 DoH 端点,多端点自动降级;可通过环境变量 GONGWEN_DOH 覆盖为自定义端点(如自建的 DoH 服务)。
|
|
639
668
|
|
|
640
|
-
**自动兜底(v2.
|
|
669
|
+
**自动兜底(v2.10.0)**:`font install` 下载字体、`check-update` 查 PyPI 时若常规请求失败(疑似 DNS 污染),自动用 DoH 真实 IP + TLS SNI 直连重试——TLS 证书仍按真实域名校验,安全不降级,用户零操作。
|
|
641
670
|
|
|
642
671
|
**处置建议**(按推荐度):
|
|
643
672
|
1. 若使用了代理工具(Clash/V2Ray 等)且系统解析命中 198.18.x Fake-IP,优先检查其 DNS 模式的 fake-ip-filter 是否漏掉 GitHub 域名(比改 hosts 更治本)
|
|
@@ -657,4 +686,3 @@ MIT License · **(c) 2026 Jose AI** · https://www.linhut.cn
|
|
|
657
686
|
- GitHub:https://github.com/linhut/gongwen-skill
|
|
658
687
|
- GitCode:https://gitcode.com/linhut/gongwen-skill
|
|
659
688
|
- AtomGit:https://atomgit.com/linhut/gongwen-skill
|
|
660
|
-
|
package/SKILL.md
CHANGED
|
@@ -44,6 +44,8 @@ metadata:
|
|
|
44
44
|
| **dsh** | 加载 SKILL.md + cordis 插件,可执行命令、有 Web UI | 加载 skill 后调用 CLI 命令,或通过 DSH 插件 API 调用;配置面板可调整排版参数 |
|
|
45
45
|
| **dialogue-only** | 纯对话,**不能执行命令** | 不应直接执行命令,应引导用户手动操作;同时可读取项目内的文字性资源库(`prompts/style-prompts.md`、`prompts/usage-prompts.md`、`rules/official/*.yaml`、`SKILL.md` 等)作为公文写作指导的知识库,在对话中提供用词用语、写作规范、风格指引等专业建议;参考 README.md 中的「纯对话 LLM 使用指引」
|
|
46
46
|
|
|
47
|
+
> **格式兼容性**:工具链基于 OOXML(`.docx`),**不支持旧版 `.doc`(OLE2/WPS 二进制格式)**。用户提供 `.doc` 文件时,Agent 应先用 WPS/Word「另存为 .docx」;本机装有 WPS 时可用 COM 转换:`KWPS.Application` → `Documents.Open(src)` → `SaveAs(dst, 12)`(WPS 枚举 12 = OOXML),再走 `check/optimize/optimize-content` 全流程。
|
|
48
|
+
|
|
47
49
|
### 二、聚合禁令(违反任一条即为不合格执行)
|
|
48
50
|
|
|
49
51
|
```
|
|
@@ -186,7 +188,7 @@ python -m gongwen handoff --latest --summary # 最新交接文档(Markdown 摘
|
|
|
186
188
|
|
|
187
189
|
- **路径 A - 格式修复**:用户有文档,只需排版标准化(GB/T 9704),不改文字内容
|
|
188
190
|
- **路径 B - 内容优化**:用户有文档,需要润色文字并生成修订对比版(原稿 vs 优化稿,红色标注修改处)
|
|
189
|
-
- **路径 C - 生成公文**:用户没有文档,根据背景和要求从零生成新的公文。四步流程:编写 Markdown 草稿 → md2docx 转换 → 引用路径 A optimize 套国标格式 → check
|
|
191
|
+
- **路径 C - 生成公文**:用户没有文档,根据背景和要求从零生成新的公文。四步流程:编写 Markdown 草稿 → md2docx 转换 → 引用路径 A optimize 套国标格式 → check 验证交付;也可用 `gongwen draft 草稿.md -o 成品.docx -t 类型` 一条命令完成(含自动格式修复 + 验证)。
|
|
190
192
|
- **路径 D - 一键格式修复**(`fix-common` 新增):用户有文档,只需快速规范化常见格式问题(段落类型修正/编号拆分/首句加粗/加粗范围修复),一步到位,输出不含 AI 声明段的干净文档。与路径 A 的区别:不依赖规则引擎、不追加 AI 声明段,适合对"干净中间稿"做最终格式规范化。
|
|
191
193
|
- **路径 E - 样式学习**(`style-learn` 新增):用户提供一份**标准文档**(如本单位定稿的红头公文/排版规范的样例),要求"学习排版样式""按这个格式生成模板""做成模板以后都用这个格式"。Agent 应调用 `style-learn` 解析文档的字体/字号/字间距/行距/缩进/页边距,生成命名自定义模板(注册到 user_rules),后续所有文档可用 `optimize -t 模板名` 套用该格式。
|
|
192
194
|
|
|
@@ -242,7 +244,7 @@ python -m gongwen handoff --latest --summary # 最新交接文档(Markdown 摘
|
|
|
242
244
|
│
|
|
243
245
|
├─ 包含"生成/写/起草" + 未指定已有文档
|
|
244
246
|
│ └── 识别为路径 C(生成公文)
|
|
245
|
-
│ └── 必须走 md2docx → [bold-first] → optimize → check
|
|
247
|
+
│ └── 必须走 md2docx → [bold-first] → optimize → check(或 `draft 草稿.md -o 成品.docx -t 类型` 一步到位)
|
|
246
248
|
│
|
|
247
249
|
└─ 不确定
|
|
248
250
|
└── 必须追问用户:是改格式还是改内容?不得猜测路径直接执行
|
|
@@ -259,7 +261,7 @@ python -m gongwen handoff --latest --summary # 最新交接文档(Markdown 摘
|
|
|
259
261
|
|
|
260
262
|
## 用户交互指引(Agent 必须遵守)
|
|
261
263
|
|
|
262
|
-
> **终端用户也可直接运行 `python -m gongwen wizard`**:交互式向导以菜单方式完成同样的 A/B/C/D 路径选择与逐步确认(详见下文「向导式交互」小节)。Agent 读到本条时,若用户表示「不熟悉命令/不想记参数」,应主动引导其使用向导,而非逐字念命令行参数。
|
|
264
|
+
> **终端用户也可直接运行 `python -m gongwen wizard`**:交互式向导以菜单方式完成同样的 A/B/C/D/E 路径选择与逐步确认(详见下文「向导式交互」小节)。Agent 读到本条时,若用户表示「不熟悉命令/不想记参数」,应主动引导其使用向导,而非逐字念命令行参数。
|
|
263
265
|
|
|
264
266
|
### 第一步:确认路径(必须,严禁跳过)
|
|
265
267
|
|
|
@@ -288,12 +290,12 @@ python -m gongwen handoff --latest --summary # 最新交接文档(Markdown 摘
|
|
|
288
290
|
当用户**不熟悉命令行**、希望**逐步确认后再执行**,或 Agent 需要**把交互决策委托给工具**时,使用向导:
|
|
289
291
|
|
|
290
292
|
```
|
|
291
|
-
python -m gongwen wizard # 终端交互:菜单选 A/B/C/D → 逐项填参 → 预览确认 → 执行
|
|
293
|
+
python -m gongwen wizard # 终端交互:菜单选 A/B/C/D/E → 逐项填参 → 预览确认 → 执行
|
|
292
294
|
python -m gongwen wizard --answers 答案.json # Agent 非交互:跳过提问直接执行
|
|
293
295
|
python -m gongwen wizard --answers 答案.json --dry-run # 只打印将执行的命令,不真正执行
|
|
294
296
|
```
|
|
295
297
|
|
|
296
|
-
- **路径菜单**:A 格式优化(`optimize`)|B 内容优化(`optimize-content`)|C 生成模板(`template`)|D 一键格式修复(`fix-common`)
|
|
298
|
+
- **路径菜单**:A 格式优化(`optimize`)|B 内容优化(`optimize-content`)|C 生成模板(`template`)|D 一键格式修复(`fix-common`)|E 样式学习(`style-learn`)
|
|
297
299
|
- **交互流程**:选择路径 → 收集参数(公文类型支持 序号 / id / 中文名,如 `1`、`notice`、`通知`)→ A/B/D 先预览再 y/n 确认 → 执行;C 无修改风险直接执行
|
|
298
300
|
- **`--answers` JSON 扁平结构**(Agent 场景,顶层带 `path`):
|
|
299
301
|
```json
|
|
@@ -321,7 +323,7 @@ python -m gongwen wizard --answers 答案.json --dry-run # 只打印将执行
|
|
|
321
323
|
| "按上级文件要求调整" | 用户有政策依据但未提供 | 追问具体文件名或文号,或用 web 搜索相关政策 |
|
|
322
324
|
| "弄漂亮一点" | 希望格式规范 | 解释 GB/T 9704 标准是唯一合规格式 |
|
|
323
325
|
|
|
324
|
-
**原则**:不确定时 **先确认路径**(A/B/C/D,向导模式同),再用 **具体示例引导用户选择**,不猜测。
|
|
326
|
+
**原则**:不确定时 **先确认路径**(A/B/C/D/E,向导模式同),再用 **具体示例引导用户选择**,不猜测。
|
|
325
327
|
|
|
326
328
|
#### 2. 充分利用 skill 知识库
|
|
327
329
|
|
|
@@ -872,7 +874,7 @@ python -m gongwen fix-common 文件.docx -o 成品.docx
|
|
|
872
874
|
|
|
873
875
|
---
|
|
874
876
|
|
|
875
|
-
## 附录:全部命令速查(
|
|
877
|
+
## 附录:全部命令速查(29 个,按用途分组)
|
|
876
878
|
|
|
877
879
|
> Agent 遇到用户需求时,先在此表定位对应命令;命令用法不明确时运行 `python -m gongwen <命令> --help` 查看完整参数。
|
|
878
880
|
|
|
@@ -880,7 +882,7 @@ python -m gongwen fix-common 文件.docx -o 成品.docx
|
|
|
880
882
|
|
|
881
883
|
| 命令 | 用途 | 最小用法 |
|
|
882
884
|
|------|------|---------|
|
|
883
|
-
| `wizard` | 交互式路径引导(A/B/C/D)+ 一键执行;Agent 用 `--answers` 非交互 / `--dry-run` 只打印命令 | `python -m gongwen wizard` |
|
|
885
|
+
| `wizard` | 交互式路径引导(A/B/C/D/E)+ 一键执行;Agent 用 `--answers` 非交互 / `--dry-run` 只打印命令 | `python -m gongwen wizard` |
|
|
884
886
|
|
|
885
887
|
### 🏗️ 生成与模板
|
|
886
888
|
|
|
@@ -889,7 +891,8 @@ python -m gongwen fix-common 文件.docx -o 成品.docx
|
|
|
889
891
|
| `list-types` | 列出 24 种支持的公文类型 | `python -m gongwen list-types` |
|
|
890
892
|
| `template` | 按类型生成 GB/T 9704 空白模板 | `python -m gongwen template notice -o 通知.docx` |
|
|
891
893
|
| `generate` | 从 DocumentModel JSON 生成 .docx | `python -m gongwen generate 模型.json -o 公文.docx` |
|
|
892
|
-
| `md2docx` | Markdown 草稿 →
|
|
894
|
+
| `md2docx` | Markdown 草稿 → 格式化公文(初稿) | `python -m gongwen md2docx 草稿.md -o 公文.docx -t notice` |
|
|
895
|
+
| `draft` | Markdown 草稿 → 国标成品 + 验证(路径 C 四步合一) | `python -m gongwen draft 草稿.md -o 成品.docx -t notice` |
|
|
893
896
|
| `style-learn` | 从标准文档学习排版样式生成模板 | `python -m gongwen style-learn 标准.docx -n 模板名` |
|
|
894
897
|
| `style-list` | 列出已学习的自定义样式模板 | `python -m gongwen style-list` |
|
|
895
898
|
|
|
@@ -905,9 +908,9 @@ python -m gongwen fix-common 文件.docx -o 成品.docx
|
|
|
905
908
|
|
|
906
909
|
| 命令 | 用途 | 最小用法 |
|
|
907
910
|
|------|------|---------|
|
|
908
|
-
| `optimize` | 检查+修复+生成(默认预览,--apply
|
|
911
|
+
| `optimize` | 检查+修复+生成(默认预览,--apply 执行;`--verify` 单命令闭环自动复查输出、P0 存在时退出码非 0;`--json` 结构化输出) | `python -m gongwen optimize 公文.docx -o 成品.docx --apply --verify` |
|
|
909
912
|
| `fix-common` | 一键修复常见格式问题(路径 D) | `python -m gongwen fix-common 公文.docx -o 成品.docx` |
|
|
910
|
-
| `optimize-content` | 内容优化:修订+批注对比版(路径 B
|
|
913
|
+
| `optimize-content` | 内容优化:修订+批注对比版(路径 B;`--precheck` 预检 changes 与原文一致性、`--preset quick/full/review` 参数收敛) | `python -m gongwen optimize-content 原文.docx --changes 修订.json --apply --preset full` |
|
|
911
914
|
| `full-review` | 完整审校:格式修复→内容优化→批注,一条命令 | `python -m gongwen full-review 公文.docx -o 成品.docx` |
|
|
912
915
|
| `bold-first` | 正文段落首句加粗(公文规范) | `python -m gongwen bold-first 公文.docx -o 成品.docx` |
|
|
913
916
|
|
|
@@ -1950,7 +1953,7 @@ python -m gongwen check 成品.docx -t <类型> --json
|
|
|
1950
1953
|
|
|
1951
1954
|
第二步至第四步使用同一 `-t` 类型。
|
|
1952
1955
|
|
|
1953
|
-
> **推荐做法**:Agent 先根据用户需求在对话中生成 Markdown
|
|
1956
|
+
> **推荐做法**:Agent 先根据用户需求在对话中生成 Markdown 草稿(使用下方段落模板),再走上述四步流程生成格式化成品并验证合规;需要一步到位时可直接 `python -m gongwen draft 草稿.md -o 成品.docx -t <类型>`(自动完成格式修复 + check 验证,P0 存在时退出码非 0)。
|
|
1954
1957
|
|
|
1955
1958
|
### 路径 C / 交付后的用户修改处理
|
|
1956
1959
|
|
package/dsh/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// 公文全流程处理工具 - DSH plugin bridge (gongwen-skill, v2.
|
|
1
|
+
// 公文全流程处理工具 - DSH plugin bridge (gongwen-skill, v2.10.0+)
|
|
2
2
|
// (c) 2026 Jose AI (https://www.linhut.cn)
|
|
3
3
|
// https://github.com/linhut/gongwen-skill
|
|
4
4
|
// Licensed under the MIT License. See the LICENSE file for details.
|
|
@@ -88,6 +88,9 @@ const POSITIONAL_ARGS = {
|
|
|
88
88
|
audit: ["input"],
|
|
89
89
|
review: ["doc_type"],
|
|
90
90
|
"rule-export": ["type"],
|
|
91
|
+
draft: ["input"],
|
|
92
|
+
"rule-import": ["key"],
|
|
93
|
+
font: ["action"],
|
|
91
94
|
};
|
|
92
95
|
|
|
93
96
|
// 支持 --config-overrides 的命令列表
|