paper-daily · git:20260727.4c674fa · 2026-07-27 · sha256 805d6a4668c759e7

paper-daily git:20260727.4c674faA

Immutable. This exact content never changes and is served at /api/v1/blob/805d6a4668c759e7.

---
name: paper-daily
description: >-
  Paper 每日学术雷达命令(抢发检测 + 新发泛读)。当用户手头有研究想法(RQ / 方法 / 想投的会议)、想确认是不是已被人抢发、或想每天泛读该方向新发论文时使用——即使用户只说"今天 arXiv 有什么新论文""这个方向最近有什么新论文""我被人抢发了吗""这个 idea 还能做吗""最近一周有什么新论文""PaperFlow 那种 daily 推送""每日学术日报""抢发检测""新发泛读"也应使用。双轨设计:arXiv 自动轨(确定性、可复现)+ 用户多源补充轨(arXiv RSS / 邮件订阅 / Twitter / PaperFlow daily 输出 / 同事推送,粘贴格式自由)。行为铁律:高/中/低相关度标签是辅助陈列标签、非价值判断(不打分、不排序、不挑"最该读");抢发命中不夸大、不替用户下定论(每条标概念比对依据、末尾疑问句式交回用户);真实 API 为准、断网显式声明降级(不静默用模型记忆顶替、不编造文献/DOI);覆盖方式必声明、中文缺口必提示(英文库没检索到 ≠ 没人研究过);确认前零落盘。"帮我挑今天最该读的""这个方向已经被抢发了对吧""告诉我哪篇最重要"走三段式转化或拒绝。
---

# paper-daily:每日学术雷达(抢发检测 + 新发泛读)

帮用户每天做两件事:**确认手头的研究想法是不是已被人抢发** + **泛读该方向的新发论文**。你(执行本 skill 的宿主 agent)做的事:**读交棒 RQ + 锁定时间窗与补充轨 → 双轨拉取(arXiv 自动 + 用户多源补充)+ 抢发对照(全源)→ 三段式陈列(停点等用户确认)→ 落 HTML+MD+JSON 三产物**。

本 skill **不对应**「5 阶段 23 环节」标尺中的任何研究环节——它是**跨阶段基础设施**(与 init / help / doctor / pipeline 同段),是研究前/研究中的"日常文献雷达"。**不覆盖**:按主题做文献综述(归 `/paper-search`,search 不限时间全源、daily 是按时间监测双轨);选题澄清(归 `/paper-topic`,但 daily 可读取 topic/ 的 RQ 作起点);引用存在性核验(归 `/paper-verify`)。本 skill 是**产物型 + 网络型**——会往 `daily/` 落三产物(HTML/MD/JSON),且依赖网络与 `skills/paper-search/scripts/search.py`。

**核心立场(这条决定本 skill 长什么样)**:抢发判断与研究取舍是研究者主权的核心。系统是一个**客观陈列器**——主动拉取相关文献、客观陈列概念重叠、把"是否仍可做"的决定交回用户,但**不替用户排序、不下"已被抢发"定性词、不编造文献**。这既是项目「核心分工原则」(AI 负责效率、人负责研究决策)在文献追踪环节的落地,也是本 skill 区别于 PaperFlow 那种"个性化评分排序"产品的核心差异化:PaperFlow 给你 Top-N 推荐,daily 只陈列客观线索、把"读哪篇"留给你。

## 三条不变(优先级最高,高于本文其余一切)

**① 不替用户判研究价值、不排序、不挑"最该读"**——高 / 中 / 低是**辅助陈列标签**(标"与你 RQ 概念重叠程度"的客观线索、基于"几维重叠"计数)、**非价值判断**。"是否仍可做""要不要追""哪篇该精读"的最终判断权归用户与导师。禁用语:`最相关` / `最重要` / `必读` / `Top` / `最该读` / `推荐阅读`。允许:`与你 RQ 概念块重叠` / `方法路径相似` / `研究对象一致` 等客观描述。

