Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    neversight

    ai-paper-reader

    neversight/ai-paper-reader
    Research
    2
    4 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    深度解析 AI 论文,生成可直接发布的专业阅读笔记

    SKILL.md

    AI 论文阅读笔记生成器

    核心目标

    生成可直接发布到技术社区的论文阅读笔记(知乎、掘金、公众号等)。

    笔记要求:

    • 内容完整:核心技术细节不遗漏,创新点深刻阐述
    • 专业易读:技术博客风格,既有深度又便于理解
    • 客观准确:基于论文内容分析,不添加主观臆断
    • 深度思考:通过 Q&A 环节帮助读者深入理解

    写作规范

    应该做

    1. 专业准确的表述

      • 使用领域内规范的术语
      • 公式和符号严格对应论文原文
      • 技术细节描述清晰无歧义
    2. 深入浅出的解释

      • 复杂概念先给直觉,再给细节
      • 用类比帮助理解抽象概念
      • 公式逐项解释变量含义
    3. 结构清晰的组织

      • 逻辑层次分明
      • 重点内容突出
      • 适当使用图表辅助说明
    4. 有价值的深度分析

      • 分析设计选择背后的原因
      • 对比与相关工作的异同
      • 指出方法的适用范围和局限

    必须避免

    1. AI 套话和模板句式

      • ❌ "本文的核心贡献是..."
      • ❌ "该方法的优势在于..."
      • ❌ "综上所述..."
      • ❌ "值得注意的是..."
      • ❌ "具有重要意义/广泛应用前景..."
    2. 空洞的总结和评价

      • ❌ "这是一篇重要的工作"
      • ❌ "为该领域提供了新思路"
      • ❌ 不带具体分析的泛泛而谈
    3. 过度的格式装饰

      • ❌ 大量 emoji
      • ❌ 每句话都加粗
      • ❌ 过多层级嵌套
    4. 不必要的第一人称

      • ❌ "我认为..."
      • ❌ "我的理解是..."
      • 保持客观叙述视角

    笔记结构

    零、元信息(笔记开头)

    每篇笔记开头需包含以下信息,帮助读者快速判断是否继续阅读:

    > **论文**:Actions Speak Louder than Words: Trillion-Parameter Sequential Transducers for Generative Recommendations
    > **作者**:Meta AI
    > **发表**:ICML 2024
    > **阅读时长**:约 15 分钟
    > **难度**:⭐⭐⭐⭐ (需要 Transformer、推荐系统基础)
    > **前置知识**:Attention 机制、DLRM、Scaling Law 概念
    

    难度等级说明:

    • ⭐ 入门级:无需专业背景
    • ⭐⭐ 基础级:了解深度学习基础
    • ⭐⭐⭐ 进阶级:熟悉相关领域
    • ⭐⭐⭐⭐ 专业级:需要较深的领域知识
    • ⭐⭐⭐⭐⭐ 专家级:涉及复杂数学或前沿研究

    一、TL;DR

    用 2-3 句话概括论文的核心创新,让没时间细读的读者快速抓住重点。

    ## TL;DR
    
    DLRM 等传统推荐模型依赖大量人工特征且无法 scale,本文提出将推荐问题转化为序列生成问题。核心创新是 HSTU 架构:用 Pointwise Attention 替代 Softmax 来保留用户偏好的绝对强度信息,使推荐系统首次展现出类似 LLM 的 Scaling Law。
    

    要求:

    • 2-3 句话,不超过 100 字
    • 必须包含:问题背景 + 核心方案 + 关键创新点
    • 避免泛泛而谈,要有具体技术点

    二、论文概述

    简明扼要地回答三个问题:

    • 解决什么问题:一句话描述
    • 核心方案:一句话概括
    • 主要贡献:2-3 点列举
    ## 论文概述
    
    **问题**:大规模推荐系统无法像 LLM 一样通过增加计算量持续提升质量
    
    **方案**:将推荐问题从"特征工程+判别式模型"转变为"序列建模+生成式模型"
    
    **贡献**:
    1. 提出 Generative Recommenders (GRs) 范式,实现推荐系统的 Scaling Law
    2. 设计 HSTU 架构,用 Pointwise Attention 替代 Softmax 保留强度信息
    3. 提出 M-FALCON 推理算法,实现高效的候选打分
    

    三、背景与动机

    说明现有方法的问题,以及为什么需要新方法:

    • 现有方法怎么做的
    • 存在什么问题/瓶颈
    • 问题的根本原因是什么

    四、核心方法(重点)

    这是笔记的核心部分,要求完整、深入、不遗漏。

    组织方式

    1. 整体架构

      • 给出架构图
      • 说明数据流向
      • 标注关键模块
    2. 核心模块详解(对每个关键模块)

      • 输入输出说明
      • 核心公式 + 逐项解释
      • 伪代码/代码实现
      • 设计选择的原因分析
    3. 关键技术细节

      • 训练策略
      • 超参数设置
      • 实现 tricks

    示例格式

    ## 核心方法
    
    ### 整体架构
    
    [架构图]
    
    数据流:用户历史序列 → Embedding → HSTU Layers × L → 预测头
    
    ### HSTU Layer 详解
    
    #### 输入输出
    - 输入:X ∈ R^{N×d},N 为序列长度,d 为嵌入维度
    - 输出:Y ∈ R^{N×d}
    
    #### 核心公式
    
    **Pointwise Projection**:
    $$U, V, Q, K = \text{Split}(\phi_1(f_1(X)))$$
    
    其中:
    - $\phi_1$:SiLU 激活函数
    - $f_1$:单层线性变换
    - Split 将输出分为四个向量
    
    **Spatial Aggregation**:
    $$A(X)V(X) = \phi_2(Q(X)K(X)^T + r_{ab}) V(X)$$
    
    关键点:使用 SiLU 而非 Softmax,保留注意力的绝对强度信息。
    
    #### 代码实现
    
    ```python
    class HSTULayer(nn.Module):
        def forward(self, x):
            # Pointwise Projection
            projected = F.silu(self.proj_in(x))
            u, v, q, k = projected.split([...], dim=-1)
    
            # Spatial Aggregation (不是 Softmax!)
            attn = F.silu(q @ k.T + self.rel_bias)
            out = self.norm(attn @ v) * u
    
            return x + self.proj_out(out)
    

    设计分析

    为什么用 SiLU 而不是 Softmax?

    Softmax 会将注意力归一化到概率分布,这在推荐场景下会丢失重要信息...

    
    ### 五、实验分析
    
    不是罗列数字,而是提炼关键结论:
    
    - **主实验结果**:与 baseline 对比的核心发现
    - **消融实验**:各组件的贡献分析
    - **Scaling 分析**:计算量与性能的关系(如有)
    - **局限性**:方法在什么情况下效果不好
    
    ### 六、深度理解问答
    
    通过精心设计的问题,帮助读者深入理解论文的关键点。
    
    **问答直接展示,不使用折叠**。
    
    ```markdown
    ## 深度理解问答
    
    ### Q1: 为什么 Softmax Attention 不适合推荐场景?
    
    推荐场景需要预测用户偏好的**绝对强度**(如观看时长),而非只是**相对排序**。
    
    考虑两个用户:
    - 用户 A:10 次历史交互
    - 用户 B:100 次历史交互
    
    使用 Softmax 时,两者的注意力权重都会被归一化到 [0,1],导致"用户 B 更活跃"这一信息丢失。
    
    而 Pointwise Attention 保留了累加的原始 magnitude,模型可以学到活跃度差异。
    
    ### Q2: HSTU 如何用 2 个线性层替代 Transformer 的 6 个?
    
    标准 Transformer 每层需要:
    - Q, K, V 投影:3 个线性层
    - Output Projection:1 个线性层
    - FFN:2 个线性层(扩展+压缩)
    
    HSTU 的简化:
    1. **融合 Q, K, V, U 投影**:一个线性层同时生成四个向量
    2. **用 U 门控替代 FFN**:`output * U` 实现类似的非线性变换
    
    代价是单层表达能力下降,但可以通过堆叠更多层来补偿。
    
    ### Q3: Stochastic Length 训练为什么能丢弃 70% token 而效果几乎不变?
    
    关键在于用户行为的**统计特性**:
    
    1. **时间重复性**:用户会反复与相似内容交互,信息冗余度高
    2. **兴趣低秩性**:10000 次交互可能只涉及 20 个主要兴趣点
    3. **最近优先**:采样时对最近行为加权,保留最相关的信息
    
    只要采样数量大于兴趣类别数的一定倍数,就能以高概率覆盖所有兴趣。
    

    七、总结与思考

    客观总结论文的贡献和局限:

    ## 总结
    
    ### 核心贡献
    - 证明了推荐系统可以遵循 Scaling Law
    - 提出了适合推荐场景的 Attention 变体
    
    ### 局限性
    - 冷启动场景:历史序列太短时优势不明显
    - 计算成本:需要大量 GPU 资源
    - 实时性:长序列推理的延迟挑战
    
    ### 适用场景
    - 用户历史丰富的场景(>100 次交互)
    - 有充足计算资源
    - 对实时性要求不是极端严格
    

    目录结构规范

    论文和阅读笔记应组织在统一的子目录下,便于管理和检索:

    paper-notes/
    ├── hstu/                           # 每篇论文一个目录,使用简短名称
    │   ├── paper.pdf                   # 原始论文 PDF
    │   ├── README.md                   # 阅读笔记(主文件)
    │   └── images/                     # 提取的图表
    │       ├── fig1_architecture.png
    │       ├── fig2_method.png
    │       └── fig3_scaling.png
    │
    ├── attention-is-all-you-need/
    │   ├── paper.pdf
    │   ├── README.md
    │   └── images/
    │
    └── din-deep-interest-network/
        ├── paper.pdf
        ├── README.md
        └── images/
    

    命名规范:

    • 目录名:论文简称或关键词,小写,用 - 连接
    • 笔记文件:统一命名为 README.md,便于 GitHub 直接预览
    • 图片目录:统一命名为 images/

    图片命名规范:

    fig{序号}_{类型}_{简述}.png
    
    类型:
    - arch: 架构图
    - method: 方法流程
    - result: 实验结果
    - ablation: 消融实验
    - compare: 对比图
    
    示例:
    - fig1_arch_overall.png
    - fig2_method_attention.png
    - fig3_result_scaling.png
    

    Q&A 环节设计指南

    问题类型

    1. 原理理解类

      • 为什么这样设计?
      • 与替代方案相比有何优势?
    2. 细节辨析类

      • 某个符号/操作的具体含义
      • 容易混淆的概念区分
    3. 边界条件类

      • 什么情况下方法会失效?
      • 假设条件是什么?
    4. 延伸思考类

      • 能否迁移到其他场景?
      • 有哪些可能的改进方向?

    答案要求

    • 直接展示:不使用折叠,读者可以顺畅阅读
    • 有理有据:答案要有论证,不是简单断言
    • 适当举例:用具体例子帮助理解
    • 承认不确定:对于论文未说明的部分,可以标注"推测"

    图表处理

    必须提取的图表

    • 整体架构图
    • 核心方法流程图
    • 关键实验结果(Scaling Law 曲线等)

    图表说明规范

    ![架构图](images/fig1_architecture.png)
    
    **图示内容**:HSTU 的整体架构,左侧为 DLRM 对比
    
    **关键信息**:
    - 输入为统一的物品-行为交替序列
    - HSTU Layer 可以无限堆叠
    - 输出为多任务预测头
    
    **与正文对应**:第 3.2 节详细描述
    

    图片提取工具

    学术论文中的图表有两种类型,需要不同的提取方式:

    类型 特点 提取方法
    嵌入式图片 作者插入的 PNG/JPEG get_images()
    矢量图形 架构图、流程图等绘制的图形 cluster_drawings()

    方法 1: 提取嵌入式图片

    适用于论文中直接插入的位图(如实验结果截图、照片等):

    import fitz  # PyMuPDF
    import os
    
    def extract_embedded_images(pdf_path, output_dir):
        """提取 PDF 中嵌入的位图"""
        os.makedirs(output_dir, exist_ok=True)
        doc = fitz.open(pdf_path)
    
        for page_num in range(len(doc)):
            page = doc[page_num]
            images = page.get_images(full=True)
    
            for img_idx, img in enumerate(images):
                xref = img[0]
                base = doc.extract_image(xref)
                image_bytes = base["image"]
                image_ext = base["ext"]
    
                # 过滤过小的图片(可能是图标/装饰)
                if base["width"] > 100 and base["height"] > 100:
                    output_path = f"{output_dir}/page{page_num+1}_img{img_idx+1}.{image_ext}"
                    with open(output_path, "wb") as f:
                        f.write(image_bytes)
    
        doc.close()
    

    方法 2: 提取矢量图形(推荐)

    适用于论文中绑制的架构图、流程图、图表等矢量图形:

    import fitz
    import os
    
    def extract_vector_figures(pdf_path, output_dir, dpi=200, min_size=100):
        """
        使用 cluster_drawings() 识别矢量图形区域并截图
    
        Args:
            pdf_path: PDF 文件路径
            output_dir: 输出目录
            dpi: 输出分辨率(默认 200,可提高到 300 获得更清晰的图片)
            min_size: 最小尺寸阈值,过滤装饰线条(默认 100pt)
        """
        os.makedirs(output_dir, exist_ok=True)
        doc = fitz.open(pdf_path)
    
        figures = []
        for page_num in range(len(doc)):
            page = doc[page_num]
    
            # 识别矢量图形的聚类区域
            # x_tolerance/y_tolerance 控制相邻元素的合并距离
            try:
                drawing_rects = page.cluster_drawings(
                    x_tolerance=3,
                    y_tolerance=3
                )
            except Exception:
                # 某些 PDF 可能不支持,跳过
                continue
    
            for idx, rect in enumerate(drawing_rects):
                # 过滤过小的区域(可能是线条/装饰)
                if rect.width < min_size or rect.height < min_size:
                    continue
    
                # 扩展边界,避免裁切太紧
                rect = rect + (-10, -10, 10, 10)
                # 确保不超出页面边界
                rect = rect & page.rect
    
                # 高分辨率截图
                zoom = dpi / 72
                mat = fitz.Matrix(zoom, zoom)
                pix = page.get_pixmap(matrix=mat, clip=rect)
    
                output_path = f"{output_dir}/page{page_num+1}_fig{idx+1}.png"
                pix.save(output_path)
                figures.append({
                    "page": page_num + 1,
                    "path": output_path,
                    "rect": rect
                })
    
        doc.close()
        return figures
    

    方法 3: 手动指定区域截取

    当自动识别效果不理想时,可手动指定坐标:

    import fitz
    
    def crop_figure(pdf_path, page_num, rect, output_path, dpi=200):
        """
        从 PDF 指定页面裁剪特定区域
    
        Args:
            pdf_path: PDF 路径
            page_num: 页码(从 1 开始)
            rect: (x0, y0, x1, y1) 坐标,单位为点(pt),72pt = 1英寸
            output_path: 输出图片路径
            dpi: 分辨率
        """
        doc = fitz.open(pdf_path)
        page = doc[page_num - 1]
    
        clip = fitz.Rect(rect)
        zoom = dpi / 72
        mat = fitz.Matrix(zoom, zoom)
    
        pix = page.get_pixmap(matrix=mat, clip=clip)
        pix.save(output_path)
        doc.close()
    
    # 使用示例:裁剪第 2 页的某个区域
    # 坐标可通过 PDF 阅读器查看,或先用方法 2 识别后微调
    crop_figure(
        "paper.pdf",
        page_num=2,
        rect=(50, 100, 550, 400),  # 左上角(50,100) 到 右下角(550,400)
        output_path="./images/fig1_architecture.png"
    )
    

    智能提取(综合方案)

    自动尝试多种方法,提取所有图表:

    import fitz
    import os
    
    def smart_extract_figures(pdf_path, output_dir, dpi=200):
        """
        智能提取论文中的所有图表
        1. 先使用 cluster_drawings 识别矢量图形
        2. 再提取嵌入式位图
        3. 自动过滤和去重
        """
        os.makedirs(output_dir, exist_ok=True)
        doc = fitz.open(pdf_path)
        results = {"vector": [], "embedded": []}
    
        for page_num in range(len(doc)):
            page = doc[page_num]
    
            # 1. 提取矢量图形
            try:
                rects = page.cluster_drawings(x_tolerance=3, y_tolerance=3)
                for idx, rect in enumerate(rects):
                    if rect.width > 100 and rect.height > 100:
                        rect = (rect + (-10, -10, 10, 10)) & page.rect
                        zoom = dpi / 72
                        pix = page.get_pixmap(matrix=fitz.Matrix(zoom, zoom), clip=rect)
                        path = f"{output_dir}/p{page_num+1}_vec{idx+1}.png"
                        pix.save(path)
                        results["vector"].append(path)
            except:
                pass
    
            # 2. 提取嵌入式图片
            for img_idx, img in enumerate(page.get_images(full=True)):
                xref = img[0]
                base = doc.extract_image(xref)
                if base["width"] > 100 and base["height"] > 100:
                    path = f"{output_dir}/p{page_num+1}_img{img_idx+1}.{base['ext']}"
                    with open(path, "wb") as f:
                        f.write(base["image"])
                    results["embedded"].append(path)
    
        doc.close()
        print(f"提取完成: {len(results['vector'])} 个矢量图, {len(results['embedded'])} 个位图")
        return results
    
    # 使用示例
    results = smart_extract_figures("paper.pdf", "./images/")
    

    常见问题

    Q: 提取的图片包含多个 Figure 合在一起?

    调小 x_tolerance 和 y_tolerance 参数(如 1-2),使聚类更严格。

    Q: 同一个 Figure 被切成多块?

    调大容差参数(如 10-20),使相邻元素合并。

    Q: 某些 Figure 没有被识别?

    1. 可能是嵌入式图片,尝试 get_images() 方法
    2. 使用手动指定区域的方法

    Q: 图片模糊?

    提高 dpi 参数到 300 或更高。


    使用方式

    基本用法

    请阅读这篇论文,生成一篇专业的阅读笔记,适合发布到技术社区。
    

    指定重点

    请阅读这篇论文,重点分析:
    1. HSTU 与标准 Transformer 的区别
    2. Scaling Law 实验的设置和结论
    3. 在工业场景的落地可行性
    

    对比分析

    请对比分析这两篇论文在 XXX 问题上的不同解法。
    

    技术要求

    内容完整性

    • 核心公式必须包含,逐项解释
    • 关键算法有伪代码实现
    • 重要超参数和训练细节不省略
    • 消融实验的关键结论要提炼

    深度要求

    • 分析"为什么这样设计"
    • 与相关工作建立联系
    • 指出方法的边界和局限

    可读性

    • 先直觉后细节
    • 代码和公式配合
    • 长公式分步解释

    依赖配置

    # 图片提取
    pip install pymupdf
    
    # PDF 转图片(可选)
    pip install pdf2image
    

    MCP 配置(可选)

    {
      "mcpServers": {
        "filesystem": {
          "command": "npx",
          "args": ["-y", "@anthropic/mcp-server-filesystem", "/path/to/papers"]
        },
        "notion": {
          "command": "npx",
          "args": ["-y", "@notionhq/notion-mcp-server"],
          "env": {
            "OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer YOUR_TOKEN\", \"Notion-Version\": \"2022-06-28\"}"
          }
        }
      }
    }
    
    Recommended Servers
    Jina AI
    Jina AI
    Cloudflare AI Search
    Cloudflare AI Search
    Consensus
    Consensus
    Repository
    neversight/skills_feed