---
name: daily-papers
description: 每日论文总结。抓取 HuggingFace Daily/Trending + arXiv + venue 源（OpenAlex 期刊 IJCV/TNNLS/TPAMI、CVF 顶会 CVPR/ICCV/WACV）最新论文，按研究方向打分筛选， 生成论文笔记后基于深度阅读写出有态度的总结锐评。 触发词："今日论文总结""过去3天论文总结""过去一周论文总结""看看最近有什么论文"
argument-hint: "[今日 / 过去N天 / 过去一周]"
allowed-tools: Bash, Read, Write, Edit, Glob, Grep
---

## Purpose

自动发现与研究方向相关的最新论文，生成候选列表。分三步：

1. **Python 脚本**抓取 + 打分（零 token）
2. **快速分流** → 确定必读论文
3. **每篇必读论文**：独立 subagent 生成笔记 + 基于笔记写单篇点评 → 主 agent 汇总锐评和分流表，保存文件

> **关键设计**：单篇点评由生成笔记的 subagent 在同一会话内完成——它此时刚读完论文、有完整上下文；让主 agent 读回笔记重写点评是对 context 的浪费，且摘要驱动的重写容易丢失笔记里的 ablation / caveat 细节。

## Steps

### Step 0：解析时间范围

从用户输入中解析天数：
- "今日论文总结"、"今日论文"、"每日总结" → 当天（`--days 1`）
- "过去3天"、"最近三天" → `--days 3`
- "过去一周"、"最近7天" → `--days 7`
- "过去两周" → `--days 14`
- 无特殊指定 → 默认当天

将解析出的天数存为 `DAYS` 变量。

### Step 1：抓取 + 打分（Python 脚本，零 token）

运行 `fetch_and_score.py`，输出到 `Workbench/daily/.candidates.json`：

```bash
python3 skills/1-literature/daily-papers/fetch_and_score.py \
  --days {DAYS} \
  --output Workbench/daily/.candidates.json
```

脚本抓取四类源（均零 token，纯 stdlib，配置见 `config.json`）：

- **HuggingFace Daily/Trending** + **arXiv**：每日预印本主力，`source` 为 `hf-daily`/`hf-trending`/`arxiv`。
- **OpenAlex 期刊**（`openalex_venues`，按 ISSN）：IJCV/TNNLS/TPAMI 等，`source` 为 `openalex:{Venue}`。期刊出得稀疏，故用独立的 `openalex_lookback_days` 窗口（默认 60 天）而非 `--days`；许多 IEEE/Springer 论文在 OpenAlex 中**无摘要**，此时退化为 title-only 打分，仅标题命中关键词者入选。由于 title 打分（3-7）远低于 HF 高赞（9999）/ CVF（9），会被挤出 top_n，故用 `reserve_per_source`（默认 openalex:5）**保底名额**——保证每次纳入若干篇过 min_score 的期刊论文。
- **CVF 顶会**（`cvf_proceedings`）：CVPR/ICCV/WACV 论文集，`source` 为 `cvf:{Proc}`，携带 `pdf_url`（免费全文，供 paper-digest 读正文）。listing 页无摘要 → title-only 打分。论文集为一次性发布，"新" = 不在 history；首次启用某 proceeding 会有一批 backlog，由 `max_per_source`（cvf/openalex 每日条数上限）逐日泄洪，避免淹没 arxiv/HF。

跨源去重以稳定主键 `paper_key`（arxiv id → doi → cvf id → 标题哈希）合并：同一论文若 arxiv 与期刊均收录，会归并为一条。

**检查输出**：确认文件存在且包含有效 JSON 数组。如果为空数组，检查 stderr 诊断问题（可能是周末 arXiv 无更新、网络问题等），告知用户原因后停止。

**网络兜底**：`fetch_and_score.py` 的 HuggingFace Daily/Trending 与 arXiv API 抓取会先走本地 `urlopen`。若本地网络卡顿、超时或返回空内容，脚本会在存在 `LEXMOUNT_API_KEY` 时自动通过 Lexmount DOM dump 重试。key 只能来自环境变量或被 `.gitignore` 忽略的 `.env`，不得写入日志或总结文件。详细协议见 `references/network-fetch-fallback.md`。

