一键导入
paper-reading
论文精读技能。根据用户给出的论文名称,从 arXiv 搜索并下载论文 PDF,然后生成一篇通俗易懂的中文 Markdown 论文解读。适用于用户提到"论文精读"、"读论文"、"解读论文"、"paper reading"等场景。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
论文精读技能。根据用户给出的论文名称,从 arXiv 搜索并下载论文 PDF,然后生成一篇通俗易懂的中文 Markdown 论文解读。适用于用户提到"论文精读"、"读论文"、"解读论文"、"paper reading"等场景。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | paper-reading |
| description | 论文精读技能。根据用户给出的论文名称,从 arXiv 搜索并下载论文 PDF,然后生成一篇通俗易懂的中文 Markdown 论文解读。适用于用户提到"论文精读"、"读论文"、"解读论文"、"paper reading"等场景。 |
根据用户给出的论文名称或 arXiv ID,下载论文到 papers/ 目录,并生成一篇面向初学者的中文 Markdown 论文解读。
本 Skill 依赖 arxiv MCP 服务(arxiv-mcp-server)。请确保项目根目录的 .mcp.json 已被你的 AI 平台加载,或手动配置:
{
"mcpServers": {
"arxiv": {
"command": "uvx",
"args": ["arxiv-mcp-server", "--storage-path", "."]
}
}
}
MCP 服务名配置为
arxiv时,工具调用名为mcp__arxiv__<tool>(如mcp__arxiv__search_papers)。若你的平台使用其他服务名(如arxiv-mcp-server),则前缀相应变为mcp__arxiv-mcp-server__<tool>。下文统一使用arxiv作为服务名。
在开始任何工作之前,必须先检查论文是否已经精读过。
检查方法:扫描 papers/ 目录下所有子文件夹,如果存在同名文件夹且内部已有 *_解读.md 文件,说明该论文已精读完成。
# 列出所有已精读论文
ls papers/*/ # 查看文件夹列表
ls papers/*/_解读.md 2>/dev/null # 查看已有解读文件
判定逻辑:
_解读.md → 已精读,跳过_解读.md(只有 PDF)→ 未完成,继续精读用户提交多篇论文时:逐一检查,跳过已精读的,只处理未精读的。对于跳过的论文,告知用户"该论文已精读,跳过"。如果全部已精读,告知用户并列出已有解读文件路径。
从用户输入中提取:
2401.12345)首选方式 — arXiv MCP:
按名称搜索:使用 mcp__arxiv__search_papers 工具
ti:"Attention Is All You Need"max_results: 5,按 relevance 排序已知 arXiv ID:直接使用 mcp__arxiv__get_abstract 获取元信息
get_abstract 返回的 published 字段包含精确发表日期(如 "2017-06-12T17:57:34Z"),必须记录这个精确日期。后续生成解读时,发表时间 字段使用 YYYY-MM-DD 格式(如 2017-06-12),不要只写年份。首选方式 — arXiv MCP:
使用 mcp__arxiv__download_paper,传入 paper_id(如 "1706.03762")
{arxiv_id}.md 缓存文件。该文件必须立即移动到对应论文的 resource/ 目录下,并重命名为 temp_paper_{arxiv_id}.md。禁止让任何论文相关文件散落在根目录。在项目的 papers/ 目录下创建论文专属文件夹,并用 curl 下载 PDF:
mkdir -p "papers/<论文简称>"
curl -L -o "papers/<论文简称>/<论文简称>.pdf" "https://arxiv.org/pdf/<paper_id>.pdf"
论文简称 = 英文标题中每个主要单词首字母大写、用下划线连接,如 LoRA_Low-Rank_Adaptation_of_Large_Language_Models
降级方式:使用 skills/paper-reading/scripts/download_arxiv.py 脚本完成搜索+下载。
首选方式 — arXiv MCP:
使用 mcp__arxiv__read_paper 读取已下载论文的全文(Markdown 格式)。
降级方式:使用 PDF 解析工具从 PDF 文件提取论文内容。
阅读时重点关注:
原则:论文中的图优先从 PDF 提取原图使用;若原图提取失败(如矢量图裁剪不干净、PDF 加密无法提取等),则降级为自绘 SVG 图表替代。自绘图也可用于论文中没有的概念性说明。
在论文专属文件夹(papers/<论文简称>/)下创建 resource/ 子目录存放提取的图片。
提取方式 — 使用 extract_pdf_figures.py 脚本:
# 从项目根目录运行(需要先激活虚拟环境)
# 自动检测:渲染含 Figure 的页面为高清截图
python skills/paper-reading/scripts/extract_pdf_figures.py "papers/<论文简称>/<论文简称>.pdf" "papers/<论文简称>/resource" --dpi 300
# 手动裁剪指定区域(坐标为 PDF 坐标系,单位 pt,原点左上角)
python skills/paper-reading/scripts/extract_pdf_figures.py "papers/<论文简称>/<论文简称>.pdf" "papers/<论文简称>/resource" --crop <页码>:<x0>,<y0>,<x1>,<y1> --name <figure名称> --dpi 300
提取流程:
temp_pageN_full_300dpi.png),确定每个 Figure 的精确裁剪坐标文件命名规范(resource/ 目录下):
| 文件类型 | 命名格式 | 是否保留 | 说明 |
|---|---|---|---|
| 最终 Figure 图片 | figure{N}_{描述}.png | 保留 | 手动裁剪或确认可用的论文原图 |
| 自绘辅助图表 | {描述}.svg | 保留 | 方法对比图、流程图、梯度流向图等 |
| 提取摘要 | extraction_summary.json | 保留 | 记录提取过程,便于追溯 |
| 嵌入位图 | page{N}_img{序号}_{宽}x{高}.{ext} | 保留 | 从 PDF 直接提取的嵌入图片,可能包含可用原图 |
| 全页截图(临时) | temp_page{N}_full_{dpi}dpi.png | 清理 | 仅用于手动裁剪参考,确认裁剪完成后即可删除 |
| 论文全文缓存(临时) | temp_paper_{arxiv_id}.md | 清理 | MCP 下载的 HTML 转换全文,质量不高,有 PDF 作为正式原文,禁止留在根目录 |
清理规则:temp_* 前缀的文件是明确的临时文件,在手动裁剪完成、最终 Figure 图片确认无误后,可直接代码删除,无需二次确认。
# 自动清理临时全页截图(保留最终 figure、svg、json 和嵌入图片)
rm papers/<论文简称>/resource/temp_*
参照 template.md 的模板格式,用中文撰写论文解读。
写作原则:
图表要求(重要):
解读中必须包含图表来辅助说明,不能全是文字叙述。图表分为两类:
A. 论文原图(优先使用):
论文中已有的 Figure 必须使用 Step 4.5 提取的原图,用 Markdown 图片语法引用:

