mcpField
P
paper-navigator

paper-navigator

github.com/evoscientist生产力481360 次安装1 天前更新
代码仓库

关于 paper-navigator

paper-navigator 是用于查找和阅读学术论文的研究技能,面向需要检索指定论文或按主题筛选文献的用户。它按查询意图选择检索流程,并要求以论文内容中的引文依据判断相关性,而非数字评分。

主要功能

  1. 01按意图路由论文检索
  2. 02支持指定论文查询与主题检索
  3. 03多轮扩展检索结果
  4. 04依据摘要或片段逐项核验
  5. 05按相关性整理论文候选

适用场景

  1. 01查找符合条件的研究论文
  2. 02获取指定论文的阅读信息
  3. 03为文献综述收集并筛选论文

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/evoscientist/evoskills --skill paper-navigator

安装后在 Claude Code 中输入/paper-navigator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

requirements.txt
assets/
paper-summary-template.md
references/
api-reference.md
arxiv-categories.md
disambiguation.md
env-vars.md
iterative-collection.md
output-formats.md
reading-strategy.md
search-principles.md
scripts/
arxiv_monitor.py
author_search.py
citation_traverse.py
dataset_search.py
deepxiv_client.py
download_paper.py
fetch_paper.py
find_code.py
github_search.py
library_search.py
literature_report.py
match_paper_by_title.py
recommend.py
saturation.py
scholar_search.py
snippet_search.py
sota.py
trending.py
utils.py

详细介绍

Paper Navigator

查找并阅读学术论文。按意图路由,按相关性判断。

        User
         │
         ▼
   ┌── Router ──┐
   │            │
   ▼            ▼
 POINT      LIST/ITERATIVE
(1 paper)   (Probe + up to 3 paper rounds:
             R2 breadth / R3 deepen / R4 close)

由 Agent 判断相关性——不调用 LLM-as-judge,不进行数值评分。由你编写评估标准、筛选每篇论文,并按相关性排序。

设置

本文档中的脚本路径均相对于此技能目录。使用 python scripts/<name>.py 运行。

依赖项:pip install deepxiv-sdk httpx(也列在技能根目录的 requirements.txt 中)。请安装到用户正在使用的环境中。

arXiv 访问(arxiv_monitor,以及 scholar_search 的备用方案)使用 DeepXiv SDK:运行 pip install deepxiv-sdk,然后运行一次 deepxiv token 以获取免费 API 令牌(保存到 ~/.env)。此技能会从环境变量中的 DEEPXIV_API_TOKEN/DEEPXIV_TOKEN,或从 ./.env / ~/.env 读取令牌。

环境变量使用者备注
S2_API_KEY所有 S2 脚本未设置时:scholar_search 会回退到 arXiv(通过 DeepXiv);citation_traverse / recommend / snippet_search 将被禁用
DEEPXIV_API_TOKENarxiv_monitor、scholar_search 备用方案获取免费令牌:运行 deepxiv token(写入 ~/.env)。也会从 DEEPXIV_TOKEN 和 ./.env/~/.env 读取。约 10,000 次请求/天
JINA_API_KEYfetch_paper免费层级无需密钥即可使用
GITHUB_TOKENgithub_search、find_code提高速率限制
PAPER_NAV_PAPERS_DIRfetch_paper 全文无默认值——请设置此变量或传入 --metadata-only

完整的环境变量列表:references/env-vars.md。


五条红线(始终遵守)

  1. 追踪历史记录。 不要重新运行已执行过的查询。结果为空 → 改变角度,而不是换同义词。
  2. 针对信息缺口进行搜索,而不是凭感觉搜索。 每个查询都对应一项缺失的信息。不要堆砌关键词。
  3. 一个查询 = 一个概念。 将对比(A vs B)、多属性问题和跨多年跨度拆分成多个独立调用。
  4. 绝不捏造。 每项事实(标题、作者、年份、引用次数、内容)都必须来自工具结果。
  5. 无引文则不作判断。 当你声称某篇论文符合某项标准时,请引用其摘要 / tldr / snippet 中不超过 80 个字符的片段。没有引文 → 不要声称该论文符合该标准。(这可以防止幻觉;不会影响数值评分。)

