prd: add article summary prompt independent PRD
This commit is contained in:
@@ -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/<run_id>/extracted/selected.extracted.json \
|
||||
--selected-ids <item_id> \
|
||||
--output-dir /tmp/article-summary-test
|
||||
|
||||
验证输出 markdown 包含「核心结论」「主要论点」「关键方法」等新字段,不再是 140 字短摘要。
|
||||
Reference in New Issue
Block a user