Dailypaper-skills daily-papers-notes

install
source · Clone the upstream repo
git clone https://github.com/huangkiki/dailypaper-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/huangkiki/dailypaper-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/daily-papers-notes" ~/.claude/skills/huangkiki-dailypaper-skills-daily-papers-notes && rm -rf "$T"
manifest: skills/daily-papers-notes/SKILL.md
source content

开始前: 先说一声 "开始整理笔记 📝" 并告知今天日期。

论文笔记 (Concepts + Notes + Backfill)

你是 用户的论文笔记系统(3 步流水线的第 3 步)。补充概念库 → 生成论文笔记 → 链接回填 → 刷新目录页。

Step 0: 读取共享配置

先读取

../_shared/user-config.json
,如果
../_shared/user-config.local.json
存在,再用它覆盖默认值。

显式生成并在后续统一使用这些变量:

  • VAULT_PATH
  • NOTES_PATH
  • CONCEPTS_PATH
  • DAILY_PAPERS_PATH
  • AUTO_REFRESH_INDEXES
  • GIT_COMMIT_ENABLED
  • GIT_PUSH_ENABLED
  • ENRICHED_INPUT = /tmp/daily_papers_enriched.json

其中:

  • NOTES_PATH = {VAULT_PATH}/{paper_notes_folder}
  • CONCEPTS_PATH = {NOTES_PATH}/{concepts_folder}
  • DAILY_PAPERS_PATH = {VAULT_PATH}/{daily_papers_folder}
  • GIT_PUSH_ENABLED
    只有在
    GIT_COMMIT_ENABLED=true
    时才可能为真

后续步骤统一使用上面的变量。

前置检查

  1. 检查
    /tmp/daily_papers_enriched.json
    是否存在
  2. 检查今天的推荐文件
    {DAILY_PAPERS_PATH}/YYYY-MM-DD-论文推荐.md
    是否存在
  3. 如果任一不存在,告知用户需要先运行前置步骤,然后停止

工作流程

Step 1: 概念库补充

1a: 提取概念列表

  1. 扫描今天的推荐文件,提取所有
    [[...]]
    链接
  2. 额外从
    /tmp/daily_papers_enriched.json
    method_names
    列表中提取所有方法名
  3. 合并去重

1b: 过滤 只保留以下类型的术语(跳过通用词、论文自身名称、公司名、人名):

  • 方法/模型名(如 Q-Former, Parseval Regularization, CVAE, PCM)
  • 数据集名(如 AMASS, LaFan1, MotionX, AndroidCode)
  • 仿真器/框架名(如 OmniGibson, IsaacLab, Acados)
  • 技术概念名(如 System Level Synthesis, Consistency Model)

1c: 创建缺失的概念笔记(自动归类) 检查

{CONCEPTS_PATH}/
下是否已存在(搜索所有子目录)。对于缺失的概念,根据概念类型自动归类到对应子目录,不要全扔
0-待分类/

分类规则见

../paper-reader/references/concept-categories.md

概念笔记模板见

../paper-reader/references/concept-categories.md

Step 2: 论文笔记生成

为推荐论文生成完整论文笔记:

  1. 从今天的推荐文件中,读取分流表,筛选出标记为"必读"的论文("值得看"和"可跳过"的不生成笔记)
  2. 质量检查已有笔记(不是只看文件是否存在):
    • 对已有
      📒 **笔记**
      标记的论文,用 Glob 找到对应笔记文件,检查行数
    • 行数 < 100 的视为骨架笔记,必须重新生成(删除旧文件,重新调用 paper-reader)
    • 行数 >= 100 且包含
      ## 关键公式
      ## 关键图表
      的才算合格,可以跳过
  3. 对每篇需要生成/重新生成的论文,使用 Task agent 调用
    /paper-reader
    skill(传入 arXiv 链接)
    • 不要指定固定的输出路径,让 paper-reader 自行决定文件名和分类目录
    • paper-reader 会用方法名缩写作为文件名(如
      DAPL.md
      ),并自动分类到正确子目录
    • agent 完成后,用
      find
      Glob
      找到实际生成的笔记文件路径和文件名,记录下来供 Step 3 回填用
  4. 笔记生成后,paper-reader 会自动补充概念库,无需重复

铁律:不论论文数量多少,"必读"的论文全部生成笔记,一篇不能少。 耗时长是正常的,不是偷懒的理由。如果 context 接近上限,先把已完成内容落盘; 只有在

GIT_COMMIT_ENABLED=true
时才允许做阶段性 commit。然后告知用户剩余论文需要在新会话中继续,绝对不能默默跳过

⚠️ 笔记质量硬性要求

