案例检索报告(中国大陆地区法院案例检索)Plus
v3.8.0 — 检索提速优化(不影响检索质量): ① 默认四省市检索改为单轮全国检索 + 本地按地域归类(原"分4次串行检索"请求量降为 1/4,语义检索仍返回关联度最高的案例,质量不变);用户明确要求分省精确过滤时仍走
xzqh_p精确模式。 ②rewrite_flag智能设置:用户已提供明确案由 + 核心争议焦点(结构化关键词)时,设rewrite_flag: false跳过查询改写往返;用户仅给模糊需求时仍保持true。 ③ 报告生成时详情接口改为并行批量调用(原说明为串行),权威案例优先、普通案例降级用content,在保证重点案例深度的同时缩短耗时、降低限流风险。 ④ 支持用户预声明批次上限:首轮回显时用户可一次性指定"共检索 N 批",减少逐轮AskUserQuestion往返(仍保留每批后确认与随时叫停)。 ⑤ 继承 v3.7.3 全部修复(5.0 非阻塞回显、引用规范、批次来源列)。
v3.8.1 — 一致性修正(不影响检索质量): ① 修正默认地域行为矛盾:兜底规则与"四省市兜底"已并入 v3.8.0 默认全国单轮检索模式,删除"默认按四省市分别检索"的倒退表述。 ② 修正
ALL_CASES结构矛盾:移除已废除的v(裁判结果摘要)持久化字段,明确摘要与文书在第五步按需提取,与第三步"无需额外v字段"及 v3.7 精神一致。 ③ 修正地域归类字段不一致:统一标注归类依据为返回字段court或fayuan(两者等价),消除"按court字段"与工具参考"或"表述的歧义。 ④ 修正 DOCX 转换运行时:转换脚本改用托管 Node 绝对路径并加 npm 隔离;龚家勇律师已于 2026-07-10 明确授权将报告/.docx保存至桌面,故 DOCX 默认输出至~/Desktop(仍保留运行时隔离,裸node命令禁用)。
v3.9.0 — 新增「特定律师 + 特定律所代理」限定检索模式: ① 在第一步/第二步的参数收集中新增第 4 个维度「代理限定」,支持用户指定"某律师事务所某律师代理"的检索范围。 ② 当用户指定特定律师 + 特定律所时,检索结果仅输出该律师在该律所执业期间代理(担任诉讼代理人)的案件 / 裁判文书,严格过滤无关内容;华宇元典检索接口无直接的律师/律所过滤字段,故采用"query 语义偏置 + 返回结果二次内容过滤"双重机制实现。 ③ 过滤判定标准:裁判文书正文(含「当事人基本情况」「委托代理人」等段落)中同时出现该律师姓名与该律所全称,且二者处于同一方当事人的诉讼代理人语境(至少在"代理人/委托代理人"字段共现);仅出现姓名或仅出现律所名、或二者分属不同当事人/无代理关系的,一律剔除。 ④ widget 与《案例检索报告》顶部以醒目方式标注"限定:XX律师事务所 XX律师代理",且每案在案例详细分析中标注「代理律师/律所」字段,便于复核检索范围。
v3.9.1 — 严格模式律所名称模糊匹配(在不放宽硬条件的前提下减少漏检): ① 严格模式下,除律所全称精确匹配外,WB 基于
agent_firm自动派生「律所名称集合」(去后缀核心名、去行政区划、常用简称如"XX所/XX律所/XX律师"等),任一形态命中即视为满足"律所出现"条件。 ② 模糊匹配仅放宽"律所名称形态",不放宽"同一代理关系语境"与"律师姓名共现"两项硬条件——仍须律师姓名与该律所任一名称形态共现于同一条"委托代理人/代理人"表述,方予保留。 ③ 同步修正 v3.9.0 ③ 的严苛措辞:原"同时出现该律师姓名与该律所全称"修订为"出现该律师姓名且出现该律所全称或其派生简称/别称",与第三步「律所名称模糊匹配」规则一致。
v3.10.0 — 调整「代理限定」的呈现范围(保留检索过滤能力): ① 保留「按特定律师/律所过滤检索」的完整能力——第一步/第二步仍收集「代理限定」维度、第三步仍执行 query 语义偏置 + 二次内容过滤(含律所名称模糊匹配、宽松模式、过滤后数量提示)及
agent_lawyer/agent_firm解析;回显确认与 widget 仍标注限定范围,便于复核。 ② 仅移除《案例检索报告》中的代理限定标注:删除报告头部「代理限定」行、选定案例清单「代理律师/律所」列、案例详细分析「代理律师/律所」字段。报告回归纯主题维度呈现,但检索过滤行为不受影响。
v3.10.1 — 补充「代理限定」实务警示(不影响检索过滤能力): ① 基于 2026-08-03 以"龚家勇+浙江金道律师事务所"实测,新增代理限定模式的前提与局限说明:
case_vector_search为语义向量检索(按主题相似度排序而非人名精确索引),且华宇元典精选案例库大量文书对委托代理人作匿名化(XXX、某某、金某某等),故该模式难以稳定召回特定律师代理案件。 ② 明确处置规则:当用户指定"某律师+某律所代理"且连续多轮(建议≥3批、累计≥30份候选)二次过滤后 M=0 时,应如实报告"该库无法稳定检索到目标律师代理案件"并说明机制性原因,建议改用北大法宝、企查查、威科先行等具备律师代理案件索引的库或由用户提供具体案号/文书核验,不得编造或生成空报告。检索过滤逻辑本身不受影响。
v3.11.0 — 检索提速优化(不影响检索质量,延续 v3.8.0 思路,进一步压降请求量与交互往返): ① 首轮批量返回(替代"每批固定 5 个 + 每批都问"):默认
return_num由固定 5 上调为「首轮批量值」——全国模式 15、精确省/市模式 10、代理限定模式 15(均远低于工具默认 45,仍属精确可控);一次检索即返回足够候选,渲染单个 widget 后仅用一次AskUserQuestion决策。将原"多批×5 + 多轮交互"压缩为"1–2 次大返回 + 1 次交互",语义排序与候选质量不变(候选更多反而更易挑优)。用户仍可在决策题中口头要求"下一批 N 个"继续补检。 ② 详情接口流水线化(pipelining):在渲染每批 widget 的同一 turn 内,并行预取该批权威案例的完整详情yuandian_rh_case_details(已知ah/case_id,无新增检索词);将详情获取从"第五步集中"前移到"检索阶段并行",使报告生成阶段无需再等待详情请求。质量不变(仍获取完整文书);用户若在 5.0 回显中"去掉第X号",仅浪费极少预取量,可忽略。 ③ 批次上限预声明设为默认推荐:第一步回显中主动建议用户一次性声明批次上限(如"建议共检索 2–3 批"),并将"批次计划"作为首轮交互的一部分,减少逐批AskUserQuestion往返(联动 v3.8.0 机制)。 ④ 普通案例第五步直接复用第三步已提取的content与裁判结果摘要,禁止在报告阶段重复调用case_vector_search,避免冗余语义检索往返。 ⑤ 继承 v3.10.1 全部能力(代理限定模式及其局限警示等)。
前置说明(必须首先告知用户)
在开始使用前,请务必确认:
⚠️ 本技能依赖「华宇元典法律数据」MCP 连接器。 请先在 WorkBuddy → 专家 → 连接器 中,手动连接「华宇元典法律数据」MCP,连接成功后再使用本技能。 如未连接,本技能无法正常运行。
使用步骤
第一步 + 第二步(参数收集):使用 AskUserQuestion 以多选题方式询问用户
本技能强制使用 AskUserQuestion 工具,以「多选题 + 自由文本补充」的方式,一次性向用户收集四个维度的检索参数(地域、时间段、关键词/争议焦点、代理限定):
- 检索范围(地域) — 多选题(
multiSelect: true) - 检索时间段 — 单选题(
multiSelect: false,并提供自由文本框供用户填写自定义时间段) - 检索关键词 / 争议焦点 — 多选题(
multiSelect: true,并提供自由文本框供用户补充案由、核心争议焦点、具体关键词、当事人类型等)
调用方式: WB 在正式检索前,调用一次 AskUserQuestion,questions 数组中放入以下四个问题。
问题构造规范:
问题 1:检索范围(header: "检索范围",multiSelect: true)
选项(label 为简洁短词,description 为说明):
- label: "北京市" — 检索北京市各级法院案例
- label: "上海市" — 检索上海市各级法院案例
- label: "浙江省" — 检索浙江省各级法院案例
- label: "广东省" — 检索广东省各级法院案例
说明:
- 用户可多选省份。若用户仅选某一省,WB 在第三步设置
wenshu_filter.xzqh_p = "省份名"。 - 若用户未选任何预设项,且在自由文本框中输入了具体法院名称(如"杭州市中级人民法院"),WB 在第三步设置
wenshu_filter.fayuan = ["完整法院名称"]。 - 若用户在自由文本框中填写了上列之外的其他省份(如"江苏省"),WB 在第三步设置
wenshu_filter.xzqh_p = "用户填写的省份名"。 - 兜底规则: 若用户完全未作答(直接跳过或回复"默认"),WB 按 v3.8.0 默认全国模式处理——不设置
xzqh_p/fayuan过滤条件,发起单轮全国检索,检索返回后在本地按审理法院名称中的省份关键字归类展示(逻辑等价于原来的默认四省市,但请求量降为 1/4,且可覆盖全部省份)。 - 若用户明确指出想检索"全部法院"或"不限地域",WB 在第三步同样不设置
xzqh_p/fayuan过滤条件(全国范围检索),与兜底规则行为一致。
问题 2:检索时间段(header: "时间段",multiSelect: false)
- label: "2021年1月1日至今(默认)" — 使用默认时间段
- label: "2023年1月1日至今" — 仅检索 2023 年之后的案例
- label: "2024年1月1日至今" — 仅检索 2024 年之后的案例
- label: "自定义时间段" — 请在自由文本框中填写起止日期(格式:YYYY-MM-DD 至 YYYY-MM-DD,如 2020-01-01 至 2024-12-31)
说明:
- 用户选择"自定义时间段"后,必须在自由文本框填写具体起止日期;WB 在第三步设置
wenshu_filter.ja_start和wenshu_filter.ja_end。 - 用户仅填写起始日期 → 结束日期默认为"至今";仅填写结束日期 → 起始日期默认为"2021-01-01"。
- 用户未作答(默认)→ 使用
wenshu_filter.ja_start = "2021-01-01"。
问题 3:检索关键词 / 争议焦点(header: "关键词焦点",multiSelect: true)
针对"股东对公司债务承担责任"类需求,WB 预置以下常见情形选项(每次使用技能时,WB 应结合本次用户的争议主题,动态调整为与主题相关的选项;以下为通用示例):
- label: "人格混同/财产混同" — 股东与公司人格混同、财产混同导致连带责任(《公司法》第23条)
- label: "一人公司财产独立" — 一人有限责任公司股东不能证明财产独立于公司的连带责任
- label: "未足额/未届期出资" — 股东未全面履行出资义务、出资加速到期下的补充赔偿责任
- label: "抽逃出资" — 股东抽逃出资后的返还与补充赔偿责任
- label: "清算/注销责任" — 股东未依法清算、恶意注销公司致债权人受损的赔偿责任
- label: "其他/自定义" — 请在自由文本框中补充具体案由、核心争议焦点、关键词或当事人类型
说明:
- 用户可多选,WB 将所选标签合并为
query语义文本传入第三步检索工具。 - 用户在自由文本框中填写的案由(如"股东损害公司债权人利益责任纠纷")、核心争议焦点、关键词、当事人类型(自然人/公司/国企),WB 一律采纳,并在第三步中:
- 若有明确案由 → 设置
wenshu_filter.ay = ["案由名称"] - 将核心争议焦点 + 关键词 + 所选标签合并为
query文本 - 当事人类型记录备存(华宇元典检索接口无直接当事人类型过滤字段时,作为 query 语义补充)
- 若有明确案由 → 设置
问题 4:代理限定(header: "代理限定",multiSelect: false)
- label: "不限定(默认)" — 不限定代理律师 / 律所,按常规主题检索
- label: "限定特定律师+律所" — 仅在自由文本框中按格式填写「律师姓名,律所全称」(如「张三,浙江金道律师事务所」);WB 将只输出该律师在该律所执业期间代理的案件 / 裁判文书
说明:
- 用户选择"限定特定律师+律所"后,必须在自由文本框填写「律师姓名,律所全称」,WB 据此解析出
agent_lawyer(律师姓名)与agent_firm(律所全称)两个过滤参数。 - 解析规则:以中文逗号「,」、中文顿号「、」、英文逗号「,」或加号「+」作为分隔符,前半部分为律师姓名、后半部分为律所全称;若用户仅填写律所名称(未填律师姓名),则
agent_lawyer留空、仅按律所过滤;若仅填写律师姓名,则agent_firm留空、仅按律师过滤(宽松模式,匹配范围更大)。 - 该限定与地域、时间段、关键词三类条件叠加生效:即在用户指定的地域 + 时间段 + 主题范围内,再二次过滤出特定律师/律所代理的案例。
- 华宇元典检索接口无直接的律师 / 律所过滤字段,故该限定在第三步通过"query 语义偏置 + 返回结果二次内容过滤"实现,详见第三步「代理律师/律所限定模式」。
强制要求:
- WB 必须调用
AskUserQuestion提出上述四个问题(可一屏呈现),不得退化为纯文本逐条提问。 - 四个问题必须同时提出,避免分多轮反复打扰用户。
- 用户作答后,WB 应将作答结果整理为下方「回显确认」格式,在正式检索前做一次简短回显;回显后默认直接开始检索(无需用户再次确认)。如用户回复要求调整,则重新调用
AskUserQuestion收集。
回显确认格式:
确认检索条件如下:
- 检索范围:[用户所选省份 / 具体法院 / 全国 / 默认全国(不限地域)]
- 检索时间段:[2021年1月1日至今 或 用户指定的时间段]
- 争议焦点/关键词:[用户所选标签 + 自由文本补充内容]
- 案由:[案由 或「不限」]
- 当事人类型:[类型 或 「不限」]
- 代理限定:[不限定 / 限定:XX律师事务所 XX律师代理(宽松模式?)]
- 批次计划:[用户预声明的批次上限,如"共检索3批" / 未声明则逐批询问](建议直接声明,可省去逐批确认往返)
确认无误,我将开始检索。如需调整请告知。
批次上限预声明(v3.8.0 提速项 · v3.11.0 设为默认推荐): WB 在回显阶段主动建议用户一次性声明"共检索 N 批"(N 为正整数,建议 2–3;结合 v3.11.0 首轮批量返回 15 个,2–3 批已足以覆盖绝大多数需求)。用户声明后,WB 在达到 N 批后自动跳过轮次选择题、直接生成报告,将交互往返从"N 次"降为"1 次"。若用户未声明,仍按 v3.7 机制逐批询问(但首轮已批量返回,单轮候选量已显著提升)。无论是否预声明,用户均可随时在任一批次后口头要求"停止/生成报告"以提前结束,或要求"再加一批"以突破原上限。
用户确认(或默认视为确认)后进入第三步。如用户要求调整,重新调用 AskUserQuestion 收集。
第三步:执行检索
调用华宇元典法律数据 MCP 的 yuandian_case_vector_search 工具,按以下规则检索:
- 工具名称:
mcp__yuandian-mcp__yuandian_case_vector_search - 检索范围: 裁判案例(判决书、裁定书)
- 时间范围:
- 用户未限定检索时间段: 设置
wenshu_filter.ja_start = "2021-01-01",仅检索 2021-01-01 及之后的案例 - 用户限定了检索时间段: 设置
wenshu_filter.ja_start和wenshu_filter.ja_end为用户指定的日期范围
- 用户未限定检索时间段: 设置
- 地域范围(三种模式,v3.8.0 重构):
- 精确省/市模式(用户指定单一或多个省份、未指定具体法院)→ 设置
wenshu_filter.xzqh_p = "省份名"(如"浙江省");若用户多选多省且接口支持数组,可一次性传xzqh_p数组。此模式用于需要严格限定地域的场景。 - 具体法院模式(用户在自由文本填写法院名称)→ 设置
wenshu_filter.fayuan = ["完整法院名称"](如["浙江省杭州市中级人民法院"])。 - 默认全国模式(v3.8.0 提速默认项 · v3.11.0 首轮批量返回):用户未指定地域、或仅触发兜底规则(默认全国)时,不设置
xzqh_p/fayuan,发起单次全国范围检索(语义检索仍按关联度返回最相关案例),检索返回后在本地按审理法院名称(返回字段为court或fayuan,两者等价)中的省份关键字归类展示(如"北京市""上海市""浙江省""广东省"分组)。如此将原来"分4次串行检索"的 4 个请求压缩为 1 个请求,请求量降为 1/4;v3.11.0 起该单次请求return_num = 15,一次性返回充足候选、省去逐批往返,且不影响检索质量(语义相关性排序不变)。如本地归类后发现某省案例偏少,可针对性补一轮精确省模式检索(或继续补检批次)。 - 用户明确"全部法院/不限地域" → 同默认全国模式,单轮检索。
- 精确省/市模式(用户指定单一或多个省份、未指定具体法院)→ 设置
- 代理律师/律所限定模式(v3.9.0 新增): 当第一步/第二步收集到
agent_lawyer/agent_firm参数(用户限定特定律师 + 特定律所代理)时,启用以下机制:- query 语义偏置: 在
query文本中追加代理限定信息,例如「(代理律师:{agent_lawyer},代理律所:{agent_firm})」,使语义检索偏向检索返回提及该律师/律所的文书,提升命中率。 - 返回数量上调: 因需二次过滤,将
return_num由默认 5 上调至 10–15(建议 12),以在一次检索中获得足够多的候选文书供内容过滤;如仍不足,可在后续批次继续检索并过滤累积。 - 二次内容过滤(核心): 对每批返回的案例,读取其
content正文,执行以下判定,仅保留同时满足两项条件的案例:- 正文中出现
agent_lawyer(律师姓名),且出现该律所的任一名称形态——即agent_firm(律所全称)或其派生的简称/别称(详见下方「律所名称模糊匹配」)中任一字符串命中; - 二者处于同一方当事人的诉讼代理人语境——即在「当事人基本情况」「委托代理人」「代理人」等字段中,该律师姓名与该律所任一名称形态共现于同一条代理关系表述(如「委托代理人:张三,浙江金道律师事务所律师」「委托代理人:张三,金道律师」)。
- 正文中出现
- 律所名称模糊匹配(v3.9.1 补充): 严格模式下,仅凭律所全称精确匹配易漏检"全称未出现但简称/别称出现"的文书。WB 应基于用户填写的
agent_firm自动派生「律所名称集合」,任一形态命中即视为满足"律所出现"条件:- 全称:原样
agent_firm(如「浙江金道律师事务所」); - 去后缀核心名:去除「律师事务所」「律师」「(特殊普通合伙)」「(有限合伙)」等后缀及括号内容,保留主体(如「浙江金道」「金道」);
- 去行政区划:去除开头的省/市/区名(如「浙江」「杭州市」「杭州」),得「金道律师事务所」「金道律师」;
- 常用简称:核心名 + 「所」(如「金道所」)、核心名 + 「律所」(如「金道律所」)、核心名 + 「律师」(如「金道律师」);
- 匹配约束:模糊匹配仅放宽"律所名称形态",不放宽"同一代理关系语境"与"律师姓名共现"两项硬条件——仍须律师姓名与该律所任一名称形态共现于同一条「委托代理人/代理人」表述,方予保留;仅以简称出现但不在代理关系语境、或代理关系语境中无该律师姓名的,仍剔除。
- 全称:原样
- 剔除规则: ① 仅出现律师姓名、或律所全称及任一派生简称/别称均未出现者;② 二者虽同现但分属不同当事人(如律师代理原告、律所代理被告,无同一代理关系)者;③ 姓名/律所名出现在无关的"查明事实""裁判说理"而非代理关系语境者——一律剔除,不进入候选池与报告。
- 宽松模式(仅限律师或仅限律所其一): 若用户仅填律师姓名(
agent_firm为空),则只要正文出现该律师姓名即保留(可能跨多律所);若仅填律所(agent_lawyer为空),则只要正文出现该律所全称即保留。宽松模式匹配范围更大,WB 应在回显中标注「宽松模式」,提示结果可能不限于单一代理关系。 - 过滤后数量提示: 每批过滤后,WB 应向用户说明"本批检索 N 份,符合代理限定 M 份";若过滤后 M=0,应提示用户"当前检索范围内未检索到该律师/律所在该律所代理的案件",并询问是否扩大检索范围(如放宽地域/时间、或改为宽松模式)或结束检索。
- query 语义偏置: 在
- 查询改写
rewrite_flag(v3.8.0 智能设置):- 用户在第三步已提供**明确案由 + 核心争议焦点(结构化关键词)**时,设置
rewrite_flag: false,直接以用户原 query 检索,跳过查询改写的一次 LLM 推理往返,提速且更贴合用户原意。 - 用户仅给出模糊/口语化需求(如"想找点相关的股东责任案例")时,保持
rewrite_flag: true由系统改写以提升召回。
- 用户在第三步已提供**明确案由 + 核心争议焦点(结构化关键词)**时,设置
- 案由过滤: 如用户提供了案由,设置
wenshu_filter.ay = ["案由名称"] - 返回数量(v3.11.0 提速:首轮批量返回): 默认
return_num由固定 5 上调为首轮批量值——全国模式 15、精确省/市模式 10、代理限定模式 15(均远低于工具默认 45,仍属精确可控,不淹没用户)。一次检索即返回足够候选,渲染单个 widget 后仅用一次AskUserQuestion决策,将原"多批×5 + 多轮交互"压缩为"1–2 次大返回 + 1 次交互",语义排序与候选质量不变。若用户口头要求"下一批 N 个"继续补检,WB 按对应模式上限设置(全国≤15、精确≤10、代理≤15),且靠案号去重避免重复。 - query 参数: 将用户的「核心争议焦点」作为
query传入,可附加案由关键词提升准确性
第一批(v3.11.0 批量返回 + 流水线预取): 检索关联度最高的 15 个案例(全国模式 return_num = 15;精确省/市模式 10;代理限定模式 15),一次性返回足够候选。(v3.11.0 流水线:渲染本批 widget 的同一 turn 内,WB 同步并行预取本批权威案例(l 字段非"—"者)的完整详情 yuandian_rh_case_details,供第五步直接复用,报告阶段无需再等待。)渲染为单个 widget 后,调用一次 AskUserQuestion 决策(继续检索 / 生成报告)。用户仍可在决策回复中口头要求"下一批 N 个"(N ≤ 对应模式上限)以补检;后续批次复用相同 query 与过滤条件,靠案号去重。如需减少首轮数量(如只想看 5 个),用户在第一步回显或决策题中口头提出即可,WB 相应下调 return_num。
案例权威性优先排序规则(v3.6): 检索结果返回后,在按关联度排序的基础上,将以下权威案例优先排列在列表前部(在同一关联度层级内,权威案例排在普通案例之前):
- 最高人民法院公报案例:案例名称或内容中包含「最高人民法院公报」「公报案例」标识的案例
- 各级法院系统评奖评优案例:包括但不限于:
- 最高人民法院评选的「指导性案例」「典型案例」「优秀案例」
- 各省高级人民法院评选的「全省法院典型案例」「优秀裁判文书」
- 各级法院系统发布的「参考性案例」「年度案例」
- 识别方式:从
content字段中检索关键词(「公报」「典型案例」「优秀案例」「指导性案例」「参考性案例」「年度案例」等),或在案例元数据中查找权威性标签 - Widget 标注:权威案例在 widget 的「案例名称」列中通过标签(如 🏛️公报、⭐典型、📌指导)进行醒目标注
重要:生成 widget 前预加载裁判结果。 在调用 show_widget 渲染案例列表之前,必须为每个案例预先获取其裁判结果摘要,方法如下:
yuandian_case_vector_search的返回结果中,每个案例包含content字段(整理后的完整案例内容)。- 从
content字段中提取裁判结果部分(通常包含「判决如下」「裁定如下」「本院认定」「判决主文」等段落),整理为 150-250 字的纯文本摘要,包含:判决/裁定结论、主要法律依据、裁判要旨。 - 用
【结】【据】【旨】等单字标记替代长标题,段落用|分隔。 - 将整理后的摘要直接写入每个案例的
.detail-inner元素中(即预览展开行显示的文本内容),无需额外v字段。
这样用户点击「预览」时,裁判结果在下一行全宽展开显示,无需等待异步通信。
将这批案例通过 show_widget 工具以纯 HTML/CSS 交互式表格呈现给用户审阅。每个案例附带可展开的预览区域(点击后另起一行全宽显示),供用户审阅裁判结果。注意:本技能不再使用"纳入报告"复选框——每轮检索到的案例全部自动进入报告候选池,最终是否生成报告由下方的轮次选择题决定。
呈现后用 AskUserQuestion 询问用户(替代原 v2.2 强制收集机制):
每轮(第一批、第二批……)案例 widget 渲染完毕后,WB 必须立即调用一次 AskUserQuestion,向用户提出如下二选一选择题(单选):
- 问题文本(question): 第 N 批案例已展示。是否继续检索更多案例,还是直接生成检索报告?
- header: 轮次决策
- 选项1(label: "继续检索"): 检索下一批 5 个案例(重复检索 → 预加载 → 渲染 widget → 再询问的流程)。
- 选项2(label: "生成报告"): 将此前所有轮次(第1批至第N批)检索到的全部案例合并,直接生成《案例检索报告》。
强制规则:
- WB 必须通过
AskUserQuestion提出上述选择题,不得退化为纯文本提问,也不得默认直接进入下一步(除非用户已预声明批次上限且达到上限,见下)。 - 用户选择「继续检索」→ 检索下一批(自动去重,不重复展示已出现过的案号),重复本流程。
- 用户选择「生成报告」→ 将所有已检索轮次的案例(合并、按案号去重)全部纳入报告,直接进入第五步生成《案例检索报告》。无需再弹出汇总确认表,也无需用户逐案勾选。
- 每一轮检索到的案例,在用户选择「生成报告」之前,都视为"已候选"状态,无需单独确认。
- 批次上限预声明联动(v3.8.0): 若用户在首轮回显时已声明"共检索 N 批",则当已展示第 N 批后,WB 不再弹出轮次选择题,直接执行 5.0 回显并进入第五步生成报告(仍保留随时叫停权利:用户在 N 批内任一批后口头要求"停止/生成报告",即提前终止;要求"再加一批"则突破上限继续)。
- 多轮检索实务提示: 每轮复用相同的
query与过滤条件,靠"按案号去重"避免重复。若连续多轮去重后新增极少(接近耗尽语义相近结果),WB 应在询问时提示用户"新案例已较少,建议生成报告,或口头提出调整检索词/范围以重启检索",避免无效轮次。默认全国模式下若某省分布偏少,可补一轮精确省模式检索补齐。
纯 HTML/CSS Widget 模板(v3.0 核心)
设计原理: 完全不依赖 JavaScript。利用 <details> 原生展开 + CSS 实现交互。
- 预览展开(v3.6.2 修复):每个案例是一个独立的
<details class="case-card">,<summary class="case-row-summary">是案例行(用 flex 模拟表格行),展开后预览内容在案例行下方另起一行全宽显示,自动换行,行高 1.8,阅读体验良好。无需任何 JavaScript。 - (v3.7 变更) 案例 widget 不再含"纳入报告"勾选区与底部确认区;勾选筛选机制已废止,流程由
AskUserQuestion轮次选择题驱动。
【关键约束】
- 禁止使用任何
<script>标签 - 禁止使用任何内联事件处理器(onclick/onchange),唯一例外:textarea 上允许
onclick="this.select()"以改善复制体验(select()是 textarea 原生方法,沙箱不会剥离) - 所有交互必须通过纯 HTML + CSS 实现
- verdict 文本控制在 150-250 字,用
|分隔段落,用【结】【据】【旨】等单字标记
⚠️ CSS 类名注意: 本模板使用
.case-card作为每个案例卡片的类名(非.case-row)。所有 CSS 规则均需针对.case-card书写。文档其他位置若出现.case-row均为笔误,以模板代码为准。v3.7 起模板已移除.case-cb/.cb-label/.confirm-area等勾选相关类名,仅保留预览展开所需的.case-card/.case-row-summary/.detail-inner等。
<!-- 每个案例是一个独立的 <details class="case-card">,展开后预览内容全宽显示 -->
<div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; max-width: 100%;">
<h3 style="margin: 0 0 12px 0; font-size: 15px; color: #333;">
第N批 · 共M个案例
</h3>
<style>
/* 每个案例是一个 details 卡片 */
.case-card { border-bottom: 1px solid #eee; }
.case-card:first-of-type { border-top: 1px solid #eee; }
/* summary = 案例行,用 flex 模拟表格行 */
.case-row-summary { display: flex; align-items: center; padding: 8px 6px; cursor: default; list-style: none; gap: 4px; }
.case-row-summary::-webkit-details-marker { display: none; }
.case-card[open] > .case-row-summary { background: #f9f9f9; }
.case-card:hover > .case-row-summary { background: #f9f9f9; }
/* 各列 flex 宽度,模拟表格(v3.7 起:不含"纳入报告"列) */
.col-seq { width: 40px; flex-shrink: 0; text-align: center; font-size: 13px; }
.col-name { flex: 2; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.col-ah { width: 170px; flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.col-court { width: 150px; flex-shrink: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.col-date { width: 90px; flex-shrink: 0; text-align: center; font-size: 13px; }
.col-rel { width: 150px; flex-shrink: 0; font-size: 12px; color: #555; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.col-prev { width: 70px; flex-shrink: 0; text-align: center; }
/* 预览展开区域:全宽显示 */
.detail-inner { padding: 12px 16px; background: #f9f9f9; font-size: 13px; line-height: 1.8; color: #333; max-height: 400px; overflow-y: auto; white-space: pre-wrap; border-top: 1px solid #eee; border-bottom: 1px solid #eee; }
/* 表头 */
.table-header { display: flex; align-items: center; padding: 8px 6px; border-bottom: 2px solid #d0d0d0; background: #f0f2f5; position: sticky; top: 0; z-index: 1; font-size: 13px; font-weight: 500; }
.scroll-wrap { max-height: 600px; overflow-y: auto; border: 1px solid #e0e0e0; border-radius: 4px; }
</style>
<div class="scroll-wrap">
<!-- 表头 -->
<div class="table-header">
<div class="col-seq">序号</div>
<div class="col-name" style="text-align:left;">案例名称</div>
<div class="col-ah" style="text-align:left;">案号</div>
<div class="col-court" style="text-align:left;">审理法院</div>
<div class="col-date">裁判日期</div>
<div class="col-rel" style="text-align:left;">关联度简述</div>
<div class="col-prev">预览</div>
</div>
<!-- ===== 案例1 ===== -->
<details class="case-card">
<summary class="case-row-summary">
<div class="col-seq">1</div>
<div class="col-name"><span style="background:#fff3e0;color:#e65100;font-size:11px;padding:1px 4px;border-radius:2px;margin-right:4px;">⭐典型</span>XX诉XX商标侵权纠纷案</div>
<div class="col-ah">(2024)浙0108民初XXX号</div>
<div class="col-court">杭州市滨江区人民法院</div>
<div class="col-date">2024-01-01</div>
<div class="col-rel">侵害商标权,支持律师费</div>
<div class="col-prev">
<span style="color:#1890ff;cursor:pointer;font-size:13px;text-decoration:underline dotted;">预览</span>
</div>
</summary>
<!-- 预览内容:展开后全宽显示,自动换行 -->
<div class="detail-inner">【结】判决结论内容|【据】法律依据|【旨】裁判要旨</div>
</details>
<!-- ===== 案例2 ===== -->
<details class="case-card">
<summary class="case-row-summary">
<div class="col-seq">2</div>
<div class="col-name">XX诉XX著作权侵权案</div>
<div class="col-ah">(2024)浙0108民初YYY号</div>
<div class="col-court">杭州市滨江区人民法院</div>
<div class="col-date">2024-02-01</div>
<div class="col-rel">摄影作品侵权,全额支持维权合理开支</div>
<div class="col-prev">
<span style="color:#1890ff;cursor:pointer;font-size:13px;text-decoration:underline dotted;">预览</span>
</div>
</summary>
<!-- 预览内容:展开后全宽显示,自动换行 -->
<div class="detail-inner">【结】判决结论内容|【据】法律依据|【旨】裁判要旨</div>
</details>
<!-- 更多案例按相同格式追加(每个案例一个 <details class="case-card">) -->
</div>
</div>
关键交互说明(v3.7 更新)
- 预览(核心交互):每个案例是一个
<details class="case-card">,<summary>是案例行,点击「预览」文字后<details>原生展开,预览内容在案例行下方另起一行全宽显示,自动换行,行高 1.8,阅读体验良好。无需任何 JavaScript。 - 轮次决策(外部选择题):案例 widget 仅用于审阅裁判结果,不再含勾选框或确认区。是否继续检索或生成报告,由 WB 在 widget 之后调用
AskUserQuestion二选一选择题决定(见第三步末尾与第四步)。 - 代理限定标注(v3.9.0):当启用特定律师/律所限定模式时,widget 的
<h3>标题须追加标注,例如「第N批 · 共M个案例(限定:XX律师事务所 XX律师代理)」;同时在每条案例的「关联度简述」列或案例名称中体现「代理:XX律所 XX律师」,便于用户即时核对检索范围。经二次过滤后保留的案例,均为该律师在该律所代理的案件,无关案例已剔除,不可在 widget 中混入未通过过滤的案例。 - 零脚本原则:所有
show_widgetHTML 中严禁<script>;交互仅依赖<details>+ CSS。原"绿色确认区 + textarea 复制"机制已随 v3.7 废止。
verdict 字段格式规范
每个案例的 verdict 必须按以下格式,控制在 150-250 字:
【结】判决/裁定结论(50-80字)|【据】主要法律依据(30-50字)|【旨】裁判要旨/参考价值(70-120字)
用 | 分隔三段,不要使用 \n 或 <br>。渲染时 .detail-inner 中直接写文本,用 white-space: pre-wrap 保留格式。
第四步:轮次管理与生成报告决策
核心原则(v3.7 重大调整): 本技能不再使用逐案勾选 + 汇总确认表机制。每一轮(第1批、第2批……)检索到的案例,在用户作出"生成报告"决策之前,全部自动进入报告候选池 ALL_CASES。用户通过第三步末尾的 AskUserQuestion 选择题(继续检索 / 生成报告)控制流程推进。
数据维护: WB 在内存中维护 ALL_CASES 数组(报告候选池),每个案例对象包含:batch(批次号,如"第1批")、i(全局序号,从1开始连续编号)、n(案例名称)、c(案号)、t(审理法院)、d(裁判日期)、s(关联度简述)、l(案例级别:"公报案例" / "典型案例" / "优秀案例" / "指导性案例" / "—")。同一案例按 c(案号)去重——若下一轮检索结果中出现与 ALL_CASES 中已有案号相同的案例,不予重复加入。
说明(v3.8.0 修正): ALL_CASES 仅保存检索阶段获取的结构化元数据(含 s 关联度简述与已识别的 l 案例级别),用于 widget 展示与候选池去重;裁判结果摘要与完整文书均在第五步生成报告时按需从 content / yuandian_rh_case_details 提取,不再在 ALL_CASES 中持久化存储 v 摘要字段(与第三步"无需额外 v 字段"及 v3.7 废除勾选/逐案预览缓存的机制保持一致)。
注意: 每次呈现新批次案例时,标题注明批次号(第1批、第2批……),并在回复中提示"当前候选池共 N 个案例"。所有已检索案例的完整信息必须在 WB 内存中持续维护,供第五步生成报告使用。
流程决策(由第三步末尾的 AskUserQuestion 二选一选择题驱动):
- 用户选择「继续检索」 → 检索下一批(自动按案号去重,不重复展示已有案例),重复第三步完整流程(检索 → 预加载裁判结果 → 渲染 widget → 再次询问)。各轮案例持续累积进
ALL_CASES。 - 用户选择「生成报告」 → 将
ALL_CASES中的全部案例(即第1批至第N批所有已检索案例,合并去重)直接纳入报告,进入第五步生成《案例检索报告》。此场景下不再弹出汇总确认表,也无需用户逐案勾选。
兜底规则:
- 若用户在第1批后即选择「生成报告」,
ALL_CASES仅含第1批案例,直接进入第五步。 - 若某轮检索返回 0 个新案例(去重后无新增),WB 应提示用户"未检索到更多新案例",并再次询问"继续检索 / 生成报告",由用户决策。如用户希望调整检索词或更换检索范围以扩大结果,应在回复中口头提出,WB 据此回第一步/第二步重新收集参数后重启检索(原候选池可保留或清空,由用户决定)。
- 若用户连续多次选择「继续检索」导致候选池过大(超过 30 个),WB 应在询问时提示"候选池已较大,建议生成报告或调整检索词缩小范围",但仍尊重用户选择。
🚫 已废止机制说明: 原 v3.6 及之前的"每批绿色文本框勾选收集""第四点五步汇总确认表""SELECTED_CASES 勾选筛选"等机制,自 v3.7 起正式废止,不再使用。生成报告的范围一律以
ALL_CASES(各轮检索合并去重)为准。
第四点五步:(已废止,自 v3.7 起跳过)
原“案例汇总确认表”步骤因与新的轮次选择题机制冲突,自 v3.7 起不再执行。用户选择「生成报告」后直接进入第五步,无需汇总表确认。
第五步:生成《案例检索报告》
第5.0步(v3.7 调整):用户选择「生成报告」后,先回显候选池清单。
当用户在第三步末尾的 AskUserQuestion 中选择「生成报告」后,WB 应先回复一段非阻塞的告知信息(即"通知式回显",不强制等待用户确认即可继续生成),列出 ALL_CASES(各轮检索合并去重)中的案例清单,格式如下:
已确认纳入报告的案例共 N 个(来自第1批至第M批合并去重):
- 第1号:案例名称(案号)〔第X批〕
- 第2号:案例名称(案号)〔第Y批〕 ……
即将据此生成《案例检索报告》。如需调整(如"去掉第X号"),请尽快回复告知,我将在生成前拦截处理。
说明: 此回显为流程透明化要求(让用户知悉报告范围),不阻塞生成——WB 回复告知后即可直接进入第5.1步生成报告;若用户在生成前补充"去掉第X号"等调整指令,WB 应中断并相应修改 ALL_CASES 后重新回显(最多 2 轮),再生成。(注:v3.7 起报告范围即为 ALL_CASES 全部案例,用户无需逐案勾选;如用户希望缩减范围,可在回复中口头指定"去掉第X号",WB 相应调整 ALL_CASES 后重新连续编号。)
第5.1步:获取完整裁判内容并生成报告。
获取完整裁判内容操作指南:
对 ALL_CASES 中的每个案例,调用 mcp__yuandian-mcp__yuandian_rh_case_details 获取完整详情:
- 参数:
ah = "案号"(如"(2024)浙0108民初XXX号") - 如
ah查询无结果,尝试用id参数(从搜索结果的case_id字段获取) - 如仍无结果,降级使用第三步中已提取的
content字段内容
效率提示(v3.8.0 并行优化 + v3.11.0 流水线化):
- 【v3.11.0 流水线化】检索阶段即预取权威详情: 自 v3.11.0 起,WB 在第三步渲染每批 widget 的同一 turn 内,已并行预取该批权威案例(
l字段非"—"者)的完整详情yuandian_rh_case_details(案号/ID 在搜索结果中已知,无需新增检索词)。因此进入第五步时,权威案例详情通常已就绪,报告生成阶段无需再等待详情请求——这是将原集中在报告阶段的网络耗时前移、与交互并行的关键提速,且不影响质量(仍获取完整文书)。 - 并行批量调用(核心提速): 若仍有未预取的详情(如用户补检批次后新增的权威案例需获取),WB 应并行发起多个
yuandian_rh_case_details请求,而非逐案串行。总耗时由"N × 单请求耗时"降为"≈ 1 × 单请求耗时(受并发上限约束)"。不改变任何返回内容,不影响报告质量。 - 权威优先 + 普通降级(仍保留): 权威案例(含
l字段非"—"者)必须获取完整文书;普通案例直接基于第三步检索结果中的content与已预加载的裁判结果摘要生成报告(仍须满足附件"主要内容"强制要求)。【v3.11.0 禁止冗余检索】报告阶段普通案例一律复用第三步content,禁止重复调用case_vector_search,避免冗余语义检索往返。 - 并发保护: 若并行请求触发限流或报错,WB 应自动退化为"小批量并行"(如每批 3–5 个并行),而非完全串行,以保持提速收益。
从完整详情中提取报告所需各部分:
- 案情简介(≤100字):从「案件基本事实」「经审理查明」等段落提取
- 案例级别:从案例内容中识别权威性标签(「最高人民法院公报」「指导性案例」「典型案例」「优秀案例」「参考性案例」等),标注为「公报案例」「典型案例」「优秀案例」「指导性案例」等;无权威标签的普通案例标注「—」
- 争议焦点:从「争议焦点」「本案焦点」等段落提取,或自行归纳
- 法院认定:从「本院认为」「本院认定」等段落提取
- 法律适用:从「依照……规定」「依据……法」等段落提取援引法条。【引用规范】 引用法律条文时必须注明法律法规全称、生效版本及具体条款号;WB 通过外部检索仍无法核验的条文,须明确标注「待核实」,不得作为确定性结论给出。
- 参考价值:结合用户争议焦点,分析该案例的参考意义。权威案例(公报案例、指导性案例、典型案例等)的参考价值应特别强调其权威性和对下级法院的指导意义
- 附件内容:优先使用完整裁判文书正文;如
yuandian_rh_case_details返回内容不完整,从content字段提取补充,至少包含:当事人信息、案件基本事实、法院认定与说理、裁判结果
生成报告: 按下方报告格式模板生成完整的《案例检索报告》。报告以 Markdown 格式写入工作目录下的文件,文件名格式:案例检索报告_[争议焦点简称]_YYYYMMDD.md。
【v2.3 强制要求 — 报告内容审核】
- 报告中的案例 =
ALL_CASES中的案例,一一对应,不多不少。 - 报告中每个案例必须来自各轮检索结果(用户已通过"生成报告"决策确认纳入)。
- 用户从未见过的案例 → 绝对不出现在报告中。
- WB 在生成报告前,必须逐案例核对:报告中的每个案例,是否都在
ALL_CASES中。不在的案例,必须移除。 - WB 在生成报告后,必须再次自检:报告的「选定案例清单」(第二部分)和「案例详细分析」(第三部分)中的案例数量,是否与
ALL_CASES数量一致。
报告格式如下:
案例检索报告
检索主题: [用户提供的争议焦点/案由]
检索范围: [省份/直辖市/具体法院,如:北京市、上海市、浙江省、广东省相关法院]
检索时间范围: 2021年1月1日 至今
检索日期: YYYY年MM月DD日
检索工具: 华宇元典法律数据库
一、检索概述
本次检索共进行 [轮次总数] 轮,累计返回案例 [各轮返回数之和] 份,按案号合并去重后得 [候选池数] 份,全部纳入本报告分析如下。
二、选定案例清单
| 序号 | 案例名称 | 案号 | 审理法院 | 裁判日期 | 案例级别 | 批次来源 |
|---|---|---|---|---|---|---|
| 1 | [案例名称] | [案号] | [法院] | [日期] | [公报案例/典型案例/优秀案例/—] | [第X批] |
| 2 | ... | ... | ... | ... | ... | ... |
三、案例详细分析
案例1:[案例名称]
- 案号: [案号]
- 审理法院: [法院]
- 裁判日期: [日期]
- 案例级别: [公报案例 / 典型案例 / 优秀案例 / 指导性案例 / —(普通案例留空或填「—」)]
- 批次来源: [第X批]
- 案情简介: [100字以内摘要]
- 争议焦点: [本案争议的核心问题]
- 法院认定: [法院对争议焦点的认定思路和结论]
- 法律适用: [援引的法条]
- 参考价值: [该案例对用户案件的参考意义]
(依次分析每个选定案例)
四、裁判观点汇总
将各案例的裁判观点进行归纳,提炼共通认定标准、分歧点(如有),并给出实务建议。
五、检索结论
综合上述案例,就用户的争议焦点问题,总结司法实践中的主流观点,并提示风险或注意事项。
⚠️ AI风险提示: 本报告由 AI 基于华宇元典法律数据库检索生成,仅供参考使用,不构成法律意见,不代表任何司法机关观点。如需用于诉讼或正式法律文件,请结合最新法律法规案例审慎使用。本报告也可能存在遗漏、错误,请人工进行审核校对!
附件:案例裁判文书或主要内容
以下为《案例检索报告》中收录的各案例裁判文书或主要内容。
【强制要求】报告中选定的每个案例,必须在附件中附上裁判文书或主要内容。每个案例附件必须明确注明法院和案号,不可遗漏。优先附上完整裁判文书正文;如确因数据库限制无法获取全文,则必须附上裁判文书的主要内容(至少包含:当事人信息、案件基本事实、法院认定与说理、裁判结果),严禁仅附摘要。
附件1:[案例名称]
案号: [案号]
审理法院: [法院]
裁判日期: [日期]
裁判文书或主要内容:
[裁判文书正文内容。优先附上完整裁判文书全文;如无法获取全文,则附上裁判文书主要内容,至少包含:当事人信息、案件基本事实、法院认定与说理、裁判结果。]
附件2:[案例名称]
案号: [案号]
审理法院: [法院]
裁判日期: [日期]
裁判文书或主要内容:
[裁判文书正文内容。优先附上完整裁判文书全文;如无法获取全文,则附上裁判文书主要内容,至少包含:当事人信息、案件基本事实、法院认定与说理、裁判结果。]
(依次附上每个选定案例的裁判文书或主要内容,每个案例必须注明法院和案号)
⚠️ AI风险提示(再次提示): 本报告及附件由 AI 基于华宇元典法律数据库检索生成,仅供参考使用,不构成法律意见,不代表任何司法机关观点。如需用于诉讼或正式法律文件,请结合最新法律法规案例审慎使用。本报告也可能存在遗漏、错误,请人工进行审核校对!
第六步:询问是否转换为 DOCX 格式(强制选择题)
🚫 本步骤是报告生成后的强制收尾环节,绝对不可跳过。
WB 必须在《案例检索报告》Markdown 文件生成完毕后、结束本次回复前,使用
AskUserQuestion工具向用户弹出一个明确的三选一选择题。无论用户之前是否表达过对 DOCX 的偏好,此提问都不可省略。
提问内容:
使用 AskUserQuestion 工具,设置 questions 参数为一个包含单个问题的数组,该问题必须提供以下三个选项:
问题文本(question): 《案例检索报告》Markdown 文件已生成。是否需要将其转换为 DOCX 格式文件并保存至电脑桌面?
选项1(label: "需要"): 将 Markdown 文件转换为 DOCX 格式,保存至电脑桌面。WB 将立即执行下方的转换流程。
选项2(label: "不需要"): 无需转换,当前流程结束。WB 不做任何额外操作。
选项3(label: "自定义需求"): 用户可在自由文本框中输入自定义需求(如:「转换为 PDF 格式」「保存到 D 盘指定文件夹」「同时生成 DOCX 和 PDF」「仅保留 Markdown 即可」等)。WB 根据用户输入的具体文字需求执行相应操作。如涉及 DOCX 转换,使用下方的转换流程。
AskUserQuestion 调用示例结构:
{
"questions": [
{
"question": "《案例检索报告》Markdown 文件已生成。是否需要将其转换为 DOCX 格式文件并保存至电脑桌面?",
"header": "DOCX转换",
"options": [
{
"label": "需要",
"description": "将 Markdown 转换为 DOCX 格式,保存至电脑桌面"
},
{
"label": "不需要",
"description": "无需转换,当前流程结束"
},
{
"label": "自定义需求",
"description": "请在下方文本框中输入您的具体需求(如:转换为PDF、指定保存路径等)"
}
]
}
]
}
处理用户选择:
- 用户选择「需要」或「不需要」: 直接按对应逻辑执行。
- 用户选择「自定义需求」并在文本框中输入了文字: WB 必须仔细阅读用户输入的自定义需求,理解其意图后执行相应操作。常见场景:
- 涉及 DOCX 转换 → 使用下方转换流程
- 涉及 PDF 转换 → 先转 DOCX 再转 PDF,或直接搜索可用工具
- 指定了其他保存路径 → 将输出文件保存到用户指定路径
- 用户输入了其他非转换类需求 → 按需响应
- 用户选择「自定义需求」但未输入文字或输入为空: WB 回复:「您选择了自定义需求,但未输入具体内容。请问您需要什么操作?」并等待用户补充。
转换流程:
- 前置校验: 先确认
joe-markdown-to-docxskill 是否存在于~/.workbuddy/skills/joe-markdown-to-docx/。若不存在,WB 应提示用户该转换依赖未安装,并询问是否改用其他方案(如 pandoc、python-docx),不得静默失败。 - 加载 skill: 加载
joe-markdown-to-docxskill(路径~/.workbuddy/skills/joe-markdown-to-docx/),按其内置说明执行转换。 - 运行时隔离(强制): 转换脚本必须经由托管 Node 运行时调用,禁止直接使用裸
node命令。使用本会话管理的 Node 绝对路径:
(若脚本依赖 npm 包,应将其装在托管 workspace:/Users/gongjiayong/.workbuddy/binaries/node/versions/22.22.2/bin/node ~/.workbuddy/skills/joe-markdown-to-docx/scripts/convert.js <Markdown文件路径> ~/Desktop/案例检索报告_[争议焦点简称]_YYYYMMDD.docx/Users/gongjiayong/.workbuddy/binaries/node/workspace/node_modules,并以NODE_PATH指向该目录运行。输出路径默认桌面,用户指定其他路径时替换末参。) - 保存路径(用户已授权): 龚家勇律师已于 2026-07-10 明确授权:将检索生成的报告及转换后的
.docx文件保存至其电脑桌面(~/Desktop)属于许可操作。因此 DOCX 默认输出至桌面:~/Desktop/案例检索报告_[争议焦点简称]_YYYYMMDD.docx。若用户在"自定义需求"中指定其他路径(如 D 盘、指定文件夹、同时转 PDF 等),按用户指定执行。无论保存至何处,完成后均应以文字告知用户确切文件路径。 - 完成告知: 转换完成后,告知用户文件位置(默认桌面路径,或用户指定的其他路径)。
【强制规则】此提问不可跳过。WB 必须在 Markdown 文件生成后、结束回复前,使用 AskUserQuestion 工具执行此提问。即使之前用户明确说过「不要 DOCX」或「只要 Markdown」,此提问仍需执行,以便用户做最终确认。
注意事项
- 地域过滤(v3.8.0 重构): 提供三种模式——① 精确省/市模式:用
wenshu_filter.xzqh_p(省份)或wenshu_filter.fayuan(具体法院)在检索时直接过滤;② 默认全国模式(提速默认项):不设置xzqh_p/fayuan,单轮全国检索后在本地按审理法院名称(返回字段court或fayuan)中的省份关键字归类展示(如北京市、上海市、浙江省、广东省分组);如某省分布偏少,再补一轮精确省模式。两种模式质量等价,全国模式仅减少请求量。默认四省市兜底场景已并入默认全国模式,不再分 4 次串行检索。 - 时间过滤: 用户未限定时间范围时,必须在
wenshu_filter中设置ja_start: "2021-01-01";用户限定了时间范围时,同时设置ja_start和ja_end。 - 案例数量(v3.11.0 首轮批量返回): 首轮默认批量返回——全国模式
return_num = 15、精确省/市模式 10、代理限定模式 15(均精确可控,不依赖默认 45);渲染单个 widget 后仅用一次AskUserQuestion决策。用户可在决策回复中口头要求"下一批 N 个"(N ≤ 对应模式上限:全国 15 / 精确 10 / 代理 15)继续补检,或要求"首轮只看 5 个"下调数量。多批靠案号去重。用户可多次追加批次。 - 交互功能: 每批案例列表以纯 HTML/CSS 表格呈现,必须包含预览区域(点击展开查看裁判结果),无需勾选按钮(v3.7 起已取消"纳入报告"复选框)。使用纯 HTML/CSS 方案(
<details>实现展开),禁止使用<script>标签。 - 【v3.7 强制】每轮选择题驱动: 每轮(第1批、第2批……)案例 widget 渲染完毕后,WB 必须调用
AskUserQuestion向用户提出二选一选择题(「继续检索」/「生成报告」),不得退化为纯文本提问,也不得默认直接进入下一步。用户选择「生成报告」即代表将截至当前的全部候选池案例纳入报告。 - 【v3.7 废止】汇总确认表不再使用: 原"第四点五步案例汇总确认表"自 v3.7 起正式废止。用户选择「生成报告」后直接进入第五步,不再弹出汇总表、不再要求用户逐案勾选或复制答题卡。严禁以"未弹汇总表"为由拒绝生成报告。
- 【v2.3 强制】报告仅含候选池案例: 最终生成的《案例检索报告》中,仅包含
ALL_CASES(各轮检索合并去重)中的案例。用户从未见过的案例、一律不得出现在报告中。WB 生成报告前必须逐案例核对ALL_CASES,生成后必须自检报告中的案例数量与ALL_CASES一致。 - 报告生成前: 原则上应先调用
mcp__yuandian-mcp__yuandian_rh_case_details(按案号ah查询)获取完整裁判内容;权威案例(含l字段非"—"者)必须调用以提取完整文书——自 v3.11.0 起,此调用已在第三步检索阶段并行预取完毕,报告阶段直接复用,无需等待。普通案例直接基于第三步检索结果中的content与已预加载的裁判结果摘要生成报告(v3.11.0 禁止在报告阶段重复调用case_vector_search),但仍须满足"附件须含裁判文书或主要内容"的强制要求,严禁仅以content摘要充当附件。详细操作见第五步第5.1步。(v3.8.0 并行批量 / v3.11.0 流水线化 + 复用 content)详情接口应尽量并行批量调用;权威案例优先调用、普通案例降级用content,但不得跳过附件强制要求。 - 附件: 报告中选定的每个案例,必须在附件中附上完整裁判文书正文(或主要内容)。每个案例附件必须明确注明法院和案号,不可遗漏。如无法获取全文,至少附上当事人信息、案件基本事实、法院认定与说理、裁判结果等核心内容,严禁仅附摘要。
- AI风险提示: 报告末尾及附件末尾的AI风险提示不可省略。
- 【v3.0 新增 / v3.7 修订】Widget 零脚本原则: 所有
show_widget生成的 HTML 中,严禁包含<script>标签。v3.7 起 widget 仅含<details>+ CSS(无需<input>/<label>/:checked,勾选机制已废止);流程决策由AskUserQuestion外部选择题完成。这是解决沙箱兼容性问题的根本方案。 - 【v3.7 更新】轮次决策传递: v3.7 起不再依赖 widget 内 checkbox 勾选传递信息。流程决策统一通过第三步末尾的
AskUserQuestion选择题(「继续检索」/「生成报告」)完成。用户选择「生成报告」后,WB 直接进入第五步并回显ALL_CASES清单;如用户希望缩减范围,可在回复中口头指定"去掉第X号",WB 相应调整ALL_CASES并重新连续编号后回显(最多 2 轮)。 - 【v3.6.5 更新 / v3.8.1 修正】DOCX 转换询问(强制选择题): Markdown 报告文件生成后,WB 必须使用
AskUserQuestion工具向用户弹出三选一选择题,选项为「需要」「不需要」「自定义需求」。用户选择「自定义需求」时可在自由文本框中输入具体需求(如转 PDF、指定路径等),WB 按需响应。此提问不可跳过,即使用户之前表达过对 DOCX 的偏好也必须执行。转换使用joe-markdown-to-docxskill(路径:~/.workbuddy/skills/joe-markdown-to-docx/),调用时必须使用托管 Node 绝对路径(见第六步转换流程第3点);DOCX 默认输出至桌面~/Desktop(龚家勇律师已于 2026-07-10 明确授权保存至桌面),用户指定其他路径时按指定执行。 - 【v3.6 新增】权威案例优先呈现: 在每批案例的 widget 展示中,权威案例(最高人民法院公报案例、指导性案例、各级法院典型案例/优秀案例等)必须优先排列在列表前部。通过彩色标签(🏛️公报、⭐典型、📌指导等)在「案例名称」列中醒目标注。在报告的「选定案例清单」和「案例详细分析」中必须标注「案例级别」字段。权威案例的「参考价值」分析应特别强调其对下级法院的指导意义和裁判权威性。识别权威案例的方法: 从
content字段中检索关键词(「公报」「典型案例」「优秀案例」「指导性案例」「参考性案例」「年度案例」),或在案例元数据中查找权威性标签。 - 【v3.9.0 新增 / v3.9.1 修订 / v3.10.0 调整】特定律师/律所代理限定: 当用户指定"某律师事务所某律师代理"的检索范围时,启用代理限定模式:①
query追加代理限定信息以偏置语义检索;②return_num上调至 10–15 以容纳二次过滤;③ 对每批返回案例做二次内容过滤,保留正文中出现该律师姓名、且出现该律所全称或其派生简称/别称(模糊匹配,v3.9.1 新增:去后缀核心名/去行政区划/常用简称如"XX所""XX律所""XX律师"等),且二者共现于同一"委托代理人/代理人"表述的案例,无关案例一律剔除、不进入候选池与报告;④ widget 醒目标注限定范围,每案标注「代理律师/律所」。宽松模式(仅限律师或仅限律所)匹配范围更大,须标注提示。华宇元典接口无直接律师/律所过滤字段,故以"语义偏置 + 内容过滤"实现,结果以裁判文书正文共现为准。(v3.10.0 起:《案例检索报告》输出不再单列代理限定字段,检索过滤行为不受影响。) - 【v3.10.1 实务警示】代理限定模式的前提与局限: 本模式的有效性依赖华宇元典案例库对目标律师姓名存在可命中的索引,且文书「委托诉讼代理人」字段含未脱敏的姓名。实测(2026-08-03,检索"龚家勇+浙江金道律师事务所")表明:①
case_vector_search为语义向量检索,按"主题相似度"排序而非"人名精确索引",query 中的人名常被匹配到「代理/律师费」主题或「龚×勇」等姓名形态,难以精准召回特定律师;② 华宇元典「精选案例库」大量文书对委托代理人作匿名化(XXX、某某、金某某等),即便目标文书入库亦可能无法被检索与核验。故当用户指定"某律师+某律所代理"且连续多轮(建议≥3批、累计≥30份候选)二次过滤后 M=0 时,应如实向用户报告"该库无法稳定检索到目标律师代理案件",说明上述机制性原因,并建议改用其他具备律师代理案件索引的库(北大法宝、企查查、威科先行等)或由用户提供具体案号/文书核验,不得编造或生成空报告。
MCP 工具调用参考(华宇元典法律数据)
已确认可用的 MCP 工具(直接按此名称调用,无需再查询):
1. mcp__yuandian-mcp__yuandian_case_vector_search(案例语义检索)
- 功能: 根据自然语言 query 在案例库中进行语义相似度检索,返回整理后的案例内容
- 必填参数:
query(string):检索问题 / 查询文本(填入用户的争议焦点)
- 选填参数:
return_num(number):返回数量,默认 45。本技能强制设为 5rewrite_flag(boolean):是否改写查询,默认 truewenshu_filter(object):过滤条件,本技能常用字段:wenshu_filter.ay(array[string]):案由,如["买卖合同纠纷"]wenshu_filter.xzqh_p(string):省份,如"浙江省"wenshu_filter.fayuan(array[string]):具体法院名称,如["浙江省杭州市中级人民法院"]wenshu_filter.cj(string):法院层级,"基层" | "中级" | "高级" | "最高"wenshu_filter.ja_start(string):结案日期起,"yyyy-MM-dd"格式wenshu_filter.ja_end(string):结案日期止,"yyyy-MM-dd"格式wenshu_filter.wenshu_type(string):案件类别,如"民事案件"
- 返回字段说明(关键):
content:整理后的案例内容(预加载裁判结果时从此字段提取)case_name或name:案例名称ah或case_id:案号court或fayuan:审理法院date或ja_date:裁判日期
2. mcp__yuandian-mcp__yuandian_rh_case_details(获取案例详情)
- 功能: 按案号或案例 ID 查询单条案例的完整详情
- 选填参数(id 与 ah 至少传一个):
ah(string):案号,如"(2023)浙01民初123号"id(string):案例标识(从搜索结果中获取)type(string):类型筛选,"ptal"(普通案例)或"qwal"(权威案例),不传则不筛选
- 用途: 生成报告前,用此工具获取选定案例的完整裁判内容。权威案例必须调用以提取完整文书;普通案例在接口不可用、触发限流或候选池较大时,可降级使用搜索结果的
content与已预加载的裁判结果摘要,但仍须满足"附件须含裁判文书或主要内容"的强制要求,严禁仅以content摘要充当附件。