Install
openclaw skills install @yuanzhian-patsnap/patent-quality-review-pro专利申请文件质量审核工具(全量指标版)。上传PDF或Word版专利申请文件,自动对全部评审指标进行统一评审(无重点/非重点分档),结合复审无效实践中的常见决定要点辅助判断,并生成标准格式《专利申请文件质量评价表》Word文件(主表+附表1,两页分页)。支持化学/机械/电学/通用四领域AHP权重方案自动切换;权利稳定性须显式加载 novelty-check 与 non-obviousness-check。
openclaw skills install @yuanzhian-patsnap/patent-quality-review-pro本工具(patent-quality-review-pro)是专利申请文件质量审核的全量指标版本:
novelty-check 单参考对比逻辑,创造性仅使用 non-obviousness-check 多参考组合逻辑运行环境要求:需要 python-docx 库(运行前自动检查并安装)。
根本原因:环境变量传递中文 JSON 时字符丢失。
解决方案:先用 files.write 将完整 JSON 写入文件,再通过 --data 参数传路径。
解决方案:set_run_font() 中强制设置 run.font.color.rgb = RGBColor(0, 0, 0)。
解决方案:运行脚本前先调用 runtime.apply_sync 安装 python-docx。
根本原因:使用了 @session/... 这类 Eureka handle 执行系统打开命令,系统命令无法解析该 handle。
解决方案:使用 word_output_manifest.json 中的 output_dir_path 或 word_path 绝对路径打开。脚本已内置跨平台打开目录:Windows 用 os.startfile,macOS 用 open,Linux/其他桌面环境用 xdg-open。
根本原因:AI在未向用户确认领域的情况下直接开始评审,导致权重方案选择不透明。 解决方案:收到专利文件后,先快速阅读摘要和独立权利要求,判断技术领域倾向,然后必须按以下标准格式向用户提问,等用户确认后再执行评审:
标准问卷格式:
本专利涉及[简述技术领域,如:机械传动/电机控制/化学合成等],
IPC分类号为[XXX],主要技术特征为[简述核心特征],
初步判断属于[领域名称]领域。
请选择权重方案:
A. 化学领域(含材料、生物、医药)
B. 机械领域(含机电一体化)← 【AI推荐】
C. 电学领域(含软件、通信、计算机)
D. 使用通用权重
执行要求:
← 【AI推荐】)及简短理由根本原因:AI调用 generate_word.py 时,--output 参数未严格遵守命名规范,使用了缩写前缀(如 质量评价表_)和错误分隔符(如下划线 _)。
解决方案:--output 参数必须严格按以下格式构造:
@session/output/专利申请文件质量评价表+{输入文件名去扩展名}.docx
正确示例:
CN120243995A.pdf → @session/output/专利申请文件质量评价表+CN120243995A.docx某专利申请.docx → @session/output/专利申请文件质量评价表+某专利申请.docx禁止写法:
质量评价表_CN120243995A.docx(前缀缩写 + 下划线分隔)专利质量评价表+CN120243995A.docx(前缀不完整)专利申请文件质量评价表_CN120243995A.docx(分隔符错误)发明专利申请文件质量评价表_CN120243995A.docx(前缀多余"发明"二字 + 下划线分隔)@session/outputs/专利申请文件质量评价表+CN120243995A.docx(目录为 outputs 而非 output)根本原因:AI构造 review_data JSON 时,将专利名称字段写为 basic.title,但 generate_word.py 脚本期望的字段名为 basic.patent_name,导致 Word 文件中专利名称一栏为空。
解决方案:构造 basic 对象时,专利名称字段必须使用 patent_name 而非 title。
正确写法:
"basic": {
"patent_name": "一种转子车削装置",
"tech_field": "机械",
"agency": "",
"agent": "",
"agent_tel": ""
}
禁止写法:
"basic": { "title": "一种转子车削装置" }(字段名错误)根本原因:AI构造 review_data JSON 时,将 scores 写为字典格式({"指标名": 分数}),但 generate_word.py 脚本期望的是列表格式,每项为包含4个元素的数组 [指标名, 原始分, 加权分, 问题描述],导致脚本解析失败或表格数据错误。
解决方案:scores 字段必须使用列表格式,每个元素为包含4个元素的数组。
正确写法:
"scores": [
["①技术方案表述(12%)", 85, 10.20, "问题描述文本"],
["②保护范围规划(12%)", 78, 9.36, "问题描述文本"],
["③权利稳定性(10%)", 72, 7.20, "问题描述文本"],
["④权利要求布局(18%)", 75, 13.50, "问题描述文本"],
["⑤背景技术论述(10%)", 82, 8.20, "问题描述文本"],
["⑥技术问题与技术效果论述(8%)", 80, 6.40, "问题描述文本"],
["⑦说明书充分公开情况(18%)", 75, 13.50, "问题描述文本"],
["⑧形式问题(12%)", 80, 9.60, "问题描述文本"]
]
禁止写法:
"scores": { "①技术方案表述": 85, ... }(字典格式,脚本无法解析)"scores": [ {"name": "①技术方案表述", "score": 85} ](对象列表格式,非4元组)根本原因:AI构造 review_data JSON 时,将 issues 每项写为字典格式({"no":1, "level":"重要", ...}),但 generate_word.py 脚本执行 seq, level, name, loc, desc, sug = item 直接按位置解包,字典不支持按位置解包,导致附表1全部问题行内容为空。
解决方案:issues 字段每项必须使用6元组列表格式,按位置顺序填写:[序号, 严重程度, 问题名称, 涉及位置, 问题描述, 修改建议]。
正确写法:
"issues": [
[1, "重要", "必要技术特征完整性", "权利要求1", "独立权利要求缺少XXX必要技术特征,导致技术方案不完整(援引DP13)", "建议在独立权利要求中补充XXX特征"],
[2, "重要", "功能性限定充分公开", "权利要求1、说明书实施例", "功能性限定特征XXX在说明书中仅有单一实施例支撑,未覆盖整个保护范围(援引DP10)", "建议补充至少一种替代实施方式"],
[3, "一般", "相对性语言明确性", "权利要求1", "权利要求1中XXX表述含义不确定(援引DP14)", "建议改为具体数值或结构限定"]
]
禁止写法:
"issues": [{"no":1, "level":"重要", "name":"...", "loc":"...", "desc":"...", "sug":"..."}](字典格式,无法按位置解包,附表1全部为空)"issues": [[1, "重要", "问题名", "位置", "描述"]](只有5个元素,缺少第6项「修改建议」,解包失败)根本原因:main.py 生成 review_data.json 时采用 旧版 indicators 数组格式(顶层含 patent_no、indicators、overall_assessment),而 generate_word.py 已升级为期望 V2格式(顶层含 basic、scores、issues、total_score、conclusion),两者数据契约完全脱节,导致脚本访问 DATA["basic"] 时抛出 KeyError,Word 主表基本信息全空,评分表和附表1均无内容。
具体差异:
| 字段 | generate_word.py 期望(V2格式) | main.py 实际输出(旧格式) |
|---|---|---|
| 顶层结构 | basic、scores、issues、total_score、conclusion | patent_no、indicators(数组)、overall_assessment |
| 专利名称 | basic.patent_name | patent_name(平铺) |
| 评分条目 | scores(8项4元组列表) | indicators(8条含id/name/max_score/score的对象) |
| 问题列表 | issues(扁平6元组列表) | 各indicator内嵌独立issues数组 |
| 评审人信息 | reviewer_name、review_date | 不存在 |
解决方案:AI执行评审后,必须直接构造 V2格式 JSON(而非依赖 main.py 输出),再调用 generate_word.py。V2格式构造规则详见问题7、8、9。禁止将 main.py 的 indicators 格式输出文件直接传给 generate_word.py。
根本原因:工作区中同时存在 review_data.json(旧格式)和 review_data_v2.json(V2格式)两个文件,AI调用 generate_word.py 时误传了旧格式文件 review_data.json,导致 Word 表格内容为空。
解决方案:
generate_word.py 时,--data 参数必须明确指定 V2格式数据文件(即 AI 本次评审后直接写出的 review_data_v2.json)。review_data.json(main.py 的旧格式输出)作为 --data 参数传入 generate_word.py。@skill_workspace/review_data_v2.json,调用脚本时固定使用该文件,不再使用 review_data.json。本 Skill 依赖智慧芽开放平台 MCP 服务: