从 102 万字语料里提炼公文写作指纹,这个 Skill 把风格变成可测量的参数
这套工具解决什么问题
公文写作的 AI 辅助工具大多走同一条路:给模板、给套话清单,开头“根据……为……”,结尾“请遵照执行”。这套 Skill 换了一个方向——用语料统计的方式,把公文的写作风格蒸馏成可测量、可验收的量化数据,让 Agent 能更好复现 7 种典型公文风格。
它覆盖两个文体族、七个类别。「公文族六类」包括调研报告、领导讲话、工作意见、经验材料、工作方案、经验总结,篇幅中位 2,500-3,700 字,有 2-5 个一级标题。「党建族一类」是千字级党建/基层经验材料,篇幅约 1,120 字,零一级标题,靠段首提领句和群众原话推进。
有固定模板的法定公文(通知、请示、批复、函)不在覆盖范围内。这类文体的正文是固定结构,不需要通过量化蒸馏来统计风格,因为风格已经确定了。
参数从哪来
参数来自 102 万字真实公文的全量统计,不是经验归纳。统计过程检验了一批流行的公文写作认知,多数不成立。
| 常见假设 | 全量数据 |
|---|---|
| 公文开头都用“根据……”“为……” | 依据式仅 6-8%,占比最高的策略也只有 16%,无单一主导 |
| 结尾必须用程式化结语 | 75%-87% 是自然收束,“请遵照执行”类出现率不足 2% |
| 好公文要有数据支撑 | 60%-72% 完全不用百分比;经验总结 100%、工作方案 80%、调研报告 51% 零百分比 |
| 一级标题应简短标示内容 | 分析类文件标题平均 17 字、承载观点,短标题只属于业务类文件 |
| “必须/应当”体现文件力度 | 密度仅 0.56-0.58‰,一篇 3,000 字公文只有 1-2 个 |
模板化的“公文套路”反而是低分公文的特征。真正稳定的共性在语言构造层。平均句长 53-56 字,是自媒体的 2-3 倍;长句占比近半;顿号密度每千字 14-31 个,是自媒体的 4-5 倍。公文靠“A、B、C、D”式并列枚举撑起长句,这是它最强的语言指纹。
文种之间的差异也大到可作判据。“一是二是”在工作意见与调研报告之间差 6 倍,大量使用三级标题的文种只有工作方案一个。写调研报告用工作方案的短标题,参数上就是文种错位。
六步工作流,第三步是分界线
SKILL.md 定义了六步工作流:
1 判文体族 → 判文种 → 定参数行
2 读对应文种的骨架公式
3 读同文种的 DNA 文档 + 范文 ← 不可跳过
4 出骨架,停下等确认
5 按参数写正文
6 跑自检,按报告修正
第 3 步是这个 Skill 与模板类工具的分野。抽象参数说不清“并列成分怎么堆”“过渡句放在哪”,看一篇真的比读十条规则有效。真样本原文不随包分发(版权原因),替代物是 公文语料/、党建语料/ 的 DNA 文档和 示例/ 的 22 篇合成范文。合成范文只能借结构和节奏,不能借内容。
正文里的占位符是刻意留的
范文里会出现 【待补:xx】 这样的占位符。这不是没写完,是设计。那几处是该填本地数字的地方,语料统计发现 60%-72% 的真实公文完全不用百分比。不掌握真实数据时,靠逻辑深度撑起文章是可行的,所以这个 Skill 遇到无法核实的数字一律占位、绝不编造。
自检脚本只把一类东西判为错误:硬冲突,也就是文种识别错误,比如给工作方案写出了调研报告的层级结构。其余参数偏离仅作提示。原因是真实优秀作品个体差异极大。调研报告的“一是二是”从 0 到 20 次都有,四分之一的作品完全不用。语料中场面写得最好的几篇逐篇跑自检,没有一篇全项落在常见区间内。好文章不整齐,整齐的往往是平庸作品,所以脚本不拿均值当合格线。
案例展示的文体差异
三个范文案例各展示一类文体的不同写法。
「工作方案」《关于开展电动自行车充停设施补建和安全隐患整治攻坚的工作方案》的 12 项参数全部落在语料区间内,是这批范文里唯一一篇无区间外项。句长 45.0,顿号密度 21.9‰,三级标题 11 个。三级标题是工作方案的身份证参数,也是唯一大量用 1. 的文种。
「调研报告」《制造业人工智能应用情况调研报告》与工作方案的手感完全不同。一级标题从工作方案的 4-8 字业务标签,变成 17-21 字、“判断+转折”的双分句,承载观点。“一是二是”用了 12 次,是它最密的段内分层方式。正文里带企业主和县工信局同志的原话。这些差异是语料统计出来的文种指纹。
「党建经验材料」《把组织优势转化为发展胜势》属于另一个文体族。篇幅只有千字出头,零一级标题,靠“拧紧责任链”这样的段首动宾提领句分层,通篇挂着职工原话,长引语是这一族的正向指纹。判族只看篇幅和一级标题两项。千字材料一旦加上多个一级标题,就变成了压缩版公文,参数全乱。
统计里踩过的坑
用正则提取特征,匹配字面而不解析语义,是整条方法链最弱的一环。有五项统计因词表缺陷被独立复核推翻。“数字命名法”因量词污染从 84% 修正到 60%,“群众归因”从 30% 修正到 9%。它们的共同结构是算子覆盖范围宽于规则定义,而频率数字本身不提示这一落差。由此立的规矩是任何覆盖率超过 80% 的关键词统计都先当作被污染,逐条检查命中项再采信。
范文也返过工。第一批十篇范文,逐轮回查后发现没有一篇是真正读完语料才写的,都是取回原文切前 700-1,200 字、正则抽一遍标题就动笔,拿到的只有骨架,场面和结尾一次没进过视野。审计后六篇重写、四篇经比对判定缺陷不成立而保留。
已知的局限
语料因版权全部移除、不随 Skill 分发,频率数值第三方无法直接复核,这是实质缺陷。工作方案(10 篇)、经验总结(8 篇)样本偏薄,参数仅供参考。参数解决“像不像”,管不了“对不对”。内容是否站得住、政治表述是否得体,参数无法验收,涉密与对外口径须经本单位核稿人终审。
怎么用
推荐直接在 Moxt 里用,长文的反复读取与逐句改写正需要工作空间的上下文能力。也可以安装到本地:
git clone <this-repo> ~/.claude/skills/lieflat-gongwen
或把整个目录放进你的 Agent 的 skills 目录。核心能力零依赖,自检脚本只用 Python 标准库。兼容 Codex、ClaudeCode、Moxt 等支持 agents.md 的 Agent。
目录结构如下:
SKILL.md 入口:路由 + 六步流程 + 输出契约
参数卡.md 每次必读,七文体参数一页表
标题技法库.md 九种技法 × 四类文本的浓度梯度
句子对照库.md 八文种句子级对照
scripts/check_params.py 数值自检器
scripts/strip_meta.py 语料数值化脚本(剥离逐字原文字段)
公文语料/ 四份 DNA 文档 + _meta 数值统计(无逐字原文)
党建语料/ 三份 DNA 文档(含当代党建话语词表)+ _meta 数值统计
示例/ 22 篇合成范文 + 返工审计
操作清单式速览
-
判断文体族,千字级零一级标题走党建族,其余走公文族 -
判断文种,对照参数卡确认句长、顿号密度、三级标题数等参数行 -
读同文种的 DNA 文档和至少一篇范文,不可跳过 -
出骨架,停下等确认 -
按参数写正文,无法核实的数字用 【待补:xx】占位 -
跑 scripts/check_params.py,硬冲突必须改,参数偏离酌情调整 -
涉密内容与对外口径须经本单位核稿人终审 -
商业使用需联系作者获取单独授权,非商业用途适用 PolyForm Noncommercial 1.0.0
FAQ
「这个 Skill 能写通知、请示、批复、函吗?」
不能。有固定模板的法定公文不在覆盖范围内,因为这类文体的正文是固定结构,不需要通过量化蒸馏来统计风格。
「正文里的 【待补:xx】 是没写完吗?」
不是。那是该填本地数字的地方,刻意留的坑。语料统计发现 60%-72% 的真实公文完全不用百分比,不掌握真实数据时靠逻辑深度撑起文章是可行的,所以遇到无法核实的数字一律占位、绝不编造。
「自检脚本会把参数偏离判为错误吗?」
不会。脚本只把文种识别错误这类硬冲突判为错误,其余参数偏离仅作提示。真实优秀作品个体差异极大,好文章不整齐,整齐的往往是平庸作品。
「“一是二是”用多少次合适?」
没有统一标准。调研报告的“一是二是”从 0 到 20 次都有,四分之一的作品完全不用。它在工作意见与调研报告之间差 6 倍,是文种指纹之一,但具体用量取决于内容需要。
「党建经验材料和公文族的区别在哪?」
判族只看篇幅和一级标题两项。党建族篇幅约 1,120 字,零一级标题,靠段首动宾提领句和群众原话推进。公文族篇幅中位 2,500-3,700 字,有 2-5 个一级标题。千字材料一旦加上多个一级标题,就变成了压缩版公文,参数全乱。
「为什么语料不随 Skill 分发?」
版权原因。语料因版权全部移除、不随 Skill 分发,频率数值第三方无法直接复核,这是已知的实质缺陷。替代物是 DNA 文档和合成范文。
「合成范文能直接拿来用吗?」
只能借结构和节奏,不能借内容。合成范文是语料原文字段的替代物,用于展示文种结构和语言节奏,内容需替换为实际材料。
「这个 Skill 能保证公文内容正确吗?」
不能。参数解决“像不像”,管不了“对不对”。内容是否站得住、政治表述是否得体,参数无法验收,涉密与对外口径须经本单位核稿人终审。
「可以在商业项目里使用吗?」
需要单独书面许可。未经许可不得售卖本项目,不得用于付费写作或咨询服务,不得集成到商业产品或商业服务中。个人研究、学习、实验、教育机构、公共研究机构和政府机构等用途属于许可允许的非商业用途。