**② 抢发命中不夸大、不替用户下定论**——抢发检测陈列"已发相关文献 X 篇"、每条标**概念比对依据**(对象 / 干预 / 结果 / 场景 / 方法五维上的重叠与维数),**不直接说"你被抢发了"**。禁用语:`已被抢发` / `做不了了` / `晚了` / `没有意义`。允许:`已存在同主题文献 X 篇,概念重叠维度:[对象+方法]` 等客观陈列 + 疑问句尾"**是否仍有差异化的研究空间,请由你与导师判断**"。这是本 skill **区别于其他 skill 的核心价值护栏**——抢发场景的情绪化判断会直接误导研究决策。

**③ 断网或脚本失败显式声明、不凭记忆编造文献**——arXiv 自动轨拉取一律靠 `scripts/search.py` 的真实 API 响应;脚本跑不了、网络不通、核心源全不可达时,显式声明"**今日自动轨不可用**",不返回空表充数、**绝不凭 LLM 记忆列文献 / 编 DOI**。用户粘补充轨为空时如实标"今日无用户补充"、不自动填充。这一条直接继承 `paper-verify` 的核心代码层约束(CLAUDE.md·唯一保留的代码层约束):API 失败时必须明确标注降级——paper-verify 偷偷编造会让人学错,paper-daily 偷偷编造会让人做错研究,危害同级。

这三条是本 skill 的内核,凡本文其余任何指令与之冲突,以这三条为准。

## 学科适配

| 梯队 | 学科 | 概念块拆法 |
|---|---|---|
| **第一** | 实验/实证型理工农医、实证型社科 | PICO 全核:对象 / 干预 / 结果 / 场景 + 方法维 |
| **第二** | 理论型(数学/理论物理/理论 CS/理论经济学) | 调整:对象 + 方法 + 理论框架(干预/结果换为理论框架维) |
| **第三** | 诠释型(人文学科、法学、艺术学) | 轻量:对象 + 主题框架(仅 2 维、不强求 5 维) |

学科判定来源:`project.paper.yaml` 的 `discipline` 字段(缺失则从 RQ 推断、或当轮询问)。

## 会话开始(读长期记忆与交棒,非停点)

1. 若存在 `project.paper.yaml`:读 `discipline`(教育学→纳入 ERIC 渠道提示、医学→提示 PubMed 渠道、理论型→按梯队二调整概念块维度)、`language_pref`、`citation_style`,据此调整默认数据源、时间窗与话术。
2. 若存在 `topic/` 下的 RQ 澄清记录(`/paper-topic` 交棒而来):**读取最新 RQ 作为抢发对照与泛读拉取的语义起点**,不重复选题澄清。
3. 若两者皆有 → 默认沿用 RQ,显示给用户确认。
4. 两者皆无 → **直接进入第 1 步询问 RQ**(不强求用户先跑 `/paper-topic`,日报入口要轻)。
5. 目录约定是增强不是依赖——三者皆缺时 skill 照常工作,只是第 1 步要主动问 RQ。

## 两停点流程(确认前不拉取 / 不落盘)

### 第 1 步 · 锁定 RQ + 时间窗 + 补充轨输入(停点 1 ⏸)

向用户收集三件套,然后停下:

```text
请提供今日日报的三件套:
  ① RQ / 研究想法 / 关键词(一句话即可,允许从 /paper-topic 交棒)
  ② 时间窗(默认「今日」,可改「最近 N 天」,N ≤ 14)
  ③(可选)你今天从其他渠道刷到的新发:
     - arXiv RSS / 邮件订阅 / Twitter / PaperFlow daily 输出 / 同事推送
     - 粘贴格式自由:DOI / arXiv ID / 标题+作者 / 链接 / 截图文本均可
     - 没有就留空,skill 只跑 arXiv 自动轨

⏸ 等待确认:RQ + 时间窗 + 补充轨
(回复「开始」启动双轨拉取 + 抢发对照;或直接修改任意一项)
```

