首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >模板能给你骨架,但事实一个字都不能编:我把六类环境执法文书做成了「骨架 / 事实 / 自检」三层流水线

模板能给你骨架,但事实一个字都不能编:我把六类环境执法文书做成了「骨架 / 事实 / 自检」三层流水线

原创
作者头像
用户12785816
修改于 2026-09-25 14:48:26
修改于 2026-09-25 14:48:26
1230
举报

行业与岗位:政务 · 公共 —— 县级生态环境执法(行政处罚办案)

用到的产品能力:自建 Skill(eco-enforcement,已提交技能市场审核)+ 本地文件读写 前两篇分别写了这个 Skill 的「判断层」和「知识层」。这一篇写产出层:文书是怎么出来的,以及为什么它必须是一条流水线,而不是一句提示词。


一、先说清楚要解决什么问题

执法文书是那种「看起来最像模板、实际最不能套模板」的东西。

第一个麻烦:一份文书要同时对准四件事。

不是「引一条法条」那么简单。一份《行政处罚决定书》里至少要对准:违反哪一条、罚哪一条、谁有权罚、怎么救济。四处里错一处,整份文书就是废的——不是写得不漂亮,是被撤销的理由已经写进去了。

第二个麻烦:条款体系整体换号。

2026 年 8 月 15 日《生态环境法典》施行,10 部单行法律同时废止。这件事对文书的影响比想象中直接——我过去那套文书模板里,条号是硬编码的。写惯了的「大气污染防治法第 99 条」这类引用,在那一天之后全部变成了错误引用。

也就是说:不是知识过时了,是模板这个载体本身过时了。

第三个麻烦,也是最容易被低估的:文书有两种错,后果完全不对称。

一种是写错——引错了条、救济途径写错了机关、缴款期限写成 30 天。

另一种是写虚——事实没有证据锚点,把「推测」当成「已认定事实」写进去。

写错还有机会被复核挑出来。写虚最难发现,因为它读起来最顺。一句「造成扬尘污染,影响周边环境」放在事实栏里毫无违和感,但它背后如果没有监测报告、没有认定依据,那么这份文书的说理链是断的——而这条断裂会一路传导到裁量环节,因为裁量是建立在「已认定事实」上的。

还有一种最隐蔽的变体:把「还没确认」当成「已经确认」。

模板里留的【待填】占位符,如果不显眼、如果没有一道工序专门去清它,它就会安静地跟着文书一起出门。

这一篇要解决的就是这三件事:条号不许硬编码、事实必须有锚点、未确认项不许出门。


二、输入材料

  • 现行法基准:《中华人民共和国生态环境法典》(2026-08-15 施行),第五编第二章法律责任分则(第 1085–1238 条,共 154 条、14 个分节)。
  • 程序法基准:《生态环境行政处罚办法》(部令第 30 号)、《行政处罚法》。
  • 裁量文件:《浙江省生态环境行政处罚裁量权规则》(浙环发〔2026〕14 号)、《长三角区域生态环境行政处罚裁量规则》2026 版。
  • 我自己的历史文书:现场检查(勘察)笔录、调查询问笔录、责令改正违法行为决定书、行政处罚事先(听证)告知书、行政处罚决定书、案件调查终结报告,六类,共几十份旧案卷。
  • 配套的条款速查与对照表:违反条款 ↔ 处罚条款对照表、执法主体分工表(这两份是前一篇里建的,文书层直接调用)。

全部以本地文件形式放在工作目录里,由 WorkBuddy 直接读写。


三、WorkBuddy 配置

3.1 把「一份文书」拆成三层,各管一件事

我最后的结构是这样——不是设计出来的,是被两次返工逼出来的:

图 1 · 执法文书流水线的三层:骨架 / 事实 / 自检
图 1 · 执法文书流水线的三层:骨架 / 事实 / 自检

层

载体

回答什么问题

① 骨架层

六类文书的固定要素与顺序(文书模板.md)

这类文书长什么样?

② 事实层

事实—证据锚点规则 + 补证清单机制

这句话凭什么写?

③ 自检层

出具前 9 项核验(缺一项不出文书)

这份文书发出去会不会被撤?

