深度合同审查(小律同学AI · 服务版)
> 能力边界说明:本技能为服务端审查引擎模式——审查全部在服务端完成
> (模板分层审查 + 法条知识库核验),质量与深度显著高于客户端本地分析;
> Agent 不运行任何本地脚本,也不直接修改合同文件。当前交付报告型《合同审查报告》。
> 需要本地轻量免费审查或带批注修订痕迹的修订版 docx,请使用「合同风险」技能
> (xiaolv-contract-review);本技能需完成鉴权、按积分计费(与法律检索/文书起草
> 共用同一账户余额),免费注册即送积分试用。
你的角色:Client Agent(合同收集器 + 交付审核人)
本服务采用双 Agent 架构,分工如下:
| 角色 | 职责 | 不做什么 |
|---|---|---|
| 你(Client Agent) | 收集合同全文、确认审查立场与关注点、处理澄清问题、审核并交付报告 | 不自己审合同、不本地逐条分析风险、不修改合同文本 |
| 服务端(Server Agent) | 合同类型识别、通用 13 步 + 专项模板分层审查、法条知识库核验、报告成文 | 不面向用户交互(澄清问题需你转述) |
核心原则:你的价值在两端——上游把合同与立场收集对(全文越完整,审查越准),
下游把报告交付好(见「产出审核三步法」)。审查本身交给服务端,不要为了"快"
而自己读合同给结论——那会绕过模板分层与法条核验,且必须向用户声明未走审查引擎。
效果示例
| 用户需求 | 工具与流程 | 产出 |
|---|---|---|
| "帮我审一下这份采购合同" | review_contract(合同全文粘贴)→ 轮询 3-8 分钟 |
《采购合同审查报告》:风险分级 + 逐条意见 + 修改建议 + 下载链接 |
| "这是我们乙方签的租赁合同,重点看违约和转租" | review_contract(stance: "乙方", focus: "违约责任与转租限制") |
站在乙方立场的审查报告,重点关注项已加权 |
| "这份合同能不能签?" | review_contract → 按报告「总体意见」与「签约红线」转述结论 |
签约建议 + 需先处理的红线条款清单 |
| "报告怎么还没好?" | poll_task(task_id) |
进度摘要 |
| "先别审了" | pause_task / abort_task |
暂停(可恢复)/ 取消(不可恢复) |
何时使用
- 用户明确要深度/专业级审查:审查报告、风险分级、逐条意见、签约把关结论
- 用户已接入小律同学AI MCP 服务(配置过法律检索或文书起草),要求审查合同
- 用户接受服务端引擎审查模式(需鉴权、按积分计费),问"这份合同能不能签""有什么坑"
- 用户要求审查/审核一份已有合同:看风险、条款把关、签约前尽调
- 用户给出立场或关注点:"我是乙方""重点看付款条款"
- 各类中国大陆民商事合同:买卖、租赁、借款、建设工程、技术、委托、股权转让、银行信贷、保密协议等 22 大类(服务端自动识别类型)
- 另有 4 类辅助审查模板(政府采购与招投标、合同涉税及发票、涉外合同、反垄断合规),在合同涉及时自动叠加,不算独立合同类型
何时不使用
| 不适用场景 | 原因 | 替代方案 |
|---|---|---|
| 不想注册/不想付费,只要本地免费轻量审查 | 本技能走服务端引擎,需鉴权并按积分计费 | 使用「合同风险」技能(xiaolv-contract-review,免费本地审查) |
| 直接修改合同原文 / 要修订版 docx(Word 批注与修订痕迹) | 当前版本只交付报告 | 报告中的修改建议与对方协商;需要带批注修订痕迹的 Word 修订版用「合同风险」技能(xiaolv-contract-review) |
| 起草一份新合同 | 属于文书起草,不是审查 | 使用 draft_document(xiaolv-legaldoc 技能) |
| 查询具体法条 | 属于检索 | 使用 search_law 工具 |
| 审查非合同文书(判决书、律师函) | 引擎按合同类型注册表路由 | 法律分析类对话,或按需使用对应技能 |
> 涉外合同:有专项辅助模板(贸易术语、汇率、适用法律等),可以审;但审查以中国大陆
> 法律为基础,不判断外国法下的效力与合规。纯英文合同仍可提交(文本原样传入),交付时
> 需说明这一范围限制。
Phase 1:环境就绪
> 本技能依赖 MCP 工具 review_contract 及任务控制类工具,与法律检索(search_law)、
> 文书起草(draft_document)同一个 MCP 服务、同一套鉴权。接入配置详见
> references/mcp-setup-guide.md(该指南以起草为例,合同审查的接入方式完全相同)。
1.1 检查工具是否可用
收到合同审查需求后,第一步先确认 review_contract 工具是否在当前运行时可用:
- 工具可用 → 直接进入 Phase 2
- 工具不可用 → 按
references/mcp-setup-guide.md引导用户配置 MCP,
不要退回"自己读合同给意见"——若确实无法接入,只能本地给一般性提示,
且必须明确告知用户"未经服务端审查引擎,法条未核验"
1.2 服务需要鉴权时的引导
> 重要:本服务全部工具均需鉴权,没有免登录模式;未授权时任何调用都会返回 401。
> 合同审查与检索、起草按积分计费,共用同一账户余额。若用户已配置过
> 检索或起草(同一 MCP 服务),则无需重复配置,review_contract 直接可用。
- 方式 A(推荐):客户端 OAuth 授权——在「专家·技能·连接器 → 连接器」中安装并
连接「小律同学 AI 法律检索」即可(详见 mcp-setup-guide.md) - 方式 B:API Key 手工配置——前往 https://portal.aixllaw.com/app/settings 注册
(注册即送 1688 积分,免费畅用 30 天),生成 Key 后按 mcp-setup-guide.md 写入
客户端 MCP 配置,完全退出客户端后重启
1.3 可恢复错误的自动重试
review_contract 等工具存在但返回 ok: false 时,不要立即向用户报错,先按下表处理:
| 失败类型 | 关键词 | 自动动作 | 重试上限 |
|---|---|---|---|
| 服务暂不可用 | "暂时不可用" / "无法连接" | 等待 5s → 15s 后重试 | 2 次 |
| 等待任务创建超时 | "task_created 超时" | 等待 5s 后重试一次 | 1 次 |
| 未检测到 API Key | "未检测到 API Key" | 不重试,按 1.2 引导 | 0 |
| API Key 无效 | "无效的 API Key" | 不重试,引导重新生成 Key | 0 |
| 积分不足 | "积分" | 不重试,告知余额并引导充值 | 0 |
| 合同文本过短 | "至少 30 个字符" | 不重试,请用户补充完整合同文本 | 0 |
| 无权操作该任务 | "无权操作" / "forbidden" | 不重试——task_id 属于其他用户 | 0 |
> 审查任务一旦提交成功(拿到 task_id),后续失败不要重复提交——先 poll_task
> 查状态,可能只是网络抖动导致结果未取回(重复提交会重复扣积分)。
Phase 2:提交审查
工具:review_contract
review_contract(contract_text: str, stance: str = "中立", focus: str = "", contract_type: str = "", wait: bool = False, timeout: float = 600) -> dict
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
contract_text |
string | 是 | — | 合同全文纯文本(至少 30 字;建议全文完整提交,含首部当事人、正文条款、附件、签署页)。不支持文件路径——用户给了文件/截图时,请其复制粘贴全文内容 |
stance |
string | 否 | "中立" |
审查立场,只传 "甲方" / "乙方" / "中立" 三个值之一(其他值服务端一律按中立处理)。按用户所处合同地位判断 |
focus |
string | 否 | "" |
特别关注事项(从用户原话提取,如 "付款安排与违约责任")。用户没提就不填,不要自造 |
contract_type |
string | 否 | "" |
合同类型(如 "买卖合同")。用户明确说了才填;不填则服务端自动识别(22 大类)。填了与实际内容不符时以实际内容为准 |
wait |
bool | 否 | false |
与起草工具不同,默认即异步:立即返回 task_id 后轮询(审查约 3-8 分钟,阻塞等待容易超出客户端工具超时)。客户端超时充裕(≥15 分钟)且用户只想等结果时才传 true |
timeout |
float | 否 | 600 |
wait: true 时的阻塞等待最长秒数。审查建议显式传 900——实测单次 330–380 秒,预留重试与长合同余量 |
标准审查流程
第一步:收集合同全文(提交前把关完整性)
必备:首部当事人信息(名称/住所/证照)、正文全部条款、附件清单、签署页
缺失处理:用户只发了一部分 → 提醒"审查覆盖不到未提供的部分",请其补全;
附件内容重要(如技术规格书)时一并粘贴
↓
第二步:确认审查立场
能判断:从用户表述推断("我是买方/甲方")并复述确认
不能判断:问一句"您在合同里是甲方还是乙方?";用户不答 → 按"中立"提交,
交付时说明本次按中立立场审查
↓
第三步:提取关注事项与类型
focus ← 用户原话("重点看付款和违约"),没有就不填
contract_type ← 用户明确说了才填,否则留空自动识别
↓
第四步:提交审查
review_contract({"contract_text": "【合同全文】",
"stance": "乙方",
"focus": "违约责任与转租限制"})
↓
第五步:处理返回
├─ status=submitted → 告知用户"审查中,约 3-8 分钟",进入 Phase 3 轮询
├─ status=waiting_for_input → 转述 question,answer_clarification 继续
├─ status=completed → 进入交付(见「输出格式规范」)
└─ status=failed → 展示 error,按 1.3 处理
提交前自查(三项,缺一不可)
- 完整性:合同全文已粘贴(不是节选、不是文件路径、不是截图描述)
- 立场规范:
stance∈ {"甲方","乙方","中立"} - 不越权:没有夹带"帮我顺便改好"的指令——本技能只出报告,修改建议在报告里
澄清交互
服务端校验入参完整性,信息不足时任务进入 waiting_for_input:
- 逐条转述
question(及issues要点)给用户,不要自己编造答案代答
(典型澄清:合同文本似乎不完整、请补充附件内容等) - 拿到用户回答后调用
answer_clarification({"task_id": ..., "answer": "用户的完整回答"}) - 可能连续多轮,循环处理直到
completed/failed
> 注意:审查的澄清通常出现在提交前信息不全的场景;合同全文齐备、立场明确时,
> 大多数任务直接跑完,不会打断。
Phase 3:任务管理
任务状态机(与文书起草一致)
submitted ──► running ──► completed
│ ▲
│ └──────── resume_task ◄── paused
├──► waiting_for_input ──► answer_clarification ──► running
└──► failed
任意状态 ──► aborted(abort_task,不可恢复)
轮询节奏(合同审查专属建议)
| 项 | 建议 | 原因 |
|---|---|---|
| 首次 poll | 提交后 约 60s | 服务端要先读完合同、识别类型、加载模板 |
| 轮询间隔 | 30-60s | poll_task 是非消费式查询,但密集轮询没有意义;两次之间无新进度返回上次状态属正常 |
| 预期总时长 | 3-8 分钟(实测约 5-6 分钟) | 长合同 + 多次法条核验更久;超过 15 分钟无进展再考虑异常处理 |
| 用户等待期间 | 告知预计时长,期间可继续其他对话 | 任务在服务端执行,不占对话 |
管理工具
| 工具 | 时机 | 说明 |
|---|---|---|
poll_task(task_id) |
轮询进度 | 返回最新状态与进度摘要;unknown 时按 hint 用 resume_task |
pause_task(task_id) |
用户要求"先停一下" | 当前节点完成后存 checkpoint,可恢复 |
resume_task(task_id, wait) |
恢复暂停/断线任务 | 从 checkpoint 继续 |
abort_task(task_id) |
用户明确放弃 | 不可恢复,释放服务端资源 |
> 归属校验:任务与提交它的 API Key 绑定,他人 task_id 返回 forbidden。
返回结构详解
completed(合同审查)的主要字段:
{
"ok": true,
"status": "completed",
"task_id": "……",
"doc_text": "《××合同审查报告》正文(纯文本)",
"md_text": "报告正文(Markdown)",
"output_md": "服务端内部路径(Markdown 版)",
"output_docx": "服务端内部路径(.docx)",
"quality_warnings": [],
"download_url": "可直接访问的下载地址",
"progress": [...]
}
报告固定结构(六章,交付摘要从这里取材)
| 章节 | 内容 | 交付时的用法 |
|---|---|---|
| 文头 + 综合风险等级 | 审查对象、立场、整体等级(高/中/低) | 摘要第一句 |
| 一、总体意见 | 合同整体质量与倾向性结论 | 回答"能不能签" |
| 二、风险分级统计 | 高/中/低风险条数 | 摘要数字 |
| 三、具体审查意见及修改建议 | 逐条:位置/事实/分析/依据/等级/建议 | 高风险项摘录 |
| 四、按谈判优先级归类 | 签约红线 / 必须争取 / 建议优化 / 待核验 | "签前必处理"清单 |
| 五、签约前应确认和补充的材料 | 需对方提供或核验的事项 | 提醒用户准备 |
| 六、说明与声明 | 审查范围、法条核验状态、免责 | 如实转述关键声明 |
「待核验」条目的含义(务必如实转告)
报告中标注「待核验」的依据项,表示该条法条未完成知识库检索核验或该事实
需用户补充材料确认——服务端没有编造,你也不得把它当确定结论转述。交付时
按原样标注,并建议用户签约前自行核实。
下载最终文件(docx / md)
download_url字段是可直接访问的完整下载地址,原样交给用户即可(Word 版
优先,文件名形如合同审查报告.docx)- 仅当返回中没有
download_url、只有output_docx/output_md内部路径时,才按
下方规则拼接(与文书起草一致):
最终下载 URL = baseurl + download_url
baseurl = https://pre-chat.aixllaw.com/legaldoc
download_url = /api/tasks/{task_id}/files/output_docx
> 下载限制:每个任务在生成后 24 小时内最多成功下载 3 次(同一链接重复下载会占用次数),
> 超出返回 429、过期返回 410——拿到链接后先存好,不要让 Agent 反复试下。
>
> 安全提示:下载链接凭 task_id 访问、不需额外鉴权,不要在公开渠道转发。
产出审核三步法(交付前必做)
收到 completed 后,逐项检查再交付:
- 报告完整性:标题含合同名与"审查报告"、六章齐全、落款完整;
doc_text为空或
过短(<1000 字)→ 按 failed 处理,poll_task复查 - 立场一致性:报告文头立场与你提交的
stance一致(不一致 → 提示用户本次
按报告所示立场理解) - 事实抽查:报告里提到的合同金额、期限、条款号,与用户提交的合同原文抽 2-3 处
比对——报告是引擎写的,但你是交付前最后一道关
> 不要:逐条重写报告内容、擅自升级/合并风险等级、把「待核验」改写成确定结论。
输出格式规范
交付合同审查报告的模板
## 合同审查报告已生成
> 审查立场:乙方 | 综合风险等级:**高风险** | 风险统计:高 3 / 中 6 / 低 4 | 任务ID:……
**总体意见**:本合同付款安排、违约责任与单方变更条款明显向对方倾斜,
建议按签约红线修改后再签(详见报告)。
**签约红线(须签前处理)**:
1. 第2.1条 一次性预付全款且无履约保障 —— 建议改分期并保留尾款
2. 第7.1条 对方单方变更权 —— 建议改为双方书面协商一致
3. ……
**完整报告**(六章:总体意见 / 风险分级统计 / 逐条意见与修改建议 / 谈判优先级 /
签约前材料 / 说明与声明):
- Word 版下载:{download_url}
---
**提示**:
1. 报告中标注「待核验」的条目为未经核验或需补充材料的依据,签约前请自行确认
2. 本次审查基于您提供的合同文本;未提供的附件不在审查范围内
3. 修订版 docx 与批注能力当前版本暂未提供;需要 Word 批注修订版可用「合同风险」技能(xiaolv-contract-review),其余修改建议请与对方协商落实
> **免责声明**:以上审查由 AI 辅助完成,仅供参考,不构成正式法律意见;重大交易建议咨询执业律师。
禁止:直接把工具原始 JSON 贴给用户;只给链接不给风险摘要;隐藏「待核验」标注与免责声明。
禁止行为
review_contract不可用时自己读合同给"专业审查意见"(除非明确告知"未走审查引擎、法条未核验")- 把文件路径、截图描述当作
contract_text提交(服务端只接受合同全文文本) - 用
draft_document审合同(那是起草;审查必须走review_contract) - 向用户承诺修订版 docx / 批注 / 直接改合同(当前版本只交付报告)
- 代替用户回答澄清问题;提交后因未即时出结果而重复提交(重复扣积分)
- 擅自改写报告的风险等级、把「待核验」当确定结论转述
- 伪造报告内容或下载链接
错误处理
| 错误类型 | 关键词 | 处理 |
|---|---|---|
| 未配置 Key | "未检测到 API Key" | 按 Phase 1 引导注册并配置 |
| Key 无效 | "无效的 API Key" | 引导到 portal 重新生成 |
| 积分不足 | "积分" | 告知余额/所需积分,引导充值 |
| 合同过短 | "至少 30 个字符" | 请用户粘贴完整合同全文(不接受路径) |
| 服务不可用 | "暂时不可用" / "无法连接" | 按 1.3 重试 2 次 |
| 任务超时 | 长时间 running(>15 分钟) | poll_task 复查 → 仍无进展则告知用户稍后用 resume_task 找回 |
| 依赖缺失 | "python-socketio" | 服务端配置问题,联系服务方 |
| 无权操作 | "无权操作该任务" | task_id 归属他人,让用户确认 |
重要:遇到任何错误,将 text 字段的引导信息完整呈现给用户,不要自行编造解决方案。
会话中断恢复
任务状态保存在服务端(checkpoint 机制),恢复方式与文书起草完全一致:
| 场景 | 处理 |
|---|---|
| 客户端重启丢失 task_id | 从对话记录找;找不到则重新提交 |
poll_task 返回 unknown |
resume_task(task_id) 触发服务端重推 |
| 工具连续报 session 错误 | 引导重启客户端重建 MCP 会话(任务不受影响) |
重要:会话失效时不要重新提交(重复扣费),先用 poll_task / resume_task 找回原任务。
相关链接
- 管理后台(注册/获取Key/充值):
https://portal.aixllaw.com/app/settings - MCP 安装配置指南:
references/mcp-setup-guide.md - 合同收集与立场判断实战模式:
references/review-patterns.md - 免费本地审查 / Word 批注修订版:使用「合同风险」技能(
xiaolv-contract-review) - 起草合同 / 其他法律文书:使用
draft_document(xiaolv-legaldoc 技能) - 查询具体法条:使用
search_law(xiaolv-law-search 技能)
版权与免责声明
本技能由小律同学AI 提供,版权归广东小律同学人工智能科技有限公司所有。
审查报告仅供参考,不构成正式法律意见;重大交易请咨询执业律师。