**默认值与边界**:
- ① **RQ 缺失**(用户未提供、且 `topic/` 也无交棒)→ **不启动**,反问"想关注什么方向?";不输出空日报。
- ② 时间窗默认 **今日**;用户填"最近 N 天"则按天筛选(N 上限 14、超过则建议改用 `/paper-search` 做主题回顾)。
- ③ 补充轨为空 → 仅跑自动轨,日报如实标"今日无用户补充"。

### 第 2 步 · 双轨拉取 + 抢发对照(非停点,纯执行)

用户确认后并行做三件事:

**A. 抢发对照轨**(复用 paper-search 全源检索,不限时间):

```bash
python3 skills/paper-search/scripts/search.py \
  --query "<RQ 概念块组查询串>" \
  --sources crossref,openalex,semantic_scholar,arxiv \
  --per-source 20 --limit 30
```

读回 JSON(`coverage` / `results` / `network_status` / `stats`)→ 作为"**已发相关文献基准**"。

**B. 新发自动轨**(只拉 arXiv 一轨,时间窗今日 / 最近 N 天):

```bash
python3 skills/paper-search/scripts/search.py \
  --query "<RQ 概念块组查询串>" \
  --sources arxiv \
  --year-from <今年> --year-to <今年> \
  --per-source 50 --limit 30
```

读回 JSON → 作为"**今日 / 最近 N 天 arXiv 新发**"。事后按日期字段筛到时间窗内。

**F4 时间窗过滤失败时的处理**:若 arXiv API 不支持按天精确过滤、只能按年——`--per-source` 调大到 200(默认 50 不够覆盖今年单类目体量),拉回今年所有结果,在内存里按 `submittedDate` 筛到时间窗内,产物顶部如实标注"已从今年前 200 篇中按日期筛到时间窗内 Z 篇,可能未覆盖全部"。**不可静默漏掉**时间窗内新发——违反"如实声明覆盖"红线 2。

**C. 用户补充轨**(纯提示词层处理):

- 用户粘的题录 / DOI / 链接 / 截图文本 → 用 LLM 抽取结构化字段(标题 / 作者 / 来源 / 链接 / 日期)。
- 抽取失败的字段标"待人工核对"(`parse_status=partial_fields` 或 `parse_failed`)、**绝不凭记忆补全**。
- 来源标签固定为 `用户补充`,**不可谎称"自动检索"**(违反红线 2 中文缺口提示机制)。

**网络降级**:若 `network_status=offline` 或所有源全 timeout(F2)、或脚本异常退出 / 不存在(F1/F10),走「降级路径」(见「降级矩阵」段)——只跑用户补充轨、抢发检测整段省略、顶部 banner 显式声明。

### 第 3 步 · 三段式陈列(停点 2 ⏸)

把 A + B + C 整合成三段式产物**预览**,呈给用户,**停下**等确认才落盘:

```text
╔══ 📋 今日概览 ═════════════════════
║ RQ:<一句话>
║ 时间窗:今日 / 最近 N 天
║ 数据源覆盖声明(逐源命中数:arXiv / Crossref / OpenAlex / Semantic Scholar / 用户补充)
║ 中文缺口提示原文(英文库没检索到 ≠ 没人研究过——本次未纳入中文库自动检索)

╠══ 🚨 抢发检测 ════════════════════
║ 已发相关文献 X 篇(来自 search.py 全源)
║ 每条:标题 / 作者 / 年份 / DOI / 概念比对(5 维布尔 + 重叠维数)/ 高|中|低徽章
║ 顶部陈列标准 + 「是否仍可做」的判断归用户与导师

╠══ 📰 新发泛读 ════════════════════
║ [arXiv 自动轨] 今日 / 最近 N 天,Y 篇
║ [用户补充轨] 用户粘进来的,Z 篇
║ 每条:标题 / 作者 / 来源徽章 / 链接 / 高|中|低徽章

╚══ 🎯 下一步行动 ══════════════════
 ╠ 抢发命中(高相关 ≥ 1)→ 建议进入 /paper-topic 重审 RQ?
 ╠ 高相关新发 ≥ 1 → 建议进入 /paper-search 深检?
 ╠ 全部低相关 → 建议照常推进研究?
 ╚ 中文缺口 → 建议进入 /paper-search 中文引导轨?
 (程序化陈列、非 AI 拍板;每条疑问句式)

⏸ 等待确认:今日日报落盘 daily/
(回复「确认」写 MD + HTML + JSON 留痕;
 或:增删抢发对照条目 / 修正泛读标签 / 调整时间窗重跑)
```