顺序不能反。先让模型把话说漂亮,再回头找证据——这是文书类任务里返工最狠的做法。原因很简单:语言能力会掩盖事实缺口。写得越流畅,你越不会去问「这句的依据在哪」。

3.2 骨架层:条号一律不许写死

这一层最要紧的一条改动,是把模板里的硬编码条号全部拿掉,换成两种写法:

  • 义务类:写义务内容,条号留占位——「依据《中华人民共和国生态环境法典》第【待核】条(排放口设置义务)」;
  • 处罚类:写条号 + 项号 + 义务条款 → 处罚条款的对应关系,比如「第 1130 条第②③项(易扬尘物料未密闭贮存 / 未设围挡未覆盖)」。

为什么这么改:硬编码的条号会随着法律更替整体失准,而「义务内容 + 对应关系」不会。

法典换号那天,我只要重做一次对照表,六类文书的骨架全部自动跟上。如果是写死的条号,那就是六类 × 每类十几个位置,手工改一遍,改完还不敢保证没漏。

3.3 事实层:每句事实后面挂一个「钩子」

这一层只有一条规则,但它决定了整套东西能不能用:

文书里的每一句事实,后面必须挂证据编号;没有证据的,不写。

这不是美化问题,是证明力问题。看一下同一句话的两种写法:

图 2 · 同一句话,两种写法:差在「凭什么写」
图 2 · 同一句话,两种写法:差在「凭什么写」

左边那种写法,问题不在于「800 吨」这个数字——而在于它没有出处。一旦它进了文书,它就以「已认定事实」的身份进入裁量环节:从轻减轻要不要给、罚款定在哪一档,全部建立在这个数字上。

右边的写法把证据挂在句尾,同时把三项缺失信息明确挂起来,而不是「合理推测」补上:

代码语言:plaintext
复制
【待填】堆场实测面积
【待填】无组织排放监测报告编号
【待填】两年内违法记录查询结果

这三项就是补证清单。它的作用是让「不知道」变成一条待办,而不是变成一个听起来合理的数字。

3.4 自检层:把「未确认」从成品里赶出去

出具前的核验固定 9 项,我把它写进了 SKILL.md 的工作流,不跑完不出文书:

序号

核验项

这一项在防什么

1

条款有效性

是否误引已废止的单行法;违反条款与处罚条款是否一一对应

2

执法主体与管辖

本机关是否为该条的法定主体;派出机构办案是否符合法典第 53 条

3

追责时效

5 年还是 2 年、起算点是行为发生之日还是终了之日

4

立案时限

15 日内决定,特殊情况可延长 15 日

5

证据链闭合

主体身份 → 违法事实 → 危害后果,每一环有没有证据

6

程序节点

调查终结 → 法制审核 → 事先告知 → 听证 → 决定 → 送达回证

7

法定时限

陈述申辩 5 日/听证申请 5 日、组织 20 日/缴款 15 日/复议 60 日、诉讼 6 个月

8

文书要素

编号、印章、救济途径、逾期每日 3% 加处罚款是否写明

9

裁量载明

裁量依据与结果是否在告知书、决定书里写明

第 8 项里还有一条专门的检查:责令改正决定书有没有写明「拒不改正的法律后果」。法典设了二十余种「拒不改正」的加后果(按日连续处罚、停产整治、停业关闭、移送拘留……),文书中不写明,后续的加罚就缺依据。

3.5 输出格式:先草稿,后成品

写进技能里的输出约定是:先出 Markdown 草稿供人工核对,确认后才落 .docx。

不是为了好看。是因为草稿态和成品态必须分得清——成品一旦生成,人就会不自觉地把它当成「已经核对过的东西」。把【待填】和证据编号留在草稿里,让人在草稿阶段就必须做一次确认动作,这是低成本、高收益的一道闸。


四、操作步骤

  1. 在 WorkBuddy 里新建任务,把工作目录指向本地案卷/法规文件夹,技能自动生效。
  2. 先说清案件要素:当事人、行为时间(决定适用法典还是从旧兼从轻)、执法主体、行为描述、证据材料清单。
  3. 出骨架:由模型按案件类型选定文书种类,套出固定要素与顺序,条号保持占位。
  4. 填事实:只允许从材料里搬;每句事实后挂证据编号;缺失项写成【待填】并汇总进补证清单。
  5. 跑自检:9 项逐条核验,输出问题表(问题 / 风险 / 补正建议)。有未确认项 → 回去核,不许跳。
  6. 落成品:核对通过后再转 .docx,编文号、盖章、走签发。