路由器

分支用户信号节奏输出
POINT引号中的标题、URL、arXiv/DOI/PMID/S2 ID、“阅读这篇论文”1 次调用论文卡片
LIST(默认)“查找有关 X 的论文”、“有没有论文……?”、“满足 A 和 B 条件的论文”探索 + 最多 3 轮(R2/R3/R4)候选清单,附每项标准的证据
ITERATIVE“X 的综述”、“关于 Y 的 30+ 篇论文”、由 research-survey / research-ideation 调用探索 + 最多 3 轮(R2/R3/R4)排序表格(将报告交由 research-survey 编写)

不确定时默认选择 LIST。 不要在 LIST 查询中添加 survey / review——这会降低用户所需经典研究论文的排名。

输出格式遵循调用方: 上方“输出”列是结构化格式(技能调用方使用)。直接响应用户的调用默认采用叙述式——参见第 6 步“输出模式”。

查询含糊不清(项目昵称、代号、没有命中结果的单个大写词)时 → 先运行 scholar_search 精确搜索和 Web/GitHub 搜索,以确认标识符,然后再重新路由。


POINT 分支(已知论文)

输入命令输出
URLpython scripts/fetch_paper.py --url <URL>论文卡片 + 阅读笔记(L1/L2/L3 见 references/reading-strategy.md)
引号中的标题python scripts/match_paper_by_title.py --title "<title>"(拼写错误时添加 --fallback-search)论文卡片
独立 ID(arXiv / DOI / S2 / CorpusId)python scripts/fetch_paper.py --paper-id <ID> --metadata-only论文卡片

论文卡片:

📄 **<Title>**
Authors: <First Author> et al. | Year: <Y> | Venue: <V>
Citations: <N> | ID: <ArXiv:xxxx.xxxxx> | DOI: <...>
TLDR: <one sentence>

到此为止。除非用户提出要求,否则不要继续进行引用扩展。


LIST / ITERATIVE 分支——6 个步骤

步骤 1:解析意图

用一句话说明研究对象(具体技术/概念)和约束条件(领域、任务、时效性、排除项)。确认路由分支。当用户只给出一个没有方向的名词(概念/模型/算法/基准名称)时,默认意图是“追溯发展脉络”——基础、演进、现状,而非应用或通用的 survey。

步骤 2:编写 RUBRIC(通过 think_tool)

在进行任何搜索之前,先输出一个结构化区块。该区块会在后续轮次中保留,之后的每个步骤都要引用它。

RUBRIC for "<user query verbatim>"
Branch: LIST | ITERATIVE
Criteria (2–4, atomic; mark each [core] or [secondary]):
  C1 [core]     <what the paper MUST do/be — one sentence>
  C2 [core]     <...>
  C3 [secondary] <...>
Named entities to preserve verbatim: [<ent1>, <ent2>, ...]
Angle tags (3–5 sub-topic axes): [<tag1>, <tag2>, <tag3>]
Recency signal: [none | recency cue — defined in Step 3]
Disqualifiers: [<auto-reject if abstract shows this>]

规则:

  • 评估标准应当是原子性的(每项只包含一个条件),且彼此不重复。每项标记为 [core](必需)或 [secondary](可有可无)——这用于指导相关性排序,不设权重,也不做计算。
  • 命名实体=用户查询中的专有名词/技术术语锚点。每个实体都必须在 Probe 和 R2 的至少一个查询中原样出现。
  • 角度标签=子主题维度(method、task、dataset、evaluation、domain 等)。同一轮中的任何两个查询都不能共享标签。
  • 时效性信号=用户查询是否包含时效性提示(参见步骤 3 的时效性触发条件)。该信号决定 --year-min 和步骤 6 中时效性并列项的判定。
  • 排除项=“明确要求 X,而非 Y”这类排除条件。触发排除项 → 不相关。

