把本教程一键复制给 Agent 即可

本文有一段关键内容上了锁,Agent 打开链接也看不到它。请先解锁,再一键复制完整内容给 Agent。

定时任务改用系统定时器后每次运行不花 Token

中级教程:别让 Agent 每天亲自跑定时任务。让它把任务写成一次 Python 脚本,交给系统自带的 cron 或任务计划程序执行,每次运行 0 Token;脚本跑完自己发消息告诉你成功还是失败。

为什么要这么做

很多人让 Agent 每天定时干活:查数据、整理报表、备份文件、检查网站。如果每次都让 Agent 来跑,每跑一次都要花 Token,一个月下来不少钱,而且 Agent 每次的执行还不一定一样。

更好的办法:

  • 让 Agent 只干一次活:把任务写成一个 Python 脚本。 这一次花点 Token。
  • 之后交给系统自带的定时器去跑这个脚本。 不经过 AI,每次 0 Token。
  • 脚本跑完自己发消息告诉你结果,成功还是失败都知道。

结果是:执行稳定、输出确定、几乎不花钱。

第 1 步:让 Agent 把任务写成脚本

对你的 Agent(Claude Code、Codex 等)说:

这段关键内容需要登录后解锁

新用户注册就送 10 积分,每天签到再领 1 积分。用 1 积分解锁,以后随时回来都能看。

它写出来的脚本大致是这个样子:

import os, json, time, urllib.request, urllib.parse

def notify(text):
    token = os.environ["TG_BOT_TOKEN"]
    chat = os.environ["TG_CHAT_ID"]
    data = urllib.parse.urlencode({"chat_id": chat, "text": text}).encode()
    urllib.request.urlopen(f"https://api.telegram.org/bot{token}/sendMessage", data, timeout=10)

def run():
    start = time.time()
    with urllib.request.urlopen("https://example.com", timeout=15) as r:
        return r.status, round(time.time() - start, 2)

try:
    status, seconds = run()
    notify(f"✅ 网站检查完成:状态 {status},用时 {seconds} 秒")
except Exception as e:
    notify(f"❌ 网站检查失败:{e}")

先手动跑一次,确认能收到消息:

python3 /完整路径/task.py

第 2 步:交给系统定时执行

macOS / Linux:用 cron

crontab -e

加一行(每天早上 9 点执行):

0 9 * * * TG_BOT_TOKEN=你的token TG_CHAT_ID=你的id /usr/bin/python3 /完整路径/task.py >> /完整路径/task.log 2>&1

前面五个字段依次是:分、时、日、月、星期。0 9 * * * 就是每天 9:00。

Windows:用任务计划程序

schtasks /create /tn "DailyTask" /tr "python C:\完整路径\task.py" /sc daily /st 09:00

环境变量在"系统属性 → 环境变量"里设好。

第 3 步:确认它真的在跑

  • 第二天看手机有没有收到消息。
  • 没收到,看 task.log 里的错误。
  • cron 里的命令要用完整路径:cron 的运行环境很干净,python3 和你的文件路径都可能找不到。用 which python3 查出 Python 的完整路径。
  • macOS 上脚本要读写某些目录(比如桌面、文稿),可能要给 cron 授权"完全磁盘访问"。

什么时候还需要 AI

  • 任务要"理解"内容时:比如总结文章、判断邮件该怎么回。这部分才调模型,其余步骤仍然用脚本。
  • 改需求时:让 Agent 改一次脚本,改完继续 0 Token 运行。

能写成固定步骤的,就别每次都让 AI 临场发挥。

延伸

读完了?标记一下,记录学习进度。登录
收藏起来,稍后再看登录
对这篇有疑问?向 Ask AI 提问

评论(0)

还没有评论,来说第一句。

登录后参与讨论。登录