执行前置确认(必须)
1.在按本skill开始任何步骤前,必须先询问用户:是否已在当前环境安装 Python,并说明用途:运行 scripts/pdf_to_md.py 将论文 PDF 转为 Markdown(终端中需能执行 python 或 python3)。明确告知没有 Python 则无法按规范执行论文 PDF 解析,可请用户安装 Python 后再继续,或在与用户达成一致的前提下仅做不涉及 pdf_to_md.py 的降级(例如只做 GitHub 条目、或跳过需 PDF 的论文条目),并在过程说明与最终报告中写明该限制。
2.询问用户对于每个数据源获取的条目数量。
3.询问用户调用脚本从PDF链接提取markdown是用哪个参数
introduction:仅返回严格匹配# Introduction一级标题的 Markdown 内容all:返回整篇论文转换后的完整 Markdown 内容 4.输出报告的语言。 在未完成上述确认前,不要开始执行本 skill 的核心流程。
默认数据源
- alphaxiv -
https://www.alphaxiv.org/?sort=Hot&interval=7+Dayshttps://www.alphaxiv.org/?source=GitHub&interval=7+Days&sort=Hot
- GitHub Trending -
https://github.com/trending?since=weekly
- 如果用户没有指定数量,默认每个数据源最多提取
10个条目。 - 只使用以上默认数据源,不额外扩展新的数据源网址。
工具使用优先级
获取网页中的论文列表、项目列表、论文链接和 arXiv ID 时,按以下顺序尝试:
- 浏览器工具优先:动态网页优先使用浏览器打开、滚动、点击和观察页面内容。如果网页打不开,通常是因为网络原因,多尝试2次一般能打开
- 网页抓取工具次之:如果浏览器无法稳定拿到内容,再尝试网页抓取。
- 网页转 Markdown 兜底:最后再使用
https://r.jina.ai/example.com读取页面 Markdown。 - 如果以上方式都不可用:就跳过,在最终报告里写明原因。
总体流程
阶段 1:发现条目并建立任务队列
- 对论文页面,优先从网页内容中拿到
arXiv ID。 - 对GitHub项目,记录项目标题和仓库 URL,不要求
arXiv ID。 - 去重规则:
- 论文优先按
arXiv ID去重 - GitHub 项目优先按仓库 URL 去重
- 如果缺少唯一标识,再按标题去重
- 论文优先按
- 将待分析条目整理为当前运行内的任务队列。
阶段 2:逐条执行任务
- 维护任务队列,顺序处理
pending条目,无需启动 subagent。 - 每开始处理一个条目,先执行
attempt += 1。 - 处理完成后,将结果写入成功或失败集合:
- 成功:
status = "done",并写入completedAt - 失败:
status = "failed",并写入error、completedAt
- 成功:
- 单个任务失败不影响后续任务,应继续处理剩余条目。
执行规则
直接完成每个条目的内容获取、分析、分类和结果汇总。
论文任务
如果 source 是 arxiv:
- 优先使用已有的
arXiv ID。 - 如果拿到了
arXiv ID,构造论文 PDF 链接:https://arxiv.org/pdf/{arxiv-id}.pdf
- 调用脚本从 PDF 链接提取 markdown,使用
--range显式传入用户选择:python scripts/pdf_to_md.py https://arxiv.org/pdf/{arxiv-id}.pdf tmp_llm_research/{arxiv-id}.md --range introductionpython scripts/pdf_to_md.py https://arxiv.org/pdf/{arxiv-id}.pdf tmp_llm_research/{arxiv-id}.md --range all
--range参数说明:introduction:仅返回严格匹配# Introduction一级标题的 Markdown 内容all:返回整篇论文转换后的完整 Markdown 内容
- 读取
tmp_llm_research/{arxiv-id}.md。 - 基于提取出的论文 markdown 分析论文核心问题、方法、贡献、适用场景和局限性。
- 严格按照
references/categories.md中的大类进行分类。 - 如果始终拿不到
arXiv ID,则不要伪造 ID,也不要直接用网页摘要代替 markdown;应将该任务标记为failed,并在错误里注明“无法稳定获取 arXiv ID”。
GitHub 项目任务
如果 source 是 github:
- 优先使用浏览器工具读取仓库首页、README、项目说明。
- 如果浏览器工具拿不到足够内容,再尝试网页抓取工具。
- 如果仍然不稳定,再使用
r.jina.ai版本页面作为兜底。 - 如果以上方式都受限,但仓库首页还能看到仓库名、简介、话题、页面结构中的少量文本,允许基于这些可见信息给出“简版分析”。
- 用简单易懂的语言解释论文/项目内容;信息完整时尽量详细,信息受限时要明确说明推断边界。
- 严格按照
references/categories.md中的大类进行分类。
分析结果格式
在当前运行内存中维护成功与失败结果集合,用于最终汇总。结果建议至少包含以下字段:
{
"id": "{序号}",
"title": "{标题}",
"url": "{URL}",
"source": "{arxiv|github}",
"arxivId": "{arXiv ID,如果是 GitHub 则为 null}",
"category": "{类目名称}",
"authors": "{作者或机构,未知可写 Unknown}",
"analysis": "{用简单易懂的语言解释内容,越详细越好}",
"status": "{done或failed,如果是failed需要列上原因}",
"attempt": "{当前尝试次数}",
"completedAt": "{ISO 时间戳}"
}
最终报告
当所有任务完成后,输出最终 Markdown 报告到 output 文件夹,文件名格式为 YYYYMMDDHHmm.md。
最终报告成功写入后,需要删除整个 tmp_llm_research 文件夹。
最终报告必须包含:
# Report Summary,至少包含:Total、Success、Failed、Retried Success。# Details,必须按category聚合,每个分类下的条目至少包含:title、url、source、authors、analysis。# Trending,需要总结本批论文和项目体现出的共同趋势、热门方向和潜在变化。
注意事项
- 单个任务失败不影响其他任务,继续推进剩余任务。
- 所有原始链接必须保留,便于最终报告追溯。
- 只有在最终 Markdown 报告成功写入后,才可以清理
tmp_llm_research,避免影响最终汇总。 - 如果运行环境限制导致部分条目只能获得有限信息,最终报告中应如实说明,不要伪装成完整深度分析。