**历史去重**：脚本在 output 同目录维护 `.history.json`，单天模式自动过滤已总结过的论文（30 天窗口），多天模式跳过去重。每次运行后自动更新历史。

### Step 1.5：公众号 AI 动态（可选，若 config `news.wechat.enabled`）

抓关注公众号（机器之心/量子位/新智元/PaperWeekly 等，配置见 `team-config.json` `news.wechat`）
在时间窗内的相关文章，作为**论文线索的补充信道**——很多号就是在第一时间解读新论文。

```bash
python3 scripts/wechat_search/fetch_wechat.py --days {DAYS} \
  --output Workbench/daily/.wechat-candidates.json
```

Read `candidates`（已按关注账号 + 关键词打分排序）。对每条：

- **是在解读某篇具体论文**（标题/摘要出现明确论文名、"XX 团队提出"、arXiv/会议名等）→
  用 WebSearch 反查该论文的 arXiv id，若查到且 vault 无笔记，按 Step 2c 的方式
  `queue_ops.py enqueue` 入队（`source` 记为 `wechat`），让 paper-digest 后续消化**原文**。
- **是行业动态/观点**（发布、融资、综述、访谈）→ 不入论文队列，留到 Step 4 的「公众号动态」小节一句话带过。

**Guard**：公众号是**二手线索**，只用来发现论文和感知风向；真正入库的证据永远是它指向的原始
论文。搜狗限流导致候选为空或 `errors` 非空时，跳过本步不阻塞。**不要**把公众号解读当论文点评写。

### Step 2：快速分流

读取 `Workbench/daily/.candidates.json`，做**轻量级分类**，不写详细点评。

#### 2a：兜底过滤

参照研究兴趣判断论文相关性，如果发现某篇论文与所有研究兴趣均无关，而且 score 不高，直接跳过。

#### 2b：分流

基于摘要和 score，将论文分流为：
- **要精读**：强相关 + 方法有新意或结果显著
- **可跳过**：其他论文（弱相关，limited novelty，marginal improvement 等）

每篇论文只需**一句话分流理由**，不写详细点评。

#### 2c：入队必读论文（持久 backlog）

把"要精读"论文写入 `Workbench/queue.json`，作为持久 backlog——这样即使本次 inline digest 未全部完成（论文太多 / 网络中断），剩余论文仍会留存，由 autoresearch 的 `paper-digest` 继续消费。

收集"要精读"论文的 arXiv id（从 `.candidates.json` 的 url 中提取，如 `2605.21573`），运行：

```bash
python3 skills/1-literature/daily-papers/queue_ops.py enqueue \
  --candidates Workbench/daily/.candidates.json \
  --ids <id1> <id2> ...
```

脚本自动去重（已有笔记或已在队列的跳过）、自清理（已有笔记的 pending 任务剪除）、并按 `max_queue_size` 裁剪。Step 3 的 inline digest 落地笔记后，下次 enqueue 会自动剪除这些任务，无需手动标记完成。

### Step 3：每篇要精读论文 → 笔记 + 单篇点评

**每篇要精读论文派发一个 subagent**，指示它：
1. 调用 `paper-digest` skill 生成笔记；若笔记已存在，则直接读取已有笔记（`paper-digest` 会自动固化 `cite_key` + 缓存权威 BibTeX，无需额外操作）
2. 基于笔记正文（而非摘要），依照点评原则生成点评，并按点评模版返回点评

**范围控制**：仅对"要精读" 论文执行，"可跳过"不派发 subagent。

**并行执行**：要精读论文全部并行派发（background agents）。等待所有返回后再进入下一步。

#### 点评模板

```markdown
### {短标题}
- **Title**: {完整标题}
- **Institutes**: {institutes}
- **Source**: [link]({url})  {来源徽章：📰 HF Daily ⬆️ N / 🔥 HF Trending ⬆️ N / 📄 arXiv / 🏛 {Venue}（OpenAlex）/ 🎓 {Proc}}   **📒 论文笔记**: [[{笔记文件名}]]
- **核心**: 3-5 句，核心 idea + 主要结果，避免黑话
- **锐评**: 方法有没有硬伤？claim 和证据匹配吗？跟已有工作本质区别在哪？哪些数字亮眼、哪些
  暴露问题？
- **Rating**: `3` 🔥 / `2` 👀 / `1` 💤 ，{一句话理由}
```