其中第 5 步是这套东西和「用 AI 写文书」最大的区别:它不是把文本生成出来就结束,而是生成完之后还要主动证明这份文本站得住。


五、实际跑一遍:一个脱敏案例

为了写这篇,我走了一遍完整流程。案例脱敏如下:

某建材有限公司,厂区东侧露天堆场堆存易扬尘物料(砂土)约 800 吨,未采取密闭贮存措施,未设置不低于堆放物高度的严密围挡,部分区域未采取有效覆盖措施。行为发生于 2026 年 9 月 18 日——在法典施行之后,直接适用法典,不走从旧兼从轻。 拟适用:法典第 1130 条第②③项(易扬尘物料未密闭贮存/不能密闭的未设围挡或未有效覆盖),责令改正,罚款幅度 1 万–10 万元,拒不改正可责令停工整治或停业整治。

生成过程正常,骨架直接可用。但自检层拦下了 4 处:

图 3 · 实跑一次:责令改正决定书草稿 + 自检拦下的 4 处
图 3 · 实跑一次:责令改正决定书草稿 + 自检拦下的 4 处

① 条款对应关系缺一环。第 1130 条第②③项是对的,但它对应的义务条款在我的对照表里还是空的——上一篇文章里那张「违反条款 ↔ 处罚条款对照表」,大气分节当时只补到第 1120 条及少数几条,扬尘类的义务条款映射没补全。→ 挂账核实,不许凭推理补一个看起来像的条号。

② 责令改正期限空着。期限是文书里最容易漏的要素,而且写法有讲究:写「立即改正」和写具体日期,对后续按日连续处罚的起算点影响完全不同(法典第 1060 条:自责令改正之次日起按日计罚)。

③ 复议机关与管辖法院空着。这一处还牵着一个常错点:本案办案主体是市局的分局。按法典第 53 条,设区的市级生态环境主管部门设立的派出机构可以以自己的名义实施行政处罚——那么复议被申请人和诉讼被告就是该分局本身,不是市局。这里写错,程序上直接出问题。

④ 证据编号未取。现场检查(勘察)笔录编号、监测报告编号先留位,不编造。编号是事实的「钩子」,缺了它事实就挂不住。

这 4 处里没有一处是「写错了」,全部是「还没确认」——而它们恰恰是文书被撤销时最常引用的理由。


六、产出物

这套产出层的构成:

  1. 《文书模板》:六类文书的要素清单与骨架(现场检查笔录、询问笔录、责令改正决定书、事先告知书、处罚决定书、调查终结报告)。约 7.7 KB。
  2. 出具前自检清单:9 项核验 + 「责令改正决定书是否载明拒不改正后果」专项。
  3. 补证清单机制:所有【待填】项自动汇总为待办,闭环前不落成品。
  4. 三层流水线的硬规则:写进 SKILL.md 正文,作为模型每次生成文书的强制约束。

六类文书的骨架加起来不到 8 KB 纯文本——真正起作用的是那几条硬规则,而不是模板本身。


七、中途踩的坑

坑一:模板里的条号是硬编码的 → 法典一换号,六类文书全部失准

这是最贵的一次返工。教训写下来就一句话:模板里不要写「事实」,要写「结构」。

条号会变、名称会变、罚款幅度会变,但「义务内容 → 处罚条款」这个对应关系的结构不会变。把条号做成可替换的变量,法律更替时只改一张表,不改六份模板。

坑二:第一版我盯着「写得像不像文书」

第一版跑出来的东西读起来非常像,行文、语气、结构都对。问题是我拿它去对照证据材料,发现有一句「造成扬尘污染,影响周边环境」——这句在材料里没有出处,是我(模型)基于案情顺理成章补上去的。

它读起来最顺,也最危险。

改法不是让模型「不要编」,而是改规则:每句事实后强制挂证据编号,无依据项写【待填】。一个必须交代出处的格式,比一句「请勿编造」的提醒有效得多。

