Install
openclaw skills install legal-contract-qa基于项目锁定和多源合同证据包,提供可追溯、可审计的合同条款检索与问答支持法务决策。
openclaw skills install legal-contract-qaname: legal-contract-qa description: 面向法务场景的合同AI问答助手。基于图路由检索与证据包机制,实现可审计、可追溯、可复核的合同条款检索与问答。 version: 1.0.0 author: gptplusplus license: MIT
category: legal
tags: [合同, 法务, license-in, 条款检索, 协议分析, 知识图谱, 图路由]
config:
- key: wiki.path
description: 知识库路径(相对于技能目录)
default: "references/wiki"
- key: skill.mode
description: 技能模式
options: [qa, ingest, lint]
default: "qa"
当用户询问以下类型问题时激活:
| 类型 | 关键词 |
|---|---|
| 合同条款 | 付款/终止/许可/违约/保密/补偿 |
| 项目查询 | 项目名/药品名/合作方 |
| 条款分析 | 权利/义务/责任/金额/日期/区域 |
| 版本确认 | 有效版本/补充协议/原协议 |
| 事实核查 | 主体/许可/适应症/里程碑 |
当用户上传合同文件并要求加入知识库时,切换到 ingest 模式。
按顺序读取以下文件:
references/wiki/SCHEMA.md — 图谱规范(节点/边/权威性/版本链/检索参数/答案模板/Lint检查)references/wiki/index.md — 项目索引references/wiki/log.md — 最近20行操作日志references/wiki/session-state.md — 上次会话状态(如存在)证据优先级:已签署原协议 > 已签署补充/重述协议 > 经确认执行点/返搞 > 参考材料
禁止引用:草稿、邮件、过程稿、红线稿
检索前必须先锁定项目,后续所有操作只能在项目子图内进行
未锁定项目:不直接给答案,启动澄清机制
必须先形成 Evidence Pack,再基于证据包组织答案
禁止先生成答案,再尝试补来源
每个回答必须可追溯到:文件 → 页码/条款号 → 原文
出现风险时必须提示人工复核
项目识别、文件筛选、版本判定、来源校验 → 规则驱动
条款归纳、候选重排、语言润色 → 模型辅助
每次问答时维护会话上下文(详见 references/wiki/schema/session-context.md):
| 规则 | 说明 |
|---|---|
| 项目锁定 | 第一轮识别项目后自动锁定 |
| 项目重置 | 用户明确切换项目时重置上下文 |
| 默认沿用 | 后续问题默认使用当前锁定项目 |
| 指代承接 | "这份协议""上述条款"默认指向最近主证据文件 |
| 上下文超时 | 30分钟无交互则重置会话 |
Step 1: 会话上下文检查
· 读取 references/wiki/session-state.md(如存在)
· 如有锁定项目 → 继承上下文,跳到 Step 3
· 如无 → 执行 Step 2
Step 2: 项目锁定(规则驱动)⭐
· 从用户输入中提取项目名/药品名/合作方
· 读取 references/wiki/index.md,匹配项目
· 读取 projects/<project_id>/meta.md,确认项目存在
· 锁定项目 → 更新 session-state.md
· 未识别到项目 → 询问用户:"请问您想查询哪个项目?"
Step 3: 查询标准化
· 读取 references/entity-mapping.md,将简称映射为标准名
例:恒瑞 → Jiangsu Hengrui Pharmaceuticals Co., Ltd.
· 读取 references/term-mapping.md,将业务黑话映射为专业术语
例:分手费 → Termination Compensation
· 生成扩展检索词(标准名 + 简称 + 别名)
Step 4: 文件候选集筛选(规则驱动)
· 读取 projects/<project_id>/meta.md 中的"关联文档"列表
· 逐一读取候选文档的 YAML front matter,检查:
- is_current_valid = true → 保留;false → 排除
- authority_level = AUTH_X → 排除
· 按权威性排序候选集:AUTH_H 优先 → AUTH_M 次之 → AUTH_L 慎用
Step 5: 证据检索 ⭐
· 遍历候选文档,逐条读取条款内容,匹配用户查询:
- 优先匹配 FactPoint 表格中的 fact_type 和 fact_value
- 其次匹配条款正文中的关键词
- 匹配 Entity 页面中的实体名称和别名
· 对每个命中条款,检查其 WikiLinks:
- 如引用了定义条款 → 追溯读取定义内容
- 如引用了其他条款 → 一并纳入候选证据
· 按权威性权重排序证据:AUTH_H(1.0) > AUTH_M(1.5) > AUTH_L(2.0)
· 惩罚仅匹配文档摘要的弱证据
Step 6: 证据包组装
· 主证据条款(条款号 + 页码 + 原文摘录)
· 定义条款回溯(通过 WikiLinks [[#Article X.X]] 追溯)
· 版本链说明(读取 replaced_by 字段,说明当前有效版本)
· 置信度评估:多条 AUTH_H 证据一致 → 高;仅 AUTH_L → 低
· 风险标识:版本冲突/证据不足/跨项目 → 标注
Step 7: 受控回答生成
· 根据问题类型选择模板(4种模板见 SCHEMA.md 第九节):
- 事实定位 → 模板一
- 条款汇总 → 模板二
- 复杂判断 → 模板三
- 比较判断 → 模板四
· 低置信时提示人工复核
· 回答末尾附状态摘要:📍 项目=XXX(锁定) | 文档=XXX | 条款=X.X
· 更新 session-state.md
用户:"上传了xxx合同,请加入到知识库"
用户:"这是新项目协议,请结构化解读"
用户:"上传了补充协议,帮我更新到知识库"
Step 1: 读取原始文件 → 识别文件类型(主协议/补充协议/执行点/邮件/草稿)
Step 2: 判断文件权威性 ⭐
· AUTH_H:已签署主协议/补充协议/重述协议/附件
· AUTH_M:经确认执行点/返搞/交易摘要
· AUTH_L:分析报告/尽调材料/内部说明
· AUTH_X:草稿/谈判稿/红线稿/邮件/交接文件 → 拒绝入库,告知用户原因
Step 3: 结构化解析
· 条款切分(文档级/章节级/条款级/子条款级)
· 实体识别(公司/药品/适应症/区域/靶点)
· 关系抽取(BELONGS_TO/AMENDS/REFERENCES)
· FactPoint 抽取 + Definition 抽取
Step 4: 构建图谱节点
· 读取 references/wiki/schema/page-templates.md,按模板创建节点
· 写入文件:
- projects/<project_id>/meta.md(Project 节点)
- projects/<project_id>/documents/<doc_id>.md(Document 节点,含 Clause/FactPoint/Definition)
- entities/<type>/<entity_id>.md(Entity 节点)
· 在文档中使用 WikiLinks [[...]] 建立节点间关联
Step 5: 文件归档 → 将文件从 raw/ 移入 projects/<project_id>/raw/
Step 6: 更新导航
· 更新 references/wiki/index.md(添加项目条目)
· 更新 references/wiki/log.md(记录操作日志)
· 更新 references/entity-mapping.md(如有新实体)
· 更新 references/term-mapping.md(如有新术语)
❌ AUTH_X 文件(草稿/邮件/过程稿/红线稿/交接文件)
❌ 已失效版本(原版本被替代后)
❌ 无项目归属的孤立文档
用户:"检查知识库" / "健康检查" / "lint"
运行 node references/wiki/schema/lint.js [--project <project_id>]
| 编号 | 检查项 | 严重程度 |
|---|---|---|
| 1 | AUTH_X文件被引用 | 🔴 高 |
| 2 | 跨项目混合检索 | 🔴 高 |
| 3 | 版本冲突 | 🟡 中 |
| 4 | 孤立节点(无连接) | 🟡 中 |
| 5 | 实体歧义未消歧 | 🟡 中 |
| 6 | 实体别名缺失 | 🟡 中 |
| 7 | 定义条款未回溯 | 🟢 低 |
| 8 | 索引不一致 | 🟢 低 |
| 错误 | 正确做法 |
|---|---|
| 引用 AUTH_X 文件 | 只引用 AUTH_H/M/L 文件 |
| 跨项目混合检索 | 必须先锁定项目 |
| 先生成答案后补来源 | 先形成 Evidence Pack |
| 忽略版本关系 | 检查 is_current_valid |
| 不核实条款原文 | 必须附条款号+页码 |
| 忽略定义条款 | 通过 WikiLinks 追溯定义 |
| 不提示低置信 | 证据不足时标注复核建议 |
| 文件 | 说明 | 读取时机 |
|---|---|---|
references/wiki/SCHEMA.md | 图谱节点/边/权威性/版本链/检索参数/答案模板/Lint检查 | 每次会话必读 |
references/wiki/index.md | 项目索引 | 每次会话必读 |
references/wiki/log.md | 操作日志 | 每次会话必读 |
references/wiki/session-state.md | 上次会话状态 | 每次会话启动时 |
references/wiki/schema/session-context.md | 会话状态管理规范 | 按需 |
references/wiki/schema/page-templates.md | Wiki 页面标准模板 | ingest 模式 |
references/wiki/schema/lint.js | 知识库健康检查引擎 | lint 模式 |
references/entity-mapping.md | 实体名称映射表 | QA 查询标准化时 |
references/term-mapping.md | 术语映射表 | QA 查询标准化时 |
references/design-notes.md | 性能指标/缓存策略/知识回写/目录结构 | 按需 |
基于图路由检索 + 证据包机制构建 最后更新:2026-06-14