Skip to content
Back to skills

Case Retrieval Report Fast

ASecurity

中国大陆地区法院类案快速检索与《案件检索报告》(DOCX)生成技能。以案件五项要点(案由/法律关系、争议焦点、关键事实、我方诉请与诉讼地位、请求权基础法条)为检索锚点,经一次四问确认即开工(其中**检索地域范围**与**裁判时间范围**为强制选择题,默认范围为「2021年1月1日以后裁判的浙江省范围内的法院案例」,用户点选默认后须回显该范围提示);按**请求权基础、法律关系、案件事实三要素**判定高匹配——用户**指定**检索特定结果的案例时结果相似度计入评分(四要素满分 10 分),用户**未指定**时结果相似度不作为高匹配考虑因素(三要素满分 8 分);r1 判定须**核对法条版本与时间效力**,援引已失效旧法条者不得给满分;以语义向量检索为主召回、精确结构检索为条件兜底,本地脚本加权打分后按「得分率 > 法院层级 > 审判程序 > 裁判日期」排序,并检测**同院同日同标题的重复入库**案件、疑似重复者不占入报名额;截取匹配度最高的 5–10 例类案,逐案调详情核验案号并摘录判词原文,最后直接输出含页脚页码的 DOCX 报告(默认保存至桌面)。全流程人工确认 1 次、检索类调...

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 25, 2026
ai-agentspythongobashaws

Works with

  • mcp

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 25, 2026

