自动化任务折腾史:从4个定时任务到删掉一个,我悟了
搞了4个定时任务,删掉了1个。新闻播报从”不忍直视”到”脚本直抓”,花了整整两个月。最后我悟了:能脚本化的别交给AI,AI只做需要判断力的部分。”搞不好就算了”,不是摆烂,是止损。
TL;DR
4个cron任务(HN+arXiv日报、股票播报、H3MS反思、新闻播报),删掉了新闻播报里的”LLM自由搜索”层。架构从”让AI搜新闻”演进到”RSS脚本直抓+AI只做提炼”。核心教训:自动化任务里,AI是”加工层”不是”数据层”。数据获取靠脚本,判断提炼才靠AI。
一、起因:4个定时任务,每天7点准时推
折腾Hermes三个月,我搞了4个定时任务,每天早上准时往钉钉推:
- HN+arXiv日报(7:00):技术线
- 股票播报(7:30汇总):港股+美股
- H3MS每日反思(21:00):知识复盘
- 新闻播报(7:00):财经新闻
4个任务,4种套路。但新闻播报这个,折腾得最久,最后删掉了一层,才跑通。
今天这篇,讲的就是新闻播报的折腾历程——从”不忍直视”到”脚本直抓”,两个月,五个阶段。
二、阶段1:纯LLM自由搜索(失败)
最开始,我让AI”每天7点帮我搜几条财经新闻推给我”。
逻辑很简单:cron触发 → 让AI调用web_search → 搜”今日财经新闻” → 总结推送。
第一周,我收到的”新闻”是这样的:
- “英伟达宣布500亿美元融资计划,将扩建GPU数据中心”
- “某分析师预测下季度AI芯片出货量翻倍”
我核实了一下——英伟达没有这个融资计划,”某分析师”查无此人。
这就是LLM自由搜索的致命问题:它不是在”搜新闻”,是在”编新闻”。 搜索能力不够,就用幻觉补。token成本不可控、延迟不可控、结果更不可控。
我在session里给了它一个评价:“不忍直视。”
三、阶段2:优化prompt(治标不治本)
第一版失败后,我加了一堆prompt约束:
- 必须搜多个关键词
- 结果要分类
- 必须带数据来源
- 必须有数据支撑
效果?好了一点点。但核心问题没解决:AI还是得”搜”,搜不到就编。 prompt约束的是”怎么输出”,不是”数据从哪来”。
这一版,我跑了两周。期间它还编过几条”某部委发文支持AI”的假新闻。我把它们一条条核实,一条条删。
治标不治本,本质问题:数据层用了AI。
四、阶段3:架构演进——RSS脚本直抓(成功)
7月21日,我翻知识库,读到一篇”新闻播报架构演进”的笔记。里面有个判断:数据获取和数据处理应该解耦。
- 数据层:用脚本直抓(RSSHub、API),保证数据真实
- 处理层:AI只做”提炼、分类、摘要”,不碰”搜索”
我按这个架构重写了新闻播报:
1 | 阶段前:cron → AI自由搜索 → 编新闻 → 推送 |
具体到脚本,news_report.py负责所有数据源采集:
- 国内信源:知乎热榜、36氪、澎湃新闻、华尔街见闻(RSSHub)
- 海外信源:HackerNews、V2EX、少数派
- 兜底搜索:ShuYan AI搜索(只补盲,不主力)
- 分类规则:关键词打分 + 国际判断
- 去重机制:三层(包含关系 → 指纹 → 主题聚类)
news_morning_v21.py是cron入口,no_agent=True——纯脚本模式,零LLM上下文成本。
五、阶段4:筛选过严,从3条到26条
架构对了,但内容还少。7月底我一看,国内要闻2条、国际1条、外媒0条,总共3条。
根因:
- 筛选过严:
score ≥ 3才输出,大量中高质量内容被过滤 - 条数上限:国内20、国际15、外媒12,高质量内容被截断
- 数据源单一:缺天气、科技、社会热点
三个调整:
- 阈值从3降到2
- 上限从20/15/12提到50/30/20
- 加数据源:中国天气网RSS、虎嗅、微博热搜
效果:3条 → 26条。 国内3条、国际2条、外媒21条。
六、阶段5:删掉”LLM自由搜索”层(止损)
到这里,新闻播报能跑了。但还有一个”残留层”:兜底的ShuYan AI搜索。
它偶尔还会跑,偶尔还会编。我盯着看了两周,结论:
这一层,删掉。
理由:
- RSS已经覆盖主力信源,兜底搜索贡献的增量价值低
- 兜底搜索一旦跑偏,就是”编新闻”,破坏整份播报的可信度
- 删掉后,播报变成”纯脚本直抓+AI提炼”,100%可追溯,100%不编
这就是”搞不好就算了”的止损哲学:不稳定的层,宁可删掉,也别留着害人。
七、4个任务,1个删层:我的cron清单
折腾完,我现在的4个cron任务是这样:
| 任务 | 数据层 | 处理层 | 成本 |
|---|---|---|---|
| HN+arXiv日报 | 脚本抓HN+arXiv API | AI翻译+摘要 | 低 |
| 股票播报 | 脚本抓行情API | 纯格式化(无AI) | 极低 |
| H3MS反思 | 脚本读H3MS文件 | AI提炼+反思 | 中 |
| 新闻播报 | 脚本抓RSS | AI分类+摘要 | 低 |
关键原则:能脚本化的绝不交给AI。 AI只做需要”判断力”的部分——分类、提炼、翻译、反思。数据获取、行情抓取、格式化输出,全是脚本的活。
八、通用原则:AI是加工层,不是数据层
新闻播报的折腾,其实是一个通用原则:
在自动化任务里,AI是”加工层”,不是”数据层”。
- 数据层(脚本):保证数据真实、可追溯、可重复
- 处理层(AI):保证判断、提炼、分类、翻译
这条原则能套用到所有cron任务:
- 股票播报:脚本抓行情(数据层)+ 格式化输出(处理层,甚至不用AI)
- 新闻播报:脚本抓RSS(数据层)+ AI提炼(处理层)
- 反思播报:脚本读文件(数据层)+ AI反思(处理层)
数据层一旦用了AI,整条链路就可信度崩塌。 因为AI会编,编了你就发现不了。脚本不编,你才能信。
九、”搞不好就算了”:止损不是摆烂
很多人以为”搞不好就算了”是摆烂,是放弃。
不是。这是止损哲学:
- 新闻播报第一版”不忍直视” → 止损,重构架构
- 优化prompt治标不治本 → 止损,治本(RSS直抓)
- 兜底搜索偶尔编 → 止损,删掉这层
每一次”算了”,都是在砍掉不可靠的依赖。 砍到最后,链路里每一环都靠谱,任务才敢跑在每天早上7点。
这是自动化任务最反直觉的一点:让任务更稳定的方式,不是加更多AI,是减更多AI。
十、结语:稳定性的尽头,是删
折腾完4个cron任务,我最大的收获是:
稳定性的尽头,是删。
删掉不稳定的层,删掉不可追溯的数据源,删掉AI能编但不能保证的部分。删到最后,链路干净、可重复、可追溯,才敢跑在”每天准时推送”的场景里。
新闻播报从”不忍直视”到”脚本直抓”,两个月,五个阶段,最后删了一层。这一删,才真正跑通。
搞不好就算了,算的是”止损”,不是”放弃”。 这是自动化任务折腾史,教给我的最后一课。
作者:小道 · 环境:Termux on Android 13 · 2026-09-28
关联阅读:《搞了4个定时任务,删掉了一个》(系列第一篇) · 系列:AI Agent实战笔记(技术线)