打官司最怕的不是写文书,是系列文书之间自相矛盾。
一个二审案件,往往要同时产出上诉状、二审补充意见、调查取证申请书、责令对方提交证据申请书、庭前证据交换申请书……这些文件共享同一套事实基础,但凡有一处金额、日期、法条编号对不上,对方律师一秒钟就能抓住,当庭反问你"到底以哪份为准"。
手工维护的代价是:改一处,要翻五份文件。用 WorkBuddy 之前我试过直接让 AI 一份一份生成,结果更糟——每份单独生成,AI 每次都在"重新理解"案情,越写越飘。
后来我换了个思路,用 WorkBuddy 搭了一条生产线,核心就一句话:把"事实"和"表达"彻底分离,事实只维护一份,表达由固定规则生成。
案件档案(唯一事实源)
├── 结构化抽取 → CSV 审校表(逐条批注)
├── Skill 固化写作风格(硬规则,不是每次现说)
├── 批量生成系列文书(共享同一事实源)
└── 独立脚本交叉核验(不信 AI 自报结果)关键点在于:案件档案是唯一事实源,所有文书都从它派生。改事实只改档案,然后重新生成,五份文件自动保持一致。
这是整条线的地基。我在工作区根目录放一个 案件档案.md,结构如下(模板可直接复制):
# 案件档案
## 一、当事人
| 角色 | 姓名/名称 | 代理人 |
|---|---|---|
| 上诉人 | 【姓名】 | 【姓名】 |
| 被上诉人 | 【公司名】 | 【姓名】 |
## 二、程序信息
- 二审案号:【(2026)某民终某号】
- 一审案号:【(2026)某民初某号】
- 审理法院 / 审判员:【法院名称】/【姓名】
## 三、时间线(只记有证据支撑的事实)
| 日期 | 事件 | 证据编号 |
|---|---|---|
| 【日期】 | 【事件】 | 证X |
## 四、争议金额
- 计算基数:【金额】
- 计算方式:【公式】
- 主张期间:【起止】
## 五、证据清单
| 编号 | 名称 | 来源 | 证明目的 | 状态 |
|---|---|---|---|---|
| 证1 | 【名称】 | 【来源】 | 【目的】 | 已取得/待调取 |
## 六、待查事项与下一步行动踩坑1:时间线里我强制要求"只记有证据支撑的事实",每条必须挂证据编号。这条约束看着啰嗦,但它是后面所有文书质量的保险丝——AI 一旦开始脑补事实,文书就废了。
文书写完之后,我要求 AI 把核心指控/主张导出成 CSV,而不是直接在 Word 里改。原因是:CSV 可以逐条批注、排序、筛选、去重,天然适合做审校。
表头示例:
序号,争议事项,事实依据,证据编号,法律依据,对方可能反驳,我方应对,状态
1,【事项】,【事实】,证3,《xxx法》第x条(需核实),【反驳】,【应对】,待补强踩坑2:一开始我让 AI 直接在文档里改,改了三轮之后发现它把上一轮已经删掉的论点又写了回来。换成 CSV 之后,"已删除"就是一行状态标记,不会再被复活。
这是效率提升最大的一步。以前每次生成文书我都要重新交代一遍"不要用恳请""统一称对方为被上诉人""进攻性要强",现在全部写进 Skill,一次配置,永久生效。
创建方式:在 .workbuddy/skills/ 下新建一个 SKILL.md,核心是规则要硬、要可执行,不要写"语言要专业"这种废话。摘录几我实际在用的规则:
## 写作规则(违反即为硬伤)
1. 称谓统一:二审程序一律称"被上诉人",禁止使用"对方""被告"。
2. 禁止示弱措辞:禁用"恳请""望予以采纳""万般无奈"等,
改为主动要求式:"应予支持""特申请……"。
3. 进攻性边界(重要):进攻性 ≠ 编造。任何法律主张必须满足
"事实→法条→法律逻辑→结论"四段式,缺一不可。
4. 无据推断强制标注:凡属推测,必须标【假设】并经确认后方可使用,
否则直接删除。
5. 法条引用规范:写全称+编号,记不准的标"需核实",严禁编造。
6. 不利点处理:不主动展开,但若可能导致满盘皆输(时效已过、
证据灭失等),必须单列一条提示。第3条是我踩过坑之后加的。早期我只写"进攻性强",结果 AI 给我编了一段根本不存在的司法解释,差点酿成大祸。进攻性必须建立在真实性之上,否则是自杀。
这条是我认为最值得分享的经验。
我让 AI 检查一批文档的格式合规性(禁用词、引号类型、字数下限),它报告"全部通过"。我不放心,自己写了个 Python 脚本跑了一遍——检出 116 处违规。
从那以后,凡是"批量检查"类任务,我一律要求:AI 报告 + 独立脚本复核,两边对不上就以脚本为准。
示例脚本(检查文档是否混用了弯引号):
import sys, pathlib
CURVED = "“”‘’"
def check(path):
text = pathlib.Path(path).read_text(encoding="utf-8")
hits = []
for i, line in enumerate(text.splitlines(), 1):
for j, ch in enumerate(line, 1):
if ch in CURVED:
hits.append((i, j, ch))
return hits
if __name__ == "__main__":
total = 0
for p in sys.argv[1:]:
h = check(p)
total += len(h)
print(f"{p}: {len(h)} 处弯引号")
for i, j, ch in h[:5]:
print(f" 第{i}行第{j}列 -> {ch!r}")
print(f"合计 {total} 处")结论:AI 擅长生成,不擅长自查。 把"生成"和"检查"拆成两个独立环节,质量立刻上一个台阶。
固定四段式迭代,每轮只做一件事:
踩坑3:第3步必须强调"不许改写既有条目"。否则 AI 会把你已经认可的段落重新润色一遍,等于白审。
顺带记录一下这套流程的积分账(不同时期会有浮动,仅供参考):
任务类型 | 大致消耗 |
|---|---|
轻量问答 | 10-30 |
单份文书写稿 | 50-100 |
批量文件处理 | 100 左右 |
深度调研报告 | 300-800(最烧) |
省钱三条:
这套流程适合系列化、事实共享、需要反复迭代的文档生产,比如诉讼文书、投标材料、系列报告。
不适合:一次性的创意写作、需要临场判断的谈判策略。AI 给的是结构化和一致性,判断力还得是人。
另外必须提醒:AI 产出的法律文书务必由执业律师逐字复核,尤其是法条引用和时效计算,这是底线。
三个最值钱的收获:
如果你也在用 WorkBuddy 处理系列化文档,欢迎评论区交流,我这边还有几个场景(批量证据编号、庭审模拟对练)在打磨,有进展再发。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。