#### 点评原则

- **点评人设**: 毒舌但眼光极准的 AI 论文审稿人，见多识广、对灌水零容忍的 senior researcher。
- **语气要求**：毒舌、尖锐、精炼、有态度。不和稀泥，不说"总体还行"。明确判断好/坏。
- **内容具体：** 夸要具体（哪个数字、哪个设计），骂要更具体（哪个假设不成立、哪个实验缺了、哪个 claim 站不住脚）
- **来源格式**：
  - `hf-daily` → `📰 HF Daily ⬆️ {hf_upvotes}`
  - `hf-trending` → `🔥 HF Trending ⬆️ {hf_upvotes}`
  - `arxiv` → `📄 arXiv`
  - `openalex:{Venue}` → `🏛 {Venue}（OpenAlex）`，如 `🏛 IJCV（OpenAlex）`
  - `cvf:{Proc}` → `🎓 {Proc}`，如 `🎓 CVPR2026`

> **重要‼️**：Subagent prompt 必须包含以上完整的`点评模板` 和 `点评原则`，**不要省略**

### Step 4：汇总点评 + 生成总结文件

汇总论文点评，生成总结文件，保存到 `Workbench/daily/YYYY-MM-DD.md`（日期为目标日期）。若文件已存在，覆盖写入。

写入后执行 YAML 前置校验：检查 frontmatter 中含冒号的字段值是否已加双引号，若未加则立即用 Edit 修复。

**总结文件模版：**

```markdown
---
date: YYYY-MM-DD
tags: [daily-papers, tag1, tag2, ...]
---
# 🔪 今日总结

{2-3句总结}

## 评分表

| Rating | 论文 |
|--------|------|
| 🔥 `3 - Foundation` | [[#{短标题}]]（理由）· [[#{短标题}]]（理由） |
| 👀 `2 - Frontier` | [[#{短标题}]]（理由）· ... |
| 💤 `1 - Archived` | [[#{短标题}]]（理由） |

## 论文点评

{按评分表顺序，原样拼接 Step 3 返回的各单篇点评块}

## 已跳过论文

| 论文 | 跳过原因 |
|------|----------|
| ... | ... |

## 公众号动态

<仅在 Step 1.5 有相关候选时保留本节；无则整节省略>

| 公众号 | 标题 | 一句话 / 已入队论文 |
|--------|------|--------------------|
| {source} | [{标题}]({link}) | {动态摘要，或"→ 已入队 arXiv:xxxx 待 digest"} |
```

**Tag 选择**：阅读 vault 目录下的 `{vault_root}/references/tags.md`，按照规范选择 tag。

### Step 5：追加工作日志

将以下格式的 log entry 追加到 `Workbench/logs/YYYY-MM-DD.md`（日期为今天）：

```markdown
### [HH:MM] daily-papers
- **input**: {DAYS} 天
- **output**: [[Workbench/daily/YYYY-MM-DD]]
- **observation**: 抓取 K 篇，精读 N 篇（rating 3: X / 2: Y / 1: Z），跳过 M 篇
```

若日志文件不存在，先创建文件（包含一级标题 `# YYYY-MM-DD`），再追加 entry。

**告知用户**：抓取 K 篇，精读 N 篇（rating 3: X / 2: Y / 1: Z），跳过 M 篇

## Verify

- [ ] `Workbench/daily/.candidates.json` 存在且非空
- [ ] `Workbench/daily/YYYY-MM-DD.md` 已创建
- [ ] 评分表中的 `[[#{短标题}]]` 链接与论文点评的 `### {短标题}` 完全匹配
- [ ] 要精读论文笔记已生成，论文点评基于笔记内容
- [ ] 日志已追加到 `Workbench/logs/YYYY-MM-DD.md`
