AI Agent定时任务:从被动响应到主动行动

AI Agent的定时任务不只是闹钟,而是一种让AI自主行动的转变。从cron到事件驱动到daemon,三种形态、真实场景、工具对比和踩坑经验。

先说结论:定时任务让AI Agent从"你问我答"变成"主动找活干"。

很多人对AI的理解还停留在聊天框里——你打字,它回复。但真正用过一段时间之后你会发现,最有价值的场景不是你问它答,而是它自己知道什么时候该干什么。

这就是定时任务的意义:让AI从被动工具变成主动助手。

从被动到主动

传统AI的交互模式很简单:你问一句,它答一句。关掉对话框,它就不存在了。

定时任务改变了这个模式。你不需要盯着屏幕等它,它会在该出现的时候自己出现。早上8点给你一份当天的新闻摘要,周五下午自动生成本周工作周报,监控到异常立刻发告警——这些事情不需要你触发,它自己会做。

这个转变看起来很小,但实际用起来差别巨大。我之前每天早上要花20分钟手动整理信息源,现在Agent会在7:30把整理好的摘要推过来,我起床直接看就行。省的不是那20分钟,是那个"记得去做"的额外开销。

定时任务的三种形态

很多人一提定时任务就想到cron,但实际上AI Agent的定时任务至少有三种形态,各有各的用途。

周期性执行(cron式)

最经典的形态。每天早上8点、每周五下午、每月1号——固定时间,固定执行。

适合场景:信息汇总、报告生成、定时提醒。这类任务的特点是"到了时间就该做",不需要额外判断。

配置通常就是一个cron表达式加一段prompt:

1
2
schedule: "0 8 * * *"  # 每天早上8点
prompt: "抓取以下RSS源的最新文章,按重要性排序,生成中文摘要"

简单直接,但也有明显局限——不管有没有新内容,到点就跑,可能浪费token。

事件驱动(trigger式)

不是按时间触发,而是按条件触发。GitHub有新star了、某个API返回异常了、RSS源更新了——条件满足才执行。

这类任务比cron聪明得多,因为它只在"有事发生"的时候才动。配置上通常是webhook或者轮询加条件判断:

1
2
3
trigger: "webhook"
condition: "github.repo.stars > last_check + 10"
prompt: "分析新增star的用户画像,总结是什么内容吸引了他们"

实际用下来,事件驱动的任务比cron式省很多token,因为大部分时间它都在安静等待,不会无意义地消耗资源。

持续运行(daemon式)

前两种都是"触发→执行→结束",daemon式是常驻后台的。它不等触发条件,而是持续观察环境,自己判断什么时候该行动。

最典型的例子是代码review机器人:它一直在监听PR事件,但不是每个PR都review——它会根据变更大小、文件类型、作者等因素决定是否介入,介入时用什么策略。

daemon式的好处是上下文连续。它记得之前review过哪些PR、提过什么建议、团队的代码风格偏好是什么。但代价也明显:token消耗高,需要做好成本控制。

真实应用场景

说了三种形态,来看看具体能干什么。

信息监控是我用得最多的场景。定时抓取GitHub Trending、竞品动态、特定关键词的新闻。以前我每天手动刷Hacker News和几个技术博客,现在Agent每天早上把筛选过的内容推过来,而且它会记住我关注什么,越用越准。

内容生产也很实用。自动写周报、生成日报、整理笔记。不是让它完全替代你写,而是它先把框架和素材准备好,你只需要改改措辞、加点自己的判断。我每周的周报从写40分钟变成了改10分钟。

系统运维是另一个高频场景。服务器巡检、日志分析、异常告警。特别是那种"99%的时间没事,但出事了要第一时间知道"的场景,daemon式任务比人盯屏幕靠谱得多。

个人助理方面,定时提醒、日程管理、自动回复都很常见。我有一个任务是每天晚上9点检查明天的日历,如果有重要会议就提前提醒我准备材料。

主流工具对比

做定时任务的工具有不少,我实际用过的几个拿出来对比一下。