对于 ITERATIVE,评估标准可以更精简(例如 涵盖主题 + 具有代表性);排除项可以为空。

步骤 3:搜索 — 先探查,再多轮搜索(拓宽 → 深挖 → 收尾)

先探查,全面了解用户的需求,然后最多进行 3 轮论文搜索(R2 拓宽 / R3 深挖 / R4 收尾)。逐轮判断是否需要继续搜索(步骤 5 的关卡)——不要固定轮数。没有 R5;论文搜索最多进行 3 轮。

探查(前置步骤——不计入 3 轮,使用 2 个并行查询): 全面了解需求,并提取命名实体 / 角度缺口。

  • Q-broad — 主题的标准表述(角度:general)
  • Q-narrow — 具体机制 / 子问题 / 方法(角度:已标记)
python scripts/scholar_search.py --query "<Q-broad>"  --limit 15 --sort-by relevance --output /tmp/pool.jsonl --append
python scripts/scholar_search.py --query "<Q-narrow>" --limit 15 --sort-by relevance --output /tmp/pool.jsonl --append

--output --append 会自动按 paperId 跨轮去重(脚本内置),因此,同一篇论文即使被两个查询找到,也只会写入一次。读取 /tmp/pool.jsonl 进行检查(步骤 4 筛选)。根据探查阶段的标题和 tl;dr,提取:

  • 反复出现的命名实体(算法 / 基准 / 数据集 / 模型名称),
  • 角度缺口(步骤 2 中未出现的标签),
  • 相邻社区使用的词汇。

R2 — 拓宽(默认轮次——仅在步骤 5 提前退出时跳过;使用 2–3 个并行查询)。 围绕核心对象和从探查阶段提取的标准术语,构造宽泛的学术查询。主要轴线是用户的核心对象及其标准对应关系;探查阶段仅提供高置信度的补充信息。

R3 — 定向深挖(可选;步骤 5 关卡要求继续时执行,使用 2–3 个并行查询)。 根据下方的缺口→策略映射,填补步骤 4 筛选所暴露的具体缺口。

R4 — 收尾(可选,使用 2–3 个并行查询)。 填补 R3 后仍存在的关键缺口:缺少的代表性成果、强基线、反例或尚未覆盖的子方向。

缺口→策略映射(R3/R4 由步骤 4 筛选发现的缺口驱动,而不是凭感觉):

步骤 4 筛选发现的缺口R3/R4 策略
基础性成果被近期论文淹没使用 --year-max,搜索原始机制 / 早期术语
用户想了解 SOTA / 前沿成果,或 R2 结果偏旧将 --year-min 设为近 2 年
单一来源的证据不足更换术语 / 团队 / 基准,寻找多来源佐证
A 与 B 的比较不完整分别补充 A、B 和上位主题查询(不使用 survey/review 术语)
发现相互矛盾的结果使用验证查询,优先选择权威发表渠道 / 高引用成果 / 直接实验

每个查询的规则:

  • 优先使用 3–6 个词(英文术语);少于 3 个词会召回过多结果,多于 6 个词会稀释排名。
  • 使用学术术语(mechanism、benchmark);不要使用 how it works 这类表述。
  • 不要添加 survey / review / tutorial 术语——它们会使结果偏向综述论文,挤占用户想要的研究论文。仅在用户明确要求综述时使用。
  • 只用实体名称;不要使用 paper / pdf / arxiv / original。
  • 拆分比较对象 / 多属性查询;如果查询少于 2–3 个,则补充上位主题或代表性方法。
  • 时间意图通过 --year-min/max 参数指定,查询中不要出现年份词语。
  • 禁止使用:"…"、(..)、OR、AND、|、site:、filetype:。
  • 同一轮中的任意两个查询,其内容词(去除停用词后)的重合度不得超过 60%。

时效性触发条件(查询层)。 如果用户的查询包含时效性信号(最新 / 近年 / 近期 / 近两年 / 前沿 / SOTA / latest / recent / state-of-the-art),从 R2 开始将 --year-min 设为近 2 年——即当前系统年份的前一年 1 月 1 日(例如系统日期为 2026-08 → --year-min 2025)。不要扩展到近 3–4 年。

