行业与岗位:政务 · 公共 —— 县级生态环境执法(行政处罚办案)
用到的产品能力:自建 Skill(eco-enforcement,已提交技能市场审核)+ 本地文件读写 前两篇分别写了这个 Skill 的「判断层」和「知识层」。这一篇写产出层:文书是怎么出来的,以及为什么它必须是一条流水线,而不是一句提示词。
执法文书是那种「看起来最像模板、实际最不能套模板」的东西。
第一个麻烦:一份文书要同时对准四件事。
不是「引一条法条」那么简单。一份《行政处罚决定书》里至少要对准:违反哪一条、罚哪一条、谁有权罚、怎么救济。四处里错一处,整份文书就是废的——不是写得不漂亮,是被撤销的理由已经写进去了。
第二个麻烦:条款体系整体换号。
2026 年 8 月 15 日《生态环境法典》施行,10 部单行法律同时废止。这件事对文书的影响比想象中直接——我过去那套文书模板里,条号是硬编码的。写惯了的「大气污染防治法第 99 条」这类引用,在那一天之后全部变成了错误引用。
也就是说:不是知识过时了,是模板这个载体本身过时了。
第三个麻烦,也是最容易被低估的:文书有两种错,后果完全不对称。
一种是写错——引错了条、救济途径写错了机关、缴款期限写成 30 天。
另一种是写虚——事实没有证据锚点,把「推测」当成「已认定事实」写进去。
写错还有机会被复核挑出来。写虚最难发现,因为它读起来最顺。一句「造成扬尘污染,影响周边环境」放在事实栏里毫无违和感,但它背后如果没有监测报告、没有认定依据,那么这份文书的说理链是断的——而这条断裂会一路传导到裁量环节,因为裁量是建立在「已认定事实」上的。
还有一种最隐蔽的变体:把「还没确认」当成「已经确认」。
模板里留的【待填】占位符,如果不显眼、如果没有一道工序专门去清它,它就会安静地跟着文书一起出门。
这一篇要解决的就是这三件事:条号不许硬编码、事实必须有锚点、未确认项不许出门。
全部以本地文件形式放在工作目录里,由 WorkBuddy 直接读写。
我最后的结构是这样——不是设计出来的,是被两次返工逼出来的:

