From 7bb9bef12ff662a89e438859ffa2e673f6544cc1 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 29 Mar 2026 16:10:43 +0800 Subject: [PATCH] prd: add article summary prompt independent PRD --- prd/article-summary-prompt-independent.md | 103 ++++++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 prd/article-summary-prompt-independent.md diff --git a/prd/article-summary-prompt-independent.md b/prd/article-summary-prompt-independent.md new file mode 100644 index 0000000..067040b --- /dev/null +++ b/prd/article-summary-prompt-independent.md @@ -0,0 +1,103 @@ +# PRD: 单篇文章总结 Prompt 独立化 + +## 背景 + +reader 项目目前有两条 LLM 总结链路: + +1. 日报摘要(freshrss_pipeline.py):生成每日候选日报,输出短摘要卡片,目标是快速筛选 +2. 单篇精读总结(article_summary.py):对精选文章做深度沉淀,上传到知识库 + +问题:单篇精读总结目前复用了日报摘要的同一份 prompt(outputs/prompts/llm-summary-prompt.txt), +导致即使输入了完整正文(article.plain_text),输出仍然是 2-3 句的短摘要卡片,没有体现正文的深度信息。 + +--- + +## 目标 + +让单篇精读总结和日报摘要彻底分离,单篇总结的输出应该像一篇知识沉淀笔记,而不是日报候选摘要。 + +--- + +## 需求说明 + +### 1. 新增 outputs/prompts/article-summary-prompt.txt + +新增一个专门用于单篇文章知识沉淀的 prompt 文件,与日报摘要 prompt 完全独立。 + +prompt 设计目标: +- 基于正文全文(article.plain_text)做深度总结 +- 允许较长输出(不限制字数,以内容完整为准) +- 输出结构偏向知识沉淀,而非候选摘要 + +输出 JSON schema 新增字段: + +- core_conclusion:作者最核心的结论,1-2 句,精准 +- main_argument:文章的主要论点/主张,可展开,允许多句 +- key_methods:关键方法/机制/技术手段,3-6 条,每条一句 +- important_details:值得记录的细节、数据、案例,3-6 条,每条一句 +- reusable_insights:可复用于其他场景的启发或观点,2-4 条 +- keywords:具体实体、工具名、方法名,5-8 个 +- topics:更高层的主题标签,3-5 个 +- category:内容分类(资讯/方法论/工具实践/观点评论) +- worth_keeping:是否值得长期保留,bool +- reason:沉淀理由,一句话 + +### 2. 修改 src/summary_mcp/workflows/article_summary.py + +改动 1:默认 prompt 路径 + 修改前:DEFAULT_PROMPT_PATH = OUTPUT_ROOT / "prompts" / "llm-summary-prompt.txt" + 修改后:DEFAULT_PROMPT_PATH = OUTPUT_ROOT / "prompts" / "article-summary-prompt.txt" + +改动 2:Markdown 输出结构 +summarize_selected_articles() 中 lines 构造部分,从 summary/highlights 字段改为新 schema 字段。 + +新输出格式: + # 标题 + Source: url + Category: 方法论 + ## 核心结论 + ## 主要论点 + ## 关键方法 / 机制 + ## 重要细节 + ## 可复用启发 + ## 关键词 + ## 主题 + +### 3. Validator 处理 + +src/summary_mcp/validators/llm_result.py 目前按日报摘要 schema 校验,与新 schema 不兼容。 + +推荐方案:article_summary.py 调用 run_loop_payload() 时传入宽松 validator,只校验 JSON 格式合法,不校验具体字段。 +备选方案:新增 validate_article_summary_payload() 专门校验新 schema。 + +--- + +## 文件变更清单 + +| 文件 | 操作 | +|------|------| +| outputs/prompts/article-summary-prompt.txt | 新增 | +| src/summary_mcp/workflows/article_summary.py | 修改 prompt 路径 + 修改 markdown 输出结构 | +| src/summary_mcp/validators/llm_result.py | 按需修改 | + +--- + +## 不影响的部分 + +- freshrss_pipeline.py 不变,日报摘要链路保持原有 prompt 和 schema +- summary_loop.py 核心逻辑不变 +- extracted JSON 格式不变,article.plain_text 仍然是输入 + +--- + +## 验证方式 + +用已有 extracted 数据跑一次单篇总结: + + cd /home/ubuntu/zhu/github/reader + python -m summary_mcp.workflows.article_summary \ + --extracted outputs/freshrss/rerun//extracted/selected.extracted.json \ + --selected-ids \ + --output-dir /tmp/article-summary-test + +验证输出 markdown 包含「核心结论」「主要论点」「关键方法」等新字段,不再是 140 字短摘要。 \ No newline at end of file