没有 S2_API_KEY 时: 使用 arxiv_monitor --keywords "<variant>" --match-mode flexible --days 3650 替代 scholar_search。

引文扩展(迭代进行,或在至少有 3 个核心 / 部分匹配种子后按列表进行):

python scripts/citation_traverse.py --paper-id <SEED> --direction co-citation --limit 15 --output /tmp/pool.jsonl --append
python scripts/citation_traverse.py --paper-id <SEED> --direction forward --limit 20 --min-citations 20 --year-min 2022 --output /tmp/pool.jsonl --append
python scripts/recommend.py --positive <SEED1>,<SEED2> --limit 15 --output /tmp/pool.jsonl --append
步骤 4:筛选——完全核心 / 部分匹配 / 不相关

每轮结束后,对每篇新论文进行分类,并在 RUBRIC 上逐项标注标准掩码(✓ / ~ / ✗)——不进行数值评分。掩码能确保合取查询(“满足 A 和 B 的论文”)正确结束:只有每项 [core] 标准都标为 ✓ 的论文才是 All-core。输出一个 think_tool 区块:

TRIAGE round=<n>  query="<q>"
  All-core   (k): <paperId> "<title-≤60>" Y=<year> · [C1✓ C2✓ (C3~)]   every [core] ✓
                 C1: "<≤80-char quote>"
                 C2: "<≤80-char quote>"
  Partial    (k): <paperId> "<title>" Y=<year> · [C1✓ C2✗]              some [core] ✓
                 C1: "<≤80-char quote>"
  Irrelevant (k): <paperId> "<title>"                                   no [core] ✓, or trips disqualifier — drop
层级掩码引文
All-core每项 [core] 标准均为 ✓(任何 [core] 标准都没有 ✗)每项 [core] 标准提供一条 ≤80 字符的引文
Partial至少一项 [core] 为 ✓,但部分 [core] 为 ✗/~;或只有 [secondary] 支持每项为 ✓ 的 [core] 标准提供一条引文
Irrelevant没有任何 [core] 为 ✓,或触发了排除条件无——后续轮次中剔除

✓ = 摘要/tldr 明确支持。~ = 部分支持 / 可推断。✗ = 不支持或相矛盾。[secondary] 标准不决定层级,但仍需标注掩码符号。

规则:

  1. 跨轮次去重:先按 paperId,再按规范化标题。保留较强的掩码。
  2. 排除条件检查优先于其他所有匹配 → Irrelevant。
  3. **重新诊断缺口:**记录所有 All-core+Partial 论文中 ✓ 数为 0 的 [core] 标准,以及 All-core/Partial 数为 0 的角度标签 → 这些是下一步的细化目标(用于步骤 3 的缺口→策略映射)。
  4. **不得捏造:**缺少摘要时 → 标注 ~,不得根据训练数据推断。

此处收集的逐项标准引文,正是步骤 6 的 Rank-1 条目和结构化 LIST 模板所引用的内容——不得跳过。

片段升级:对于处于边界的论文(摘要未涉及某项 [core] 标准),批量获取正文文本:

python scripts/snippet_search.py --query "<criterion phrase>" \
  --paper-ids "CorpusId:1,CorpusId:2,..." --limit 50
步骤 5:饱和度关卡

Probe 和每一轮之后,根据是否仍存在关键缺口来决定继续还是停止——不要按论文数量计数。

**Probe 后提前退出(仅适用于单篇推荐 / 合取查询,K=1–2):**对于“有没有一篇论文……?”、“推荐一篇论文”、“什么是 X 的经典论文”或合取型“满足 A 和 B 的论文”等查询,如果已有一篇 All-core 论文覆盖了每项 [core] 标准,立即停止,无需继续运行后续轮次。这样可以保留快速路径:一次 Probe 命中即可解决类似 POINT 的查询(约 2 次查询),这在无密钥的 S2 速率限制下很重要。对于范围更广的问题(“查找关于……的论文” K=3–5,或 30 篇以上的 ITERATIVE),不要使用此提前退出;应应用下方的完整停止条件。