层 | 载体 | 回答什么问题 |
|---|---|---|
① 骨架层 | 六类文书的固定要素与顺序( | 这类文书长什么样? |
② 事实层 | 事实—证据锚点规则 + 补证清单机制 | 这句话凭什么写? |
③ 自检层 | 出具前 9 项核验(缺一项不出文书) | 这份文书发出去会不会被撤? |
顺序不能反。先让模型把话说漂亮,再回头找证据——这是文书类任务里返工最狠的做法。原因很简单:语言能力会掩盖事实缺口。写得越流畅,你越不会去问「这句的依据在哪」。
这一层最要紧的一条改动,是把模板里的硬编码条号全部拿掉,换成两种写法:
为什么这么改:硬编码的条号会随着法律更替整体失准,而「义务内容 + 对应关系」不会。
法典换号那天,我只要重做一次对照表,六类文书的骨架全部自动跟上。如果是写死的条号,那就是六类 × 每类十几个位置,手工改一遍,改完还不敢保证没漏。
这一层只有一条规则,但它决定了整套东西能不能用:
文书里的每一句事实,后面必须挂证据编号;没有证据的,不写。
这不是美化问题,是证明力问题。看一下同一句话的两种写法:

左边那种写法,问题不在于「800 吨」这个数字——而在于它没有出处。一旦它进了文书,它就以「已认定事实」的身份进入裁量环节:从轻减轻要不要给、罚款定在哪一档,全部建立在这个数字上。
右边的写法把证据挂在句尾,同时把三项缺失信息明确挂起来,而不是「合理推测」补上:
【待填】堆场实测面积
【待填】无组织排放监测报告编号
【待填】两年内违法记录查询结果这三项就是补证清单。它的作用是让「不知道」变成一条待办,而不是变成一个听起来合理的数字。
出具前的核验固定 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 项里还有一条专门的检查:责令改正决定书有没有写明「拒不改正的法律后果」。法典设了二十余种「拒不改正」的加后果(按日连续处罚、停产整治、停业关闭、移送拘留……),文书中不写明,后续的加罚就缺依据。
写进技能里的输出约定是:先出 Markdown 草稿供人工核对,确认后才落 .docx。
不是为了好看。是因为草稿态和成品态必须分得清——成品一旦生成,人就会不自觉地把它当成「已经核对过的东西」。把【待填】和证据编号留在草稿里,让人在草稿阶段就必须做一次确认动作,这是低成本、高收益的一道闸。
其中第 5 步是这套东西和「用 AI 写文书」最大的区别:它不是把文本生成出来就结束,而是生成完之后还要主动证明这份文本站得住。
为了写这篇,我走了一遍完整流程。案例脱敏如下:
某建材有限公司,厂区东侧露天堆场堆存易扬尘物料(砂土)约 800 吨,未采取密闭贮存措施,未设置不低于堆放物高度的严密围挡,部分区域未采取有效覆盖措施。行为发生于 2026 年 9 月 18 日——在法典施行之后,直接适用法典,不走从旧兼从轻。 拟适用:法典第 1130 条第②③项(易扬尘物料未密闭贮存/不能密闭的未设围挡或未有效覆盖),责令改正,罚款幅度 1 万–10 万元,拒不改正可责令停工整治或停业整治。
生成过程正常,骨架直接可用。但自检层拦下了 4 处:

① 条款对应关系缺一环。第 1130 条第②③项是对的,但它对应的义务条款在我的对照表里还是空的——上一篇文章里那张「违反条款 ↔ 处罚条款对照表」,大气分节当时只补到第 1120 条及少数几条,扬尘类的义务条款映射没补全。→ 挂账核实,不许凭推理补一个看起来像的条号。
② 责令改正期限空着。期限是文书里最容易漏的要素,而且写法有讲究:写「立即改正」和写具体日期,对后续按日连续处罚的起算点影响完全不同(法典第 1060 条:自责令改正之次日起按日计罚)。
③ 复议机关与管辖法院空着。这一处还牵着一个常错点:本案办案主体是市局的分局。按法典第 53 条,设区的市级生态环境主管部门设立的派出机构可以以自己的名义实施行政处罚——那么复议被申请人和诉讼被告就是该分局本身,不是市局。这里写错,程序上直接出问题。
④ 证据编号未取。现场检查(勘察)笔录编号、监测报告编号先留位,不编造。编号是事实的「钩子」,缺了它事实就挂不住。
这 4 处里没有一处是「写错了」,全部是「还没确认」——而它们恰恰是文书被撤销时最常引用的理由。
这套产出层的构成:
六类文书的骨架加起来不到 8 KB 纯文本——真正起作用的是那几条硬规则,而不是模板本身。
这是最贵的一次返工。教训写下来就一句话:模板里不要写「事实」,要写「结构」。
条号会变、名称会变、罚款幅度会变,但「义务内容 → 处罚条款」这个对应关系的结构不会变。把条号做成可替换的变量,法律更替时只改一张表,不改六份模板。
第一版跑出来的东西读起来非常像,行文、语气、结构都对。问题是我拿它去对照证据材料,发现有一句「造成扬尘污染,影响周边环境」——这句在材料里没有出处,是我(模型)基于案情顺理成章补上去的。
它读起来最顺,也最危险。
改法不是让模型「不要编」,而是改规则:每句事实后强制挂证据编号,无依据项写【待填】。一个必须交代出处的格式,比一句「请勿编造」的提醒有效得多。
最初的草稿里,缺失项就是普通的方括号,混在正文里完全看不出。生成完我扫了一眼,感觉「挺完整的」。
后来改了两件事:统一用【待填】这个固定字符串,并且自检层强制统计它出现的次数。次数不为零,就不许落成品。
复议机关写哪一级政府、管辖法院写哪一级、复议 60 日诉讼 6 个月,再加上「复议和诉讼不停止执行」「逾期不履行依法申请强制执行」——这几句话几乎每份文书里都有,也几乎是最容易照着上一份抄错的地方。
再叠加派出机构的问题(第 53 条),这一段就成了文书里信息密度最高、最容易出错、又最不显眼的一段。现在它是自检第 2 项和第 8 项的双重检查点。
第 ① 处——扬尘类义务条款空缺——不是文书层的问题,是知识层的漏洞。
这其实是好事:三层打通之后,产出环节会变成知识层的压力测试。你在写字的时候才会发现哪个条号找不到、哪个对应关系是空的。
所以我没有当场补一个「看起来对」的条号,而是把它挂进待核清单。在一个引错条号就等于文书被撤的领域,留白的成本远低于猜错的成本。
我给自己定了五条,每次出稿前过一遍:
第 3 条最容易被违反。人天生不愿意留白,看到【待填】总想顺手补一个「大致合理」的值。但在这个领域,一个编得很像的段号,比一句「待核对」危险得多。
如果你也要把某个领域的文书做成流水线,这几条是我踩完坑总结的:
最后一点体会:这套东西真正有价值的不是「生成得快」。
是把文书从「写得出来」变成了「说得清楚为什么这么写」。
条号有出处、事实有锚点、未确认项有自己的位置——一份文书站得住,靠的从来不是文笔,是这三样东西。
前面讲的是它为什么这么设计。如果你也想给自己的工作搭一个,下面是这个 Skill 的规则文件本体——脱敏后的完整版,去掉的只有我自己的文件路径和案卷信息,规则一条没删。
---
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 删除。