--- name: academic-search description: Grant Master 文献调研阶段的多源检索、两遍筛选、开放全文获取和元数据合并方法。 --- # Grant Master 学术检索 来源:参考并改编自 [ustc-ai4science/academic-search](https://github.com/ustc-ai4science/academic-search),MIT,Copyright (c) 2026 Chengmingyue。本项目检索协议、站点经验和工具从 Grant Master 提交 34e28f7 恢复;许可全文与改编范围见 [NOTICE.md](NOTICE.md)。 本方法是五阶段中的文献调研执行规则,由 auto 调用。`gm method --project ID` 返回本入口和 [完整搜索协议](search-protocol.md),并绑定内容回执;先读最新用户修改,再研究。协议涉及的参考路径以插件根目录为准,研究输出以 context.root 为准,不能写进插件目录。 ## 从问题到检索计划 读取课题准备、用户最新输入、总字数、现有文献及最新视角,确定本轮希望支持或推翻的问题。首轮形成计划,后续只补影响方案判断的证据缺口。将可读计划通过 gm publish 保存为 stage=1、id=research-plan。 每个 query 记录 query_id、问题、同义词/缩写、学科、平台、年份范围、纳入/排除标准、目标数量。先读对应 disciplines 文件,再按任务读取 API 与 site-patterns;无需把整个目录塞入上下文。按研究对象、体量及用户要求设定范围,不能用机械数量替代相关性。 ## 两遍检索与全文 第一遍轻量获取题名、作者、年份、venue、引用数及采集来源/日期、稳定链接、开放全文状态,分重要和一般文献。第二遍针对核心论文核验摘要、全文、代码与 BibTeX。保留代表作、新工作和相反证据;实际无法达到目标时记录检索范围及不足,不补造条目。 默认由当前 AI 执行并合并独立 API 请求;没有必须创建的专用 worker。只有用户要求或当前任务明确允许且独立子任务值得分工时,才按有限批次分派。任务说明只传目标、输入输出路径和筛选条件,返回摘要及文件路径,不重复粘贴论文正文。 合法 OA PDF 用 ../../scripts/academic-search/oa-pdf-download.mjs 下载至 `<项目>/literature/papers/`;输入用 metadata-schema.md 定义的 JSON results。访问受限则保留 DOI/摘要和状态。用户提供的本地论文原件也先发布为 stage=1 的 PDF 资产,再用 paper 的 pdfId 关联。CDP 工具仅在当前宿主允许、且确需该访问方式时使用;可用的内置浏览器或 API 不要求额外启动代理。 ## 合并与可追溯交付 以 DOI、arXiv ID、规范标题和年份依次去重,保留所有 query_id 与来源;相关性优先,再比较证据质量、venue、引用及时间,不混用不同来源引用计数。 每轮在 `<项目>/literature/search/round-N/` 保存 search_summary.md、candidate_papers.md、search_results.json、download_queue.json(下载 manifest)。使用 gm publish stage=1 注册这些报告;逐篇使用 gm paper 登记题名、作者、年份、sourceUrl(DOI 或发表页)、pdfId 与 reportId,再 publish 对应阅读报告。paper 不接受直接 PDF 路径。所有路径显式传项目内路径,更新已有报告必须使用其版本。JSON 是检索结果,不能作为工作台状态文件写入。 PDF 与论文登记示例(将 `<项目绝对路径>` 替换为 context.root;ID 在项目内唯一): 先将以下 JSON 保存到项目内参数文件,再执行 `python3 <插件根>/workbench/gm.py publish --project ID --json <参数文件>`。`source` 是项目 downloads 候选目录中尚未登记的本地文件,`path` 是不同的、尚未存在的目标路径;已由扫描登记的 PDF 应复用 context.docs 中的 ID,不能再用新 ID 重复登记同一路径。 ```json {"id":"pdf-example","stage":1,"title":"论文原文","path":"literature/papers/example.pdf","source":"<项目绝对路径>/downloads/example.pdf","base_revision":null} ``` 随后用以下参数执行 `gm.py paper --project ID --json <参数文件>`: ```json {"id":"paper-example","title":"论文题名","authors":"作者姓名","year":"2026","venue":"发表来源","sourceUrl":"https://doi.org/实际DOI","pdfId":"pdf-example","reportId":"reading-example","status":"待精读"} ``` 最后通过 `gm.py publish --project ID --id reading-example --stage 1 --file <阅读报告.md>` 发布阅读报告;已有报告附带 `--base` 当前版本。无全文时省略 pdfId,并明确摘要证据范围。 完成检索后继续按本阶段研究经验精读与综合,通过 publish id=perspective 更新最新判断。只有实际达到该阶段资料要求才调用 finish。遇到研究方向、范围或全文缺口需要用户决策,向统一待办中心投递并等待,用户拒绝不视为确认。 ## 按需参考 - [search-protocol.md](search-protocol.md):检索步骤、筛选、下载与核实,method 一并返回。 - [metadata-schema.md](metadata-schema.md):字段、去重、下载清单与引用导出。 - [api-cookbook.md](api-cookbook.md):官方 API 调用模板。 - disciplines/:学科平台、术语和证据规则。 - site-patterns/:目标站点经验;运行前确认时效,不把历史接口可用性当作事实。 - [venue-rankings.md](venue-rankings.md)、rankings/:按学科核验评级,不把 CS 分级套到其它领域。 - workflows/:用户需要系统综述时读取。 - [cdp-api.md](cdp-api.md):使用可选 CDP 工具时读取。