/discover
SkillDocs & knowledgeBased on an anchor paper, topic keywords, or the current wiki state, produces a ranked candidate paper shortlist for the user or an upstream skill to decide whether to further `/ingest`. Triggered when the user asks "what should I read next", "find papers similar to this one", "recommend related wor
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the /discover skill
What this skill tells your AI
The instructions your AI receives, as published by lambenthan/empiricalwiki in .claude/skills/discover/SKILL.md and read by ahel’s review.
从三种 seed 模式之一产出一份排好序的候选论文 shortlist,附带每条候选的 rationale,呈现给用户或调用方 skill。
/discover绝不自动 ingest —— 它只负责提出候选,实际动作由/ingest负责。
按需打开下列本地参考文件:
references/seed-modes.md—— 如何把用户的措辞映射到 anchor / topic / wiki 模式,以及三者的选择规则references/ranking-signals.md——tools/discover.py的打分依据,以及为什么 discovery 不共享/init的 survey 偏好references/wiki-dedup.md—— 候选如何被过滤掉已 ingest 的论文,以及 dedup 边界
Inputs
--anchor <id>(可重复):一或多个 anchor 论文 ID(优先 arXiv ID,也接受 S2 paperId)。驱动 anchor 模式 —— 主要使用场景,包括/ingest后的 "接下来该读什么"。--negative <id>(可重复,可选):希望推开的论文 ID。只在配合--anchor时有意义。--topic "<str>":topic / query 字符串。驱动 topic 模式 —— 相对/initplanner 更轻量的替代。--from-wiki:自动从 wiki 最近修改过的论文页派生 seed。驱动 wiki 模式。--limit N(可选,默认 10):shortlist 最大长度。
--anchor、--topic、--from-wiki 三者必须恰好选一。
Outputs
.checkpoints/discover-{seed-slug}-{YYYY-MM-DD}.json—— 完整 shortlist payload,机器可读;seed slug 基于首个 anchor 或 topic 派生- 给用户的 markdown 摘要,包含每条候选的 rationale
wiki/log.md—— 通过tools/research_wiki.py log追加一行
/discover 除了 log.md 外不向 wiki/ 写入任何内容,也不触碰 raw/。是否把候选拉进 wiki 是调用方的决定(之后的 /ingest)。
Wiki Interaction
Reads
wiki/papers/*.md—— frontmatter 中的arxiv(或旧版arxiv_id),用于与已 ingest 的论文做 dedupwiki/papers/*.md修改时间 —— 用于--from-wiki模式下 anchor 选取
Writes
wiki/log.md—— 通过tools/research_wiki.py logAPPEND
Graph edges created
- 无。图变更属于
/ingest,不属于/discover。
Workflow
前置条件:工作目录包含 wiki/、raw/、tools/。一次解析 Python 解释器路径并复用:
if [ -x .venv/bin/python ]; then
PYTHON_BIN=.venv/bin/python
elif [ -x .venv/Scripts/python.exe ]; then
PYTHON_BIN=.venv/Scripts/python.exe
else
PYTHON_BIN=python3
fi
export PYTHON_BIN
Step 1: 选定 seed 模式
把用户请求映射到 from-anchors、from-topic 或 from-wiki 之一。决策规则见 references/seed-modes.md,简版:
- 用户指明了一或多篇具体论文,或者这是
/ingest --discover的后续 → anchors - 用户给的是 topic / 方向 / 关键词 → topic
- 用户问开放式 "接下来读什么",没有 anchor 也没有 topic → wiki
如果用户同时提到 "不要这些",在 anchor 模式下通过 --negative 传入。
Step 2: 运行 discovery 工具
"$PYTHON_BIN" tools/discover.py from-anchors \
--id <arxiv-id> [--id <arxiv-id>...] [--negative <id>...] \
--wiki-root wiki \
--limit 10 \
--output-checkpoint .checkpoints/ \
--markdown
或 topic / wiki 模式:
"$PYTHON_BIN" tools/discover.py from-topic "<query>" --wiki-root wiki --limit 10 --output-checkpoint .checkpoints/ --markdown
"$PYTHON_BIN" tools/discover.py from-wiki --wiki-root wiki --limit 10 --output-checkpoint .checkpoints/ --markdown
anchor(与 wiki)模式每个 anchor 默认跑三个 S2 通道 —— recommend + references + citations。这正是 /discover 明显区别于 /daily-arxiv 的关键:references 带进 anchor 站在其肩膀上的 canonical 老论文,citations 带进高影响后续工作。只有在 API 成本成为硬约束时才考虑 --no-citation-expand 退回到只跑 recommend —— 质量退化会很明显。
工具内部处理候选抓取、wiki dedup、ranking,并写 checkpoint。始终传 --wiki-root wiki,否则已 ingest 论文会继续出现在 shortlist 中,浪费用户 review 时间。
topic 模式下若 S2 不可用,工具会继续用可用的通道产出;检查输出并向用户说明 degraded discovery。若全部通道失败,需明确报错而不是把空 shortlist 当作真实推荐返回。
Step 3: 展示 shortlist
把 markdown 输出呈现给用户。每条候选要能让用户判断是否值得 ingest:
- 标题和 arXiv ID(或 S2 paperId fallback)
- 一行 rationale(工具已产出:anchor 命中数、influential citations、年份)
- 工具带出 TLDR 时一并展示(topic 模式常有;anchor 模式通常没有 —— recommendations endpoint 不返回 TLDR)
最后附一行 "next step" 提示:
如需 ingest:/ingest https://arxiv.org/abs/<arxiv-id>
不要自行 ingest。选择权归用户。
Step 4: 日志
"$PYTHON_BIN" tools/research_wiki.py log wiki "discover | mode=<anchors|topic|wiki> | seed=<short-desc> | shortlist=<N>"
Internal Callers
/discover 既供用户手动调用,也供其他 skill 作为子例程调用。
来自 /ingest --discover
/ingest 支持可选的 --discover flag(默认关闭)。开启时,/ingest 在最终 report 之后以刚 ingest 论文的 arXiv ID 作为单 anchor 调用 /discover,并把 shortlist 以 "接下来可能想 ingest 的相关论文" 段落附在 report 里。/ingest 不会从这份列表自动 ingest 任何东西。
来自 /init
/init 不调用 /discover。/init 的 planner(tools/init_discovery.py plan)有自己的打分策略,偏爱 survey、广覆盖、seed anchor —— 适合 bootstrap 场景。/discover 的 ranking 有意不同(不偏 survey;以 anchor 相似度 + influential citations 为主),替换进 /init 会稀释 shortlist 质量。两者保持独立。
Constraints
- 不自动 ingest:
/discover产出 shortlist 就结束。即便被/ingest --discover调用,调用方也只是呈现结果,最终 ingest 由用户决定。 - 除
log.md外不写wiki/:paper 页、concept、claim、graph edge 全都属于/ingest。 - 不写
raw/:/discover不下载论文。用户选定某个候选后,再手动/ingest <arxiv-url>。 - 始终对 wiki 做 dedup:必须传
--wiki-root wiki,否则已 ingest 论文会污染 shortlist,这是最常见的低质量失败模式。 - ranking 是 discovery 专属:不要复用或复制
tools/init_discovery.py的打分函数。两者目标不同 ——/init要宽覆盖与基础面;/discover要相关的 next reads。见references/ranking-signals.md。 - 三通道 anchor 抓取:anchor 模式默认对每个 anchor 同时跑 S2
recommend+references+citations。砍掉 citation 通道(--no-citation-expand)会让结果退化为偏最新的语义聚类,和/daily-arxiv严重重合。除非 API 成本成为硬约束,否则保留三个通道。见references/ranking-signals.md。 - 部分 S2 endpoint 字段较扁平:
/citations、/references、/recommendations/*拒绝嵌套 selector —— 没有authors.hIndex,没有tldr。/paper/{id}和/paper/search接受,所以 topic 模式的候选带完整 enrichment;anchor 模式下只从 citations/references/recommend 进来的候选没有。这是 S2 的真实约束,不是 bug。 - rate limit:anchor 模式每个 anchor 最多三次 S2 调用(recommend + references + citations)。默认 recs 每 anchor 拉 50 条、references/citations 各 30 条。多 anchor 时调用量成倍增长;有 API key(1 req/sec)时三 anchor 约 10 秒。
Error Handling
- 所有 seed 通道都失败:明确报错、不写 shortlist,也不记录成功日志。
- S2 不可用但 DeepXiv 可用(topic 模式):仅用 DeepXiv 继续;在 report 中注明 degraded。
- S2 对某个 anchor 返回零推荐:保留其他 anchor 的结果继续;若所有 anchor 都返回零,视为整体失败。
--from-wiki找不到可用 anchor(wiki/papers/为空或全部缺少arxiv_id):告诉用户 wiki 过于稀疏,建议改用 topic 模式(或跑/init)。- anchor ID 非法或未知:S2 会返回 404;在 report 中暴露该坏 ID,并用剩余 anchor 继续。
Dependencies
Tools(via Bash)
"$PYTHON_BIN" tools/discover.py from-anchors --id <id> [--id <id>...] [--negative <id>...] --wiki-root wiki --limit <N> --output-checkpoint .checkpoints/ --markdown"$PYTHON_BIN" tools/discover.py from-topic "<query>" --wiki-root wiki --limit <N> --output-checkpoint .checkpoints/ --markdown"$PYTHON_BIN" tools/discover.py from-wiki --wiki-root wiki --limit <N> --output-checkpoint .checkpoints/ --markdown"$PYTHON_BIN" tools/research_wiki.py log wiki "<message>"
Skills
/ingest—— 通过--discoverflag 调用;也是用户对选中候选执行的动作/init—— 独立 planner,不调用/discover
External APIs
- Semantic Scholar —— recommendations (
/recommendations/v1/papers/forpaper/{id},POST /recommendations/v1/papers/)、search、paper detail(通过tools/fetch_s2.py) - DeepXiv —— topic 模式下的 search 辅助通道(通过
tools/fetch_deepxiv.py,可选,失败时优雅降级)
Signals
- GitHub stars
- 83
- Forks
- 17
- Last commit
- Jun 2026
- Hacker News mentions
- 20
Advanced
- Catalog kind
- skill
- Gateway key
discover-lambenthan- Source
- github.com/lambenthan/empiricalwiki