自动化任务折腾史:从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
2
阶段前:cron → AI自由搜索 → 编新闻 → 推送
阶段后:cron → 脚本抓RSS → 真实数据 → 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条。

根因:

  1. 筛选过严score ≥ 3 才输出,大量中高质量内容被过滤
  2. 条数上限:国内20、国际15、外媒12,高质量内容被截断
  3. 数据源单一:缺天气、科技、社会热点

三个调整:

  • 阈值从3降到2
  • 上限从20/15/12提到50/30/20
  • 加数据源:中国天气网RSS、虎嗅、微博热搜

效果:3条 → 26条。 国内3条、国际2条、外媒21条。

六、阶段5:删掉”LLM自由搜索”层(止损)

到这里,新闻播报能跑了。但还有一个”残留层”:兜底的ShuYan AI搜索。

它偶尔还会跑,偶尔还会编。我盯着看了两周,结论:

这一层,删掉。

理由:

  1. RSS已经覆盖主力信源,兜底搜索贡献的增量价值低
  2. 兜底搜索一旦跑偏,就是”编新闻”,破坏整份播报的可信度
  3. 删掉后,播报变成”纯脚本直抓+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实战笔记(技术线)