Personal Blog

轶哥

轶哥的头像

妄图改变世界的全栈程序员。

Article

别把合同审查交给一个AI

目录
  1. 别把合同审查交给一个AI
    1. 先说真实发生过的坑
      1. 坑一:把“找风险”当成“能放行”
      2. 坑二:一个Agent把“提取—判断—修改”都做了
      3. 坑三:法条、规则和版本没做到“硬闸”
    2. 为什么要用多 Agent:不是追求炫技,而是追求可追责
      1. 我们的最小可用分工
    3. 这套链路里,技能(Skill)到底起什么作用
    4. 人工门禁:哪些情况下不能自动通过
    5. 从“先生成报告”改成“先交付证据”
    6. 我自己的一个现实建议
    7. 收口
    8. 相关阅读

别把合同审查交给一个AI

最近一两个月,我看到不少团队在做“合同AI审查”时用的是一个很像话术模板的流程:把合同扔进来,给模型一条很长指令,让它“逐条风险分析”,再拿输出结果去会签。

问题不在模型理解不够,而在于“模型当了万能中间人”。
我见过一次看起来合理的审查结论,最后还是因为版本、付款条款和条款衔接问题卡死:
文本里有“已修订”字样,但系统默认读取的是旧版本;
付款节点写了“验收后”,但合同正文对应的是“里程碑验收前预付款”;
法务要求的授权条款是第三版修订,却沿用了第一版模板。

这种错不是“模型不聪明”。是流程设计里没有把“谁负责什么、什么时候停、怎么回写”说清楚。

先说真实发生过的坑

坑一:把“找风险”当成“能放行”

当时我们拿到的合同里,AI给出的结论通常是“风险较低、建议先行谈判”。这句话很顺耳,但它没告诉我两个关键问题:

  • 哪个条款是高风险?
  • 能不能自动放行,为什么不能?

如果连判断边界都不写,后面很容易把“可疑”当“可通过”。这类项目最后最怕的不是错过某一个点,而是错把一个待确认当成已确认。

坑二:一个Agent把“提取—判断—修改”都做了

我早期也喜欢让一个模型做全程,结果问题很快出现。它会先提取关键条款,再判断是否合规,再给修改建议。

第一遍看起来像“自洽”——因为修改建议就是它自己认同的判断。
第二遍复核的时候就会发现:有些建议和最初提取冲突,尤其在付款、交付和违约条款上最容易出现“自循环修正”。

坑三:法条、规则和版本没做到“硬闸”

合同场景里有些问题很机械,但模型最擅长的是文本生成。比如版本变更顺序、附件生效范围、签署页编号、附件与正文映射。
这些点靠自由输出很容易“写得像样”,却没有执行到位。

我们后来加了一个做法:
只要版本字段不稳定、付款条件含糊、关键附件缺失,就直接阻断,不让任务走到“可签发”分支。
先阻断比后补更省时。

为什么要用多 Agent:不是追求炫技,而是追求可追责

多 Agent 的本质不是让智能体“更多”,而是让职责更清楚。
在合同联审里,最重要的不是“生成了多少条风险”,而是“每条风险能不能从规则、证据、责任人三条线同时复核”。

我们的最小可用分工

Agent 主任务 输入 输出边界
协同Agent 统一任务、版本登记、依赖调度 合同原始包 阶段状态和执行队列
结构提取Agent 条款定位、字段映射 合同文本+附件清单 条款ID、页码、字段值
风险识别Agent 与规则库交叉匹配 结构化字段+规则项 风险等级、问题类型、阻断原因
法条对照Agent 法规、制度、条款冲突复核 风险项+法条规则 合法性说明、异常证据
复核Agent 独立视角复检高风险项 风险项+证据图 是否允许自动放行、人工建议
报告Agent 输出与复盘 全链路回执 审查清单、复核意见、回写建议

这里我特意把“报告Agent”放到最后。
它的职责是“收敛”,不是“判断一切”。
判断要在前面的角色里完成,且每一步都要带证据与边界。

这套链路里,技能(Skill)到底起什么作用

很多人以为 Skill 是“提示词集合”。
我这边更接近“审查制度的可执行化”:

  • 规则是什么:比如付款条件必须显式绑定发票/验收节点;
  • 哪些输入无效就阻断:版本号缺失、页码无法定位、附件与正文不一致;
  • 复核后续怎么回写:每次人工改动都要回到规则仓库,作为下一次任务默认检查项。

这部分最关键的是“可学习性”。
第一次人工纠错不是只改这份合同,而是让 Skill 记下:以后再遇到同类条件,先按这个边界处理。

在 DesireCore 里,这种记录和回滚、迁移可以落到 AgentFS 里,避免每次都从头写规则。

多Agent审查协同工作流示意图

人工门禁:哪些情况下不能自动通过

这套方案里我们定义了三个放行层级:

  1. 自动通过:低风险、证据完整、无关键附件缺失。
  2. 人工确认:风险中等或高、且证据链完整但有解释空间。
  3. 强制阻断:版本冲突、付款条件不闭环、条款逻辑不一致、关键字段缺失。

这三层是写在执行闸门里的,不是写在“事后总结”里的。
因为后者太晚,前者才是真正能止血的地方。

我后来加了一个小规则:
只要高风险项未有人确认,报告结论永远不能从“待放行”直接改成“可签发”。
这条规则在多次复盘里很有用,尤其在节奏很快的项目里,大家容易把“看起来可以过”当成“已经过”。

从“先生成报告”改成“先交付证据”

最容易忽略的一点是:审查输出不是文字文件,而是一个可复查的任务流。
所以我现在更偏向让每条结果包含:

  • 对应条款号/页码
  • 决策依据(规则来源、法条映射、历史样本)
  • 风险等级和门禁动作(待确认/人工批准/可放行)
  • 回写动作(由谁补证据、补什么)

这样一个合同审查回路,做完以后可以很快复跑同类案例,看的是重复效率,不是“故事写得是否顺”。
重复效率提升了,才说明这条链路真的落地了。

我自己的一个现实建议

和很多人一样,最初我也想把这套改成一条“大模型一次性闭环”。
后来我反而做成“先小规模闭环再扩展”:

  • 先挑一类合同(例如服务类);
  • 固定一版 Skill;
  • 跑完整审查链路:版本、条款、付款、违约、附件;
  • 把每次人工纠偏回写到 Skill;
  • 再换第二类合同复测;
  • 稳住了再加第三类。

这比先建大模型大剧本更容易推进。
最怕的是一上来就追求全覆盖,结果规则不稳定、证据不完整,最后再被同一个问题拖住几个月。

收口

现在回头看,真正有用的不是“AI 能不能改得更像人”,而是“AI 做完以后能不能让人更快把错误拦下来”。
如果你的团队准备把合同审查做成多 Agent 落地,不要先问模型能力,而要先回答三个问题:

  1. 哪一类问题必须人审,哪些可以自动放行?
  2. 每条风险的证据链、规则链、责任链是否写得清?
  3. 人工纠偏怎么回写,下一次怎么复用?

只要这三件事先定好,Skill 才不只是“提示词集合”,而是你们审查体系里最硬的那层基准。


相关阅读

打赏
交流区

暂无内容

尚未登陆
发布
  上一篇
下一篇 (多Agent系统实现工程图解析及校核)