yuandian-law-search
元典法条与案例检索
通过元典开放平台 API 检索中国法律法规条文和案例。每次 API 调用消耗 10 积分。所有检索结果会自动归档到本地,方便后续回溯。
前置要求(每次调用前自动检测)
每次使用本技能前,必须先执行以下检测流程,确认 API Key 已就绪:
检测步骤
- 检测
.env文件:检查scripts/.env是否存在 - 检测 API Key:读取文件中
YD_API_KEY的值,确认非空且不是占位符your-api-key-here - 若检测失败,向用户提示以下引导信息并终止:
⚠️ 元典 API Key 未配置。请按以下步骤获取并配置:
1. 注册/登录:访问 https://open.chineselaw.com ,使用手机号注册
2. 创建 API Key:登录后在个人中心创建 Key
3. 配置密钥:将 Key 填入以下文件
scripts/.env
─────────────
YD_API_KEY=sk-你的密钥
─────────────
每次调用消耗 10 积分,需在平台充值。
配置完成后重新发起检索即可。
- 若检测通过,继续执行用户请求的检索命令
检测命令
# 检测 .env 文件和 API Key
if [ -f "scripts/.env" ]; then
KEY=$(grep '^YD_API_KEY=' scripts/.env | cut -d'=' -f2)
if [ -n "$KEY" ] && [ "$KEY" != "your-api-key-here" ]; then
echo "API Key 已就绪"
else
echo "API Key 未配置"
fi
else
echo ".env 文件不存在"
fi
接口速查
本技能共 11 个接口,分为三层。选择规则:
- 用户问"XX法怎么规定的" → 先用
search语义检索 - 用户问"关于XX的法律条文" → 用
keyword关键词检索 - 用户问"民法典第XX条" → 用
detail精确获取 - 用户问"有没有XX相关的案例" → 用
case关键词检索(默认普通案例) - 用户问"类似XX的案件怎么判的" → 用
case-semantic语义检索 - 用户要求更深入了解某案例 → 提醒用户将消耗积分,确认后用
case-detail
核心接口(默认使用): search · keyword · detail · case · case-semantic
扩展接口(需确认): regulation · regulation-detail · case-detail · case --authority-only
附属接口(仅限明确要求): enterprise · enterprise-detail
调用策略:正确性优先
每次 API 调用消耗 10 积分,应避免浪费。但正确性始终优先于积分节约——AI 的记忆可能存在幻觉或过时,涉及法律条文的精确引用时宁可多查一次。
必须调用 API 的情况
- 需要引用具体法条文号:如"民法典第184条"——AI 可能记错条文内容或条号对应
- 需要确认时效性:如"XX法是否现行有效"——法律修订频繁,AI 训练数据可能已过时
- 用户明确要求检索:"帮我查一下""有没有相关的案例"
- 案例检索:用户需要具体裁判文书支持论证
- AI 对自身记忆不确定:涉及近年修改的法律法规、司法解释等
可以不调用的情况
- 法律概念解释:纯概念性问题(如"什么是善意取得"),不涉及具体条文引用
- 已有信息足够:当前对话中已检索过相同或充分覆盖的内容
- 用户只是在讨论:用户陈述观点或进行法律分析,未要求查找法条/案例
- 用户明确说不需要查:如"不用查,你就告诉我大概意思"
积分消耗模式
每个接口每次调用均为 10 积分,但不同场景的实际消耗差异很大:
法条检索通常一次调用即可满足需求(语义检索结果已含法条全文,无需再调 detail)。
案例检索是两阶段消耗,需特别注意:
case/case-semantic返回案例摘要列表 → 10 积分- 若需查看某个案例的完整文书,每调一次
case-detail→ 再消耗 10 积分
因此,如果检索到 5 个案例并逐一查看详情,总消耗为 10 + 5×10 = 60 积分。AI 代理在调用 case-detail 前应告知用户将额外消耗积分并确认。
节约积分的做法
- 一查多用:一次检索结果在对话中充分引用,避免重复检索
- 优先语义检索:
search返回结果最全面,一次通常即可覆盖需求 - 避免法条链式调用:不要先
search再逐条detail——语义检索已含法条全文 - 案例详情谨慎调用:先用摘要筛选出最相关的 1-2 个案例,再调
case-detail,不要对全部结果逐一查看 - 善用筛选参数:用
--sxx 现行有效、--effect1 法律、--province等缩小范围 - 利用历史归档:所有检索结果自动保存到
archive/,用户提到"之前查过什么"时可直接从归档中提取,无需重新消耗积分
典型工作流与用户引导
AI 在完成检索后,应主动告知用户检索结果摘要和积分消耗,并根据场景推荐后续操作。
法条研究场景
用户问:"正当防卫在什么情况下会超过必要限度?"
- AI 进行法条语义检索(10 积分)
- 向用户展示关键法条内容(如刑法第20条、民法典总则编司法解释第31条等)
- 告知用户积分消耗:"本次检索消耗 10 积分"
- 主动推荐后续操作:"如果需要了解相关判例,我可以帮你找案例"
案例研究场景
用户问:"有没有防卫过当的实际案例?"
- AI 进行案例语义检索(10 积分)
- 案例语义检索返回的摘要已包含争议焦点和裁判要旨,大多数情况下已够用
- 向用户展示案例摘要,告知积分消耗
- 等待用户主动触发:不要自动获取完整判决书。如用户对某个案例感兴趣,可说"帮我看看第2个案例的完整判决书"——此时再调 case-detail(每个 10 积分)
关键词精确检索场景
用户问:"帮我找广西的买卖合同纠纷判决书"
- AI 进行案例关键词检索(10 积分)
- 关键词检索返回的摘要较短,仅含基本信息(案号、法院、简要内容)
- 向用户展示结果列表和积分消耗
- 等待用户选择:如用户对某个案例感兴趣,再获取完整判决书(每个 10 积分)
AI 向用户反馈的原则
- 每次检索后主动说明积分消耗:"本次检索消耗 10 积分"
- 多步检索时告知累计消耗:"本次检索消耗 10 积分(本次对话累计 30 积分)"
- 完整判决书必须由用户主动触发:先展示摘要,让用户选择感兴趣的案例,不要自动获取全文
- 案例语义检索的摘要通常已够用:只有用户明确要求查看完整判决书时才深入
- 法条语义检索已含全文:不需要额外补充
- 用自然语言与用户沟通:不要向用户暴露命令行语法,AI 后台执行脚本即可
检索模式选择
每个领域有语义检索和关键词检索两种模式。
| 语义检索 | 关键词检索 | |
|---|---|---|
| 子命令 | search(法条)/ case-semantic(案例) |
keyword(法条)/ case(案例) |
| 输入 | 自然语言问题或描述 | 精确关键词组合 |
| 匹配 | 语义相似度,概念关联 | 字面匹配,AND/OR 逻辑 |
| 返回量 | 默认 45 条 | 默认 10 条 |
用语义检索:用户提出法律问题 / 描述场景 / 不确定关键词 / 需要广覆盖 → 不确定时默认用 用关键词检索:用户给出明确关键词 / 需要 AND/OR 逻辑 / 需按日期、效力级别、法院等精确筛选 / 语义检索结果不够聚焦
此外需区分检索法条还是案例:"XX的法律依据" → 法条检索;"有没有相关案例" → 案例检索;兼要法条和案例 → 先法条后案例,两次调用。
核心接口用法
1. 法条语义检索(search)
python3 scripts/yd_search.py search "正当防卫的限度" --sxx 现行有效
2. 法条关键词检索(keyword)
python3 scripts/yd_search.py keyword "人工智能 监管" \
--effect1 法律 --sxx 现行有效 \
--fbrq-start 2022-01-01 --fbrq-end 2026-03-01
3. 法条详情检索(detail)
python3 scripts/yd_search.py detail "民法典" --ft-name "第十五条"
4. 案例关键词检索(case)
# 普通案例(默认)
python3 scripts/yd_search.py case "买卖合同纠纷" --province 广西
# 权威案例(扩展,需确认)
python3 scripts/yd_search.py case "买卖合同纠纷" --province 广西 --authority-only
5. 案例语义检索(case-semantic)
python3 scripts/yd_search.py case-semantic "正当防卫的限度" --jarq-start 2020-01-01
扩展接口用法
6. 法规关键词检索(regulation)
python3 scripts/yd_search.py regulation "数据安全" --effect1 法律 --sxx 现行有效
7. 法规详情(regulation-detail)
python3 scripts/yd_search.py regulation-detail --name "中华人民共和国数据安全法"
8. 案例详情(case-detail)
python3 scripts/yd_search.py case-detail --type ptal --ah "(2025)桂09民终192号"
9. 企业检索(enterprise)
python3 scripts/yd_search.py enterprise "华为" --num 5
10. 企业详情(enterprise-detail)
python3 scripts/yd_search.py enterprise-detail --credit-code "9144030071526726XG"
通用参数说明
法条检索通用筛选
| 参数 | 说明 | 可选值 |
|---|---|---|
--effect1 |
效力级别(可多次指定) | 宪法、法律、司法解释、行政法规、部门规章、地方性法规 等 |
--sxx |
时效性(可多次指定) | 现行有效、失效、已被修改、部分失效、尚未生效 |
案例检索通用筛选
| 参数 | 说明 |
|---|---|
--province / --xzqh-p |
省份筛选 |
--jarq-start / --jarq-end |
结案日期范围 |
--cj |
法院层级:最高/高级/中级/基层 |
--wenshu-type |
案件类型:刑事案件/民事案件/行政案件 |
Reference 文档索引
API 端点文档
| # | 文件 | 接口 |
|---|---|---|
| 01 | law-vector-search.md | 法条语义检索 |
| 02 | law-keyword-search.md | 法条关键词检索 |
| 03 | law-detail.md | 法条详情 |
| 04 | case-semantic-search.md | 案例语义检索 |
| 05 | case-keyword-search.md | 普通案例关键词检索 |
| 06 | case-keyword-search-authority.md | 权威案例关键词检索 |
| 07 | case-detail.md | 案例详情 |
| 08 | regulation-search.md | 法规关键词检索 |
| 09 | regulation-detail.md | 法规详情 |
| 10 | enterprise-search.md | 企业名称检索 |
| 11 | enterprise-detail.md | 企业详情 |
历史检索记录
每次 API 调用的完整结果会自动归档到 archive/ 目录。当用户提到"之前查过什么"时,AI 可以直接从归档中提取历史结果,无需重新调用 API。
浏览历史记录:
python3 scripts/yd_search.py archive-list
python3 scripts/yd_search.py archive-list --keyword "正当防卫"
如果用户说"之前查正当防卫的时候看到一个案例",AI 应先用 archive-list --keyword "正当防卫" 找到对应的归档文件,然后直接读取其中的 response 字段返回给用户。这不需要消耗积分。
调试
python3 scripts/yd_search.py raw /open/law_vector_search "正当防卫" --extra '{"fatiao_filter":{"sxx":["现行有效"]}}'
版本更新
脚本每 7 天自动检测远程版本。也可手动检查:
# 检查是否有新版本(会显示最近提交记录)
python3 scripts/yd_search.py check-update
# 执行更新(仅下载本 skill 目录下的文件,不影响其他目录)
python3 scripts/yd_search.py do-update
do-update 仅更新 yuandian-law-search/ 目录下的文件,不会修改 .env(API Key)和 archive/(历史检索记录)。