### 第 4 步 · 落盘 + 留痕(非停点,执行即完)

用户确认后写三个文件:

| 文件 | 内容 |
|---|---|
| `daily/YYYY-MM-DD.md` | 三段式 Markdown(给人读、给 grep) |
| `daily/YYYY-MM-DD.html` | 同内容 + 样式(复制 `references/报告样式模板.html` 为起点、替换占位符) |
| `daily/.paper/YYYY-MM-DD.json` | 留痕:输入 RQ / 时间窗 / 双轨检索参数 / 抢发命中 + DOI / 新发条目 + DOI / 覆盖声明 / 高/中/低判定依据 / 用户补充轨原文 |

**目录自建约定**:`daily/` 是 infra 跨阶段命令的产物目录、**不在 `/paper-init` 建的研究项目骨架里**(与 init/help/doctor 同属工作台辅助设施、不预建;详见 paper-init「两种布局」段末的设计说明)。落盘前先 `test -d daily/ || mkdir -p daily/.paper/`——目录不存在则自建(含 `daily/.paper/` 留痕子目录);自建后随 git 入库(不写进 `.gitignore`,与 `.paper/` 同款约束)。

**落盘位置规则**:在 `/paper-init` 建的标准项目目录里运行 → 落 `<项目根>/daily/`;在普通目录里运行(无标准骨架)→ 落当前目录的 `daily/`、并向用户说明位置(与 outline/draft 等研究命令的"目录约定是增强不是依赖"原则一致)。

**入库约定**:三个文件均随 git 入库(CLAUDE.md·硬规则 5:`.paper/` 留痕绝不写进 `.gitignore`)。

**同日冲突处理**:同一日期已有产物 → 询问"覆盖 / 追加版本号 / 取消",默认 **追加版本号**(`YYYY-MM-DD-v2.md`)。不自动覆盖。

## 产物格式

三产物的完整模板见:
- `references/日报产物模板.md`:MD 五段式模板(含完全降级版)+ JSON 留痕 schema(全字段)+ HTML 结构骨架。
- `references/报告样式模板.html`:HTML 样式权威(复用 paper-topic / paper-logic 的四层语义色系统 + daily 专属的 `.scoop-alert` / `.digest-item` / `.action-card` / `.fallback-banner` 四个语义类)。

**关键约束**:
- **概念比对维度固定 5 项**:对象 / 干预 / 结果 / 场景 / 方法(对齐 PICO + 方法维)。
- **高 / 中 / 低判定**:≥3 维重叠=高、2 维重叠=中、≤1 维重叠=低。每条必须旁标重叠的具体维度与维数,不空泛打标签。
- **每段顶部固定陈述本段判定标准**,让用户读得懂为什么这样归类。
- **HTML 与 MD 内容必须一致**(同一份 JSON 渲染出两份)。
- **禁用语扫描**(生成后必跑):`最相关` / `最重要` / `必读` / `Top` / `最该读` / `推荐阅读` / `已被抢发` / `做不了了` / `晚了` / `没有意义` 任一命中需返工。

## 降级矩阵(F1-F10)

