法律检索核验工作台
本工作台是重量级法律检索任务的脚本化执行终点:接收已经定稿的正文和真实检索来源,运行 legal-verify 生成一份可点击溯源的 HTML 报告。 任务单标记【核验工作台:必用】时必须进入本工作台,不能由其他步骤手写 HTML 替代。
它不判断 AI 回答最终对错,不替用户作法律结论;只给三个客观标签:
- 已关联:回答声明的来源/条文在本次资料库中真实存在,可点击查看原文。
- 弱关联:来源相关但条号或直接依据需人工核对。
- 待核验:本次资料库没有可溯源依据,不等于错误。
何时启用
| 档位 | 场景 | 做法 |
|---|---|---|
| 轻量 | 单条法条、效力查询、公众简易咨询 | 对话内联给来源链接,不用工作台 |
| 中量 | 事实关联法规、教学案例 | 默认内联;高风险、要存档/入文书、用户要求逐条出处时升级 |
| 重量 | 全面合规检索、文书引用素材、诉讼仲裁支撑、非诉文书检索、企业合规体检、案例专题分析、刑事量刑参考、行政复议证据 | 启用工作台,生成 HTML 报告 |
判断锚点:输出形态 + 用户拿去做什么 + 风险等级 + 是否需要成体系交付。任务单写有【核验工作台:必用】时,必须执行本工作台;所有重量级输出形态均为必用。
标准流程
- 检索即捕获(新增强制步骤):凡本轮任务调用过 WebSearch/WebFetch、北大法宝、华宇元典、用户自有 Skill/MCP 或其他检索工具,必须把每一批返回资料先写入检索批次 JSON,并运行
legal-verify capture。这样资料同时存在于上下文中供推理,也进入任务级raw-search/与可段落化sources/index,避免后续核验工作台只能面对一段无来源文本。只拿到标题/摘要的搜索结果会被保存到raw-search/,但不会作为可引用来源;必须继续读取网页/文档全文后再次 capture。 - 定稿正文:先按场景写好最终意见,原样保存为
answer.md。不要为了核验改写正文。 - 整理来源:优先使用 capture 已入库的资料;如仍需手工补充,把本次真实检索到、报告会用到的资料写入
sources.json并运行legal-verify persist。不得只在聊天上下文里保留来源。 - 声明依据:通读定稿,对关键法律句子写
claims.json,声明它对应的来源和条号。 - 一键生成首轮报告:运行
legal-verify all。这是首轮稿,不等于最终交付稿。 - 强制读取补检门禁:查看
repairRequired、supplementalQueuePath、supplementalQueueCount、sourceFulltextQueuePath、sourceFulltextIssueCount、sourceFulltextBlockerCount、health.deliveryBlocked、health.gates和health.warnings。只要repairRequired:true、health.ok:false或health.deliveryBlocked:true,不得交付首轮 HTML。 - 先补全文,再补关联:若
sourceFulltextBlockerCount>0或health.gates含source_fulltext_required,先打开sourceFulltextQueuePath,逐条用 WebFetch/官方库/MCP detail 工具读取全文并再次capture;不要直接对残缺资料做语义补联。sourceFulltextReviewCount仅为复核提示,但重量级报告也应确认后再交付。 - 补充检索/补充关联(强制门禁触发时):若统计中弱关联/待核验比例过高,或正文有未高亮但明显需要法律依据的内容,使用补检队列逐条语义判断;补到真实依据后应用补充关联并重建 HTML;确认无需独立依据的点必须
ignore并从最终可见统计中抑制。 - 看返回结果:
success:false必须修复后重跑;health.ok:false、health.deliveryBlocked:true或repairRequired:true必须完成补全文/补检闭环后再交付。
输入格式
sources.json
推荐顶层对象,也兼容裸数组。每条来源必须包含可溯源正文:
{
"sources": [
{
"title": "中华人民共和国个人信息保护法",
"sourceType": "law",
"provider": "pkulaw",
"status": "现行有效",
"url": "https://...",
"content": "第二十九条 处理敏感个人信息应当取得个人的单独同意。"
}
]
}
硬规则:没有 content 就不要入库,也不要生成核验报告。 title/url/doc_no 不能替代原文。
claims.json
推荐格式:
{
"claims": [
{
"claimText": "处理敏感个人信息应取得个人的单独同意",
"sourceTitle": "中华人民共和国个人信息保护法",
"articleNo": "第29条"
}
]
}
要点:
claimText必须逐字摘自answer.md,用于定位高亮。- 优先用
sourceTitle;不要让 AI 自己编 12 位 sourceId。 - 条文用
articleNo,案例用caseNo。
命令
命令执行方式
优先使用专家包内 CLI:<expert>/bin/legal-verify。如果运行时出现 permission denied 或当前环境未把该文件作为可执行脚本处理,改用 Node 直接执行:
node <expert>/bin/legal-verify <command> <args>
不要因为 CLI 权限或 PATH 问题跳过核验工作台,也不要改为手写 HTML。
检索批次捕获(检索后立即执行)
legal-verify init --query "用户原始问题" --title "合规分析报告" --out "output/合规分析报告.html"
legal-verify capture --task <taskDir> --input retrieval-batch-001.json --provider web
legal-verify audit-sources --task <taskDir>
retrieval-batch-001.json 可接收 {"results":[...]}、{"sources":[...]} 或裸数组;单条结果字段可为 title/url/content/markdown/text/body/fullText/snippet/metadata 等。capture 会:
- 将整批原始结果写入
raw-search/{batchId}.json与raw-search/{batchId}.md; - 对带全文的结果自动转成
sources/*.md、sources/*.json并重建index/paragraphs.jsonl、article_index.json、source_index.json; - 对只有标题/摘要、没有正文的结果只存 raw-search 并返回 warning,提醒继续读取全文后再次 capture。
随后运行 audit-sources。它会生成 verification/source-fulltext-queue.json,列出需要补取全文的 URL、摘要-only 结果、正文过短或带“展开全文/摘要/…”等截断迹象的来源。
只有在明确接受降级时才使用 --allow-snippet;否则不要把搜索摘要当作可引用原文。
生成核验报告
node <expert>/bin/legal-verify all \
--query "用户原始问题" \
--sources sources.json \
--answer answer.md \
--claims claims.json \
--title "合规分析报告" \
--out "output/合规分析报告.html"
也可分步执行:
legal-verify init --query "..." --title "合规分析报告" --out "output/合规分析报告.html"
legal-verify capture --task <taskDir> --input retrieval-batch-001.json --provider web
legal-verify audit-sources --task <taskDir>
legal-verify persist --task <taskDir> --input sources.json
legal-verify build --task <taskDir> --answer answer.md --claims claims.json
legal-verify html --task <taskDir>
补充检索与补充关联
这是核验工作台的二次修复能力,不能省略。它用于处理首轮报告中仍然存在的明显弱关联/待核验点,或者正文里未高亮但明显需要法律依据的法律命题。
第一步:导出补检队列
legal-verify repair-export --task <taskDir> --out verification/supplemental-search-queue.json
队列会列出需要复核的点,包括原句、现有候选、推荐检索语句和 aiReviewInstruction。
第二步:AI 语义门控 + 补充检索
逐条判断:
- 若该句只是前一句已关联依据后的解释、推论、总结或重复内容,写
action:"ignore",不要为了提高关联率硬补弱关联。 - 若该句独立提出新的法规条款、监管义务、权利义务边界或法律后果,先用工具发现能力查找并优先调用北大法宝
mcp__pkulaw__mcp-law-search-service/search_article、mcp__pkulaw__mcp-law-search-service/get_article、mcp__pkulaw__mcp-law/get_law_list,以及华宇元典/其他法律 MCP/Skill;专业库不可用或结果不足时,再用官方来源或公开可核验来源补充检索,取得真实原文;不要向用户说明工具选择或连接状态。 - 若原报告条号或说法错误,应补检后修正对应依据并在
correctionNote说明。
补检结果写成:
{
"findings": [
{
"pointId": "vp-001",
"action": "confirm",
"source": {
"title": "中华人民共和国个人信息保护法",
"sourceType": "law",
"provider": "pkulaw",
"status": "现行有效",
"url": "https://...",
"content": "第六条 ..."
},
"claim": {
"claimText": "逐字摘自 answer.md 的原句",
"sourceTitle": "中华人民共和国个人信息保护法",
"articleNo": "第6条"
},
"correctionNote": "补充检索确认该句依据为第六条"
}
]
}
第三步:应用补充关联并重建 HTML
legal-verify repair-apply --task <taskDir> --input supplemental-findings.json
legal-verify html --task <taskDir>
repair-apply 会把补充来源写入来源库、追加/修正 claims,并重新执行匹配。最终仍只交付 htmlPath 指向的 HTML 报告。
脚本门禁
为减少 AI 手工规则负担,关键检查由脚本完成:
--sources/--inputJSON 解析失败:直接失败,不生成报告。capture只要拿到检索结果就会保存 raw-search;但只有含content/markdown/text/body/fullText的结果才进入可引用sources/index。只有标题/摘要时必须继续读取全文。audit-sources会输出source-fulltext-queue.json;若发现摘要-only、正文截断、来源无段落或status:不完整,health.deliveryBlocked:true,必须先补全文。- 来源为空或总段落数为 0:直接失败。
- 默认每条 source 必须有
content;特殊降级必须显式传--allow-degraded。 - 传入
--claims但解析出 0 条有效声明:直接失败。 claims.jsonJSON 解析失败:直接失败。health.ok:false、health.deliveryBlocked:true或repairRequired:true会输出补全文/补检门禁信息;此时不得交付首轮 HTML,必须先处理sourceFulltextQueuePath与supplementalQueuePath后重建。assert-html不再只是模板检查;若 HTML 内仍有较高弱关联/待核验比例,也会验收失败,强制回到动态检索策略。
交付前检查
最终只交付 htmlPath 指向的 HTML 报告。它必须由模板渲染,页面应包含:深色标题栏、黄色说明条、筛选按钮、统计条、左右双栏、右侧“关联依据/来源资料库”两个 tab、导出 Word/Excel/PDF 按钮。
交付前运行:
legal-verify assert-html --html <htmlPath>
该命令不通过时,可能是报告不是核验工作台模板产物,也可能是弱关联/待核验仍未闭环。必须重新运行 legal-verify all/html 或回到补全文/补检队列修复。不要把 answer.md、sources.json、claims.json、手写 HTML 或临时 HTML 当正式报告交付。
References
references/virtual-memory-schema.md— sources 输入与任务目录结构references/verification-point-spec.md— claims 与核验点规范references/evidence-matching-spec.md— 三类核验标签与匹配逻辑references/html-report-spec.md— HTML 报告结构