满足以下所有条件时停止:

  • 存在 ≥1 篇 All-core 论文——即单篇论文的每项 [core] 标准均为 ✓。这是必要条件,确保像“满足 A 和 B 的论文”这类合取查询不会将两篇分别只覆盖一方面的论文误判为符合要求;并且
  • 每个角度标签都有 ≥1 篇 All-core/Partial 论文;并且
  • 没有关键主张仅依赖单一来源;
  • 或者后续轮次不再发现任何新内容(召回为空 / 全部重复)。

否则继续下一轮(R3 / R4),依据缺口→策略映射推进:

  • All-core 论文数为 0 → 补足仍为 ✗ 的 [core] 标准。
  • 某个角度标签没有 All-core/Partial → 深入该角度。
  • 某项关键主张仅依赖单一来源 → 多来源佐证。

重新拆解(RUBRIC 有误):如果 R2 返回的结果中,整体上 All-core 和 Partial 均为 0:报告最有力的 Partial 候选项 + 请用户放宽一项标准。

**轮次上限:**LIST 和 ITERATIVE 最多进行 3 轮论文检索(R2/R3/R4)。POINT 仅进行一次获取(不进行多轮)。如果达到上限时仍未饱和,进入步骤 6,并报告哪些标准 / 角度标签尚未覆盖。

关卡按缺口机械执行——不要因为“结果看起来合适”就跳过轮次;满足停止条件后也不要再运行额外轮次。仅对上述 K=1–2 提前退出适用“单篇 All-core 即足够”的捷径,不适用于范围更广的查询。

步骤 6:排序并输出

**收集:**汇总所有轮次中的每篇 All-core 和 Partial 论文(按 paperId 去重)。剔除 Irrelevant。 按相关性排序——由模型判断,不使用数值评分。 按收集到的论文与用户问题的直接相关程度排序:All-core 排在 Partial 之前;满足所有 [core] 标准的论文,排名高于只满足其中部分标准的论文。这属于判断,而非公式——不要计算 weighted_total。

结合时效性的平局判定。 当 RUBRIC 标记了时效性信号(线索见步骤 3)时,若论文排名持平或非常接近,优先选择更新的论文(year 降序);此规则在相关性之后应用。时效性次于相关性,绝不优先于相关性。

K(软上限——防止倾倒论文池):

问题类型K
“正好 N 篇论文”N
“有没有一篇论文……?” / “推荐一篇论文”1–2(将排名第 1 的论文加粗)
“查找关于……的论文”3–5
“综述……领域” / ITERATIVE≤ 10(软上限)+ 1–2 篇综述论文(仅当用户明确要求时)

K 是软性参考,并非公式。对于宽泛的“综述/分类该领域”类查询,最常见的失败模式是把累积的整个论文池(通常有 30–50 篇,其中大多数不符合标准)一股脑塞进输出,淹没少数符合标准的论文。按相关性排序,只保留排名最高的 K 篇,其余论文移至 “其他相关(未排名)” 列表——绝不要用不太相关的论文凑数。

排名第 1 的质量门槛。 对于只推荐一篇论文的查询(“有没有一篇论文……?”、“推荐一篇论文”、“哪篇是 X 的经典论文”),加粗的排名第 1 篇必须是 All-core 论文——有引用内容明确证明其满足每项 [core] 标准。排名第 1 对用户观感的影响格外大;把一篇 Partial 论文放在首位,会显得信心十足却答错了。如果没有论文达到门槛,应以“未找到完全匹配的论文”开头,并如实列出最接近的论文及其不足之处。

如果达到轮次上限后仍没有 All-core 论文符合条件,则报告“未找到完全匹配的论文”,列出最符合条件的 Partial 候选论文及其不足之处,然后停止。

