PaperFlow 项目进展记录:Daily Update 主动发现与入库闭环
1. 本阶段解决的核心问题PaperFlow 最初的可用链路偏“被动”用户上传一篇论文系统解析 PDF然后支持阅读、翻译和 Sage 问答。这条链路可以证明论文阅读体验成立但还不能体现任务书中“5-Agent 主动构建知识库”的目标。本阶段重点是补齐 Daily Update 主动发现闭环让系统从“等用户给论文”升级为“每天主动发现论文、筛选论文、生成卡片、下载全文、写入知识库”。也就是说Daily Update 不应该只是首页一条日报文本而应该成为 5-Agent 系统的入口首页触发 - Scout 发现候选论文 - Curator 审核筛选 - Editor Lite 生成可读卡片 - 下载审核通过论文的 PDF - MinerU 精析全文 - 正文/公式/图片资源入库 - Editor Pro 生成全文级导读 - 首页和论文详情页展示当前已经完成的是这条链路的第一版可运行闭环。2. 为什么要做 Daily Update 闭环Daily Update 的意义不是简单“定时拉几篇论文”而是让 PaperFlow 具备主动知识增长能力。如果没有 Daily Update系统更像一个增强版 PDF 阅读器用户上传论文。系统解析。用户自己阅读和提问。这可以满足单篇论文阅读但不足以体现“学术知识助手”的主动性。加入 Daily Update 后系统能力发生变化Scout 每天主动巡游学术来源。Curator 过滤掉重复、低相关、低质量候选。Editor 将通过审核的论文整理成可读卡片。系统自动下载 PDF 并入库。Sage 和 Pathfinder 后续可以基于不断扩充的知识库工作。这使 PaperFlow 从“单篇阅读工具”向“持续扩展的个人学术知识库”转变。3. 首页触发 Daily Update当前首页已经可以触发真实 Daily Update而不是展示静态内容。前端请求POST /api/v1/agents/daily-update实际调用链路paperflow-web - api-gateway - content-service - knowledge-engine - FiveAgentWorkflow - paperflowdb这个设计保持了现有系统边界前端不直接访问 Python。Java 继续作为统一外部 API。Python Knowledge Engine 负责 5-Agent、论文入库、RAG 和知识库。目前首页点击 Daily Update 后后端会执行真实 Agent workflow并在完成后刷新论文列表。这样 Feed 中展示的内容可以逐步从静态日报变成真实入库论文。4. Scout候选论文发现Scout 是 Daily Update 的第一步负责从 arXiv 等来源发现候选论文。当前实现中Scout 的主题来源仍然比较简单前端暂时不传 topics。后端优先读取 DAILY_UPDATE_TOPICS。如果未配置则使用默认主题。默认主题包括retrieval augmented generationlarge language modelsagentic workflowpaper reading assistant这一版的目标不是马上做完整个性化推荐而是先让 Scout 能稳定发现候选论文并把候选论文交给 Curator 审核。后续用户画像完成后Scout 不应只按用户兴趣搜索。否则系统会变成窄推荐容易陷入信息茧房。更合理的设计是将候选来源分成三类Interest Match强匹配用户画像。例如用户长期关注 RAG、agent workflow、paper reading assistant。Adjacent与用户画像相邻但不完全相同。例如从 RAG 扩展到 citation grounding、long-context memory、retrieval evaluation。Roaming主动漫游发现新方向。不完全依赖用户画像用来发现潜在新兴趣。建议初始比例60% Interest Match 25% Adjacent 15% Roaming未来首页也应该直接展示这个来源标签让用户知道一篇论文是“强兴趣匹配”还是“漫游探索”。5. Curator去重、相关性和质量筛选Curator 的作用是把 Scout 拉来的候选论文变成“值得进入知识库的论文”。如果没有 CuratorDaily Update 会退化成简单爬虫只要搜到论文就入库。这会带来几个问题重复论文越来越多。主题漂移严重。低质量或无关论文污染知识库。Sage 和 Pathfinder 的检索上下文质量下降。因此 Curator 必须在入库前做审核。当前 Curator 已承担以下判断与现有论文库是否重复。与 Daily Update 主题是否相关。是否有足够质量进入知识库。是否适合后续阅读、问答和学习路径生成。Curator 的结果会进入 Agent run 记录用于后续可视化和复盘。当前还需要增强的是“拒绝理由产品化”。也就是说Curator 不仅要告诉系统“拒绝”还要告诉用户为什么这篇被拒绝。是重复、低相关、质量不足还是不符合当前兴趣。如果是 Roaming 论文它为什么没有进入知识库。这些信息后续也可以反哺用户画像。6. 为什么要区分 Editor Lite 和 Editor ProEditor 分成 Lite 和 Pro不是为了增加复杂度而是为了解决不同入口对实时性的要求不同。PaperFlow 有三类典型入口Daily Update系统每日主动拉取一批论文。可以接受后台慢慢做全文解析和增强。但首页不能一直空等完整 PDF 解析。用户当场刷新 Daily Update用户点击按钮后希望较快看到结果。如果每篇论文都等待 PDF 下载、MinerU 精析、图片提取和复杂模型分析等待时间会很长。用户自己上传论文用户上传后通常希望立刻进入阅读或看到基本摘要。全文解析可以继续跑但页面需要先有可读反馈。因此系统需要两层 EditorEditor Lite快速生成轻量卡片满足实时反馈。Editor Pro等全文解析和 MinerU 资产准备好后再生成更完整的图文导读。这是一种“先可读再增强”的设计。它避免了两个极端如果只做 Lite论文卡片不够深无法利用全文、图片和公式。如果只做 Pro用户每次都要等完整解析交互体验会很慢。7. Editor Lite快速卡片生成Editor Lite 是审核通过后的轻量卡片生成阶段。它主要基于arXiv 元数据。标题。摘要。Curator 审核结果。Agent 对论文价值的判断。它不依赖 MinerU 全文解析因此可以较快返回结果。当前 Editor Lite 已生成以下字段popular_headline更适合首页 Feed 的标题。popular_summary更适合快速浏览的短摘要。academic_comment客观学术评论避免只有营销式表达。contribution_points论文主要贡献点。limitations方法局限、风险或适用范围。reading_route建议阅读路线帮助用户决定从哪里开始读。这些字段会写入pf_paper.metadata.editor_card同时也会写入 pf_paper_chunk作为 agent-workflow 来源的 chunks供 Sage/RAG 后续检索。前端使用方式首页 Feed 优先展示 popular_headline 和 popular_summary。论文详情页展示 Editor Card。这样即使全文解析尚未完成用户也能先看到一张结构化、可阅读的论文卡片。8. 审核通过论文下载 PDFCurator 审核通过后系统会自动下载论文 PDF。对于 arXiv 论文系统会根据 arXiv id 生成 PDF 地址https://arxiv.org/pdf/{arxiv_id}.pdf下载后的 PDF 保存在 Knowledge Engine 服务器/opt/paperflow-knowledge/data/uploads同时写入pf_paper.file_path这一步很关键因为它让 Daily Update 推荐的论文真正进入后续阅读链路PDF 阅读器可以打开本地代理文件。MinerU 可以解析本地 PDF。后续 Sage 可以基于全文 chunks 回答。不再依赖每次从 arXiv 远程加载 PDF。9. 入库与 Agent Run 日志Daily Update 运行结果会写入数据库。核心表包括pf_paperpf_paper_chunkpf_paper_embeddingpf_agent_runpf_agent_run_message其中pf_paper 保存论文主记录。pf_paper_chunk 保存 Editor Lite 卡片和全文解析 chunks。pf_paper_embedding 支持 RAG 检索。pf_agent_run 保存一次 Daily Update 运行状态。pf_agent_run_message 保存运行过程消息。这为后续 Agent 可视化提供了基础。未来可以基于这些日志展示Scout 搜了什么。Curator 通过了哪些、拒绝了哪些。Editor 生成了什么。哪些论文已下载 PDF。哪些论文已完成 MinerU 解析。哪些资源已经入库。10. 当前完成度当前已经完成首页触发 Daily Update。Java 网关和 content-service 正确代理 Agent 请求。Scout 拉取候选论文。Curator 做去重、相关性和质量筛选。Editor Lite 生成结构化卡片。通过审核的论文下载 PDF。论文主记录和 chunks 入库。Agent run 日志写入。首页和论文详情页可以展示真实入库论文。尚未完成用户画像驱动 Scout。Interest Match / Adjacent / Roaming 标签。Curator 拒绝理由前端展示。Agent Run 可视化页面。Daily Update 自动定时调度的最终产品化展示。11. 下一步建议下一阶段计划围绕“让 Daily Update 可解释”继续推进。优先级如下用户画像 Lite保存显式兴趣、行为兴趣、负反馈和近期关注点。Scout Plan将 topics 从普通字符串升级为结构化计划。明确区分 Interest Match、Adjacent 和 Roaming。Curator Reason 展示通过/拒绝都保留原因。首页展示通过原因。独立页面展示拒绝原因。Agent 可视化首页轻量展示 Daily Update 进度。独立 Agent Run 页面展示完整流程。