合同审核助手
通用合同审查技能。从专业合同审查员角度,对合同进行结构化风险评估,在原合同上标注修订建议,并生成独立审查报告。
触发条件
用户消息中出现以下任一关键词组合时触发:
- "合同" + "审核/审查/评审"
- "合同风险评估"
- "帮我看看这份合同"
- "审合同"
- "合同对比"/"对比合同"
己方信息配置
审查签约主体时需要参照己方信息。启动审查前,按以下顺序处理:
1. 检查已有配置
读取 ~/.workbuddy/contract-review-config.json。若存在且完整,直接使用。
2. 引导用户配置
若配置文件不存在或不完整,向用户询问:
检测到尚未设置己方签约信息(此步骤可选)。
设置后可在审查时自动核验签约主体信息。如需设置,请提供以下信息:
- 公司全称
- 纳税识别号(统一社会信用代码)
- 注册地址及电话
- 开户银行及账号
输入"跳过"则仅审查条款风险,不检查签约主体。
用户提供信息后,写入 ~/.workbuddy/contract-review-config.json,格式:
{
"company_name": "XX科技有限公司",
"tax_id": "91440300XXXXXXXXXX",
"address": "XX市XX区XX路XX号",
"phone": "0755-XXXXXXXX",
"bank_name": "XX银行XX支行",
"bank_account": "XXXXXXXXXXXX",
"updated_at": "2026-05-27"
}
3. 修改己方信息
若用户要求修改己方信息,按上述格式更新配置文件。修改后告知用户变更内容。
审查工作流
阶段一:合同文本提取
- 确定合同文件路径(用户上传或指定)
- 若为
.doc格式,先用 LibreOffice 转换为.docx:python scripts/office/soffice.py --headless --convert-to docx <合同文件.doc> - 用 pandoc 提取合同文本:
pandoc --track-changes=all <合同文件.docx> -t plain -o /tmp/contract_text.txt - 读取提取后的文本,理解完整合同内容
阶段二:合同审查分析
加载 references/review_rules.md 获取9大审查维度详述。对合同全文逐一检查:
- 签约主体信息 — 若有己方配置,核对己方信息是否准确;检查对方信息完整性
- 标的/价格条款 — 标的描述清晰度、价格大小写一致性、税率发票约定
- 付款条款 — 付款方式、节点、比例、逾期责任
- 交付与验收 — 交付内容、期限、验收标准、验收不合格处理
- 知识产权 — 归属约定、使用授权范围、侵权责任分配
- 保密义务 — 保密范围、期限、例外情形、违约责任
- 违约责任 — 违约情形、责任对等性、违约金标准、赔偿上限
- 争议解决 — 管辖约定、争议解决方式、法律适用
- 合同生效与期限 — 生效条件、有效期、续约/终止条款
每个维度按以下标准判定风险等级:
| 等级 | 图标 | 判定标准 |
|---|---|---|
| 高风险 | ? | 可能导致重大经济损失或法律纠纷的条款 |
| 中风险 | ? | 存在潜在不利因素但可通过协商解决的条款 |
| 低风险 | ? | 表述可优化但不影响核心权益的条款 |
同时检测模糊表述:
- "合理期限"、"重大损失"、"不可抗力"、"必要的配合"、"及时通知"、"适当的措施"等
- 标记为"需明确定义"并给出具体化建议
阶段三:生成修订版合同
在原合同 .docx 上用 Track Changes 标注修订建议。
解包原合同:
python scripts/office/unpack.py <原合同.docx> unpacked/编辑
unpacked/word/document.xml,对需要修改的条款:- 删除不当内容:使用
<w:del>包裹删除文本,<w:delText>替代<w:t> - 新增修改建议:使用
<w:ins>包裹新增文本 - 模糊表述批注:使用
scripts/comment.py添加批注
修订原则:
- 作者名使用 "AI审查助手"
- 仅对风险条款添加修订建议
- 高风险条款必须标注,中风险条款建议标注,低风险仅批注
- 对模糊表述添加批注而非直接修改
- 删除不当内容:使用
添加批注示例:
python scripts/comment.py unpacked/ 0 "建议明确验收期限为具体天数,避免无限期拖延" python scripts/comment.py unpacked/ 1 "此处'合理期限'表述模糊,建议明确为30个工作日"重新打包:
python scripts/office/pack.py unpacked/ <修订版合同.docx> --original <原合同.docx>
阶段四:生成审查报告
用 docx-js 生成独立的审查报告 Word 文档。
报告结构:
- 封面 — 合同名称 + 审查日期 + 审查结论摘要
- 审查概览表 — 9大维度风险等级一览
- 高风险条款详述 — 每条:条款原文引用 + 风险原因 + 修订建议
- 中低风险条款 — 条款名称 + 备注
- 模糊表述清单 — 原文引用 + 问题说明 + 建议明确方式
- 审查结论 — 总体风险等级 + 签约建议
报告格式要求:
- 表头使用蓝色底色(#2E75B6),白色字体
- 高风险行使用浅红色底色(#FCE4EC)
- 中风险行使用浅黄色底色(#FFF9C4)
- 低风险行使用浅绿色底色(#E8F5E9)
- 正文字体宋体 10.5pt,标题黑体
阶段五:输出交付
询问用户选择输出模式:
- 仅生成文件(推荐) — 同时输出修订版合同 + 审查报告
- 生成文件 + 对话摘要 — 除文件外,在对话中列出关键风险提示
交付文件:
<原合同名>_修订版.docx— 带 Track Changes 的修订版合同<原合同名>_审查报告.docx— 独立审查报告
合同对比功能
当用户要求对比两份合同时(关键词:"合同对比"、"对比合同"、"两版合同差异"):
- 提取两份合同的文本
- 逐条款对比,识别差异:
- 条款新增/删除
- 条款内容变更
- 条款顺序调整
- 按审查报告格式输出对比结果,差异类型字段改为"版本A vs 版本B对比"
- 不生成修订版合同(涉及两份文档),仅生成对比报告
交互原则
- 审查前先告知用户审查范围和计划
- 发现高风险条款时,在修订文件中重点标注,在报告中详细说明
- 遇到无法判断的条款时,标记为"需人工复核"并说明原因
- 审查完成后告知用户审查报告和修订文件的位置
- 若用户提供多份合同,逐份审查,每份生成独立报告