关于 paper-navigator
paper-navigator 是用于查找和阅读学术论文的研究技能,面向需要检索指定论文或按主题筛选文献的用户。它按查询意图选择检索流程,并要求以论文内容中的引文依据判断相关性,而非数字评分。
主要功能
- 01按意图路由论文检索
- 02支持指定论文查询与主题检索
- 03多轮扩展检索结果
- 04依据摘要或片段逐项核验
- 05按相关性整理论文候选
适用场景
- 01查找符合条件的研究论文
- 02获取指定论文的阅读信息
- 03为文献综述收集并筛选论文
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ evoscientist/ evoskills --skill paper-navigator安装后在 Claude Code 中输入/paper-navigator确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
requirements.txtassets/paper-summary-template.mdreferences/api-reference.mdarxiv-categories.mddisambiguation.mdenv-vars.mditerative-collection.mdoutput-formats.mdreading-strategy.mdsearch-principles.mdscripts/arxiv_monitor.pyauthor_search.pycitation_traverse.pydataset_search.pydeepxiv_client.pydownload_paper.pyfetch_paper.pyfind_code.pygithub_search.pylibrary_search.pyliterature_report.pymatch_paper_by_title.pyrecommend.pysaturation.pyscholar_search.pysnippet_search.pysota.pytrending.pyutils.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_TOKEN | arxiv_monitor、scholar_search 备用方案 | 获取免费令牌:运行 deepxiv token(写入 ~/.env)。也会从 DEEPXIV_TOKEN 和 ./.env/~/.env 读取。约 10,000 次请求/天 |
JINA_API_KEY | fetch_paper | 免费层级无需密钥即可使用 |
GITHUB_TOKEN | github_search、find_code | 提高速率限制 |
PAPER_NAV_PAPERS_DIR | fetch_paper 全文 | 无默认值——请设置此变量或传入 --metadata-only |
完整的环境变量列表:references/env-vars.md。
五条红线(始终遵守)
- 追踪历史记录。 不要重新运行已执行过的查询。结果为空 → 改变角度,而不是换同义词。
- 针对信息缺口进行搜索,而不是凭感觉搜索。 每个查询都对应一项缺失的信息。不要堆砌关键词。
- 一个查询 = 一个概念。 将对比(
A vs B)、多属性问题和跨多年跨度拆分成多个独立调用。 - 绝不捏造。 每项事实(标题、作者、年份、引用次数、内容)都必须来自工具结果。
- 无引文则不作判断。 当你声称某篇论文符合某项标准时,请引用其摘要 / 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 分支(已知论文)
| 输入 | 命令 | 输出 |
|---|---|---|
| URL | python 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] 标准不决定层级,但仍需标注掩码符号。
规则:
- 跨轮次去重:先按
paperId,再按规范化标题。保留较强的掩码。 - 排除条件检查优先于其他所有匹配 →
Irrelevant。 - **重新诊断缺口:**记录所有 All-core+Partial 论文中
✓数为 0 的 [core] 标准,以及 All-core/Partial 数为 0 的角度标签 → 这些是下一步的细化目标(用于步骤 3 的缺口→策略映射)。 - **不得捏造:**缺少摘要时 → 标注
~,不得根据训练数据推断。
此处收集的逐项标准引文,正是步骤 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.py | S2 → 缺少密钥 / 429 时回退到 arXiv |
| 标题 → 记录 | match_paper_by_title.py | S2 精确匹配;拼写错误时使用 --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 排行榜 / SOTA | sota.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.md | L1 / L2 / L3 阅读框架 |
references/api-reference.md | S2 / arXiv / Jina / HF / GitHub 端点详情 |
references/arxiv-categories.md | arXiv 分类代码 |
references/output-formats.md | Baseline / Disambiguation / Reading-Notes / Citation-Graph 模板 |
参考资料内容完整。不要在它们之间串联阅读——返回此处重新选择路径。
移交给
| 目标 | 技能 |
|---|---|
| 调研报告 | research-survey |
| 创意生成 | research-ideation |
| Related Work 部分 | paper-writing |
| 基线 + 实验 | experiment-pipeline |