Daily news digest
Skill Komagon/hermes-production-patterns/examples/daily-news-digest
定时抓取 RSS 源,用 LLM 生成中文新闻摘要,遵循 STATE.md 状态管理和 Maker/Checker 验证From its SKILL.md
npx -y skills add Komagon/hermes-production-patterns --skill daily-news-digestAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
2.2 KB, 628 tokens by cl100k_base, as published. Nobody here has run it
Daily News Digest
实时演示 conventions/ 中全部四条工程公约的完整集成:
- state-file-pattern — STATE.md 跨运行状态
- control-flow-separation — 抓取用代码 / 摘要用 LLM
- maker-checker — Checker 五维验证摘要质量
- error-compact-pattern — 错误不炸上下文
工作流
Step 1: 读取状态(确定性)✅
从 STATE.md 读取上次运行状态和 idempotency keys。
Step 2: 抓取 RSS(确定性)✅
# 零 LLM 成本。只处理上次运行后新增的文章。
import feedparser
for url in RSS_SOURCES:
feed = feedparser.parse(url)
new = [entry for entry in feed.entries
if entry.id not in state.get("idempotency_keys", [])]
Step 3: LLM 摘要(概率性)❌
# 每日限 5 篇,控制 token 开销。
for article in new[:5]:
summary = await llm.complete(
f"按三点总结,每条不超过20字:\n标题:{article.title}\n{article.description}"
)
Step 4: Checker 验证(概率性)❌
独立 Agent 对摘要做五维评分,≥ 40/50 PASS。
Step 5: 更新状态(确定性)✅
state["progress"]["articles_summarized"] += len(passed)
state["idempotency_keys"].extend([a.id for a in processed])
atomic_write("STATE.md", state) # 原子写入 + 文件锁
错误处理
# 按 error-compact-pattern 压缩错误
try:
feed = feedparser.parse(url)
except Exception as e:
compact = f"[STEP_FAILED] fetch_rss@{now}\n Error: {type(e).__name__} - {str(e)[:80]}\n Recoverable: YES (retry with backoff)"
context.append(compact)
输出格式
# 新闻摘要 {YYYY-MM-DD}
## 📰 {article.title}
- {point 1}
- {point 2}
- {point 3}
What ships with it: 2 files
2.8 KB alongside SKILL.md, 1 of them executable
- STATE.md687 B
- test_example.pyruns2.1 KB