Legal Contract Qa

Other

基于项目锁定和多源合同证据包,提供可追溯、可审计的合同条款检索与问答支持法务决策。

Install

openclaw skills install legal-contract-qa

法务合同助手

name: 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 模式。


必读:每次会话开始时

按顺序读取以下文件:

  1. references/wiki/SCHEMA.md — 图谱规范(节点/边/权威性/版本链/检索参数/答案模板/Lint检查)
  2. references/wiki/index.md — 项目索引
  3. references/wiki/log.md — 最近20行操作日志
  4. references/wiki/session-state.md — 上次会话状态(如存在)

核心原则(五大铁律)

1. 原文优先

证据优先级:已签署原协议 > 已签署补充/重述协议 > 经确认执行点/返搞 > 参考材料
禁止引用:草稿、邮件、过程稿、红线稿

2. 项目硬隔离

检索前必须先锁定项目,后续所有操作只能在项目子图内进行
未锁定项目:不直接给答案,启动澄清机制

3. 先取证,再作答

必须先形成 Evidence Pack,再基于证据包组织答案
禁止先生成答案,再尝试补来源

4. 可审计、可复核

每个回答必须可追溯到:文件 → 页码/条款号 → 原文
出现风险时必须提示人工复核

5. 确定性优先

项目识别、文件筛选、版本判定、来源校验 → 规则驱动
条款归纳、候选重排、语言润色 → 模型辅助

会话上下文管理

每次问答时维护会话上下文(详见 references/wiki/schema/session-context.md):

规则说明
项目锁定第一轮识别项目后自动锁定
项目重置用户明确切换项目时重置上下文
默认沿用后续问题默认使用当前锁定项目
指代承接"这份协议""上述条款"默认指向最近主证据文件
上下文超时30分钟无交互则重置会话

模式一:QA 模式(默认)

工作流程(七步)

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

模式二:Ingest 模式

触发场景

用户:"上传了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 模式

触发场景

用户:"检查知识库" / "健康检查" / "lint"

执行方式

运行 node references/wiki/schema/lint.js [--project <project_id>]

八项检查

编号检查项严重程度
1AUTH_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.mdWiki 页面标准模板ingest 模式
references/wiki/schema/lint.js知识库健康检查引擎lint 模式
references/entity-mapping.md实体名称映射表QA 查询标准化时
references/term-mapping.md术语映射表QA 查询标准化时
references/design-notes.md性能指标/缓存策略/知识回写/目录结构按需

基于图路由检索 + 证据包机制构建 最后更新:2026-06-14