| name | paper-recall |
| description | 从 ~/papers/ 论文库中检索已读论文。支持按关键词、tag、作者、年份、最低评分过滤。每条返回一句话核心收获 + 跨论文关联建议。当用户想知道'我之前读过哪些相关的'、'我打过 5 星的 VLA 论文有哪些'、或想在写作中复用过往笔记时使用。 |
| argument-hint | <查询关键词> [--tag <tag>] [--year <year>] [--min-rating <0-5>] [--author <name>] [--limit <N>] |
| allowed-tools | Bash, Read |
📚 Paper Recall — 从论文库检索已读论文
你是用户的"过往阅读记忆"。~/papers/ 论文库中保存了用户之前用 /paper-read、/paper-insight、/paper-compare 读过的所有论文报告,每篇带 frontmatter(含 tags、rating、key_takeaway)。本 skill 把这些已读论文调出来,按相关度排序展示,并指出跨论文的潜在联系。
阶段零:参数解析
从 $ARGUMENTS 中识别:
| 标志 | 说明 |
|---|
--tag <tag> | 仅返回含该 tag 的论文 |
--year <year> | 仅返回该年发表的论文 |
--min-rating <0-5> | 仅返回综合评分(4 维度均值)≥ 该值的论文 |
--author <name> | 仅返回作者列表中包含该名字的论文 |
--limit <N> | 返回数量上限(默认 10) |
剩余非标志部分作为自由文本查询 $QUERY。
如果用户用自然语言("我打过 5 星的最近读的关于 VLA 的"),转化为:
$QUERY = "VLA"
--tag VLA 或不设
--min-rating 4.5
- 用
--limit 限制为最近的 N 条(按 date_read 倒序,paper_lib 默认就是这个排序)
阶段一:调用 paper_lib 检索
自由文本检索(有 $QUERY)
用 Bash:
python3 .claude/scripts/paper_lib.py search "$QUERY" --limit "${LIMIT:-10}" --json
返回的 JSON 数组每项含 {title, arxiv_id, tags, rating, key_takeaway, score, path}。
过滤检索(无自由文本,仅过滤器)
用 Bash:
python3 .claude/scripts/paper_lib.py list \
[--tag $TAG] [--year $YEAR] [--min-rating $MIN_RATING] [--author $AUTHOR] \
--json
二者结合
如果用户既有自由文本也有过滤器,先用 search 得到 score 排序的初筛集合,然后在 prompt 里手动按过滤器再筛一遍(paper_lib.py search 没有合并所有过滤器)。
阶段二:呈现结果
📚 已读论文召回: "{$QUERY 或过滤条件描述}"
库内总数: {N}(用 python3 .claude/scripts/paper_lib.py list --json | jq length 或 wc -l 取)
本次匹配: {命中数量}
命中清单(按相关度降序)
| # | 标题 | arXiv | 年 | Tags | 评分 | 核心收获 |
|---|
| 1 | [标题] | [id] | [year] | tag1, tag2 | ⭐⭐⭐⭐ | [一句话 key_takeaway] |
| 2 | ... | | | | | |
如果命中 0 条,给出友好提示并建议放宽条件或先去 /paper-search 搜新论文。
跨论文联想(仅当命中 ≥ 2 篇)
观察 frontmatter 的 related_papers 字段,看命中清单里有没有相互引用的:
💡 你读过的这些论文之间有以下关联:
- [论文 A] → [论文 B] (A 的 frontmatter related_papers 含 B 的 arxiv_id)
- ...
如果发现明显的"研究方向链条"(多篇论文同 tag、相邻年份、互相引用),用一句话总结:"你在 {方向} 方向上已经积累了 N 篇阅读,主要兴趣点是 X"。
后续动作建议
针对命中结果,建议下一步:
- 如果命中清单看起来分散:建议用
--tag 收窄
- 如果命中是同方向多篇:建议
/paper-compare @<id1> @<id2> @<id3> 做系统对比
- 如果命中包含某篇评分高但很久没看的:建议复习、或基于它跑
/paper-insight 挖新 idea
阶段三(可选):详细查看某篇
如果用户在结果里指定某篇("打开第 2 篇" / "看 2401.12345 的全文"),用:
python3 .claude/scripts/paper_lib.py get <arxiv-id-或-stem>
把整篇 markdown 输出给用户。
边界情况
- 库为空:第一次使用,告知用户先用
/paper-read 读几篇就会自动入库
- 查询匹配很多但无明显聚类:建议加
--min-rating 4 看精华
- arxiv_id 为 null 的条目(来自非 arxiv 输入):用 filename stem 作为标识
后续操作提示
- 📄 深度阅读新论文 →
/paper-read [arxiv 链接]
- 📊 对比命中的几篇 →
/paper-compare @<id1> @<id2>
- 💡 重新挖某篇的 insight →
/paper-insight @<id>
- 🔎 搜索领域新论文 →
/paper-search [关键词]