mcpField
F
find-literature

find-literature

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

关于 find-literature

用于按查询检索相关学术论文的技能,适合研究与文献探索工作流。提供快速单次搜索,以及支持迭代调整和保留对话状态的交互式 Agent 流程。

主要功能

  1. 01按相关度排列论文
  2. 02提供评分、摘要和文本片段
  3. 03交互式调整查询
  4. 04通过线程延续多轮搜索
  5. 05查询 Semantic Scholar 论文与引用

适用场景

  1. 01探索某研究主题的论文
  2. 02跨多轮细化搜索
  3. 03获取论文详情与引用

安装

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

$npx skills add https://github.com/allenai/asta-plugins --skill find-literature

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

详细介绍

查找文献

搜索与查询相关的学术文献。搜索将返回按相关性排序的论文列表,其中包含相关性评分、摘要和佐证摘录。

这是一项高级搜索,因此查询可以很长、很复杂。运行搜索前,你可以向用户提问,以澄清主题并优化查询。

选择 find 还是 interactive

有两个入口可选。两者运行相同的检索流程(提取标准、检索候选论文、重新排序)。主要区别在于检索流程之外的处理方式——正确的选择主要取决于整个会话的主题,而不是某个查询本身的复杂程度:

  • asta literature interactive — 文献相关会话的默认选择。当会话中的首次交互与文献搜索或探索有关,或整个会话都聚焦于文献时,请使用此命令。它会运行完整的 Asta 论文查找 Agent:针对复杂或多方面的查询,规划能力更强(分解查询、采用迭代搜索策略);同时还提供推理和结果验证循环,如果初始结果不符合标准,就会重新运行或优化搜索。它还通过 thread_id 维护对话状态,因此后续操作可以基于先前结果继续:筛选(“现在缩小范围,只保留 2023 年及之后的综述”)、聚合(“按发表场所分组”)、追踪关联(“展开第三篇论文的引文”)或迭代优化。

  • asta literature find — 仅尝试一次,不含 Agent 循环。主要用于文献搜索是其他多步骤流程中的一个子步骤的情况(数据分析、代码生成、更广泛的研究工作流等);同一流程可能会执行许多彼此无关的搜索,而对每次搜索运行完整的 Agent 循环会带来不必要的延迟。质量较低,但速度快得多。不要仅仅因为某个查询“看起来简单”就选择 find——如果会话以文献为中心,请优先使用 interactive。

**继续对话——推荐模式(--thread-dir):**对于任何多轮搜索会话,请选择名为 .asta/literature/threads/<YYYY-MM-DD>-<slug>/ 的目录(带日期前缀的 slug,符合其他 Agent 使用的约定),并在每一轮都传入该目录。CLI 会自动恢复对话,为每一轮写入一个带有 .NNN 索引后缀的产物,并维护一个 DIR/index.json,记录轮次顺序、查询、叙述文本、论文数量和 thread_id。每一轮使用有意义的 -o 基础名称——CLI 会自动为你插入轮次索引。

# Turn 1 — picks a thread dir; CLI creates DIR/index.json and DIR/transformer-survey.001.json
asta literature interactive "transformer architecture survey" \
  --thread-dir .asta/literature/threads/2026-05-04-transformer-architectures \
  -o transformer-survey.json

# Turn 2 — same dir; thread_id auto-resumes from index.json.
# Writes DIR/narrow-2023.002.json and appends a turn entry to DIR/index.json.
asta literature interactive "narrow to 2023+ long-context surveys" \
  --thread-dir .asta/literature/threads/2026-05-04-transformer-architectures \
  -o narrow-2023.json

当主题发生重大变化时,请开始一段新对话:选择新的 --thread-dir。查看对话内容很简单——用 jq 查询 DIR/index.json 中的轮次列表,然后打开 turns[].file 引用的各轮 JSON 文件。

如果不使用 --thread-dir,每次调用都只执行单次查询,不会延续之前的对话。临时的单次查询可以使用这种方式;任何多轮会话都应始终传入 --thread-dir。

与 find 相比的输出差异:interactive JSON 会增加 thread_id 和 narrative(Agent 的终端响应文本)。目前不会为每篇论文填充 citationContexts 或 publicationDate;如需这些字段,请使用 find 或 asta papers 命令。

可用工具

论文查找器

在后台运行以进行全面搜索(30–60 秒):

# Save to a temporary file with explicit -o parameter (required)
Bash(command="asta literature find 'query' -o /tmp/literature-search-result.json --timeout 300", run_in_background=true)

搜索完成后,将文件移至 .asta/documents/literature/find/ 并为其建立索引:

# Create directory if it doesn't exist
mkdir -p .asta/documents/literature/find

# Move the result file to the documents directory
mv /tmp/literature-search-result.json .asta/documents/literature/find/

# Index the file using asta-documents
Bash(command="asta documents add file://.asta/documents/literature/find/literature-search-result.json --name='Literature Search: <query>' --summary='Search results for: <query>'")

使用 jq 浏览结果:

jq '[.results | sort_by(-.relevanceScore) | .[0:10][] | {title, year, venue, corpusId, score: .relevanceScore, summary: .relevanceJudgement.relevanceSummary}]' <filename>

逐一查看所有高度相关的论文,提取每篇论文的相关性标准、摘录和引文上下文。

Semantic Scholar CLI(快速定向搜索)
# Get paper details
asta papers get ARXIV:2005.14165

# Search papers
asta papers search "transformers" --year 2023- --limit 20

# Get citations
asta papers citations ARXIV:2005.14165

# Author search
asta papers author search "Geoffrey Hinton"
asta papers author papers <author_id>

推荐字段:--fields title,abstract,year,authors,venue,citationCount

JSON 结构

输出为 LiteratureSearchResult,结构如下:

顶层:

  • query:字符串 - 搜索查询
  • results:Paper 对象数组

results[] 中的每篇论文:

  • corpusId:整数 - Semantic Scholar 语料库 ID
  • title:字符串 - 论文标题
  • abstract:字符串 | null - 论文摘要
  • year:整数 | null - 发表年份
  • authors:数组,元素为 {name: string, id: string}
  • venue:字符串 | null - 发表刊物
  • url:字符串 | null - Semantic Scholar URL
  • citationCount:整数 | null - 引用次数
  • relevanceScore:浮点数 - 0–1(数值越高,与查询的相关性越高)
  • relevanceJudgement:对象,包含:
    • relevance:整数 - 总体相关性评分
    • relevanceSummary:字符串 - AI 对相关性的说明
    • relevanceCriteriaJudgements:数组,包含对各个概念的判断:
      • name:字符串 - 概念名称
      • relevance:整数 - 与此概念的相关性
      • relevantSnippets:支持性文本摘录数组
  • snippets:论文正文中的文本摘录数组(如果论文为开放获取):
    • text:字符串 - 摘录文本
    • sectionTitle:字符串 - 章节名称
  • citationContexts:引用上下文数组:
    • text:字符串 - 其他论文引用这项工作的方式
    • sourceCorpusId:整数 - 引用论文的语料库 ID

示例访问方式:

# Top 10 papers by relevance
jq '[.results | sort_by(-.relevanceScore) | .[0:10][] | {title, year, score: .relevanceScore}]' <filename>

# Papers with relevance summary
jq '.results[] | {title, summary: .relevanceJudgement.relevanceSummary}' <filename>

# Extract snippets from a specific paper
jq '.results[] | select(.corpusId == 123456) | .snippets[].text' <filename>

使用结果

搜索完成后,可使用 Literature Report 技能处理结果。

评论

支持 Markdown