npx -y skills add CSlawyer1985/legal-skillhub --skill case-retrieval-report-fast --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Case Retrieval Report Fast?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Case Retrieval Report Fast
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/cslawyer1985-case-retrieval-report-fast/badge)](https://www.skillsdirectory.com/skills/cslawyer1985-case-retrieval-report-fast)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
title: "(快速版)案例检索报告Plus"
summary: "以最少的交互轮次与检索调用,按请求权基础、法律关系、案件事实三要素检索匹配度最高的 5–10 个类案,直接生成含页码的 DOCX 版《案件检索报告》"
name: "(快速版)案例检索报告Plus"
name_en: "case retrieval report fast"
slug: "case-retrieval-report-fast"
displayName: "(快速版)案例检索报告Plus"
description: "中国大陆地区法院类案快速检索与《案件检索报告》(DOCX)生成技能。以案件五项要点(案由/法律关系、争议焦点、关键事实、我方诉请与诉讼地位、请求权基础法条)为检索锚点,经一次四问确认即开工(其中**检索地域范围**与**裁判时间范围**为强制选择题,默认范围为「2021年1月1日以后裁判的浙江省范围内的法院案例」,用户点选默认后须回显该范围提示);按**请求权基础、法律关系、案件事实三要素**判定高匹配——用户**指定**检索特定结果的案例时结果相似度计入评分(四要素满分 10 分),用户**未指定**时结果相似度不作为高匹配考虑因素(三要素满分 8 分);r1 判定须**核对法条版本与时间效力**,援引已失效旧法条者不得给满分;以语义向量检索为主召回、精确结构检索为条件兜底,本地脚本加权打分后按「得分率 > 法院层级 > 审判程序 > 裁判日期」排序,并检测**同院同日同标题的重复入库**案件、疑似重复者不占入报名额;截取匹配度最高的 5–10 例类案,逐案调详情核验案号并摘录判词原文,最后直接输出含页脚页码的 DOCX 报告(默认保存至桌面)。全流程人工确认 1 次、检索类调用控制在 2 次召回 + ≤10 次详情以内,报告阶段检索冻结。未指定结果时三要素高匹配而结果相反者亦会入报(逐例标注结果方向),指定结果时结果相反者一律剔除;报告内以两处固定声明披露「未设不利先例定向检索路径」的局限。当用户要求「快速检索类似案例」「找几个正向案例」「快速版案例检索报告」「检索 5 到 10 个类案并出报告」「出一份类案检索报告 docx」时使用。需要四象限归位、反向案例定向检索、补充召回多轮迭代或 14 分制硬软条件精判时,应使用完整版技能「案例检索报告Plus」而非本技能。基于华宇元典法律数据 MCP。"
version: "1.4.1"
author: "Skill作者:浙江金道律师事务所 龚家勇律师(微信:13967182079)"
created: "2026-09-22"
updated: "2026-09-23"
agent_created: true
tags: ["法律检索", "案例检索", "类案匹配", "快速版", "华宇元典", "DOCX", "litigation", "中国法"]
---

# (快速版)案例检索报告Plus

**Skill作者:浙江金道律师事务所 龚家勇律师(微信:13967182079)**

> 本文件约 300 行,可一次性读完。读完即开工,无需另读其他说明文件。

## 技能定位

**目标:用最少的轮次与调用,按「请求权基础 + 法律关系 + 案件事实」三要素找到与用户案件高匹配的 5–10 个类案(须有真实案号),直接交付一份含页码的 DOCX《案件检索报告》。**

与完整版「案例检索报告Plus」的分工:

| 维度 | 本技能(快速版) | 完整版 |
|---|---|---|
| 适用场景 | 时间紧、只需正向先例支撑、需快速交付 | 重大疑难案件、需四象限与反向先例 |
| 人工确认 | **1 次** | 4 次以上 |
| 召回路径 | 语义检索为主 + 精确结构条件兜底 | 三路并行主召回 + 补充召回 |
| 评分模型 | **三要素加权**(请求权基础/法律关系/案件事实)+ 指定结果时计入结果相似度 | 5 硬 4 软,14 分制 |
| 入报范围 | 高匹配 Top 5–10 例(未指定结果时含结果相反者,逐例标注方向) | 仅 A 级 + 反向案例简讯 |
| 交付物 | **DOCX(直出,含页码)** | Markdown 单一文档,再询问是否转 DOCX |

**减的是编排与轮次,不是底线。** 案号真实、判词原文、法条核验、风险披露四项要求不因"快速"而放松。

---

## 前置说明(必须首先执行)

### 0.1 依赖

⚠️ 本技能依赖「华宇元典法律数据」MCP 连接器。请先确认 WorkBuddy → 连接器 中该 MCP 已连接;未连接则无法运行,须当场告知用户并暂停。

### 0.2 余额预检(强制,第零步之前)

执行一次 `mcp__yuandian-mcp__yuandian_get_user_balance`(非检索类,不消耗额度),并换算详情精判预算:

```
DETAIL_BUDGET = min(10, floor((余额 − 20) / UNIT))    # 20 点为两路召回预留
```

`UNIT` 取**本轮实测单价**(见下方实测记录;历史值 10–16 点/次)。预算按"开工前余额 − 收工后复查"的方式核算,不得照抄历史值。

| 余额 | 处置 |
|---|---|
| 0 | **不得开始检索**,当场告知用户余额为 0、请充值后再运行。严禁先召回后报错 |
| 20–100 | 正常执行,`DETAIL_BUDGET` 按公式取值(可能低至 1–8),**当场告知用户**本轮仅够精判 N 例,案例数可能少于 10 例 |
| > 120 | 按上限 10 执行 |

> **实测一(2026-09-22):** 语义检索 1 次 + 案例详情 1 次 + 法条核验 1 次 = **30 点**(余额 22,765 → 22,735),折算约 10 点/次。
>
> **实测二(2026-09-23):** 法条检索 2 次 + 案例详情 2 次 = **65 点**(余额 22,735 → 22,670),折算约 16 点/次。
>
> ⚠️ **单价并非固定值**:两次实测相差 60%,可能与返回体量或接口计费口径有关。**必须每轮开工前实测余额、收工后复查**,并在报告中如实记录本轮消耗;**不得沿用历史单价推算预算**。
>
> **真实瓶颈是上下文,不是额度。** 语义检索 `limit=30` 实测返回约 4.5 万字,案例详情单例约 1.2 万字。故详情条数上限由上下文承受力决定(默认 5 例),而非额度。

### 0.3 调用预算上限(硬约束)

| 环节 | 上限 |
|---|---|
| 语义向量检索 | 1 次(兜底可 +1) |
| 精确结构检索 | 0–1 次(仅在候选不足时) |
| 案例详情 | **默认 5 例**(区间 3–8),硬上限 `DETAIL_BUDGET` ≤10 |
| 法条核验 | ≤3 次 |
| **报告阶段检索类调用** | **恒为 0(检索冻结)** |

---

## 工作流总览

| 步骤 | 名称 | 产出 |
|---|---|---|
| 第一步 | 案件要点录入与**唯一一次四问确认**(要点 / 地域范围 / 时间范围 / 结果指向) | `_work/case_brief.json` |
| 第二步 | 双路召回(主 + 条件兜底) | `_work/_raw/*.json`、`_work/_candidates.json` |
| 第三步 | **高匹配三要素评分**(+指定结果时计入结果相似度)、分级与排序 | `_work/_judged.json`、`_work/_scored.json` |
| 第四步 | 截取 5–10 例 → 调详情核案号、摘判词 | `_work/_raw/detail_*.json`、`_work/_details.json` |
| 第五步 | 生成 DOCX(检索冻结,零检索调用) | `_work/report.json` → 桌面 `.docx` |

工作目录约定:全部中间文件写入 **当前会话工作目录下的 `_work/`**(轻量落盘,便于复核与补跑)。

---

## 第一步:案件要点录入与唯一一次确认

### 1.1 五项要素(从用户输入提取,缺项以合理默认值补齐并标注"[待确认]")

| 编号 | 要素 | 说明 |
|---|---|---|
| E1 | 案由与法律关系 | 如"买卖合同纠纷/价款给付请求权" |
| E2 | 争议焦点 | **最关键**,须写成中性客观陈述,80–150 字 |
| E3 | 关键事实 | 时间、金额、履行情况、违约形态等 |
| E4 | 我方诉请与诉讼地位 | 原告/被告/上诉人,请求内容 |
| E5 | 请求权基础法条 | 如"《民法典》第577条";无则填"[待确认]" |

**中性化要求(强制):** E2 的表述不得包含"我方胜诉""支持我方""应获赔偿"等结论性措辞——语义检索会据此偏置,导致召回结果失真。应写"……情形下,守约方主张违约方继续履行并赔偿损失的,法院如何认定"。

### 1.2 唯一一次确认(AskUserQuestion,**四问一气呵成**)

**必须且只能在这次调用中主动向用户提出下列四问**(一次 `AskUserQuestion` 调用,最多 4 个问题)。其中**第 2 问(地域范围)与第 3 问(时间范围)为强制项,不得以"按默认执行"为由省略、不得退化为纯文字提问**。

| # | header | 问题 | 选项 |
|---|---|---|---|
| 1 | 案件要点 | 以上案件要点(案由/争议焦点/关键事实/诉请与地位/请求权基础)是否准确? | ① 准确,按此检索(推荐) ② 需修正(请在输入框写明) ③ 缺项由你按合理默认值补齐 |
| 2 | **地域范围** | 本次检索的法院地域范围? | ① **按默认:浙江省(推荐)** ② 全国 ③ 长三角(浙江/上海/江苏/安徽) ④ 指定其他省份(请在输入框写明) |
| 3 | **时间范围** | 本次检索的裁判时间范围? | ① **按默认:2021年1月1日以后裁判(推荐)** ② 近三年 ③ 2024年1月1日以后(新公司法施行后) ④ 不限制 |
| 4 | **结果指向** | 本次是否指定检索**特定裁判结果**的案例? | ① **不指定(推荐)** ② 指定:支持我方主张的结果 ③ 指定:驳回/否定我方主张的结果 ④ 指定其他特定结果(请在输入框写明) |

**第 4 问决定评分模型,务必问准:** 选① → `unspecified`,按请求权基础/法律关系/案件事实**三要素**匹配,结果相似度不作为考虑因素;选②③④ → `specified`,结果相似度计入评分,与指定结果相反者将被剔除。

**选项 description 的写法(照抄,勿改写):**

- 第 2 问选项① description:`"默认范围:浙江省范围内的法院案例(本技能默认设置,选择此项即按浙江检索)"`
- 第 3 问选项① description:`"默认范围:2021年1月1日以后裁判的案例(本技能默认设置)"`
- 第 4 问选项① description:`"不指定结果:按请求权基础、法律关系、案件事实三要素匹配,裁判结果不作为评分项(三要素高匹配而结果相反者亦会入报,报告中标注结果方向)"`
- 第 4 问选项② description:`"指定结果:结果相似度计入评分,与指定结果相反的案例将被剔除"`

**用户选择"默认"后的强制回显(不得省略):**

> 用户点选默认后,须在回复中明确提示一句:**「本次检索范围为:2021年1月1日以后裁判的浙江省范围内的法院案例。」** 再开工。

**默认参数总表(用户未改即从默认执行):**

| 参数 | 默认值 |
|---|---|
| **地域范围** | **浙江省**(`province = "浙江"`;路径② 用 `["浙江"]`) |
| **时间范围** | **2021-01-01 至检索当日**(`decision_date_start = "2021-01-01"`) |
| 文书类型 | 判决书(编码 `1`) |
| 案件类别 | 按 E1 判定(民事/刑事/行政等) |
| 是否限权威案例 | 否(普通 + 权威) |
| 目标案例数 | 8 例入报(区间 5–10);详情 5 例 |

> **地域与时间的取舍提示:** 若按默认(浙江 + 2021-01-01 起)召回的有效候选不足 8 例,须**先告知用户**"浙江省范围内样本不足,是否放宽至全国或延长时间范围",经用户在输入框或后续选择确认后再放宽;**不得擅自放宽**。放宽记录须写入报告第一部分。

确认结果须落盘 `_work/case_brief.json`,字段:`e1`–`e5`(五项要素)、`province`(默认 `"浙江"`)、`date_start`(默认 `"2021-01-01"`)、`date_end`、`result_mode`(`"unspecified"` 或 `"specified"`,据第 4 问)、`result_target`(指定结果的具体表述,未指定则为空串)、`target_n`(默认 8)、`detail_n`(默认 5)、`relaxed`(是否经用户确认后放宽,默认 false)、`relaxed_note`。第二、三步起一律读该文件取参数(含 `--result-mode`),不得临时臆定。

用户确认后立即开工,**此后不再就流程发问**,直至交付 DOCX。

---

## 第二步:双路召回

### 2.1 路径① 语义向量检索(主召回,必做)

工具:`mcp__yuandian-mcp__yuandian_case_vector_search__v2`

```json
{
  "query": "<E2 中性化争议焦点 + E3 关键事实,80–150 字>",
  "limit": 15,
  "rewrite_enabled": false,
  "case_document_filter": {
    "case_category": "民事案件",
    "province": "浙江",
    "cause_of_action": ["买卖合同纠纷"],
    "document_type": ["1"],
    "decision_date_start": "2021-01-01",
    "decision_date_end": "<检索当日,格式 yyyy-MM-dd>"
  }
}
```

字段要点:**`document_type` 用编码**(`1`判决书/`2`裁定书/`3`调解书/`4`决定书);`province`/`city`/`court_level`(基层/中级/高级/最高)不传即不限;`authoritative_only` 默认 false(普通+权威)。

### 2.2 路径② 精确结构检索(条件兜底,非默认)

**触发条件(满足任一才发):** 路径① 有效候选(去重后、案号完整者)< 8 例;或用户指定了必须援引的特定法条。否则不发,以免白花额度。

工具:`mcp__yuandian-mcp__yuandian_rh_ptal_search__v2`

```json
{
  "keywords": "<核心事实关键词,空格分隔>",
  "search_mode": "and",
  "cause_of_action": ["买卖合同纠纷"],
  "cited_articles": ["中华人民共和国民法典第五百七十七条"],
  "document_type": ["判决书"],
  "province": ["浙江"],
  "decision_date_start": "2021-01-01",
  "decision_date_end": "<检索当日,格式 yyyy-MM-dd>",
  "top_k": 20
}
```

⚠️ **两个接口的同名字段取值不同,务必区分:**

| 字段 | 路径① `case_vector_search` | 路径② `ptal_search` |
|---|---|---|
| `document_type` | 编码字符串 `"1"`/`"2"`/`"3"`/`"4"` | 文字 `判决书`/`裁定书`/`调解书`/`决定书` |
| `province` | 单个字符串 `"浙江"` | 数组 `["浙江"]` |
| `cause_of_action` | 数组(完整案由名) | 数组(完整案由名) |
| 条数参数 | `limit`(默认 45) | `top_k`(默认 10,最大 50) |

⚠️ `cited_articles` 每元素只能含**一个**法条,编号必须为**中文数字**("第五百七十七条"),否则检索失败。请求体不可为空。

### 2.2.1 接口实测要点(2026-09-22 真实检索验证,务必照做)

| 事项 | 实测结论 |
|---|---|
| 返回体量 | `limit=30` 实测约 4.5 万字;**默认取 15** 已足够覆盖 5–10 例入报需求 |
| 语义 `score` | 同批 30 例实测仅分布于 **1.0414–1.0719**,区分度极低,**不得用作排序或筛选依据**,仅作并列展示 |
| 案由字段 | 返回的 `cause_of_action` 常为**编码**(如 `"9565"`),**案由文字在 `anyou` 字段**;落盘时取 `anyou`,脚本已自动跳过纯数字编码 |
| 日期字段 | 召回接口为整型 `20260126`,详情接口为中文 `"2025年07月24日"`;脚本已双向归一,落盘统一 `YYYY-MM-DD` |
| `city` 字段 | 不可靠(实测返回"一中院"等非城市值),**报告中的法院信息一律取 `court_name`** |
| 案例库标识 | `db` 字段为"精选案例库",但详情返回 `case_kind` 为"普通案例",**详情调用不要传 `case_kind`**,避免误筛 |

### 2.3 落盘与候选池构建

1. 两路原始返回**原样落盘** `_work/_raw/vector_<时间戳>.json`、`_work/_raw/ptal_<时间戳>.json`(不得在上下文中二次翻原文)。
2. 解析去重(按 `case_number` 归一:去空格、全半角统一),剔除无案号者,产出 `_work/_candidates.json`,每条保留:`case_number`、`case_id`、`court`、`decision_date`、`document_type`、`cause`、`score`(官方语义相关度)、`title`、`summary`(200 字内摘要)。
3. 输出计数自检:召回总数 → 去重后 → 案号完整数。若案号完整数 < 5,须当场告知用户并说明已放宽/未放宽的条件。

---

## 第三步:高匹配三要素评分(+条件计入结果相似度)与排序

### 3.0 何谓"高匹配"(用户口径,2026-09-22 确定)

**「高匹配」=下列三要素同时高匹配:**

| 要素 | 权重 | 判分口径 |
|---|---|---|
| **r1 请求权基础高匹配** | **3** | 该案据以裁判的请求权规范(法条、规范群)与本案 E5 同一,或属同一请求权基础的适用情形 |
| **r2 法律关系高匹配** | **3** | 法律关系性质、案由归类与本案 E1 相同;**含争点同一性**——法院归纳的争议焦点所指向的法律关系争点与本案 E2 实质相同 |
| **r3 案件事实高匹配** | **2** | 关键事实结构与本案 E3 相近:主体身份、交易/任职结构、履行或违约形态、时间线与金额量级 |

**第四要素为条件要素:**

| 要素 | 权重 | 是否计入 |
|---|---|---|
| **r4 结果相似度** | **2** | **用户指定检索特定结果的案例时计入**;用户未指定时**不计入**,且不影响入报 |

> ⚠️ **结果相似度是否计入,取决于用户在第一步第 4 问的选择,不取决于模型是否填写了 r4。**
> 用户未指定结果时,即便某案裁判结果相反,只要 r1/r2/r3 高匹配,仍应入报——这是用户口径,不得自行加设门槛。此时报告须**标注每例裁判结果方向**(脚本 `result_note` 字段),并在风险提示中说明该口径。

### 3.1 两种模式、满分与分级

| 模式 | 计入要素 | 满分 | 说明 |
|---|---|---|---|
| `unspecified`(**默认**) | r1+r2+r3 | **8** | 结果相似度不作为高匹配考虑因素 |
| `specified` | r1+r2+r3+r4 | **10** | 用户指定了特定结果,结果相似度计入 |

**分级一律按得分率**(`match_rate`,两种模式可比):

- **A 级(高匹配)≥ 80%**  **B 级(可用)≥ 60%**  **C 级(不入报)< 60%**

**入报硬门槛(三要素恒定):** r1 ≥ 1.5 **且** r2 ≥ 1.5 **且** r3 ≥ 1.0(各不低于自身权重的 50%)**且** 得分率 ≥ 60%。不满足者一律不入报,不得为凑数降低门槛。

> **两套指标并列、不得换算:** 官方 `score`(语义相关度)与本表"要素匹配度"在报告中**分列两栏呈现**,禁止相互折算或混称"匹配度"。

### 3.1.1 r1 判定**必须核对法条版本与时间效力**(2026-09-23 真实测试发现)

**问题:** 只看"案由相同、法条主题相同"就给 r1 满分,会把**援引已失效旧法条**的案例误判为请求权基础高匹配。

> **实测实例:**(2024)浙04民终1198号(嘉兴中院二审)请求变更公司登记纠纷,其 `applied_laws` 为《公司法》**第十三条**;经 `yuandian_rh_ft_search` 核验,《公司法(2018修正)》第十三条效力状态为**「已被修改」**,而《公司法(2023修订)》**第十条**(施行日期 **2024-07-01**,效力状态**现行有效**,主席令第 15 号)新增了第二款「担任法定代表人的董事或者经理辞任的,视为同时辞去法定代表人」、第三款「公司应当在法定代表人辞任之日起三十日内确定新的法定代表人」。旧法第十三条仅规定"变更应当办理变更登记",**无**"辞任视为同时辞去"规则。二者虽主题相同,但**规范内容存在实质差异**,不能互相替代援引。

**判定规则:**

1. **r1 给满分(3 分)的前提**是"裁判所依据的条文与本案拟援引条文**版本同一且现行有效**"。凡裁判援引的法条经核验为「已被修改」「失效」「部分失效」者,**r1 不得给满分**,一般降至 **2 分**,并在 `note` 中写明"援引旧法第X条(效力状态:已被修改),与本案拟援引条文版本不同"。
2. **时间效力核对:** 若关键法律事实(如离职、辞任)发生于新法施行日**之前**,法院援引旧法属**适用正确**,此时不应因"援引旧法"否定该案,而应**区分用途记录**:
   - **裁判思路/论证结构**:可借鉴;
   - **请求权基础/法条依据**:**不得**作为新法条文的先例直接援引。
3. **必须在报告第五部分风险提示中单列一条「法条版本与时间效力」**,写明:旧条文全称+效力状态+施行日期、新条文全称+效力状态+施行日期、二者规范差异、以及"凡事实发生于 X 年 X 月 X 日前的案例不得作为新法条文先例援引"的结论。
4. **法条核验调用**(`yuandian_rh_ft_search__v2`,≤3 次)在第四步执行,核验结果写入 `report.json` 的 `overview_table` 与 `risk`。

### 3.2 结果不符闸门(**仅 `specified` 模式适用**)

**语义检索必然混入结果相反的案例**(2026-09-22 实测:30 条中命中 1 例驳回诉请的反向案例)。在用户**指定**了结果的情形下,结果相似度只占 2 分权重压不住——若该案 r1+r2+r3 满分(8 分),即便 r4=0 总分仍达 8 分/80%,会被误当符合要求的先例入报。

故 `specified` 模式下:**r4 = 0(结果与用户指定结果相反)者,判为「负向」,无论总分多高均不得入报**;脚本 stdout 打印不符案例案号清单(`negative_list`),**须在报告第一部分如实披露**(命中 N 例、案号、与指定结果如何不同),不得隐瞒、不得写"等"。

`unspecified` 模式下**不设此闸门**,改为在报告中标注每例结果方向。

> ⚠️ **r4 缺判 ≠ 结果相反(2026-09-23 修复):** `specified` 模式下**每一例都必须判定 r4**,不得留空。脚本对未填 r4 且未填 `direction` 者判为 **`r4缺判`**(不得入报),并打印 `[须补判]` 清单要求逐案补判后重跑;此类案例**不进入 `negative_list`**,严禁在报告中将其披露为"与指定结果相反"——那是对未判定案例的错误陈述。

### 3.3 脚本调用

模型逐案判定 r1–r4 并写入 `_work/_judged.json`,交由脚本计算加权、分级、去重、排序:

```bash
PY=/Users/gongjiayong/.workbuddy/binaries/python/envs/default/bin/python
# 未指定结果(默认,三要素):
$PY scripts/score_fast.py \
  --candidates "_work/_candidates.json" \
  --judged "_work/_judged.json" \
  --out "_work/_scored.json" --top-n 8

# 指定结果(四要素):
$PY scripts/score_fast.py \
  --candidates "_work/_candidates.json" \
  --judged "_work/_judged.json" \
  --out "_work/_scored.json" --top-n 8 \
  --result-mode specified --result-target "支持涤除登记诉请"
```

`_judged.json` 格式:`{"cases": [{"case_number": "…", "r1": 3, "r2": 3, "r3": 2, "r4": 2, "note": "…"}]}`;亦可在文件顶层写 `"result_mode": "specified"` 声明模式。

脚本输出:`_scored.json`(含 `level`、`match_rate`、`full_score`、`mode`、`result_note`、`ah_complete`),并在 stdout 打印模式、满分、分级统计与结果不符清单。

> ⚠️ 旧版 `s1`–`s5` 字段与现行 `r1`–`r4` 口径**不可换算**:脚本检测到即以退出码 3 报错,须按现行三要素重新判定,不得手工折算。

### 3.4 排序规则:**得分率 > 法院层级 > 审判程序 > 裁判日期**(2026-09-23 修正)

**问题:** 排序只按"得分率降序、同分按裁判日期降序"时,同分(本次 15 例得分率全部 100%)情形下,**二审/中级人民法院案例会因裁判日期较早被挤出入报名单**。实测嘉兴中院(2024)浙04民终1198号排第 10、湖州中院二审排第 14,均未进前 8——与第四步"优先调取高层级法院详情"的指引自相矛盾。

**现行排序键(脚本 `score_fast.py` 已实现):**

| 序位 | 排序键 | 取值 |
|---|---|---|
| 1 | 得分率 `match_rate` | 降序 |
| 2 | 法院层级 `court_level` | 最高(4) > 高级(3) > 中级(2) > 基层(1),降序 |
| 3 | 审判程序 `trial_procedure` | 再审 > 二审 > 一审 > 其他,降序 |
| 4 | 裁判日期 `decision_date` | 降序(新者优先) |

> 排序仅决定**入报名额与详情调取顺序**,不改变分级与得分。

### 3.5 重复入库检测(2026-09-23 新增)

**问题:** 数据库存在**同一文书重复收录、案号不同**的情形。实测(2025)浙0602民初**522号**与**540号**系同一案件——同一法院、同一裁判日期、同一标题,仅当事人脱敏名称不同。二者会**同时占用入报名额**,导致报告中出现"两项独立先例"的假象。

**检测规则(脚本 `mark_duplicates()`):** 满足下列三项即判为**疑似重复**:① `court` 相同;② `decision_date` 相同;③ `title` 相同(或去除脱敏称谓后实质相同)。**保留排序后组内最前的一条**(即最值得入报者,排序键见 3.4;函数须在排序之后调用),其余标记 `duplicate_suspect: true`、`duplicate_of: "<保留案号>"`。

- 疑似重复项**不占入报名额**:脚本先取 `eligible` 中非重复项,不足时再回退取全部 `eligible`。
- 重复对写入 `_scored.json` 的 `duplicate_pairs`,**须在报告第五部分风险提示中单列一条**披露,提示"援引前须核对案号唯一性,避免重复援引或误认为存在两项独立先例"。

---

## 第四步:截取与详情核验

1. 取 `_scored.json` 中**入报门槛以上**的前 5–10 例(默认 8 例;不足 5 例时如实出具,绝不补足)。
2. **详情调用默认 5 例**(区间 3–8):单例返回约 1.2 万字,8 例即近 10 万字,会拖垮上下文。**直接按 `_scored.json` 的排序顺序截取**——该排序已按「得分率 > 法院层级 > 审判程序 > 裁判日期」排定,高层级法院的二审/再审案例自然靠前,无需另行挑选。
3. 调用 `mcp__yuandian-mcp__yuandian_rh_case_details__v2`,**只传 `case_number`,不传 `case_kind`**(实测 `db` 为"精选案例库"者其 `case_kind` 仍返回"普通案例",传值易误筛)。**单价按本轮实测**(历史实测 10–16 点/次不等,见 0.2),**受 `DETAIL_BUDGET` 约束**。
4. **只摘取结构化字段,不要通读 `content` 全文**:`focus`(争议焦点)、`court_reasoning`(**本院认为=判词原文**)、`judgment_result`(判决主文)、`established_facts`(法院认定事实)、`applied_laws`(援引法条清单)。摘录落盘 `_work/_details.json`。
5. **未调详情的入报案例以「摘要级」呈现**:内容取自召回返回的案例总结,且**必须在 `flags` 中标注「未调取裁判文书详情,正式援引前须核对原文」**,不得把摘要包装成判词原文。
6. **判词摘录必须照录原文**,不得改写、不得概括替代;原文超过 300 字时标明"(节录)"并注明省略位置。
7. **案号核验:** 案号须与详情返回一致。遇脱敏或部分隐匿案号(含 `*` 或"某某")者,**可入报但必须在该案标题下标注「案号部分脱敏,援引前须另行核实」**。
8. **法条核验(含版本核验)**:报告引用法条前,用 `mcp__yuandian-mcp__yuandian_rh_ft_search__v2`(`keyword` + `regulation_name`,必要时加 `validity_status`)核验现行有效性,≤3 次。核验须返回并落盘三项:**法规全称+版本年份**(如"2023修订"/"2018修正")、**效力状态**(现行有效/已被修改/失效)、**施行日期**。若发现入报案例援引的是非现行条文,按 **3.1.1** 处理 r1 并在报告中披露。

> **检索冻结:** 第四步结束即进入冻结状态。第五步只读取本地落盘文件,**不得发起任何检索类调用**。

---

## 第五步:生成 DOCX

### 5.1 组装 `_work/report.json`

字段定义(脚本按此渲染,缺项有兜底但不得缺关键项):

```json
{
  "title": "案件检索报告",
  "subtitle": "(争议焦点简称)",
  "meta": {"检索主题": "…", "检索地域范围": "浙江省(默认)", "检索时间范围": "2021-01-01 至 YYYY-MM-DD",
           "检索日期": "YYYY-MM-DD", "数据库": "华宇元典法律数据"},
  "overview": ["段落", "段落"],
  "result_mode": "unspecified",
  "overview_table": {"columns": ["项目", "内容"], "rows": [["语义检索调用", "1 次(limit=15)"]]},
  "table": {"columns": ["序号","案号","审理法院","裁判日期","要素匹配度","裁判结果方向","语义相关度","级别","核心裁判规则"],
            "rows": [["1","(2023)…","…法院","2023-05-18","8.0/8(100%)","与检索方向一致","0.91","A","一句话规则"]]},
  "cases": [{
    "heading": "案例一 (2023)浙01民终1001号 浙江省杭州市中级人民法院",
    "flags": ["案号部分脱敏,援引前须另行核实"],
    "sections": [{"label": "基本案情", "text": "…"}, {"label": "裁判要旨", "text": "…"}],
    "quotes": [{"title": "判词原文摘录(节录)", "text": "…照录原文…"}],
    "analysis": "…明确标注为分析意见…"
  }],
  "conclusion": ["段落"],
  "risk": ["段落"],
  "auto_declarations": true
}
```

> ⚠️ **`result_mode` 必填**:脚本据此选择声明一-A/一-B 与一览表脚注。省略时脚本按 `unspecified` 兜底,**指定结果模式下会渲染出错误的声明版本**,故不得省略。

组装完成后调用脚本直出 DOCX(不经过 Markdown 中间格式,避免转换丢失表格与引用块):

```bash
$PY scripts/build_docx.py \
  --report "_work/report.json" \
  --out "$HOME/Desktop/案件检索报告_<争议焦点简称>_<YYYYMMDD>.docx"
```

脚本内置:标题层级、头部五项信息表、匹配度一览表、逐案详析、页脚页码(第 X 页 / 共 Y 页)、中文标题黑体/正文宋体。

### 5.2 报告结构(固定)

**头部五项(表格):** 检索主题 / 检索地域范围 / 检索时间范围 / 检索日期 / 数据库(华宇元典法律数据)。

**一、检索概况** — 检索式与过滤条件(原样列出,便于复核)、召回与入报计数、评分分级标准、本次检索的调用与额度说明。

**二、案例匹配度一览表** — 表格:序号 / 案号 / 审理法院 / 裁判日期 / 要素匹配度(`x/满分`,并标注得分率)/ **裁判结果方向**/ 语义相关度(score)/ 级别 / 核心裁判规则(一句话)。

> **「裁判结果方向」列:** 每例须据脚本 `result_note` 标注"结果与检索方向一致/相反/未判定"。`unspecified` 模式下结果相反者仍会入报,该列即为使用提示,不得省略该列。

**三、逐案详析** — 每例一个小节:案号与法院・裁判日期 → 基本案情(3–5 句)→ 裁判要旨 → **判词原文摘录**(引用格式)→ 本案借鉴意义(本节为分析意见,须明确标注为"分析意见")。

**四、结论与建议** — 裁判规则归纳、对本案的可援引性判断、下一步行动建议(含是否需补检索完整版)。

**五、风险提示与检索局限** — 必须包含下列**两处固定声明**(按模式择一,**原文照录,不得删改**):

> **声明一-A(未指定结果模式 · `unspecified`):** 本报告按**请求权基础、法律关系、案件事实**三要素检索高匹配类案,**未将裁判结果作为匹配要素**,故所列案例中可能包含裁判结果与本报告委托人主张不一致的案例(已在"裁判结果方向"列逐例标注),援引时须自行甄别;本报告未设置针对不利先例的定向检索路径,所列案例与结论不得被理解为对相关争议全部类案裁判倾向的完整描述,亦不构成对案件结果的承诺。
>
> **声明一-B(指定结果模式 · `specified`):** 本报告仅检索与用户指定结果一致的案例,已剔除与指定结果相反者(不符案号见第一部分);本报告未设置针对不利先例的定向检索路径,所列案例与结论不得被理解为对相关争议全部类案裁判倾向的完整描述,亦不构成对案件结果的承诺。
>
> **声明二(案号与判词局限):** 本报告所载案号均照录数据库返回原文,其中标注「案号部分脱敏」者,正式援引前须另行核实完整案号;判词摘录为节录文本,援引时以官方数据库全文为准。本报告结论受限于所设检索条件与数据库收录范围。

**第一部分(检索概况)须另写明本次匹配口径**:采用的模式(`unspecified`/`specified`)、计入的要素与满分、结果相似度是否计入。

### 5.3 交付

生成后须自行校验:① 表格无空单元格;② 案号与 `_details.json` 完全一致;③ 两处固定声明在位;④ 页码域已插入。校验通过后用 `present_files` 呈现,并口头报告:入报例数、A/B 级分布、脱敏案号例数、额度消耗。

---

## 底线规则(不可精简,违反即视为失败)

1. **案号真实完整**:无案号者不得入报;脱敏者须标注。
2. **判词原文照录**:不得改写、不得编造裁判理由。
3. **法条先核验**:引用前经 MCP 核验现行有效;无法核验的标注"待人工复核"。
4. **不得凑数**:入报不足 5 例时如实出具并在第一部分说明,**严禁降低门槛或追加检索补足**。
5. **两套指标并列**:要素匹配度与语义相关度分列,不换算。
6. **检索冻结**:第五步零检索调用,只读本地文件。
7. **风险不缺席**:两处固定声明必在;**命中的反向案例须在报告第一部分披露案号及与本案的区别**;分析意见与事实认定须明确区分标注。
8. **事实一致性**:不得擅自改动用户提供的日期、金额、当事人称谓;发现原始材料矛盾时提醒用户自行核对。
9. **结果相似度按模式处理**:用户**未指定**结果时,结果相似度**不参与评分、不设门槛**(三要素高匹配而结果相反者照常入报,但须标注结果方向);用户**指定**结果时,`r4 = 0` 者无论总分多高一律不得入报(2026-09-22 实测:此类案例可凭三要素满分达到 8 分/80%)。不得反向套用。**指定结果模式下 r4 必须逐案填写**,漏填者按「r4缺判」暂不入报并补判,不得当作结果相反处理、不得写入不符清单。
10. **摘要与原文分列**:未调详情者只能以摘要级呈现并加标注,不得将数据库摘要冒充判词原文。
11. **法条版本必核**(2026-09-23 新增):r1 判分前须核验该案所援引条文的**版本、效力状态、施行日期**。援引「已被修改/失效」条文者 r1 **不得给满分**(降至 2 分)并注明;报告中**必须单列一条「法条版本与时间效力」风险提示**,写明新旧条文的规范差异与"事实发生于新法施行日前的案例不得作为新法条文先例直接援引"的结论。区分"裁判思路可借鉴"与"法条依据可援引"两种用途。
12. **重复入库必查**(2026-09-23 新增):同院+同裁判日期+同标题者判为疑似重复,保留其一,其余**不占入报名额**,并在风险提示中披露重复对案号,提示援引前核对案号唯一性。

---

## 降级与失败处置

| 情形 | 处置 |
|---|---|
| MCP 未连接 | 当场告知,暂停,不猜测执行 |
| 余额 0 | 不得开工,请充值 |
| 路径① 返回 0 条 | **须先询问用户**是否放宽地域/时间/文书类型,经确认后重发 1 次(放宽记录写入报告第一部分);仍为 0 则如实告知"未检索到类案",不得虚构、**不得擅自放宽** |
| 入报 0 例 | 出具"未检索到符合入报门槛类案"的报告(头部五项 + 检索概况 + 局限声明),不得降级凑数 |
| DOCX 脚本报错 | 保留 `_work/report.json`,报告用户错误原因;**不得手工改写数据绕过校验** |

---

## 脚本索引

| 文件 | 用途 |
|---|---|
| `scripts/score_fast.py` | 合并候选与判定、三要素(+条件结果相似度)加权、分级、案号完整性检查、**重复入库标记**、**r4 缺判识别**、按「得分率>法院层级>审判程序>裁判日期」排序输出 |
| `scripts/build_docx.py` | 由 `report.json` 直出 DOCX(含表格、判词引用块、页脚页码、中文字体、按模式切换的匹配度脚注、表格列数一致性自检) |
| `tests/smoke_test.py` | 一键冒烟测试(虚构样例):验证去重分级、排序优先级、重复入库、**r4 缺判**、表格无空单元格、页码域、两处固定声明(共 73 项断言) |

```bash
/Users/gongjiayong/.workbuddy/binaries/python/envs/default/bin/python tests/smoke_test.py
```

修改脚本后**必须重跑冒烟测试**;测试全通过方可交付。用例数据为虚构样例,不代表任何真实裁判文书。

---

## 版本记录

| 版本 | 日期 | 主要变更 |
|---|---|---|
| 1.0.0 | 2026-09-22 | 初版:四问确认、语义召回、五要素打分、DOCX 直出 |
| 1.1.0 | 2026-09-22 | 新增方向闸门(反向案例不得入报);补充接口字段实测要点 |
| 1.2.0 | 2026-09-22 | 强制四问确认,地域/时间范围为选择题,默认「2021-01-01 起浙江省」 |
| 1.3.0 | 2026-09-22 | 匹配模型重构为三要素(r1/r2/r3)+条件结果相似度(r4);双模式与分级 |
| 1.4.0 | 2026-09-23 | ① r1 须核法条版本与时间效力;② 排序改为「得分率>法院层级>审判程序>裁判日期」;③ 重复入库检测 |
| **1.4.1** | **2026-09-23** | **缺陷修复与文档校正:** ① 修复 `specified` 模式下漏填 r4 被误判为「负向」并写入不符清单的错误披露(改为「r4缺判」+须补判清单);② 修正文档 7 处矛盾(四问名称、重复保留规则、详情单价、limit 示例、正向案例旧口径、`result_mode` 字段遗漏、`DETAIL_BUDGET` 单价);③ `build_docx.py` 增加表格列数一致性自检 |

**Skill作者:浙江金道律师事务所 龚家勇律师(微信:13967182079)**

Files in this skill

  • SKILL.md37.6 KB
  • scripts/build_docx.py14.2 KB
  • scripts/score_fast.py22.4 KB
  • tests/smoke_test.py22.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…