合同智能审查 Skill(Contract Review 脱敏封装版)
把"合同类型识别 -> 条款抽取 -> 与标准模板比对 -> 风险条款识别 -> 立场评分 + 法律依据追溯"
封装成可复用的规则引擎。本 skill 不携带任何真实合同、真实主体名、真实行号与用户私人信息;
运行产物默认脱敏,仅规则库中的 learned_rules 沉淀了通用法律风险起草套路(触发词均为法律领域通用表述)。
能力边界
- AI 含量在「语义理解 + 风险判断」,不止字段抽取:硬规则可程序化(数值阈值/法条),软规则走五标准框架,learned_rules 是越审越聪明的案例回流资产层。
- 立场感知:甲方 / 乙方 / 中立三种立场,每条规则显式声明
deduction{甲/乙},评分 = 100 - sum扣分(中立不评分)。 - 法律依据追溯:每条发现带「条款码 + 命中行 + 搜索关键词 + 法条依据」,无需 OCR 页码,在原文 Ctrl+F 即可定位。
何时使用
- "帮我审一下这份合同 / 这份合同有哪些风险条款"
- "按甲方立场给这份合同打分 / 偏向甲方的审查"
- "抽一下合同里的金额、付款节点、违约金、续签条款"
- "和建设工程施工合同标准模板比对一下差异"
- "把合同审查报告脱敏后给我 / 公司名和金额别出现"
工作流(脚本自动跑)
- 抽取正文:
.doc走scripts/doc_extract.py(olefile 解析 OLE2 + FIB + UTF-16LE);.txt直接读。 - 规则匹配(在【原文】上):
-learned_rules:正则命中trigger_patterns,通用法律风险起草套路;
-risk_types:风险信号关键词打标;
-hard_rules:数值阈值(如违约金 >30%、定金 >20%)。 - 脱敏展示:对展示用条款摘录做脱敏(
scripts/deidentify.py),行号与原文对齐便于追溯;映射表单独存deid_mapping.json(敏感,勿外传)。 - 立场评分:按
--stance计算百分制评分。 - 产出:
review_incremental_findings.json(脱敏)+合同审查报告_增量.html(浅色主题 脱敏)+deid_mapping.json(敏感)。
文件结构
contract-review/
|-- SKILL.md
|-- scripts/
| |-- review_incremental.py # 主流程:加载规则库->匹配->脱敏->评分->HTML/JSON
| |-- deidentify.py # 脱敏模块(公司名/金额/地址/证件/日期 -> 占位符)
| |-- doc_extract.py # .doc(OLE2) 正文提取
|-- references/
|-- 合同审查规则库.yaml # hard_rulesx7 + soft_rulesx5 + risk_typesx6 + learned_rulesx7
|-- 合同标准模板库.yaml # 《民法典》470 八必备条款 + 财务五字段槽位 + 合同类型
|-- 民法典条款速查.md # 规则库引用的法条汇总(供核对)
用法
# 必传待审合同路径;不传路径脚本会打印用法并退出(不会误跑任何内置样本)
python scripts/review_incremental.py <合同路径.doc|.txt> --stance 甲方
python scripts/review_incremental.py 另一份合同.pdf.txt --stance 乙方
python scripts/review_incremental.py 某合同.doc --stance 中立 --rules references/合同审查规则库.yaml
参数:--stance 甲方|乙方|中立(默认甲方)、--rules <yaml>(默认 references/合同审查规则库.yaml)。
脱敏纪律(本 skill 硬性要求)
- 不携带真实样本:本 skill 不在
scripts/references中内置任何真实合同、真实主体名、真实行号、用户真名。调用方须自行提供待审合同。 - 输出默认脱敏:HTML/JSON 报告中的公司名->
[发包人]/[承包人]、金额->[金额(1)]、地址->[办公地址]、证件->[身份证号]/[手机号]/[邮箱]、日期->[日期]。百分比/千分比(如"合同价5%""1千分之一/天")属结构性法律阈值,不予脱敏。 - 映射表勿外传:
deid_mapping.json含"占位符<->原文"对应关系,敏感,仅本地留存、不得随报告外发。 - 不写用户真名:任何报告/文档/说明不得出现用户真实姓名(如"梁海珊"),一律用 XXX 或"审查方"替代。
- 不替代法律意见:severity=high 的结论
human_review=true,须执业律师核签;效力认定类(格式条款无效、免责无效)仅给风险信号,不下效力结论。
评分模型
- 优先读每条规则的显式
deduction{甲/乙}(重要性x风险性量化):评分 = 100 - sum(本方扣分)。 - 无
deduction时回退SEV_PTS x IMPACT_MULT(仅对带stance_impact者)。 - 中立立场返回 None(不评分),仅列风险清单。
扩展资产层(越审越聪明)
每审完一份合同,把确认过的高频起草套路加进 references/合同审查规则库.yaml 的 learned_rules:
填 id / name / category / trigger_patterns(通用法律表述,勿绑特定合同身份) / matches_rule / severity / deduction{甲/乙} / legal_basis / suggestion。
下次同款表述直接命中,无需改代码。注意:source_case / source_clause 一律脱敏,不得写入真实公司名、真实合同编号或特定行号。
依赖
- Python 3:
pip install olefile pyyaml(仅解析 .doc 与读 YAML 需要;.txt 合同无需 olefile)。
版权与授权
- 方法论来源:本 skill 规则体系基于《中华人民共和国民法典》相关法条与通用合同审查实务框架(如合规 / 周延 / 可操作 / 公平 / 倾向五标准等业界通行方法),未包含任何书籍的原文摘录或逐字蒸馏。
- 规则资产:
hard_rules/learned_rules/soft_rules为基于法律条文的通用风险阈值与起草套路归纳,属方法性表达,非特定作品复制;references/民法典条款速查.md仅汇编法律条文(官方文本,不受版权保护)。 - 许可:MIT(见 LICENSE)。本 skill 仅供合同初审与风险提示,不构成法律意见;severity=high 的结论须执业律师核签。