不要用 ASCII 重画论文中已有的图。
B. 自绘辅助图(补充使用 / 原图提取失败时的降级方案):
以下场景需自行绘制 SVG 图表,保存为独立 .svg 文件到 resource/ 目录,然后在 Markdown 中用图片语法引用:
SVG 绘图规范:
resource/<描述性名称>.svg,如 resource/gradient_flow.svgxmlns="http://www.w3.org/2000/svg" 声明,设置合适的 viewBoxfont-family="sans-serif",中文文本至少 12px,标题 14-16pxrx/ry),箭头清晰,整体风格整洁数学公式要求:
使用 LaTeX 语法书写数学公式,以便在 Obsidian 等工具中正确渲染:
$...$,如 $h = Wx + BAx$$$...$$,如 $$\Delta W = BA, \quad B \in \mathbb{R}^{d \times r}, A \in \mathbb{R}^{r \times d}$$\begin{bmatrix}...\end{bmatrix}W ∈ R^{d×d}),统一用 LaTeX 语法流程推导要求(重要):
对于涉及模型训练或算法流程的论文,必须包含一个具体数值的简化示例,手把手走通核心流程,帮助读者建立直觉。
通用要求:
连贯性要求(重要):
流程推导必须一步一步连贯推导,禁止跳跃或黑盒式给出结果。具体规则:
训练型论文(涉及梯度、反向传播)额外需要: 5. 损失函数:写出数学形式,用直白中文翻译含义 6. 反向传播:画出梯度流向图,用数值展示一步梯度计算 7. 参数更新:用具体学习率算出更新后的参数,再做一次前向传播验证损失下降
非训练型论文(如后训练压缩、推理优化、架构设计等)替代要求: 5. 核心计算步骤:用具体数值展示算法的关键计算过程(如Hessian计算、权重选择、更新公式等) 6. 多步迭代:如果算法是迭代式的,展示至少2-3步的完整迭代过程 7. 结果验证:用对比表格展示算法执行前后的效果差异
术语解释要求:
首次出现的专业缩写(如 MLP、FFN、LSTM、GRU 等)必须给出全称和通俗解释。例如 MLP 首次出现时应标注"MLP(Multi-Layer Perceptron,多层感知机)——最基础的神经网络结构,多层线性变换加激活函数"。后续可直接使用缩写。
在保存解读文件之前,必须执行以下自检,确保解读忠实于论文且前后一致:
1. 算法职责检查
2. 流程一致性检查
3. 前后描述一致性检查
4. 内容真实性检查
如果自检发现不一致,必须修正后再保存。
论文解读生成后,必须根据论文内容给出初始标签。标签存储在 blog/blog-config.json 中,是博客标签管理和筛选的数据来源。
标签生成规则:
blog/blog-config.json 中 tagColors 里已有的标签,保持标签体系一致性标签颜色调色盘(按顺序取用,避免与已有颜色重复):
#3b82f6(蓝) #10b981(绿) #f59e0b(橙) #ec4899(粉) #8b5cf6(紫)
#06b6d4(青) #f43f5e(红) #f97316(橘) #a855f7(紫红) #0ea5e9(天蓝)
#6366f1(靛蓝) #64748b(灰) #14b8a6(teal) #84cc16(lime) #d946ef(洋红)
更新 blog/blog-config.json:
读取 blog/blog-config.json,按以下规则更新:
{
"paperTags": {
"新论文slug": ["标签1", "标签2"],
"...": "..."
},
"tagColors": {
"标签1": "#颜色",
"...": "..."
}
}
paperTags:为新论文 slug 添加生成的标签数组tagColors:若使用了新标签,为其分配颜色;已有标签的颜色保持不变示例:若精读的是一篇关于 RLHF 的论文:
["RLHF", "LLM", "对齐"]LLM 已存在于 tagColors,复用 #6366f1RLHF 和 对齐 是新建标签,分别取 #14b8a6 和 #84cc16权限说明:此步骤自动执行,无需询问用户。标签后续可通过博客管理后台(
/admin)手动调整。
将生成的 Markdown 保存到论文专属文件夹内,文件名格式:
papers/<论文简称>/<论文简称>_解读.md
例如:papers/Attention_Is_All_You_Need/Attention_Is_All_You_Need_解读.md
解读文件保存后,自动将本次新增的论文文件夹提交到 git 仓库并推送到远程。
cd <项目根目录>
git add "papers/<论文简称>/"
git commit -m "docs(<论文简称>): 添加论文解读
- 下载论文 PDF
- 提取论文原图至 resource/
- 生成中文解读(含 LaTeX 公式、数值推导、原图引用)
- 生成初始标签并更新 blog-config.json"
git push
注意事项:
papers/<论文简称>/ 文件夹,不要把其他未完成的论文一起提交git remote 为空),跳过 push 并提示用户先配置远程仓库$...$ / $$...$$)每篇论文在 papers/ 目录下拥有独立的文件夹,所有相关文件集中管理:
papers/
├── Attention_Is_All_You_Need/ # 论文专属文件夹
│ ├── Attention_Is_All_You_Need.pdf # 论文原文 PDF
│ ├── Attention_Is_All_You_Need_解读.md # 论文解读
│ └── resource/ # 解读引用的资源
│ ├── figure1_transformer_arch.png # 最终保留:从 PDF 提取的原图
│ ├── figure2_attention_detail.png
│ ├── gradient_flow.svg # 最终保留:自绘辅助图表
│ ├── extraction_summary.json # 最终保留:提取摘要记录
│ └── page5_img1_640x480.png # 最终保留:从 PDF 提取的嵌入位图
│
├── LoRA_Low-Rank_Adaptation/ # 另一篇论文
│ ├── LoRA_Low-Rank_Adaptation.pdf
│ ├── LoRA_Low-Rank_Adaptation_解读.md
│ └── resource/
│ ├── figure1_reparametrization.png # 手动裁剪的最终 Figure
│ ├── figure2_accuracy_vs_params.png
│ └── method_comparison.svg # 自绘对比图
│
└── ... # 更多论文
关键约定:
./resource/xxx.pngresource/ 目录存放解读所需的最终资源(提取原图、自制 SVG、extraction_summary.json)papers/<论文简称>/ 下,禁止任何文件散落在项目根目录temp_ 前缀(如 temp_page5_full_300dpi.png、temp_paper_2309.12307.md),仅用于中间处理,确认完成后自动代码删除figure{N}_{描述}.png,自绘图用 {描述}.svg,不得使用 temp_ 前缀在手动裁剪完成、最终 Figure 图片已保存后,自动删除所有 temp_ 前缀的临时文件。此步骤无需询问用户,因为 temp_ 前缀已明确标识这些文件为一次性参考用途。
需清理的临时文件清单:
temp_page{N}_full_{dpi}dpi.png —— 全页截图temp_paper_{arxiv_id}.md —— MCP 下载的 HTML 转换全文缓存# 自动清理该论文目录下 resource/ 中的所有临时文件
rm papers/<论文简称>/resource/temp_*
清理后 resource/ 中应仅保留:最终 Figure 图片(figure{N}_*.png)、自绘 SVG、嵌入位图、extraction_summary.json。若某论文没有可提取的嵌入图片且所有 figure 均为自绘 SVG,则仅保留 SVG 和 extraction_summary.json。
以下工具由 arxiv-mcp-server 提供(工具前缀取决于你的 MCP 配置中的服务名,下文以 arxiv 为例):
| 工具 | 用途 | 关键参数 |
|---|---|---|
mcp__arxiv__search_papers | 搜索论文 | query, max_results, categories, sort_by |
mcp__arxiv__get_abstract | 获取摘要和元信息 | paper_id |
mcp__arxiv__download_paper | 下载并提取全文 | paper_id |
mcp__arxiv__read_paper | 读取已下载论文 | paper_id |
mcp__arxiv__citation_graph | 获取引用/被引关系 | paper_id |
mcp__arxiv__semantic_search | 本地语义搜索 | query (需先下载论文) |
download_arxiv.py 仅使用 Python 标准库,无需额外安装依赖extract_pdf_figures.py 需要 PyMuPDF,通过 requirements.txt 安装