坑三:【待填】太不显眼,差点带着 4 个空洞出门

最初的草稿里,缺失项就是普通的方括号,混在正文里完全看不出。生成完我扫了一眼,感觉「挺完整的」。

后来改了两件事:统一用【待填】这个固定字符串,并且自检层强制统计它出现的次数。次数不为零,就不许落成品。

坑四:救济途径这一段,是模板最容易写错的地方

复议机关写哪一级政府、管辖法院写哪一级、复议 60 日诉讼 6 个月,再加上「复议和诉讼不停止执行」「逾期不履行依法申请强制执行」——这几句话几乎每份文书里都有,也几乎是最容易照着上一份抄错的地方。

再叠加派出机构的问题(第 53 条),这一段就成了文书里信息密度最高、最容易出错、又最不显眼的一段。现在它是自检第 2 项和第 8 项的双重检查点。

坑五:自检层查出来的东西,会反过来打知识层的脸

第 ① 处——扬尘类义务条款空缺——不是文书层的问题,是知识层的漏洞。

这其实是好事:三层打通之后,产出环节会变成知识层的压力测试。你在写字的时候才会发现哪个条号找不到、哪个对应关系是空的。

所以我没有当场补一个「看起来对」的条号,而是把它挂进待核清单。在一个引错条号就等于文书被撤的领域,留白的成本远低于猜错的成本。


八、验收标准:怎么判断一份文书可以出门

我给自己定了五条,每次出稿前过一遍:

  1. 无硬编码旧条号:全文检索不到任何已废止单行法的条号;引用的每一条都是现行条号或明确的占位。
  2. 每句事实可追溯:抽任意一句事实,能立刻说出它的证据编号。
  3. 【待填】零残留:自检统计结果为 0。不为 0 就不落成品。
  4. 三处必对:救济途径、法定期限、逾期后果(每日 3% 加处罚款)——这三处逐字核对,不凭手感。
  5. 9 项自检全过,且问题表里没有「待确认」项。

第 3 条最容易被违反。人天生不愿意留白,看到【待填】总想顺手补一个「大致合理」的值。但在这个领域,一个编得很像的段号,比一句「待核对」危险得多。


九、给同行的可复用做法

如果你也要把某个领域的文书做成流水线,这几条是我踩完坑总结的:

  1. 模板里只放结构,不放事实。条号、期限、机关名称全部做成可替换变量。法律一改,只改一张对照表。
  2. 给事实设一个「必须交代出处」的格式。空泛的「不要编造」几乎没用;强制挂证据编号的格式约束,模型是会遵守的。
  3. 把「不知道」做成待办,而不是做成答案。缺失项统一占位符 + 自检统计次数归零,这两步能挡住绝大部分「合理推测」。
  4. 草稿和成品必须是两种状态。生成 .docx 之前强制做一次人工确认动作,这一步不能省。
  5. 文书里信息密度最高的一段,往往是错得最多的一段。救济途径、法定时限、逾期后果——把它们列成专门的检查点,逐字对。
  6. 自检清单要能反过来发现知识漏洞。产出层挑出来的问题,要能回到知识层补,而不是在文书里就地打补丁。

最后一点体会:这套东西真正有价值的不是「生成得快」。

是把文书从「写得出来」变成了「说得清楚为什么这么写」。

条号有出处、事实有锚点、未确认项有自己的位置——一份文书站得住,靠的从来不是文笔,是这三样东西。

附录:这个 Skill 的 SKILL.md(可复用骨架)

前面讲的是它为什么这么设计。如果你也想给自己的工作搭一个,下面是这个 Skill 的规则文件本体——脱敏后的完整版,去掉的只有我自己的文件路径和案卷信息,规则一条没删。

代码语言:plaintext
复制
---
name: eco-enforcement
description: >-
  生态环境执法办案助手。给定案情要素,按「定性 → 裁量 → 证据 → 文书 → 案卷自检」
  固定路径输出办案分析;所有法条引用必须取自 references/ 或经核对的官方原文,
  不得凭记忆输出。
---

# 生态环境执法办案助手

面向县级生态环境部门的行政处罚办案场景。它要解决的不是「能不能查到法条」,
而是「引用的每一条法条是否现行有效、每一步判断是否有出处」。

