用 QClaw 做了一个工程合同风险审计技能,说说我的完整实践过程
用 QClaw 做了一个工程合同风险审计技能,说说我的完整实践过程
本文参与腾讯云 OpenClaw 玩虾大赛,分享一次真实的技能开发与使用经历。
前言:为什么我想做这个
最近公司承接了不少工程项目,合同量大,法务人手有限。每次拿到一份采购合同或者施工合同,审起来都很花时间——条款多则几十页,光是把关键风险点逐条找出来就要两三个小时。更头疼的是,有些条款藏在很不起眼的地方,一不小心就漏掉了。
后来我开始用QClaw,它是基于OpenClaw打造的本地 AI 助手,绑定微信、QQ、企微、飞书、钉钉等 IM 平台,用自然语言就能驱动各种自动化任务。在使用过程中我接触到Skill(技能)这个机制——你可以把它理解为给 AI 装上一个专用的能力模块,让它能处理特定领域的任务。我开始琢磨:能不能用这个机制,做一个专门审计工程合同风险的技能?
这个想法就这样落地了。以下是我完整做下来的过程,有思路、有设计、也有踩坑,供有兴趣做类似事情的朋友参考。
一、QClaw 是什么——不只是对话 AI
1.1 从「通用对话」到「专业助手」
市面上的 AI 对话工具已经很多了,但大多数本质上是「通用问答器」——你问它答,答完就结束。它不知道你是谁,不知道你的工作场景,更无法替你完成实际任务。
QClaw是腾讯云推出的本地 AI 助手,它的设计目标就不是通用对话,而是承接具体的、专业的工作流。它和普通 AI 对话工具最大的区别在于两点:
第一,它能调用 Skill(技能)。Skill 是 OpenClaw 的核心扩展机制。简单说,就是你可以把某个专业领域的知识、规则、甚至脚本文件打包成一个「技能包」,当 AI 判断到适合的场景时,会自动激活对应的技能来响应你。就像给 AI 装上了一个插件,让它突然具备某个专业能力。
第二,多平台消息通道。你可以在微信、QQ、企业微信、飞书或钉钉任意一个平台发一条语音或文字指令,QClaw 收到后理解你的意图,调用相关 Skill,完成任务后把结果推送回来。整个过程不需要打开电脑,在现场、工地、出差路上都能用。
1.2 OpenClaw 的技术架构
OpenClaw是一款开源个人 AI 智能助理,专为在个人设备或云服务器上自建部署设计。它是 QClaw 的底层框架,核心设计思想是**「本地化 + 技能化」**:
- 本地化运行:所有 AI 推理和文件处理都在本地设备上完成,数据不经过云端。对于工程公司来说,这意味着合同内容这种商业机密数据不会外泄。
- 技能化扩展:通过 Skill 机制,OpenClaw 可以不断扩展自己的能力边界。每个 Skill 都是一个独立的能力包,可以单独开发、测试和分发。
- 多平台消息通道:支持微信、QQ、企业微信、飞书、钉钉等多个 IM 平台的消息收发。QClaw 则特指通过腾讯电脑管家入口、绑定微信使用的 OpenClaw 形态。
1.3 Skill 的文件结构
OpenClaw 的 Skill 本质上是一个配置文件 + 可选的工具代码,目录结构如下:
contract-risk-audit/ ├── SKILL.md # 或 skill.yaml,技能的核心定义文件 ├── package.json # TypeScript 技能需要,定义依赖 ├── src/ │ └── index.ts # TypeScript 技能入口,定义具体工具 ├── references/ # 知识库文件 │ ├── standard_template.md │ └── risk_rules.md └── scripts/ # 可执行的辅助脚本 └── extract_contract.py对于采用 Natural 方式的简单 Skill,甚至只需要一个SKILL.md文件就够了——这就是为什么 ClawHub 上的技能本质上都是一个 Markdown 文件。
Skill 文件(SKILL.md或skill.yaml)定义了:
- name / version / author:技能身份信息
- description:技能用途描述
- permissions:需要的权限(如 network、notifications)
- config:用户需要填写的配置项(如 API Key)
- entryPoint:实现方式(natural / typescript / shell)和具体逻辑
开发一个 Skill 的核心工作,就是编写这个配置文件并准备好references/里的规则和数据文件。如果涉及文件处理,再写几个 Python 脚本。这些都不算复杂,一个有基础编程经验的人花一两天就能做出来。
二、为什么我选择做工程合同风险审计这个方向
2.1 工程合同审查的三大痛点
工程行业的合同有它的特殊性,我总结为三个字:多、专、烦。
多——条款数量多。一份设备采购合同,少说也有十几个章节,赔偿上限、验收标准、违约责任、质保期限、管辖权约定……每个环节都可能藏着风险。人工审的时候精力一分散,漏掉一两条很正常。
专——专业门槛高。「赔偿上限是不是太低」需要结合合同金额和行业惯例来判断;「验收标准是否模糊」需要有工程经验才能识别;「违约责任是否对等」还要做财务测算。传统法务人员很难在所有维度上都做到位。
烦——重复劳动多。公司的合同来来去去其实就那几类,模板相对固定,每次审查做的事情其实差不多,但每次都要从头做一遍,效率很低。
2.2 Skill 能解决什么问题
我想,如果能做一个 Skill,把公司的标准合同模板和风险识别规则内置进去,让 AI 每次拿到新合同就能自动比对、自动识别风险、自动量化财务影响——那法务的工作就从「逐条审」变成了「审核 AI 的审查结果」,效率会高很多,而且不会遗漏。
这个 Skill 的核心目标有三个:
- 不漏项:每一条差异条款都被发现
- 量化风险:告诉决策者每条风险可能造成多少损失
- 给出建议:不只是指出问题,还要给出修改方向的建议
三、技能的设计思路
3.1 核心原则:AI 执行规则,而非做判断
在动手之前,我想清楚了一件事:这个 Skill 并不是要替代法务做判断,而是把公司积累的审查经验固化成可复用的规则,让 AI 来执行这些规则,确保每次审查都不遗漏。
这很重要。AI 的强项是执行规则、处理大量文本、发现异常点;人的强项是在边界情况下做综合判断。把规则执行的事情交给 AI,人聚焦在判断和决策上——这是最高效的人机协作方式。
3.2 四阶段执行流程
整个技能的运行流程分为四个阶段:
┌─────────────────────────────────────────────────────────────┐ │ 阶段一:合同文本抽取 │ │ PDF/Word → 文字提取 → 结构化文本 │ │ (扫描件自动触发 OCR) │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 阶段二:模板逐条比对 │ │ 读取标准模板 28 条核心条款 → 语义相似度匹配 → 标记差异条款 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 阶段三:风险识别与量化 │ │ 差异条款 × 风险规则 → 风险评级 + 财务影响估算 │ └─────────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────────┐ │ 阶段四:生成审计报告 │ │ 结构化输出:风险清单、评级、量化数据、修改建议 │ └─────────────────────────────────────────────────────────────┘阶段一:合同文本抽取。用户把 PDF 或 Word 发给 QClaw,技能调用脚本把文件里的文字内容提取出来。工程合同大多是 PDF 格式,有些是扫描件(没有文字层),这种情况会先走一遍 OCR 识别。
阶段二:模板逐条比对。技能读取公司标准合同模板里的每一条条款,用语义相似度算法和待审合同的对应条款逐一对比。相似度低于阈值的条款会被标记为「差异条款」,进入下一阶段分析。这里有个细节——纯文本匹配不够用,因为合同里经常有「甲方应」和「乙方应」的权责转换,字面相似但含义完全相反,所以后期我加入了语义层面的判断,让 AI 理解条款的实际含义而不仅仅是比对文字。
阶段三:风险识别与量化。这是最核心的部分。技能基于预定义的风险规则,对每条差异条款进行判断。比如赔偿上限低于合同金额 30% 的会被标记为高风险,违约金比例双方差距超过 50% 的会被标记为中风险。量化财务影响是这一步最有价值的地方——技能会根据合同金额和风险类型,自动估算潜在损失范围,让决策者有清晰的量化依据。
阶段四:生成审计报告。技能按照预置的报告模板,输出结构化的审计结果,包含差异条款清单、风险评级、财务影响估算值和修改建议措辞。
3.3 风险规则的定义方式
Skill 的知识库核心是references/risk_rules.md,采用 Markdown 格式定义规则,不需要写代码。公司可以完全自主维护这套规则。以下是规则定义的示例结构:
## 赔偿上限规则 ### 规则ID RISK-001 ### 规则名称 赔偿上限过低 ### 判定条件 当赔偿上限 < 合同金额 × 30% 时,触发高风险 当赔偿上限 < 合同金额 × 50% 时,触发中风险 ### 量化方式 潜在最大损失 = 合同金额 - 赔偿上限 ### 行业背景 工程行业通常认为 30% 是赔偿上限的基准线 ### 修改建议措辞 建议将赔偿上限调整为合同金额的 30% 至 50%这种方式的好处是:规则即文档,文档即规则。法务人员可以直接阅读和修改规则,不需要懂代码。
四、用 QClaw 完成 Skill 开发——完整步骤
这一节详细介绍在 QClaw 中开发合同审计 Skill 的每一步操作。
4.1 环境准备
第一步:安装 QClaw
从腾讯云官网下载 QClaw 客户端(Windows 版),安装在本地电脑上。
第二步:配置消息通道
QClaw 支持同时接入多个 IM 平台。
这里以最常用的微信为例:
- 打开 QClaw 设置界面,进入「通道配置」
- 选择「微信」通道
- 扫码完成认证。
完成上述步骤后,你就可以在微信里和 QClaw 对话了。
第三步:准备开发环境
Skill 的文本处理脚本使用 Python 编写,建议预装以下依赖:
# 安装 Python 依赖pipinstallpdfminer.six python-docx# 可选:OCR 识别(处理扫描件)pipinstallpytesseract pillow4.2 告诉 QClaw「我要做一个合同审计技能」
这是最有意思的部分——你不需要手动创建任何文件,直接用自然语言和 QClaw 对话,它就能帮你把技能从头到尾做出来。
打开 QClaw,直接发送:
我想做一个工程合同风险审计技能,能帮我自动审查采购合同里的风险条款,识别赔偿上限过低、违约金不对等、验收标准模糊这些问题,最后输出一份结构化的审计报告。
4.3 QClaw 根据你的需求自动生成技能框架
QClaw 消化了你的需求,开始生成技能内容。这个过程你不需要参与,只需要等待它告诉你「技能已创建完成」。
大约几分钟后,QClaw 会返回:
「搜索一下相关的技术实现参考和最佳实践:现在我已经了解了技能创建的最佳实践。让我为你设计这个工程合同风险审计技能:
1. 技能配置文件(SKILL.md)
技能名称:contract-risk-audit
触发关键词:审查合同、审计合同、检查合同风险、合同风险 等
2. 知识库文件
references/standard_template.md— 已根据你发来的合同模板整理好核心条款references/risk_rules.md— 内置了以下风险识别规则:- RISK-001:赔偿上限过低(< 30% 合同金额为高风险)
- RISK-002:违约金权责不对等(甲乙差距 > 200% 为高风险)
- RISK-003:验收标准模糊(出现"合理标准"等表述触发)
- RISK-004:管辖权不利约定(异地管辖触发)
3. 文本处理脚本
scripts/extract_contract.py— PDF/Word 文本提取scripts/compare_template.py— 条款拆分、相似度比对、风险量化
4. 工作流程
用户上传合同 → 提取文本 → 识别条款类型 → 与标准模板比对 → 应用风险规则 → 生成审计报告
然后我们可以根据内容,确认或提出修改,比如我这里还想调整一下赔偿上线阈值
「基本没问题,但赔偿上限的阈值我想调高一点,我们公司要求至少 35% 才算达标,低于这个值就要标高风险。另外增加一条规则:付款条件里如果只写’验收后付款’没有具体天数,也作为风险标记。」
之后可以看到其成功更新技能:
4.4 调试技能——用真实合同跑一遍
技能框架生成之后,需要测试一下效果。QClaw 支持直接在对话中模拟运行。
发送:
阅读测试合同文本_设备采购合同,合同金额 500 万,重点关注赔偿上限和违约责任。
QClaw 启动技能执行:
等待片刻后,其会输出完整的审计报告,每条风险包含:条款位置、原文摘录、风险描述、量化数据(潜在损失金额)、修改建议措辞。
技能不是一次性做完就结束了,而是在实际使用中不断打磨。**使用过程中,又发现了一些可以优化的地方:规则不够用
「上次审一份设备租赁合同,里面有条’提前解约需赔偿6个月租金’,这个条款挺苛刻的,但技能没识别出来。能否增加一条关于解约赔偿的规则?」
QClaw:「新增规则:提前解约赔偿过高
风险等级:中风险
触发阈值:赔偿 ≥ 3个月租金/费用」
4.6 查看和管理你的技能
技能开发完成后,可以通过 QClaw 随时查看技能状态和管理技能:
查看已创建的技能:
「列出我目前安装的所有技能」
更新技能:
如果之后想调整技能,直接告诉 QClaw:
「contract-risk-audit 的风险阈值帮我改一下,高风险从35%调整为40%」
QClaw 会直接更新对应的规则文件,不需要你手动去改代码。
导出和分享:
「把这个技能导出来分享给同事」
QClaw 将技能打包,通过邮件或链接分享,同事收到后可以直接安装到自己的 QClaw 中使用。
五、一次真实的使用过程
我用一个实际场景来展示整个流程。
某项目需要审核一份供应商发来的设备采购合同,合同金额 500 万元,法务需要在下班前给出审查意见。以前这至少要花两个小时,这次我试着让 QClaw 来做。
第一步:上传合同
我把 PDF 发给 QClaw,说明了审查要求("帮我审查这份合同的风险,重点看赔偿上限、违约责任和验收标准"),技能自动激活。
第二步:文本抽取
技能识别到是 PDF 文件,调用extract_contract.py进行文本提取。因为是原生 PDF(不是扫描件),文字直接被提取出来,耗时约 30 秒。
第三步:模板比对
技能读取了公司标准采购模板的 28 条核心条款,开始逐条比对。比对结果出来了几条差异较大的条款:
| 条款类型 | 标准模板内容 | 合同实际内容 | 相似度 |
|---|---|---|---|
| 赔偿上限 | 赔偿上限不低于合同金额的30% | 赔偿上限为50万元 | 35% |
| 违约金(甲方) | 甲方的违约金为合同金额的10% | 甲方违约金为5% | 60% |
| 违约金(乙方) | 乙方的违约金为合同金额的10% | 乙方违约金为15% | 55% |
| 验收标准 | 符合GB/T 28288-2012国家标准 | 以双方认定的合理标准为准 | 42% |
第四步:风险识别与量化
技能对每条差异条款应用风险规则,生成量化结果:
赔偿上限条款——合同约定的赔偿上限是 50 万元,仅为合同金额的 10%,远低于行业普遍认可的 30% 下限。技能自动计算了潜在最大损失:450 万元。这条被标为高风险。
违约责任条款——甲方的违约金是合同金额的 5%,乙方是 15%,差距比例达到 300%,属于明显的权责不对等。这条被标为中风险,技能同时指出此类条款在诉讼中可能被法院依职权酌减,但会增加纠纷处理成本。
验收标准条款——合同使用了「以双方认定的合理标准为准」这样的表述,缺少量化指标。技能识别出这类模糊表述容易在履约阶段引发争议,建议改为具体的性能参数或检测方法。
第五步:审计报告生成
整个过程从上传文件到拿到完整的审计报告,大约用了十五分钟。结果以结构化报告的形式输出:
═══════════════════════════════════════════════════════════ 工程合同风险审计报告 ═══════════════════════════════════════════════════════════ 合同名称:设备采购合同(供应商:XXX机械有限公司) 合同金额:500万元 审阅时间:2024-XX-XX XX:XX 审阅耗时:15分钟 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 风险摘要 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 🔴 高风险:1项 🟡 中风险:2项 🟢 低风险:0项 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 风险详情 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 【高风险】RISK-001:赔偿上限过低 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📍 条款位置:第12.2条 📄 合同原文:供方应承担的最高赔偿额不超过合同总价的10% ⚠️ 风险描述:赔偿上限(50万)仅为合同金额的10%, 远低于行业通行的30%基准线 💰 量化数据:潜在最大损失 = 450万元 ✅ 修改建议:将赔偿上限调整为合同金额的30%, 即150万元 【中风险】RISK-002:违约金权责不对等 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📍 条款位置:第13.1条 📄 合同原文:甲方违约按合同金额的5%支付违约金; 乙方违约按合同金额的15%支付违约金 ⚠️ 风险描述:甲乙双方违约金比例差距达300%, 存在明显不公平条款 💰 量化数据:潜在纠纷成本 ≈ 50万元(按诉讼成本估算) ✅ 修改建议:将甲方违约金调整为10%,与乙方对等 【中风险】RISK-003:验收标准模糊 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📍 条款位置:第8.3条 📄 合同原文:设备验收以双方认定的合理标准为准 ⚠️ 风险描述:缺少可量化、可检测的具体标准, 容易引发履约争议 💰 量化数据:潜在履约争议损失 ≈ 25万~75万元 ✅ 修改建议:改为「设备性能须符合GB/T 28288-2012 国家标准要求,具体指标见附件」 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 审阅结论 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 本份合同存在一项高风险条款和两项中风险条款, 建议在签署前与供应商就上述条款进行协商修订。 ═══════════════════════════════════════════════════════════ 本报告由 QClaw 合同风险审计技能自动生成 ═══════════════════════════════════════════════════════════法务的工作从「从头审」变成了「看报告确认结论」,时间从两三个小时压缩到了十几分钟。
结语
这次用 QClaw 做合同审计技能的经历,是我第一次认真地把一个工作中的痛点用 Skill 的方式解决掉。做之前觉得可能很复杂,做下来发现思路理清楚之后,实现并不困难。
更重要的是,这个过程让我对 Skill 这个机制有了更具体的理解——它本质上解决的是「AI 在垂直领域的知识怎么注入」的问题。不管是合同审查,还是其他有明确规则和流程的工作,其实都可以用类似的思路去做。
回顾整个开发过程,OpenClaw/QClaw 的生态其实已经相当完善了:本地化的数据安全保证、多平台消息通道的便捷性、ClawHub 技能市场的丰富度,以及 Skill 开发本身对非专业程序员也友好的设计——这些都是能让你快速跑通一个想法的有利条件。
如果你也在工程行业工作,日常工作里有不少重复性的审查、比对、核对工作,不妨想想这里面有没有可以用 Skill 自动化掉的部分。这次玩虾大赛就是一个很好的契机,不妨动手试试。
