Skip to main content

paper-search

当需要真正执行文献数据库 API 检索时加载:构建检索式(布尔组合、字段限定)、 调用 OpenAlex / Crossref / arXiv 接口、遵守请求礼仪(限速、UA、指数退避)、 把返回解析为统一 PaperDocument。通常由 literature-search 调用,不直接面向用户。 同义场景:检索执行、API 查询、文献接口调用、query 构建、检索脚本运行、 接口限速与重试、检索结果解析。

الانتقال إلى التثبيت

معلومات المصدر

المستودع
MiniMax-AI/MiniMax-Code-Plugins
آخر نشاط في المصدر
١٩ أغسطس ٢٠٢٦ في ١٢:١٠
لغة SKILL.md المكتشفة
الصينية
النجوم
١١
التفرعات
١٠

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
2 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
paper-search
description
当需要真正执行文献数据库 API 检索时加载:构建检索式(布尔组合、字段限定)、 调用 OpenAlex / Crossref / arXiv 接口、遵守请求礼仪(限速、UA、指数退避)、 把返回解析为统一 PaperDocument。通常由 literature-search 调用,不直接面向用户。 同义场景:检索执行、API 查询、文献接口调用、query 构建、检索脚本运行、 接口限速与重试、检索结果解析。
user-invocable
false
metadata
{"domains":["literature"],"last_reviewed":"2026-08-18"}
# paper-search:检索执行规程 ## 目的 为上层技能(literature-search 等)提供可执行的检索规程:如何构建 query、 如何调用 `scripts/search_papers.py`、如何遵守各数据源的请求礼仪、 如何解读与排序结果、如何处理失败。 脚本约定(`scripts/search_papers.py`,纯 Python 标准库实现,无第三方依赖): - 参数:`--query`(必填)、`--provider {openalex,crossref,arxiv}`(必填)、 `--limit N`(默认 10,上限 50,超出自动截断)、`--format json`。 - 成功:stdout 输出 PaperDocument JSON 数组,退出码 0。 - 失败:stdout 输出 `{"error": {"provider", "type", "message"}}`, type ∈ `network | rate_limited | parse`,退出码 1;永不抛栈崩溃。 - 内置礼仪:请求间隔 ≥0.5s、单请求超时 30s、UA 携带联系邮箱占位。 ## 前置检查 1. `scripts/search_papers.py` 存在;`python --version` 可用(3.8+)。 2. 网络可用;目标 provider 可达。 3. 已按上层路由确定 provider 与 query。 ## 操作规程 ### 1. query 构建 - 关键词以英文为主(三个 provider 对英文支持最好);专业术语保留原文。 - 布尔与字段限定(按 provider 方言): - OpenAlex:`search` 参数支持 AND / OR 与引号短语,如 `"large language model" AND agent`;复杂字段过滤(年份、类型)由上层 在结果上后置处理,当前脚本只暴露 search。 - Crossref:`query` 为自由文本,偏题录精确匹配;查单篇文献时直接把标题 或 DOI 作为 query 效果最佳。 - arXiv:`search_query` 自动加 `all:` 前缀;需要字段限定时可在 query 中 直接使用 `ti:`(标题)、`abs:`(摘要)、`au:`(作者),组合用 `+AND+` / `+OR+`。 - 单次 query 控制在 2-6 个核心词;过长的 query 会显著降低命中率。 ### 2. 执行 ```bash python scripts/search_papers.py --query "large language model agents" \ --provider openalex --limit 20 --format json ``` - 多个 provider 时逐次串行调用,不要并发轰炸同一数据源。 - 结果较大时重定向到临时文件再解析,避免终端输出截断。 ### 3. 请求礼仪(politeness) - 频率 ≤2 req/s;脚本已内置 ≥0.5s 请求间隔,上层批量调用时仍应串行执行。 - UA 中的联系邮箱是占位 `you@example.com`:正式使用前提醒用户替换为真实 邮箱(OpenAlex polite pool 与 Crossref 均以此为诚信标识,提供更稳定服务)。 - 收到 `rate_limited` 时按指数退避重试:2s → 4s → 8s,最多 3 次; 仍失败则把结构化 error 原样交还上层,不无限重试。 ### 4. 结果解读与排序建议 - 各源默认相关性排序;解读时注意: - OpenAlex 结果元数据丰富,适合按「相关性 + 被引 + 年份」二次排序; - Crossref 偏题录精确匹配,前排结果通常就是目标文献; - arXiv 偏最新成果,注意区分预印本与正式发表版(条目含 journal_ref 时 优先引用正式版)。 - 建议上层保留原始顺序,另存「建议阅读顺序」,不要在 papers.json 里原地重排。 ### 5. 失败处理 - 逐字保留脚本输出的 error JSON,原样写入上层 manifest; - `parse` 类错误记录响应片段(≤200 字符)便于排查; - 任何失败都不改写成「0 条结果」。 ### 6. provider 查询方言速查 | provider | 端点 | query 要点 | | --- | --- | --- | | openalex | `https://api.openalex.org/works?search=...&per-page=` | 支持 AND / OR、引号短语;带 mailto 进 polite pool | | crossref | `https://api.crossref.org/works?query=...&rows=` | 自由文本题录匹配;查单篇直接给标题或 DOI | | arxiv | `http://export.arxiv.org/api/query?search_query=all:...` | 字段前缀 ti: / abs: / au:;组合用 +AND+ / +OR+ | `--limit` 与各源单页上限:脚本上限 50,三源单页均可满足;需要更多结果时 由上层分批翻页(当前脚本不暴露 start / cursor 参数)。 ### 7. 常见失败与对策 | error.type | 典型原因 | 对策 | | --- | --- | --- | | network | 断网、DNS 失败、TLS 错误、超时 | 检查网络后重试;连续失败则终止并留痕 | | rate_limited | 触发源站限流(HTTP 429 / 503) | 指数退避 2s→4s→8s,最多 3 次 | | parse | 响应结构变化、空响应、XML 非法 | 记录响应片段,改小 limit 重试;仍失败则留痕 | | 超时 | 源站响应慢或链路抖动 | 30s 超时归入 network,稍后重试 | 任何重试都不更换 query 内容;换 query 属于上层 literature-search 的决策。 脚本单请求超时固定 30s,超时归入 `network` 类错误;不要为「快一点」 而调小间隔或并发请求——被封 IP 的代价远大于多等几秒。 ## 输出模板 ### PaperDocument(stdout,成功时) ```json [ { "id": "https://doi.org/10.xxxx/yyyy", "title": "...", "authors": ["..."], "year": 2024, "venue": "...", "doi": "10.xxxx/yyyy", "url": "https://doi.org/10.xxxx/yyyy", "abstract": "...", "source": "crossref", "retrieved_at": "2026-08-18T00:00:00+00:00" } ] ``` ### 错误对象(stdout,失败时,退出码 1) ```json {"error": {"provider": "crossref", "type": "rate_limited", "message": "HTTP 429 ..."}} ``` ## 本技能不做什么 - 不做多源合并与去重(交给 literature-search)。 - 不评价文献质量、不做证据提取(交给 literature-survey)。 - 不抓取付费墙全文;只取 API 公开的元数据与摘要。 - 不支持 openalex / crossref / arxiv 之外的源(扩展需先修改脚本)。 - 不缓存历史检索结果充当新结果。 ## 收尾与下一步 1. 把 PaperDocument 数组或 error JSON 原样交还调用方。 2. 提示命中数与建议的二次排序方式。 3. 若连续 `rate_limited`,建议上层降低频率、稍后再试,或更换 provider。 4. 结果为空数组时区分「源站确实无命中」与「检索被静默截断」, 后者按失败处理并留痕。
عرض على GitHub