工具触发方式执行能力上下文适合场景
Claude Code Scheduled Taskscron式代码执行+文件操作单次会话开发相关定时任务
Cloudflare Workers + AIcron+事件HTTP请求+AI推理无状态轻量监控、API聚合
GitHub Actions + AI事件+cron完整CI环境单次运行代码相关自动化
Temporal.io Workflows任意分布式执行持久化复杂长流程

选哪个取决于你的需求。如果只是每天抓个RSS写个摘要,Cloudflare Workers够用了,便宜且免运维。如果要和代码仓库深度联动,GitHub Actions是自然选择。如果需要复杂的多步骤流程和失败重试,Temporal是工业级方案。

实操:搭一个定时信息聚合

以Claude Code为例,搭一个每天早上自动抓取技术新闻的定时任务。

第一步,创建项目目录和任务定义:

1
2
mkdir -p ~/projects/news-agent
cd ~/projects/news-agent

第二步,写一个抓取脚本。核心逻辑就是:读取RSS源→过滤→用LLM生成摘要→输出到文件。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# fetch_news.py
import feedparser
import json
from datetime import datetime, timedelta

SOURCES = [
    "https://hnrss.org/newest?points=100",
    "https://feeds.arstechnica.com/arstechnica/index",
]

def fetch_and_filter():
    yesterday = datetime.now() - timedelta(days=1)
    articles = []
    for url in SOURCES:
        feed = feedparser.parse(url)
        for entry in feed.entries:
            if hasattr(entry, 'published_parsed'):
                articles.append({
                    'title': entry.title,
                    'link': entry.link,
                    'summary': entry.get('summary', '')[:200],
                })
    return articles[:20]  # 最多20篇

if __name__ == "__main__":
    news = fetch_and_filter()
    print(json.dumps(news, ensure_ascii=False, indent=2))

第三步,在Claude Code里配置定时执行:

1
2
3
4
claude schedule add \
  --name "daily-tech-news" \
  --cron "0 7 * * *" \
  --prompt "运行 ~/projects/news-agent/fetch_news.py,读取输出,用中文生成摘要,保存到 ~/news/$(date +%Y-%m-%d).md"

这样一个最基础的定时信息聚合就搭好了。每天早上7点自动跑,你起床后直接看 ~/news/ 目录下当天的文件就行。

踩坑经验

用了大半年定时任务,踩过不少坑,挑几个值得说的。

token消耗比你想象的高。 cron式任务每天跑一次,每次消耗2000-5000 token,一个月下来就是6-15万token。如果用的是Claude Opus这个级别的模型,一个月光定时任务就要几十美元。解决办法:简单任务用便宜模型(Haiku、GPT-4o-mini),复杂任务才上高端模型。

模型幻觉在定时任务里更危险。 聊天场景下模型说了错话你可以当场纠正,但定时任务是无人值守的。我遇到过Agent把新闻标题里的"Apple"理解成水果,生成了一段莫名其妙的摘要。解决方案:对输出做结构化校验,加一个validation步骤。

错误会累积。 如果某个RSS源挂了或者格式变了,cron任务不会自动停止,它会每天尝试、每天失败、每天消耗token。我有一次一个任务连续失败了两周才发现。所以一定要加监控——任务连续失败N次就发告警。

时区是个坑。 cron表达式默认用UTC,如果你在UTC+8,0 8 * * * 实际是北京时间下午4点。这个坑我踩了整整一周才反应过来。记得确认你的任务调度器用的是什么时区。

上下文丢失。 daemon式任务理论上能保持上下文,但实际运行中上下文窗口是有限的。当对话历史太长时,早期的信息会被截断。重要的中间结论要定期持久化到文件里,不能全靠对话记忆。

定时任务对AI Agent的意义

说到底,定时任务不只是一个技术功能,它改变了你和AI之间的关系。

过去我们用AI的方式是"有问题才打开"——写代码遇到bug了问一下,写文案没灵感了问一下。AI是一个被动的工具,放在那里等你来用。

定时任务让AI从被动工具变成了主动助手。

当然,现在还远没到AI完全自主行动的程度。定时任务的prompt还是你写的,触发条件还是你定的,输出你还是要看的。但方向很明确:AI在变得越来越主动,人在变得越来越像"管理者"而不是"操作者"。

学会给AI安排定时任务,就是学会当一个好管理者的第一步。