## 一、技能包结构

```
eco-enforcement/
├── SKILL.md                  ← 本文件:判断规则(相对稳定)
└── references/
    ├── 条款速查.md            ← 条文索引:分节区间、罚则、条款对照
    ├── 法规库索引.md          ← 效力清单(废止/保留/特别法优先)+ 执法主体分工表
    ├── 办案程序与时限.md      ← 程序节点、追责时效、取证规则、裁量因素
    └── 文书模板.md            ← 六类文书的固定要素与顺序
```

**为什么这么切**:references/ 里的内容是知识,会过期(条号、幅度、时限都在变);
SKILL.md 里的是判断规则,相对稳定。混在一起,每次法规更新都要动整个文件,
改三次就会开始出错。

## 二、硬规则(违反即视为失职)

规则一律写成「违反即失职」,不写「建议这样做」。对模型来说,语气软的建议等于没有。

| # | 规则 |
|---|------|
| 1 | **不得引用已废止的单行法。** 单行法整体废止后,文书中出现其条号即为错误。 |
| 2 | **法条不得凭记忆输出。** 引用必须取自 references/,或联网核对官方原文后引用,并注明核对日期;拿不准就写「需核对现行文本」,不许猜。 |
| 3 | **先确认管辖权与执法主体,再谈定性。** 罚则分散授予多个部门,高频事项常不归本机关;主体用错,决定可被撤销。 |
| 4 | **追责时效先算,别漏。** 区分长短两档的判据是「是否造成危害后果」;有连续或继续状态的,从行为终了之日起算。 |
| 5 | **裁量不出数字结论。** 只给裁量因素、档次建议与理由;金额必须按裁量基准表测算并复核。 |
| 6 | **文书不编造事实。** 当事人信息、监测数据、证据内容一律来自材料;缺失项写「【待填】」,并附需补证据清单。 |
| 7 | **过错推定,但必须给自证机会。** 办案时不必先证明主观过错,但须如实记录当事人的申辩与自证材料。 |
| 8 | **责令改正决定书必须载明拒不改正的法律后果**,否则后续加罚没有依据。 |
| 9 | **条号一律不硬编码。** 模板里只写「义务内容 + 条号占位」,不写死条号;法律更替时只改一张对照表,不改六份模板。 |
| 10 | **每句事实必须挂证据编号。** 没有证据编号的句子不写;尤其禁止「成因分析式」推断句——「造成扬尘污染,影响周边环境」这类句子读起来最顺,说理链却是断的。 |
| 11 | **【待填】零残留才能出成品。** 自检时强制统计「【待填】」出现次数,不为 0 不落 .docx。 |

## 三、工作流(六步,顺序固定)

**第 1 步 · 意图识别**
判断用户要的是「快速判断」还是「完整文书」。两者输出的粒度不同,不要混。
要素不全时,不要默认补齐,先列缺项。

**第 2 步 · 要素提取**
从材料里抽七类要素:当事人、行为时间、执法主体、违法事实、
污染物与适用标准、已取得证据、整改情况与前科。
缺项逐条列出,问清楚再往下走。

**第 3 步 · 定性**
先定执法主体与管辖,再定违法行为条款,再定处罚条款。
存在规范竞合时,列出全部候选路径并比选,写明选择理由与依据。
输出八字段(见 4.1),缺一不可。

**第 4 步 · 裁量**
按裁量基准逐项列明裁量因素(违法情节、危害后果、整改情况、主观过错、前科),
给出档次建议与理由。**不出金额数字结论**,金额由办案人按基准表测算。

**第 5 步 · 文书**
按 references/文书模板.md 的固定要素与顺序落稿。
先出 Markdown 草稿供人工核对,人工确认后才转 .docx。
草稿态与成品态必须分得清——成品一旦生成,人就会不自觉地把它当成「已经核对过的东西」。

**第 6 步 · 案卷自检**
跑 4.2 的 9 项清单,输出问题表(问题 / 风险 / 补正建议)。
有未确认项的,退回上一步,不许跳。

## 四、输出格式

### 4.1 定性输出(八字段,缺一不可)