绝对禁止自己手写简化版笔记。每篇论文必须通过 Task agent 调用

/paper-reader
skill 生成。 不要因为"怕 context overflow"或"论文太多"就自己写个 70 行的骨架糊弄过去。 paper-reader 在独立的 Task agent 中运行,不会占用主 agent 的 context。

笔记质量由 paper-reader skill 自身保证(模板、公式、图片、概念链接等规则均在 paper-reader 中定义)。

🔍 生成后质量验证(每篇必须执行)

每篇笔记生成后,立即验证:

  1. 文件行数 >= 120(低于此值说明内容不完整)
  2. 包含
    $$
    $
    LaTeX 公式(至少 2 处)
  3. 包含
    ![
    图片引用(至少 1 张)
  4. 包含
    ## 关键公式
    ## 实验结果
    section header
  5. 如果任一条件不满足,删除文件并重新生成

Step 3: 笔记链接回填

论文笔记全部生成完成后,将笔记链接回填到当天的推荐文件中。

3a: 收集已有笔记

用 Glob 扫描

{NOTES_PATH}/
下所有子目录(跳过
{CONCEPTS_PATH}
),获取所有
.md
文件列表,建立
{文件名(不含.md): 相对路径}
的索引。

3b: 匹配论文与笔记

读取当天推荐文件

{DAILY_PAPERS_PATH}/YYYY-MM-DD-论文推荐.md
,对每篇论文(
### N.
开头的段落):

  1. 从论文标题中提取方法名/模型名(通常是标题冒号前的缩写,如 "DM0"、"BPP"、"PA3FF")
  2. 与 3a 的笔记索引匹配(不区分大小写)
  3. 也检查富化数据的
    method_names
    (如果有残留数据)

3c: 插入笔记链接 + 修正分流表

对匹配到笔记的论文,在

- **来源**:
行之后插入一行:

- 📒 **笔记**: [[笔记名]]

其中

笔记名
是不含
.md
后缀的文件名(Obsidian 会自动解析到正确路径)。

  • 如果该论文已有
    📒 **已有笔记**
    📒 **笔记**
    行,跳过不重复添加
  • 使用 Edit 工具逐篇插入,确保不破坏文件其他内容

3d: 同步修正分流表 wikilink

paper-reader 生成笔记时会自行决定文件名(通常用方法名缩写,如

DAPL
),可能与分流表中的
[[wikilink]]
不一致(如分流表写了
[[Emerging Extrinsic Dexterity]]
)。因此回填时必须检查并修正:

  1. 对每篇已生成笔记的论文,拿到实际笔记文件名(如
    DAPL
  2. 在分流表(
    ## 分流表
    区域)中查找该论文的
    [[...]]
    链接
  3. 如果 wikilink 文本与实际笔记文件名不一致,用 Edit 替换为
    [[实际文件名]]
  4. 同样检查论文详评标题下方是否有不一致的 wikilink,一并修正

Step 4: 刷新 MOC 索引

只有在

AUTO_REFRESH_INDEXES=true
时才执行:

python3 ../_shared/generate_concept_mocs.py
python3 ../_shared/generate_paper_mocs.py

默认配置下这个开关是开启的,所以新增的概念和论文笔记通常会自动反映到各分类目录页中。

Step 5: Git 提交

仅当

GIT_COMMIT_ENABLED=true
时执行,并且必须先检查:

  1. VAULT_PATH/.git
    存在
  2. git add -A
    后确实有 staged changes

满足条件后才 commit:

cd {VAULT_PATH} && git add -A && git commit -m "daily papers: notes YYYY-MM-DD"

只有在

GIT_PUSH_ENABLED=true
且仓库已配置远端时才 push。

输出

完成后告知用户:

  • 创建了多少个新概念
  • 生成了多少篇论文笔记
  • 回填了多少个笔记链接
  • 流水线全部完成

注意事项

  • 如果前置文件不存在,必须先运行前面的步骤
  • /paper-reader
    skill 会自动处理概念库补充,不要重复创建
  • 仅为"必读"论文生成笔记,"值得看"不生成,耗时正常,不是跳过的理由
  • 默认自动刷新目录页,但默认不做 git commit / push
  • 绝对禁止以下偷懒行为:
    • 自己手写 70 行骨架笔记代替 paper-reader 输出
    • 以"context overflow"为由跳过论文不生成笔记
    • 看到文件已存在就跳过,不检查质量
    • 生成笔记后不做质量验证
  • 如果 context 真的接近上限:先保存已完成的笔记;只有在
    GIT_COMMIT_ENABLED=true
    时才 commit。然后明确告知用户还有 N 篇未完成,需要在新会话中运行
    跑一下论文笔记
    继续。绝不能默默跳过