| 场景 | 触发条件 | 降级行为 | 用户可见提示 |
|---|---|---|---|
| **F1. search.py 不存在** | `skills/paper-search/scripts/search.py` 缺失 | 完全降级,仅用户补充轨;抢发检测整段省略 | 顶部 banner:`⚠️ 自动轨不可用:检索脚本缺失。今日仅运行用户补充轨。建议用 /paper-doctor 体检。` |
| **F2. 网络全断** | search.py 返回 `network_status=offline` 或所有源全 timeout | 同 F1 | `⚠️ 今日自动轨不可用:网络不通。今日仅运行用户补充轨。` |
| **F3. 部分源失败** | search.py 返回 `network_status=partial` | **不降级**,覆盖声明段如实标各源命中数与状态 | 概览段:`arXiv: ✅ 25 / Crossref: ⚠️ timeout / OpenAlex: ✅ 8` |
| **F4. 时间窗过滤失败** | arXiv API 不支持按天精确过滤(只支持按年) | `--per-source` 调到 200、按 `submittedDate` 内存筛选、如实标"可能未覆盖全部" | 自动轨顶部:`(已从今年前 200 篇中按日期筛到时间窗内 Z 篇,可能未覆盖全部)` |
| **F5. 用户补充解析失败** | LLM 无法从用户粘的文本提取结构化字段 | 标 `parse_status=parse_failed`、原文保留到 `user_supplement_raw`、**绝不凭记忆补全** | 该条:`[解析失败] <原文> — 待人工核对` |
| **F6. 用户补充为空** | 用户在第 1 步 ③ 留空 | **不降级**,自动轨照跑,标"今日无用户补充" | 新发泛读段:`[用户补充轨] 今日无补充` |
| **F7. RQ 缺失** | 用户未提供、且 `topic/` 也无交棒 | **不进入第 2 步**,反问"想关注什么方向?" | 直接询问,不输出空日报 |
| **F8. 概念块拆分失败** | LLM 无法从模糊 RQ 拆出概念块(如"我想看看 AI 研究") | 反问"想细化哪一面?(对象/方法/场景任选)"、**不替用户拍板概念块** | 引导式追问 |
| **F9. 文件冲突** | 同日已有产物 | 询问"覆盖 / 追加版本号 / 取消",默认追加版本号 | `已存在 daily/YYYY-MM-DD.md。选: [覆盖 / 追加为 v2 / 取消]?` |
| **F10. search.py 报错(非网络)** | 脚本异常退出、JSON 解析失败 | 同 F1,完全降级到"仅用户补充轨" | `⚠️ 自动轨不可用:脚本异常退出(<错误码>)。今日仅运行用户补充轨。` |

**完全降级时(F1/F2/F10)产物结构收缩**:抢发检测整段省略、顶部插 `<div class="fallback-banner">` 醒目警示、补充轨照跑、行动段改为"是否先跑 /paper-doctor" + "用户补充有高相关 → 是否进 /paper-search 深检?"。完整降级版 MD 模板见 `references/日报产物模板.md` §1 末尾。

**错误恢复路径**:

| 错误 | 用户该怎么办 |
|---|---|
| F1(脚本缺失) | `/paper-doctor` 体检 → 重装 / 更新 paper-search |
| F2(断网) | 等网络恢复重跑;或仅依赖用户补充轨出当日报告 |
| F4(时间窗过滤失败) | 仍是有效日报、只是自动轨范围扩大;可手动筛选 |
| F5(补充解析失败) | 用户重新格式化输入(每行一篇、用 DOI 或 arXiv ID 最稳) |
| F8(概念块拆分失败) | 回 `/paper-topic` 重审 RQ,把方向说清楚 |

**与 paper-search 降级路径的关系**:daily **直接复用、不另起一套**——`search.py` 的 `network_status` 字段是单一信号源、daily 直接读不做二次判断;失败时的"明确标注降级、不静默顶替"原则完全继承自 paper-search 红线 3 + paper-verify 代码层约束。用户从 search 切到 daily 时,失败语义不变。

## 与 PaperFlow 的关系(借鉴 vs 不借鉴)

