每天让 AI 去查数据,但大多数时间它只是在空跑——这个「守门员」机制让我把 token 账单降到了十分之一
每天让 AI 跑任务,但大多数时间它只是在空跑——我花三个月搭了这套「守门员」机制,账单从每月三千多降到了三百多。
事情是这样的。我有个 Python 脚本每天早上自动跑:爬取三个数据源,整理成 CSV,用 AI 分析趋势,然后发到飞书群。听起来很自动化对吧?但实际情况是——数据源每天其实没什么变化,AI 分析的内容和昨天高度重复,token 账单却一天没落下。
这不是我一个人遇到的问题。我观察了身边用 AI 编程工具跑自动化任务的人,大多数都是「每天唤醒 AI 全量跑一遍」,结果 token 消耗是实际需求的 5 到 10 倍。
我后来想明白了——问题出在「AI 替我做判断之前,没有人在替 AI 做判断」。
所以我给 AI 加了一层守门员。
逻辑很简单:Python 脚本先跑,检查数据源有没有变化;没变化就直接跳过,AI 根本不用醒来;有变化了才触发 AI 任务。这和 GitHub Actions 的 cron job 里套一层条件判断是一个思路,但以前没人把这个方法论说清楚。
具体实现是这样的:
import hashlib
import os
def check_changes(data_sources, cache_file=”.data_cache”):
current_hash = hashlib.md5()
for source in data_sources:
with open(source, ‘rb’) as f:
current_hash.update(f.read())
if not os.path.exists(cache_file):
with open(cache_file, 'w') as f:
f.write(current_hash.hexdigest())
return True
with open(cache_file, 'r') as f:
cached_hash = f.read()
changed = current_hash.hexdigest() != cached_hash
if changed:
with open(cache_file, 'w') as f:
f.write(current_hash.hexdigest())
return changed
if check_changes([‘report.csv’, ‘metrics.json’]):
print(“数据变了,触发 AI 分析任务”)
else:
print(“数据没变,跳过 AI 任务”)
这个方法我跑了两个月,效果数据很直接:原来每月 token 消耗约 3200,现在稳定在 280 到 350 之间,减少了差不多 90%。20 个监控任务里真正需要 AI 处理的只有 2 到 3 个,其他 17 个都是白跑的。
但「变化检测」只是第一层。我后来又加了两层优化:
第一层是时间窗口过滤。不是数据变了就立刻跑,而是看变化是否在业务窗口内。比如我的报表任务是每天早上 9 点跑,数据源可能在凌晨 3 点就变了,但如果我设置的业务窗口是早上 7 点到 9 点,那凌晨的变化会被缓存起来,等 7 点再统一触发 AI 分析。这样做的好处是减少碎片化的 AI 唤醒,每次唤醒都是批量处理。
第二层是变化幅度阈值。有些数据变了但变化幅度很小,AI 分析出来的结论和昨天几乎一样,这种任务跑不跑意义不大。我后来加了一个逻辑:只有当变化幅度超过某个阈值才触发 AI。这样能过滤掉大量「名义上变了但实质没变」的情况。
三层加起来,构成了一套完整的守门员机制:
第一层:变化检测(哈希判断数据源是否真的变了)
第二层:时间窗口过滤(变化发生在业务窗口内才处理)
第三层:变化幅度阈值(变化超过阈值才触发 AI)
这套机制适合的场景有几个共同点:任务定时触发、数据源相对稳定、输出结果有前后对比价值。如果你跑的是「每天固定全量跑」的任务,先问自己一个问题——这次跑和上次跑,数据源真的变了吗?如果答案是不一定,那你就需要一层守门员。
把这个问题想清楚了,每年省下来的 token 费用,可能比你想象的要多得多。
评论区
登录后可评论。