# 法大大专业合同信息抽取

> 合同信息提取专用 skill。仅当用户要求从合同原文中抽取结构化字段或履约事件时使用，包括但不限于： - 抽取甲乙方、金额、期限、违约责任、争议解决等合同基本信息 - 抽取付款节点、收款节点、交付安排、验收节点、质量保证等履约事件 - 用户提供一组自定义字段，要求按字段清单提取合同内容 不作为合同摘要、合同审查、风险评估、合同起草或一般法律问答。

- Skill: `ahang1598/skill-206` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add ahang1598/skill-206`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ahang1598/skill-206/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ahang1598 (https://skillmd.com/u/ahang1598)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/ahang1598/skill-206

---


# 合同信息提取 Skill

本 skill 从合同原文中提取结构化信息。

系统默认字段始终可用；用户可在本轮对话中临时指定额外字段一并提取，但自定义字段仅在当前窗口有效，不做跨会话保存。

---

## Step 1：判断提取模式

两种提取模式可单独或同时运行：

| 模式             | 适用场景                             | 输出结构            |
| ---------------- | ------------------------------------ | ------------------- |
| **基本信息抽取** | 静态字段：甲乙方、金额、日期、条款等 | 扁平 key-value JSON |
| **履约信息抽取** | 动态事件：付款、收款、验收、交付等   | 结构化事件数组 JSON |

判断逻辑：

- 用户明确说"履约""付款节点""验收节点""交付安排""质保节点" → 履约信息模式
- 用户说"合同要素""甲乙方""合同金额""解除条款"等静态字段 → 基本信息模式
- 用户提供的自定义字段同时包含静态字段和事件节点 → 同时运行两种模式
- 不确定时只问一句：`您这次要提取基本信息字段、履约事件节点，还是两者都要？`

路由边界：

- 如果用户要的是合同摘要、合同审查、风险评估、合同起草或一般法律问答，不走本 skill

---

## Step 2：确认字段来源

系统默认字段见 `references/default-keywords.md`。

字段使用规则：

1. 用户未指定额外字段 → 直接使用系统默认字段，不追问
2. 用户本轮提供了额外字段 → 默认使用"系统默认字段 + 本轮字段"一并提取
3. 用户明确说"只提这些字段" → 仅使用用户本轮提供的字段，不带系统默认字段

自定义字段仅在当前窗口有效，不做跨会话保存。

---

## Step 3：读取合同文本

根据文件类型获取可提取的合同原文：

- 标准 PDF / 扫描件 / Word：优先调用当前环境可用的读取能力，拿到可复制的正文文本
  - 标准pdf文件自动使用自身能力读取。
  - 扫描件可用"fadada-scanned-ocr"
  - word文件读取先使用自身能力，如果获得的信息为明显的空白、残缺，再检索有无其他读取方式或能力。

- 若当前环境没有稳定的读取能力，要求用户直接提供合同正文或已识别文本
- 若合同引用了附件，但附件原文未提供，则不得展开附件内容，只能基于已提供文本抽取

读取完成后，将正文作为 `fileContent` 传入下一步。无法读取时告知用户并建议：

- 转为标准 PDF
- 提供 OCR 后文本
- 或直接粘贴需要抽取的合同片段

---

## Step 4：执行提取

### 外层边界

以下边界由本 skill 控制，`references/prompts.md` 中的已验证提示词保持为核心执行内核：

- **基本信息模式**：严格抽取，不做语义补全、事实推断或格式改写；除提示词中已明确允许的规则外，不新增推断行为
- **履约信息模式**：允许有限归一化，用于结构化输出，例如金额转阿拉伯数字、日期标准化、履约事件标准名称归一、履约类型枚举映射
- **履约信息模式禁止补造事实**：不得凭相邻条款、行业常识、未提供的附件、或上下文猜测补齐缺失事实
- **附件边界**：只有当附件原文已在本次输入中提供时，才允许展开附件内容；否则保留主合同原句或按提示词规则返回空值

### 模式 A：基本信息抽取

调用见 `references/prompts.md` → `[基本信息抽取 System Prompt]`，user prompt 格式：

```text
合同信息要点:
{{extractKeyWords}}

合同内容如下：
{{fileContent}}
```

核心约束：

- 所有 value 必须逐字逐句与原文一致，含空格、换行、标点
- 禁止推断、金额大小写互转、文字补全
- 合同中 `/` 或 `／` 表示空缺 → 输出 `"无"`
- 仅输出纯 JSON，key 原样保留，无法提取的字段输出 `"无"`

### 模式 B：履约信息抽取

调用见 `references/prompts.md` → `[履约信息抽取 System Prompt]`，user prompt 格式：

```text
履约抽取项如下：
{{extractKeyWords}}

合同原文如下：
{{fileContent}}
```

核心约束：

- 每个履约事件独立为对象，全部存入数组；单个事件也用数组
- 金额可按提示词规则转为阿拉伯数字
- 日期按提示词规则格式化；相对日期保持 `null`
- 履约人只取合同中明确指定的自然人姓名
- `履约类型` 枚举：付款 / 收款 / 交付 / 质量保证 / 验收 / 其他
- `对应的完整合同原文段落` 必须直接来自已提供原文，完整保留原文含换行，用数组存储

---

## 异常处理

| 情况                     | 处理方式                                                     |
| ------------------------ | ------------------------------------------------------------ |
| 合同文件无法读取         | 提示检查格式，建议转为标准 PDF、提供 OCR 文本，或直接粘贴正文 |
| 合同文本不完整 / 缺页    | 标注受影响字段为"文本缺失，无法提取"，其余正常输出           |
| 要点格式不规范           | 尝试解析意图；若有歧义，只追问一次再提取                     |
| 提取 JSON 无法解析       | 去除 ``` 标记后重新生成，最多重试一次                        |
| 合同为非中文             | 告知主要适配中文合同；英文合同可尝试，但稳定性较低           |

---

## 输出交付

支持三种输出方式，可按用户需求选择：

| 方式 | 触发条件 | 格式说明 |
| ---- | -------- | -------- |
| **对话窗口展示** | 默认 / 用户未指定 | 以 Markdown 表格呈现，基本信息为两列表格（字段名 / 提取内容），履约信息每行为一个事件 |
| **JSON** | 用户说"输出 JSON""给我 JSON 格式" | 输出纯 JSON，key 为字段名，value 为提取内容 |
| **Markdown 文件** | 用户说"保存为 md""导出 Markdown" | 与对话展示格式相同，保存为 `.md` 文件 |
| **Word 文件** | 用户说"输出 Word""保存为 docx""下载文档" | 将结果转为 Word 表格格式，保存为 `.docx` 文件 |

格式转换规则：

- **Markdown 表格（对话 / .md 文件）**：基本信息以两列表格输出（字段名 / 提取内容）；履约信息以多列表格输出，每行为一个履约事件
- **Word（.docx）**：结构与 Markdown 相同，使用标准表格样式；文件名默认为 `合同提取结果_{{合同名称}}.docx`，无法获取合同名称时命名为 `合同提取结果.docx`

执行限制：

- 文件输出仅在当前环境明确支持写文件时执行
- 若环境不支持文件写入，先在对话中返回 JSON 结果，并告知用户当前无法导出文件

