给智能体配定时任务每天自动跑一遍

0 阅读4分钟

先把结论摆这儿:想让一个 AI 小助手每天定点自己跑、跑完把结果丢给你,核心就两步——把要干的活做成一个能跑的智能体,再给它挂一个 cron 定时。下面是我自己真跑通的步骤,连踩的坑一起写了。

起因:我懒得每天早上手动喂同一段 prompt

我每天上班第一件事,是把几个行业站点和我们自己产品的几条竞品动态扒一遍,丢给大模型让它给我捋个三句话的简报。问题是这活儿太机械了——同样的 prompt,同样的几个源,我手动复制粘贴跑了大概两周,某天早上挤地铁差点把咖啡洒键盘上,我就想,这破事凭啥要我来点"运行"?

要的其实很简单:每天 8:40,有个东西自己把这套流程跑一遍,跑完结果推我飞书。

怎么配定时:先有"能跑的东西",再谈"定点跑"

定时任务(cron)本身不难,难的是"被定时触发的那个东西得是个完整能独立跑完的活儿"。我的顺序是这样:

  1. 先把活儿做成一个智能体。 我没写代码——找了个零代码就能拖配智能体的工具,拖个输入节点、挂上现成的大模型、把我那几个数据源配成知识库(RAG)喂进去,prompt 直接填进配置框。说实话第一次搭我大概花了 25 分钟,大半时间在调那段 prompt,配置本身十几分钟就连起来了。
  2. 把智能体发布成一个 API。 这步是关键,定时任务要触发它,得有个稳定的调用入口。平台一键发布,给我吐了个 endpoint 和 key。
  3. 写个 cron 去定点打这个 API。 智能体那头不用我管了,我本地/服务器上挂个最小脚本就行。

整个链路就是:cron → 调智能体 API → 智能体跑完 → 结果回推。智能体那半边一行代码没写,我真正写的代码只有触发这一小段。

小代码:cron 触发那一段

服务器上 crontab -e,加一行:

# 每天 8:40 跑一次,日志另存
40 8 * * * /usr/bin/python3 /home/me/run_agent.py >> /home/me/agent.log 2>&1

run_agent.py 就这么点东西,打智能体的 API、拿结果、推飞书:

import requests, datetime

# 调那个搭好的智能体(已发布成 API)
resp = requests.post(
    "https://<你的智能体endpoint>/v1/chat",
    headers={"Authorization": "Bearer " + "<APIKEY>"},
    json={"query": "按昨天数据出今早三句话简报", "stream": False},
    timeout=60,  # 这个 60 是有故事的,往下看
)
summary = resp.json()["choices"][0]["message"]["content"]

# 推飞书机器人
requests.post(
    "https://open.feishu.cn/open-apis/bot/v2/hook/<你的webhook>",
    json={"msg_type": "text",
          "content": {"text": f"[{datetime.date.today()}早报]\n{summary}"}},
)

二十来行,跑通了。第二天 8:40,飞书"叮"一下,简报来了,我盯着手机愣了两秒——它真就自己跑完了。那种"以后这事跟我没关系了"的感觉,挺爽的。

一个坑:timeout 给太短,头几天我收到的是空简报

第一版我 timeout 写的 15 秒,本地手测都没事。结果上线后头三天,飞书推过来的简报时灵时不灵,有两天直接空的。查了半天日志才发现——挂了知识库(RAG)的智能体,冷启动 + 检索 + 大模型生成,链路一长响应能飘到二三十秒,15 秒早超时断了,我那段代码拿到的是半截或空响应。

改成 timeout=60 之后稳了。顺手补了个判断:拿不到内容就别推空消息,改推一句"今早没跑出来,自己看看"。这种定时任务最烦的就是静默失败——它不报错,只是悄悄给你推空的,你还以为今天真没动态。

另外一个得提前认清的事:这玩意儿只干杂活。它把"每天定点跑一遍、整理、推送"这种重复劳动接走了,但简报质量取决于你那段 prompt 和喂进去的源,它不会替你思考。我那段 prompt 前前后后改了五六版才顺眼,头一版干得像流水账。


要说最大的变化,是我重新拿回了那二十分钟早晨时间。零代码搭智能体这条路我以前一直觉得是玩具,真上手发现,把脏活累活外包给一个会自己定点干活的小助手,体验确实不一样。

你们都拿定时智能体干过啥自动化?评论区聊聊,我那个简报源还想再加两个。

(模型这块我直接调的讯飞 MaaS,现成大模型 API 拿来就用,没自己折腾部署和算力。)