| PaperFlow 能力 | daily 是否借鉴 | 理由 |
|---|---|---|
| daily 拉取 + 时间窗 | ✅ 借鉴(自动轨) | 抢发时效感的核心 |
| 阅读报告产物形态 | ✅ 借鉴(HTML+MD 双产物) | 与本仓库 17 个 skill 同构 |
| 多源输入合并 | ✅ 借鉴(用户补充轨) | 契合真实研究者多渠道习惯 |
| 相关度信号 | 🟡 部分借鉴(高/中/低标签、不打分) | 守"不排序"底线,方案 B |
| 个性化 profile 建模 | ❌ 不借鉴 | 违反"AI 不替用户判研究价值" |
| 评分排序 + Top-N | ❌ 不借鉴 | 直接违反红线 1 |
| 漂移检测 | ❌ 不借鉴 | 同上,留 paper-rank Phase 2+ |
| feedback 学习 | ❌ 不借鉴 | 同上 |
| 本地 wiki + 引用问答 | ❌ 不借鉴 | 与本仓库 .paper/ 留痕体系定位不同 |
| GUI + Feishu webhook | ❌ 不借鉴 | skill 是提示词层、不接工程 |

想要 PaperFlow 那种完整评分排序 + 漂移检测?可期 Phase 2+ 的 `paper-rank`——daily 守"不排序"底线、rank 提供"排序但明示非价值判断",由用户选。Phase 2+ 也可加中文新发自动轨(知网 RSS / 万方新刊)、`paper-weekly` 周报聚合、PaperFlow 桥接(跑完 `paperflow daily` 把输出粘到 daily 补充轨,零工程改动)。

## 越界触发(走三段式转化或拒绝)

- "帮我挑今天**最该读**的 3 篇" → 越界(违反红线 1 不排序)。三段式转化:"daily 只陈列客观相关度线索、不替你挑最该读。我可以把今日全部新发陈列、相关度标签照打、但读哪篇由你定。继续吗?"
- "这个方向**已经被抢发了对吧**?" → 越界(违反红线 2 不下定论)。三段式转化:"daily 不下'已被抢发'定性词。我可以拉全源已发相关文献、客观陈列概念重叠维度、把'是否仍可做'留给你与导师。继续吗?"
- "今天 arXiv 哪篇**最重要**?" → 越界(违反红线 1)。三段式转化同上。
- "你帮我**编几篇**最近的新论文凑日报" → 拒绝(违反三条不变③不编造文献)。

## 交棒关系总览

**上游(读)**:
- `project.paper.yaml` → `discipline` / `language_pref` / `citation_style`(调整数据源与话术)
- `topic/` 下的 RQ 澄清记录(`/paper-topic` 交棒而来)→ RQ 起点
- 用户当轮直接提供 RQ / 想法 / 关键词 → 也可作为起点
- `skills/paper-search/scripts/search.py` → 抢发对照轨 + 新发自动轨的检索引擎(不改其源码)

**下游(写 + 推荐出口)**:
- `daily/YYYY-MM-DD.md` + `daily/YYYY-MM-DD.html` + `daily/.paper/YYYY-MM-DD.json`(三产物)
- 「下一步行动」段引导:`/paper-search`(深检某篇高相关)/ `/paper-topic`(抢发命中重审 RQ)/ `/paper-doctor`(自动轨不可用时排查环境)

## 测试与已知观察项

- **测试策略**:不写 pytest(与 paper-topic / outline / logic / disclose / review / abstract 同构)。行为验收靠人工跑过 `tests/paper-daily/` 的 8 场景清单 + 三档模拟脚本。
- **已知观察项(非 blocker)**:
  1. **无 pytest**:与同构的 7 个提示词型 skill 一致:无确定性逻辑可测,行为层靠模拟脚本人工验。
  2. **依赖 paper-search/scripts/search.py**:若 search.py 接口变更需同步——这是"复用而非自建"的代价。
  3. **时间窗过滤能力依赖 arXiv API**:按天精确过滤不可用时降级为"今年 + 内存筛选"(F4)。
  4. **跨宿主验证未做**:Claude Code 侧人工验收过,第二宿主待跑。
  5. **中文新发的自动覆盖留缺口**:arXiv 一轨不覆盖中文新发,由用户补充轨 + 中文缺口提示原文交回用户——与 paper-search 中文引导轨同款思路,Phase 2+ 可加中文新发自动轨。