关于 arxiv-monitor
arxiv-monitor 是用于持续追踪 arXiv 查询和分类的新论文发现技能。它保存每个监视项已出现的论文 ID,仅返回新结果,并依赖同目录安装的 arxiv-search。
主要功能
- 01按查询词或分类创建监视项
- 02仅返回尚未出现的论文
- 03批量检查已保存的主题
- 04以 JSON 输出检查结果
- 05原子更新本地监视状态
适用场景
- 01持续发现特定研究领域的新论文
- 02定期检查 arXiv 分类更新
- 03一次检查多个已保存主题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ dsebastien/ ai-skill-arxiv --skill arxiv-monitor安装后在 Claude Code 中输入/arxiv-monitor确认已加载。
附带文件scripts/arxiv_monitor.py
详细介绍
arXiv 监控
持续跟踪 arXiv 上的查询和分类。状态保存在 scripts/watchlist.json 中——每个监控项都会记录已显示过的 arXiv ID,因此每次 check 只会返回新内容。
适用场景
- 用户希望持续发现特定研究领域的新内容
- 用户希望在某个分类有新论文时收到通知
- 可与 cron、计划任务或
/loop自然配合,实现自动发现 - 一次性检查多个已保存主题的「最新动态」
对于无需持久化的一次性搜索,请直接使用 arxiv-search。
依赖项
arxiv-monitor 会通过子进程调用 arxiv-search 来执行查询。当两项技能作为同级目录安装在同一个 skills/ 目录下时,相对路径会自动解析。如果只安装 arxiv-monitor,执行 check 时会失败——请同时安装 arxiv-search。
架构
该脚本是对 arxiv-search 的轻量封装:它使用已保存的查询参数调用搜索脚本,然后根据对应监控项的 seen_ids 列表筛选响应。新论文 ID 会追加到 seen_ids 中(每个监控项最多保留 500 个)。状态写入采用原子操作(临时文件 + os.replace)。
命令
# Inspect
python3 scripts/arxiv_monitor.py list
# Add a watch (needs --query and/or --category)
python3 scripts/arxiv_monitor.py add "interp-ml" \
--query "mechanistic interpretability" --category cs.LG --max 30
# Check one watch (returns new-only, updates state)
python3 scripts/arxiv_monitor.py check "interp-ml"
# Check everything (respects arXiv API's 1-req-per-3s soft limit)
python3 scripts/arxiv_monitor.py check-all
# Reset seen-ids (treat next check as first run)
python3 scripts/arxiv_monitor.py reset "interp-ml"
# Remove a watch entirely
python3 scripts/arxiv_monitor.py remove "interp-ml"
check/check-all 的输出为 JSON:{"name", "total_returned", "new_count", "new": [...]}。
工作流
1. 理解意图
- 「监控 X」/「跟踪 X」→
add - 「有什么新内容」→
check-all - 「我的 监控项有新论文吗」→
check <name> - 「停止跟踪 X」→
remove
2. 添加监控项:收集参数
只有信息不明确时才询问用户:
- 名称——简短标识,使用 kebab-case。必填。
- 查询——自由文本;多个词会作为独立条件进行 AND 匹配
- 分类——arXiv 代码(cs.LG、cs.CL、stat.ML 等);可选
- 每次检查的最大结果数——默认值为 30
查询和分类至少提供一项。
3. 检查:运行并筛选
运行命令。如果 new_count == 0,只需说明「自上次检查以来没有新论文」并附上时间戳。如果 new_count > 0:
- 将新论文整理成简洁的表格(arXiv ID、标题、作者、日期、主要分类)
- 提供分析其中任意论文的选项(→
arxiv-analyze)
4. 检查全部:批量报告
为每个监控项打印一行摘要,然后展开报告有新论文的监控项。
状态文件
scripts/watchlist.json 的结构:
{
"watches": {
"interp-ml": {
"query": "mechanistic interpretability",
"category": "cs.LG",
"max": 30,
"seen_ids": ["2501.11120v1", "..."],
"last_checked": "2026-04-16T09:00:00Z",
"created": "2026-04-16T09:00:00Z"
}
}
}
执行检查期间不要手动编辑。两次运行之间可直接编辑以进行调试。
seen_ids 会裁剪为每个监控项最近的 500 个 ID。如果某个监控项长期未使用,较旧的论文可能会被移出列表,并在下一次检查时重新出现——这是为限制状态大小而接受的取舍。
强制规则
- 绝不要将已见 ID 列表截短到脚本处理范围之外。 该列表至关重要——截短会导致已见论文被误报为「新内容」。
- 每个监控项只允许一个查询。 如果一个主题有多个研究方向,请创建多个监控项。
- 将
--max限制为 100。 超过此值后,arXiv API 响应会变慢,信噪比也会下降。 - arXiv API 速率限制。
check-all会在监控项之间暂停 3 秒。不要并行执行。
要求
- Python 3.11+(仅使用标准库,无需通过 pip 安装)
- 将
arxiv-search技能作为同级目录安装(位于同一个skills/目录下)