我让AI帮忙做了一个“全国产品质量鉴定法规监测”Skill
前言
程序员表达关心的一种方式,大概就是:发现对方每天都在重复做一件麻烦又容易遗漏的事,然后悄悄把它做成一个工具。
对象的工作会接触产品质量鉴定、法院委托鉴定,以及不同地区法院对鉴定机构、鉴定材料和办理流程的要求。
这类工作有一个很现实的问题:全国各省、市、法院公开信息的入口并不统一。有的内容在高级人民法院网站,有的藏在“司法委托”栏目里,有的是机构名册、入册公告或暂停资格公告,还有一些只在当地政府文件库中公开。
如果某个法院突然发布了新要求,而工作人员还在沿用旧材料、旧名册或旧流程,就可能在实际办理时遇到问题。
所以,我做了一个名为 “中国产品质量鉴定法规监测” 的 Skill,希望把“到处搜索、逐条核对、保存原文、检查变化”这件事尽量自动化。
一、这个 Skill 想解决什么问题
最初的需求很简单:
能不能定期检查全国各省市关于产品质量鉴定的法规和法院要求?如果有新发布或修改,就把原文下载下来并提醒我。
真正开始做以后,才发现它不是一次普通的关键词搜索。
需要处理的问题至少包括:
- 全国31个省级地区不能漏掉;
- 各地法院网站结构不同,部分网站还有动态渲染、证书异常、超时或访问限制;
- “产品质量鉴定”很容易与建设工程质量、价格鉴证、资产评估、医疗鉴定等内容混在一起;
- 搜索到一篇网页,不代表它仍然有效;
- 第一次建立资料库不能把所有历史文件都误报成“新规”;
- 网页上的访问量、点击数发生变化,也不能误判为法规正文修改;
- 用户问“最近半年有哪些文件”和“相比上次有没有新增”,其实是两种完全不同的问题。
因此,这个 Skill 不只是“搜索网页”,而是一套带有检索边界、来源等级、存档、去重和变化判断的工作流程。
二、Skill 的检索范围
当前版本主要面向以下内容:
- 产品、商品、设备、机械、电子、化工、轻工、建材、金属材料等产品质量鉴定;
- 买卖、承揽、产品责任等案件中的法院委托质量鉴定;
- 法院对外委托鉴定管理办法和工作流程;
- 鉴定机构名册、入册公告、评分标准和暂停资格公告;
- 鉴定申请、材料质证、抽样封样、机构选择、收费和期限;
- 补充鉴定、重新鉴定、回避以及鉴定人出庭要求。
默认不混入以下内容:
- 单纯的建设工程质量、工程造价和房屋安全鉴定;
- 价格鉴证和资产评估;
- 医疗损害、法医、物证、声像资料和环境损害鉴定;
- 一般产品质量监督抽查、认证和行政处罚;
- 只描述个案事实、没有形成普遍要求的案例。
这一步非常重要。检索范围如果不先限定,最后得到的往往不是“资料更多”,而是大量看似相关、实际无法使用的信息。
三、全国覆盖是怎么做的
Skill 内置了全国31个省级地区的检索清单,包括:
北京、天津、河北、山西、内蒙古、辽宁、吉林、黑龙江、上海、江苏、浙江、安徽、福建、江西、山东、河南、湖北、湖南、广东、广西、海南、重庆、四川、贵州、云南、西藏、陕西、甘肃、青海、宁夏和新疆。
每个地区至少配置两类入口:
- 高级人民法院或当地法院门户;
- 省级法规、规章、规范性文件或政府政策数据库。
检索时先检查国家层面的统一依据,再依次检查31个地区。用户要求“各省市”时,还会继续补查省会、计划单列市,以及已经发现专项文件的中级法院和基层法院。
需要说明的是:全国并不存在一个能够完整收录所有地方法院内部要求的公开数据库。因此,“覆盖31个省级地区”不等于“已经穷尽全国每一家基层法院”。报告必须如实写出实际检查的城市和法院数量,不能为了好看而宣称百分之百覆盖。
四、只认官方来源,不以搜索摘要代替正文
为了降低误报,Skill 对来源做了分级:
- A级:制定机关官网、法院官网或官方公报;
- B级:同级或上级政府、法院的正式转载;
- C级:官方机构名册、公告或政府答复;
- D级:行业协会、鉴定机构、媒体和商业数据库,只作为待核实线索。
只有A级至C级来源可以进入“确认清单”。搜索结果摘要、机构自述和行业文章不能直接作为正式依据。
例如,法院委托鉴定的一项重要统一依据是最高人民法院发布的《关于人民法院民事诉讼中委托鉴定审查工作若干问题的规定》。它涉及鉴定事项、鉴定材料、机构和人员审查、收费、期限及出庭等内容。
另一个很容易踩坑的地方,是网上仍然可以搜到原国家质量技术监督局令第4号《产品质量仲裁检验和产品质量鉴定管理办法》。但根据国家质检总局第196号令,该办法已经在2018年被废止。
所以,“网页还能打开”不等于“文件仍然有效”。这也是为什么 Skill 必须同时记录发布机关、发布时间、效力状态和核验备注。
五、两种最容易混淆的检索模式
开发过程中遇到过一个很典型的问题。
用户问:
最近半年有哪些新发布的文件?
程序却回答:
相比上次没有新增。
这两个答案可能都没有算错,但明显答非所问。
因此,当前版本把检索明确拆成两种模式:
| 用户问题 | 模式 | 应该回答什么 |
|---|---|---|
| 最近几天、最近一个月、最近半年、某个日期区间有哪些文件 | 时间范围检索 | 发布日期位于该区间内的全部确认文件 |
| 相比上次有没有新增、是否发生变化、持续监测 | 增量监测 | 相对上一次扫描真正新增或确认修改的文件 |
时间范围检索使用:
--report-mode period
增量监测使用:
--report-mode incremental
状态文件只负责保存历史记录和去重,不能擅自改变用户问题的口径。
也就是说,即使系统已经保存过历史状态,用户问“最近半年有哪些”,报告仍然必须先列出最近半年的文件;可以在后面补充“相对上次新增0项”,但不能用这句话覆盖前面的时间范围结果。
六、如何避免把历史文件和网页波动误报成新规
第一次运行时,系统会建立基线。
基线的含义是:
我现在知道这些文件已经存在,以后可以用它们进行比较。
它不代表这些文件是刚刚发布的。
变化检测同时保存两种哈希:
sha256:原始下载文件的校验值,用于证明存档文件是否发生变化;comparison_sha256:去掉访问量、点击数等动态字段后,对正文计算的比较指纹。
同一个网页的正文指纹发生变化时,默认还要在下一个监测周期再次观察到同样的新指纹,才会正式标记为 changed。
这样可以减少以下误报:
- 页面访问量增加;
- 网站自动更新时间变化;
- 推荐文章或页脚变化;
- 临时网络错误返回了不同页面;
- 动态组件每次生成不同内容。
一个正常监测周期只扫描一次,不会为了凑够两次确认而在同一任务中立刻重复搜索。
七、网站访问失败怎么办
法院和政府网站并不都是为自动化检索设计的,常见问题包括:
- 连接重置或超时;
- TLS证书异常;
- 非标准端口;
- JavaScript动态加载;
- 验证码、robots或访问限制;
- 网站改版、旧链接失效;
- 页面可以在浏览器中打开,但自动下载失败。
Skill 的处理原则不是“失败了就当作没有”,而是:
- 记录失败入口和具体原因;
- 继续检查同地区的官方法规库或政府文件库;
- 使用官方域名限定搜索发现新入口;
- 保留人工复核项;
- 在最终报告中明确写出覆盖缺口。
同时,不绕过验证码和访问控制,也不关闭证书校验去强行抓取。
“未确认专项文件”只能说明本轮没有从可访问来源确认到文件,不能据此推断当地一定没有要求。
八、如何安装和调用
1. 在 Codex 中使用
技能目录名保持为:
china-product-quality-appraisal-watch
放入 Codex 的 skills 目录后,可以这样调用:
$china-product-quality-appraisal-watch 搜索最近半年全国各省市产品质量鉴定的新规定
如果要检查相对上一次有没有变化,可以这样说:
$china-product-quality-appraisal-watch 检查相比上次是否出现新的产品质量鉴定规定
2. 在 WorkBuddy 中使用
WorkBuddy 版本使用中文显示名称:
中国产品质量鉴定法规监测
导入ZIP时,压缩包根目录必须直接包含 SKILL.md,不能再多套一层文件夹。
建议使用下面两类明确提示词:
搜索最近半年全国各省市产品质量鉴定方面发布的文件,使用时间范围检索,不要用相对上次无新增覆盖区间结果。
检查相比上一次监测,全国各省市是否新发布或修改了产品质量鉴定文件,使用增量监测。
3. 直接运行脚本
时间范围检索示例:
python scripts/quality_watch.py run `
--report-mode period `
--since YYYY-MM-DD `
--until YYYY-MM-DD `
--output product-quality-watch
持续增量监测示例:
python scripts/quality_watch.py run `
--report-mode incremental `
--since YYYY-MM-DD `
--state-file product-quality-watch-state.json `
--output product-quality-watch
WorkBuddy每次可能创建新的任务目录,所以用于增量比较的状态文件必须放在固定位置,不能跟着每次的时间戳输出目录一起变化。
九、Skill 会输出什么
每次运行会生成:
latest.md:适合继续编辑或复制的Markdown报告;latest.html:可直接用浏览器打开,官方链接支持点击跳转;latest.json:方便其他Agent、程序或提醒流程读取;state.json:用于去重和增量比较的状态数据;events.jsonl:记录新增和确认变化事件;archive/:下载的官方网页、附件和元数据。
一份完整报告通常包含:
- 本次结论;
- 检索日期范围和关键词;
- 新发布或增量变化明细;
- 全国统一依据;
- 31个省级地区覆盖矩阵;
- 城市和中级法院补查情况;
- 历史文件与待核实线索;
- 失败来源和人工复核建议;
- 下载路径、哈希、抓取时间和官方链接;
- 覆盖限制与免责声明。
所有面向用户的官方网址都会写成可点击链接。对于不支持Markdown链接跳转的客户端,优先打开 latest.html。
十、这个项目让我印象最深的几点
1. 搜索结果多,不等于结果好
真正困难的不是搜到网页,而是判断它是不是官方来源、是不是仍然有效、是不是适用于产品质量鉴定,以及是不是适用于具体法院。
2. “没有搜到”与“没有规定”完全不同
网站访问失败、动态渲染和未公开内部名册都会造成信息缺口。工具必须把失败展示出来,而不是安静地跳过。
3. 自动化最怕一本正经地给出错误结论
与其输出一个看起来完整但实际漏检的全国清单,不如清楚标明哪些地区成功、哪些部分失败、哪些需要人工确认。
4. 对模型来说,明确规则比长篇解释更有效
不同大模型的理解能力存在差异。像“最近半年”和“相比上次”这样的口径,如果只在说明中轻描淡写地提一下,能力稍弱的模型就可能选错。
最终我把它写成了明确的路由表,并在脚本中加入强制参数,让模型少做判断,让程序多做确定性工作。
十一、最后
这个 Skill 并不是什么宏大的项目,起点只是想让对象少花一点时间在重复搜索上,也少承担一点“某个地方刚更新了要求但我没有看到”的压力。
它现在已经能完成全国31个省级地区的基础覆盖、官方来源核验、原文下载、时间范围检索和增量提醒,但仍然需要继续补充更多城市法院入口,也需要面对政府网站访问不稳定这个长期问题。
工具不能替代法律判断,也不能替代承办法院的最终确认。它真正适合做的,是把分散的信息尽可能提前找出来、整理好、留下出处,让人把精力放在更需要判断的工作上。
如果以后对象的工作流程发生变化,我也会继续改这个 Skill。
毕竟,需求来自对象,版本更新也就有了长期动力。
效果如下:

github 地址:https://github.com/wutangyuan/china-product-quality-appraisal-watch

浙公网安备 33010602011771号