输出模式(由调用方推断)。 根据请求的实际需求选择格式,而非依据明确标记:

  • 结构化(下方格式)——当请求需要机器可读的输出时使用:排名列表/表格、逐项标准证据,或交接给下游技能。技能调用方(research-survey、research-ideation、paper-writing、experiment-pipeline)默认使用此模式。
  • 叙述式(见下方“叙述式输出”)——直接面向用户调用时的默认模式:用户以自然语言提问,且未要求结构化输出。

结构化输出格式(技能调用方):

LIST(含证据的候选清单):

**Top matches:**
- **<paperId>** "<Title>" — <Authors> et al., <Year>, <Venue>, cited by <N>. <URL>
  - C1 [core]: "<quote>"
  - C2 [core]: "<quote>"
  - C3 [secondary]: "<quote>"

**May also be relevant:**
- <paperId> "<Title>" — <Authors> et al., <Year>, cited by <N>. <URL> (Partial: only C3)

ITERATIVE(排名表格):

| # | Title | Authors | Year | Venue | Cited by | Link |
|---|-------|---------|------|-------|----------|------|
| 1 | …    | … et al. | 2024 | NeurIPS | 1234 | <URL> |

POINT:论文卡片(见上文)。

叙述式输出(直接面向用户的调用方)。

提供结构化知识,而非搜索过程记录。输出前去除流程用语(Probe、R2/R3/R4、All-core/Partial、“已完成轮次”),除非用户明确要求查看过程记录。

  • 以信息为先,而非以列表为先。 除非用户只想要论文列表,否则不要把答案压缩成“标题 + 一句话贡献”。先搭建用户需要的认知结构(时间线 / 主题分组 / 对比 / 机制拆解 / 证据核验 / 阅读路径),再将论文作为证据节点放入其中。
  • 一种主要形式 + 2–3 种辅助形式。 主要形式承载答案的逻辑(时间线、主题分组、对比、机制拆解、证据分级、阅读路径、小型综述);2–3 种辅助形式(论文卡片、表格、证据分级、带注释的参考书目、读者收益)用于提升可读性。不要堆叠所有形式。
  • 意图 → 形式(简明版): 最新进展 / SOTA → 状态判断 + 表格;起源 / 基础 → 时间线 + 源论文分析;A 与 B 对比 → 结论 + 维度对比;机制 → 机制拆解 + 穿插证据;基准 / 数据 → 核验 + 证据表;全景 → 主题分组 + 阅读路径。
  • 引用规则: 核心论文首次提及时显示 标题(会议 / 期刊 年份)(绝不能只写作者名,例如 Zhang et al.);每篇引用的论文都必须带有其返回的 [N]。表格可以包含 [N] 标记。 在答案末尾,按编号以 IEEE 格式列出每篇引用的论文(附上引用次数):[N] A. Author et al., "Title," Venue, Year, cited by N. [Online]. Available: URL。IEEE 规则:作者姓名写作 名首字母. 姓氏(例如 A. Vaswani);多位作者之间用逗号连接,最后一位作者前加 and;作者人数 ≥3 时写作 A. Firstauthor et al.;标题用双引号括起;接着写 Venue, Year;附上 cited by N(工具返回的 citationCount);链接末尾写 [Online]. Available: URL。只有工具确实未返回某字段时才省略该字段(绝不编造);工具返回作者和引用次数时必须列出。
  • 长度: 单点问题 600–1200 词;对比 / 检索问题 1200–2500 词;全景 / 时间线问题 2000–3500 词。不要为了简洁牺牲证据结构。
  • 引用或归零规则仍然适用——每项用于支撑论文的论断都必须有一条 ≤80 个字符的引文(红线 5,防止幻觉);叙述中仍只显示 [N],不显示原始引文。

