3.6 KiB
PRD: 单篇文章总结 Prompt 独立化
背景
reader 项目目前有两条 LLM 总结链路:
- 日报摘要(freshrss_pipeline.py):生成每日候选日报,输出短摘要卡片,目标是快速筛选
- 单篇精读总结(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/<run_id>/extracted/selected.extracted.json
--selected-ids <item_id>
--output-dir /tmp/article-summary-test
验证输出 markdown 包含「核心结论」「主要论点」「关键方法」等新字段,不再是 140 字短摘要。