- **【违法/义务条款】** 违反的义务条款,注明条号与项号
- **【适用判断】** 为什么适用这一条(要件逐项对应)
- **【追责时效】** 几档、起算日、是否已过
- **【处罚条款】** 对应的罚则条号与项号
- **【处罚幅度】** 幅度区间与档次依据
- **【并处与移送】** 是否并处、是否移送公安
- **【择一重】** 竞合时的比选过程与结论
- **【涉刑线索】** 是否触及刑事门槛、门槛是什么

固定格式的好处是不会漏。靠脑子记,最容易漏的恰恰是「时效」和「移送」这两项——
而这两项是复议撤案和事后追责的高发点。

### 4.2 案卷自检(9 项,缺一项不出文书)

| # | 核验项 | 这一项在防什么 |
|---|--------|----------------|
| 1 | 条款有效性 | 误引已废止的单行法;违反条款与处罚条款不对应 |
| 2 | 执法主体与管辖 | 本机关是否为该条的法定主体;派出机构办案是否符合规定 |
| 3 | 追责时效 | 档位判断错、起算点算错 |
| 4 | 立案时限 | 超期立案 |
| 5 | 证据链闭合 | 主体身份 → 违法事实 → 危害后果,有的环节没证据 |
| 6 | 程序节点 | 调查终结 → 法制审核 → 事先告知 → 听证 → 决定 → 送达,缺节点 |
| 7 | 法定时限 | 陈述申辩、听证申请与组织、缴款、复议与诉讼期限写错 |
| 8 | 文书要素 | 编号、印章、救济途径、逾期加处罚款条款是否写明 |
| 9 | 裁量载明 | 裁量依据与结果是否在告知书、决定书里体现 |

第 8 项下另设一条专项检查:**责令改正决定书有没有写明「拒不改正的法律后果」**。

### 4.3 缺失信息

一律写成「【待填】」,并汇总进补证清单,每项写明「缺了会有什么后果」。
**不许用「合理推测」补上。** 一个编得很像的数字,比一句「待核对」危险得多。

## 五、更新规程

法条类知识一定会过期,这不是意外。

- **效力先行**:先建「哪些还有效」的清单,再收内容。有过大规模立法更替的领域,这一步不能省。
- **逐项抄录**:清单式条文(「有下列九种情形之一的……」)必须逐项全录,不许概括。一旦概括,取证时就没法逐项比对。
- **核对留痕**:每轮核对追加一段记录(日期 / 范围 / 发现 / 修正)。缺了这段的修订,视为未完成。
- **敢于挂账**:维护一份「待核对清单」,明确列出还没核实的事项。这份清单不是缺陷,是资产——
  它让每一次引用都能被判断「这条核过吗」,而不是让模型去猜一个听起来合理的答案。
- **只认一手原文**:条号、金额、条数这三类信息,只认官方原文;解读文章只能提示「这里可能有内容」,不能作为内容来源。

本文所述为文书生成方法,案例已脱敏,不涉及具体案件与真实单位。法条引用以《中华人民共和国生态环境法典》(2026-08-15 施行)现行文本为准,文中文书编号均为占位示例。

话题:#WorkBuddy #AI办公 #效率工具

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、先说清楚要解决什么问题
  • 二、输入材料
  • 三、WorkBuddy 配置
    • 3.1 把「一份文书」拆成三层,各管一件事
    • 3.2 骨架层:条号一律不许写死
    • 3.3 事实层:每句事实后面挂一个「钩子」
    • 3.4 自检层:把「未确认」从成品里赶出去
    • 3.5 输出格式:先草稿,后成品
  • 四、操作步骤
  • 五、实际跑一遍:一个脱敏案例
  • 六、产出物
  • 七、中途踩的坑
    • 坑一:模板里的条号是硬编码的 → 法典一换号,六类文书全部失准
    • 坑二:第一版我盯着「写得像不像文书」
    • 坑三:【待填】太不显眼,差点带着 4 个空洞出门
    • 坑四:救济途径这一段,是模板最容易写错的地方
    • 坑五:自检层查出来的东西,会反过来打知识层的脸
  • 八、验收标准:怎么判断一份文书可以出门
  • 九、给同行的可复用做法
  • 附录:这个 Skill 的 SKILL.md(可复用骨架)
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档