输出前检查清单(必须执行)。 输出答案前,逐项核验。

  • 已汇总候选池:涵盖每轮筛选结果,按 paperId 去重,排除 Irrelevant。
  • 已按相关性排序(依据判断,而非数值分数)——先列 All-core,再列 Partial。
  • 存在时已应用时效性平局判定(相关性之后按 year 降序排列)。
  • 单篇推荐问题中的排名第 1 论文达到标准(通过引文明确满足每项 [core] 标准)——否则已报告“未找到完全匹配的论文”。
  • 每篇引用的论文至少有一条支撑其相关论断的引文(引用或归零规则,红线 5——防止幻觉)。
  • 输出数量 ≤ K(软上限);超出的相关论文列入“另有相关论文(未排名)”,而非排名列表。
  • 仅采用叙述模式——每篇引用的论文都出现在答案末尾按编号排列的 IEEE 格式参考文献列表中,且包含作者和引用次数([N] A. Author et al., "Title," Venue, Year, cited by N. [Online]. Available: URL);正文中不得出现流程术语(Probe / R2 / All-core/Partial)。

如有任何一项未勾选,请返回第 6 步——不要输出。


工具速查表

需求脚本说明
关键词搜索scholar_search.pyS2 → 缺少密钥 / 429 时回退到 arXiv
标题 → 记录match_paper_by_title.pyS2 精确匹配;拼写错误时使用 --fallback-search
引用关系图citation_traverse.py--direction forward/backward/co-citation;--min-citations;--year-min/max;--smart-sort;--enrich
相似论文recommend.py基于种子论文;使用 --per-seed 选取多样化种子
作者论文author_search.py--sort-by year/citations
最新 arXiv 论文arxiv_monitor.py使用 --categories cs.CL,或 --keywords "x,y" --match-mode flexible
热门趋势trending.py引用速度
正文片段snippet_search.py--paper-ids c1,c2,c3 --limit 50(1 次调用,而非 N 次)
获取全文fetch_paper.py保存到 $PAPER_NAV_PAPERS_DIR/<id>.md;标准输出截断至 2000 个字符
代码仓库(已知论文)find_code.py --arxiv-id <ID>查找官方仓库
代码仓库(未发表论文)github_search.py不存在 arXiv ID 时使用
HF 排行榜 / SOTAsota.py按下载量排序
HF 数据集dataset_search.py查询短名称(imdb、sst2),而非任务描述
饱和度检查(可选)saturation.py记录每轮产出的 JSONL 日志;estimate 返回 STOP/CONTINUE

所有发现类脚本都支持:--limit N、--json、--output FILE、--append;接受 S2 / arXiv / DOI / CorpusId ID。--output --append 会自动按 paperId 去重(批次内及跨文件),确保论文池整洁。


速率限制

API无密钥有密钥
Semantic Scholar约每 3 秒 1 次请求,不支持并行每分钟 100 次请求,可并行
arXiv每 3 秒 1 次请求(礼貌性限制)不适用
GitHub每分钟 10 次请求每小时 5,000 次请求
HuggingFace每 300 秒 500 次使用 HF_TOKEN 时更高

全局 S2 请求节流器 + 熔断器(失败 5 次 → 冷却 60 秒)。重试间隔:3 秒 / 6 秒 / 12 秒 / 24 秒 / 48 秒。

没有 S2_API_KEY 时:使用 scholar_search(回退到 arXiv)+ arxiv_monitor。跳过 citation_traverse / recommend / snippet_search——这些工具仅支持 S2;不要重试。


参考资料

文件阅读时机
references/env-vars.md设置环境变量
references/search-principles.md单次查询规则、差距诊断、速率限制恢复
references/iterative-collection.md迭代式语料收集(30 篇以上论文):阶段映射、引用扩展、备用方案
references/disambiguation.md查询内容是项目昵称 / 代号时
references/reading-strategy.mdL1 / L2 / L3 阅读框架
references/api-reference.mdS2 / arXiv / Jina / HF / GitHub 端点详情
references/arxiv-categories.mdarXiv 分类代码
references/output-formats.mdBaseline / Disambiguation / Reading-Notes / Citation-Graph 模板

参考资料内容完整。不要在它们之间串联阅读——返回此处重新选择路径。


移交给

目标技能
调研报告research-survey
创意生成research-ideation
Related Work 部分paper-writing
基线 + 实验experiment-pipeline

评论

支持 Markdown