Install
openclaw skills install @yuanzhian-patsnap/feasibility-review可行性研究报告立项审查技能。自动解析用户上传的项目指南与可研报告,执行形式审查(文本规范、篇章结构、完整性、一致性)和实质审查(技术路线提取、创新点提取、专利/论文多维分析、政策分析),最终生成结构化立项审查报告,辅助科技管理人员做立项研判。
openclaw skills install @yuanzhian-patsnap/feasibility-review本技能用于对可行性研究报告进行自动解析和核心内容提取,并基于专利检索(patent.search)、论文检索(mcp_patent-search__patsnap_search sources=paper)、政策检索(web-search)等工具获取相关数据,生成包含形式审查和实质审查两大板块的立项审查报告,辅助科技管理人员做立项研判。
用户上传项目指南/或可行性研究报告,并请求执行立项审查、可研审查、开题审查等相关任务时触发本技能。
| 材料 | 是否必须 | 说明 |
|---|---|---|
| 可行性研究报告 | 是 | PDF / Word 均可 |
| 项目指南 | 建议提供 | 用于一致性比对;缺失时降级处理 |
⚠️ 强制要求:
- 执行前必须先将完整
review_pipeline.py写入@session/feasibility-review/review_pipeline.py- 再通过
python.run单次执行该脚本- 禁止在脚本外通过API逐步检索后拼凑报告
- 禁止分步在聊天框逐章输出
Step 0 编写 review_pipeline.py(含所有检索调用、图表生成、HTML拼装逻辑)
→ 写入 @session/feasibility-review/review_pipeline.py
Step 1 读取文件(files工具读取可研报告+项目指南)
Step 2 形式审查(1.1 / 1.2 / 1.3 / 1.4 / 1.5)
Step 3 实质审查 - 提取阶段(2.1 技术路线表格 + 2.2 创新点表格)
Step 4 实质审查 - 技术路线审查(2.3)
├── 专利技术分析(活跃度+竞争格局):每条技术路线检索专利 topk=30,date_from=20170101, date_to=20261231
└── 论文技术分析(主题热点+分布影响力):每条技术路线检索论文 limit=30,date_from=20170101, date_to=20261231
└── 领域技术趋势总结
Step 5 实质审查 - 创新点审查(2.4)
├── 专利维度分析:每条创新点检索专利 topk=30,date_from=20170101, date_to=20261231
├── 论文维度分析:每条创新点检索论文 limit=30,date_from=20170101, date_to=20261231
└── 创新性评估
Step 6 政策分析(2.5):web-search 检索政策30篇
Step 7 立项审查总结与建议(2.6)
Step 8 生成完整 HTML 文件,保存到 @session/feasibility-review/review_report.html
⚠️
review_pipeline.py必须包含以下10个模块函数,禁止省略任何一个:
# ① 读取文件
def read_files(report_path, guide_path):
"""读取可研报告+项目指南文本,返回字符串"""
# ② 形式审查(纯文本分析,无需API)
def formal_review(report_text, guide_text):
"""执行1.1~1.5,返回HTML片段"""
# ③ 提取技术路线(表格形式)
def extract_routes(report_text):
"""返回技术路线列表,每条含编号/名称/核心内容/关键词标签"""
# ④ 提取创新点(表格形式)
def extract_innovations(report_text):
"""返回创新点列表,每条含编号/名称/核心内容/关键词标签"""
# ⑤ 封装专利检索(必须传入日期参数)
def search_patents(query, topk=30, date_from=20170101, date_to=20261231):
"""调用 mcp_patent-search__patsnap_search,返回专利列表"""
# ⑥ 封装论文检索(必须传入日期参数)
def search_papers(query, limit=30, date_from=20170101, date_to=20261231):
"""调用 mcp_patent-search__patsnap_search sources=paper,返回论文列表"""
# ⑦ 封装政策检索
def search_policies(keywords):
"""调用 web-search,返回政策列表"""
# ⑧ 封装pyecharts图表生成(交互式)
def make_pyechart(data, chart_type, title):
"""使用pyecharts生成折线图/柱状图,返回render_embed() HTML字符串"""
# ⑨ 封装词云生成(静态PNG)
def make_wordcloud(texts):
"""TF-IDF提取关键词,使用wordcloud生成PNG,返回base64字符串"""
# ⑩ 渲染最终HTML
def render_html(sections):
"""合并所有章节HTML片段,渲染完整报告,写入review_report.html"""
防止步骤超限导致报告不完整,每完成一个章节立即持久化。
每完成一个章节:
→ 写入 @session/feasibility-review/sections/section_X_X.json(章节数据+图表)
→ 更新 @session/feasibility-review/progress.json(记录已完成章节列表)
新一轮执行开始时:
→ 检测 progress.json 是否存在
→ 存在 → 读取已完成列表,跳过已完成章节,从断点续写
→ 不存在 → 全新执行
所有章节完成后:
→ 合并所有 section_*.json → 渲染 review_report.html
→ 删除 progress.json 和 sections/ 临时文件
⚠️ 审查对象:形式审查和实质审查的对象均为用户上传的可行性研究报告,不得审查其他内容。
逐项检查并标注问题位置(文件名、页码、段落),必须分点罗列以下检查项:
必须分点罗列以下检查项:
✅ 已上传:项目指南、可行性研究报告⚠️ 缺少:[未上传的文件名],建议补充后重新审查❌ 未上传任何材料,无法执行完整审查步骤一:从项目指南中提取字段(未找到则填"未找到")
步骤二:从可行性研究报告中提取相同字段
步骤三:逐项比对,输出对比表格
✅ 通过;不一致 → ❌ 不通过 + 标注差异位置列出所有"不通过"项的位置标记,供人工复核,输出问题清单表格。
⚠️ 审查对象严格限定为可研报告本身,不得延伸审查其他文档。
从可研报告的项目概述、技术方案、技术路线、研究内容等章节自动提取,必须以表格形式输出:
| 字段 | 说明 |
|---|---|
| 编号 | 路线一 / 路线二 / 路线三 |
| 路线名称 | 一句话命名 |
| 核心内容 | 2–3句描述 |
| 技术关键词标签 | 用于检索的扩展词(5–8个) |
从可研报告的技术方案、技术路线、研究内容等章节提取,必须以表格形式输出:
| 字段 | 说明 |
|---|---|
| 编号 | 创新点一 / 创新点二 / 创新点三 |
| 创新点名称 | 一句话命名 |
| 核心内容 | 2–3句描述 |
| 技术关键词标签 | 用于检索的扩展词(5–8个) |
核心目标:分析该领域专利申请的活跃度变化趋势。
执行步骤(每条技术路线均需执行):
patent.search(关键词+语义混合),每条路线 topk=30,date_from=20170101, date_to=20261231;无结果则如实反馈chart.render_embed() 内嵌):
核心目标:分析申请人地域分布和企业/机构排名,梳理竞争对手布局策略。
执行步骤(每条技术路线均需执行):
核心目标:主题分类,分析研究热点和前沿方向。
执行步骤(每条技术路线均需执行):
mcp_patent-search__patsnap_search(sources=paper),每条路线 limit=30,date_from=20170101, date_to=20261231;无结果则如实反馈核心目标:统计作者地域分布、机构排名,评估学术影响力。
执行步骤(每条技术路线均需执行):
综合专利+论文分析,从以下5个维度总结,字数不少于500字:
执行步骤(每条创新点均需执行):
patent.search,每条创新点 topk=30,date_from=20170101, date_to=20261231执行步骤(每条创新点均需执行):
mcp_patent-search__patsnap_search(sources=paper),每条创新点 limit=30,date_from=20170101, date_to=20261231综合专利/论文分析,从以下2个维度评估,字数不少于500字:
执行步骤:
web-search 检索近5年相关政策,召回30篇
https://sousuo.www.gov.cn/zcwjk/policyDocumentLibrary| 等级 | 判断标准 | 建议 |
|---|---|---|
| A | 具备明显的可行性、创新性、必要性 | 直接通过 |
| B | 具备一定的可行性、创新性、必要性 | 调整研判后可通过 |
| C | 不具备可行性、创新性、必要性 | 直接驳回 |
分三个子清单,每类随机抽取20条,所有条目必须提供可点击链接:
⚠️ 强制要求:
- 折线图、柱状图、分布图:必须使用 pyecharts 生成交互式 HTML 图表,调用
chart.render_embed()内嵌到报告HTML中- 词云图:使用 wordcloud 库,关键词从专利/论文标题+摘要 TF-IDF提取,静态PNG base64内嵌
- 聚类图:使用 scipy + matplotlib,静态PNG base64内嵌
- 每张图表下方必须附≥200字文字分析
- 每张图表标题下方必须标注数据来源注释:「数据来源:智慧芽专利/论文数据库,基于检索样本(N≤30)分布示意,时间范围2017–2026年」
- 若检索结果 < 3 条,说明数据不足,输出文字分析替代图表
| 工具 | 用途 |
|---|---|
patent.search (mcp_patent-search__patsnap_search) | 专利检索(技术路线/创新点) |
mcp_patent-search__patsnap_search(sources=paper) | 论文检索 |
web-search (mcp_web-search__web_search) | 政策检索 |
files | 读取用户上传的可研报告/项目指南 |
| Python (pyecharts / wordcloud / scipy / matplotlib / jinja2) | 图表生成与HTML渲染 |
| 编号 | 禁止行为 | 强制规范 |
|---|---|---|
| ❌1 | 使用 matplotlib 生成折线图/柱状图/分布图 | 必须使用 pyecharts 生成交互式HTML图表 |
| ❌2 | 图表以 <img> base64 PNG 形式嵌入(折线/柱状/分布) | 必须使用 render_embed() 内嵌交互式图表 |
| ❌3 | 创新点(2.2)用列表/<ol>输出 | 必须用表格(编号/名称/核心内容/关键词) |
| ❌4 | 技术路线(2.1)用列表输出 | 必须用表格(编号/名称/核心内容/关键词) |
| ❌5 | 检索未传日期参数 | 必须传入 date_from=20170101, date_to=20261231 |
| ❌6 | 2.6 未完成就生成 HTML 文件 | 禁止提前生成报告,必须所有章节完成后统一生成 |
| ❌7 | 在聊天框以 Markdown 格式输出报告全文 | 必须生成 .html 文件保存到指定路径 |
| ❌8 | 审查非可研报告的内容 | 审查对象严格限定为用户上传的可研报告 |
| ❌9 | 图表无文字分析 | 每张图表下方必须附≥200字分析 |
| ❌10 | 图表无数据来源注释 | 每张图表必须标注样本说明注释 |
| ❌11 | 分步在聊天框逐章输出报告 | 必须通过 python.run 单脚本一次性生成完整HTML |
| ❌12 | 论文检索使用旧工具名 | 必须使用 mcp_patent-search__patsnap_search(sources=paper) |
| ❌13 | 先逐步API检索再手动拼凑HTML报告 | 必须先写完整review_pipeline.py脚本,再python.run单次执行 |
| ❌14 | 报告内容与可研报告原文无关(如分析行业通用可行性) | 所有审查结论必须基于可研报告原文,不得自行发挥 |
render_embed() 内嵌,词云/聚类图使用 base64 内嵌@session/feasibility-review/review_report.html本 Skill 依赖智慧芽开放平台 MCP 服务: