EdgeOne Makers 从入门到精通
附录

§14 定时任务与组合实战:让 Agent 真正自动跑起来

14.1 schedules:cron 触发函数

3月前我想做个"每天凌晨清理一次临时数据"的活。以前得养个 cron 服务器。现在 Makers 的 schedules 直接在 edgeone.json 里配:

{
  "schedules": [
    {
      "name": "daily-cleanup",
      "cron": "0 2 * * *",
      "path": "/api/cron/cleanup",
      "timezone": "Asia/Shanghai"
    }
  ]
}

cron 是标准 5 段(分 时 日 月 周),不支持秒级。timezone 用 IANA 时区,不填就取构建机时区——跨时区团队务必显式写,不然构建机在美国,任务半夜跑你国内白天。每次部署平台自动比对新配置,移除的任务会自动停。

14.2 cloudFunctions 微调

函数不止能写,还能调:

{
  "cloudFunctions": {
    "nodejs": {
      "maxDuration": 60,
      "includeFiles": ["assets/**", "!assets/**/*.tmp"],
      "externalNodeModules": ["svg-captcha"]
    },
    "mainlandRegions": ["ap-beijing"],
    "overseasRegions": ["ap-tokyo"]
  }
}
配置 作用 标叔的结论
maxDuration 单次最长 10-120s,默认 30s 重活调大
includeFiles 把文件打进产物让函数读 读文件必配
externalNodeModules 含原生模块的依赖 编译型依赖必配
mainland/overseasRegions 指定部署地域 国内/海外分别定

警告includeFiles 用相对路径(别以 .// 开头),支持 glob。函数里用相对路径 readFileSync('assets/your-file.png') 读取。我第一次忘了配,部署后读不到文件,排查半天。

14.3 组合实战:geo + KV + 缓存的"访问画像" API

把前面学的串起来。一个边缘函数,记录每个访客的地区和累计访问数,并加缓存减轻 KV 压力:

// functions/api/profile.js
export async function onRequest({ request, env }) {
  const geo = request.eo.geo;
  const region = geo.country || 'unknown';

  let n = Number(await my_kv.get(`visits:${region}`)) || 0;
  n += 1;
  await my_kv.put(`visits:${region}`, String(n));

  return new Response(JSON.stringify({ region, visits: n }), {
    headers: {
      'content-type': 'application/json; charset=UTF-8',
      'Cache-Control': 'max-age=60',
    },
  });
}

边缘函数就近算、KV 存状态、Cache-Control 兜底——三件事一次讲完。

标叔的结论:进阶篇学的不是"更多功能",是"把功能拼成工程"。边缘函数管计算、缓存管速度、CLI 管交付、定时任务管自动——你手里这套,已经够做一个正经产品。

14.4 你手里已经是生产级工具箱

到这,从第一个 Agent 到边缘函数、缓存、流水线、定时任务,链路通了。平台把脏活接了,你只写业务。

附录里我整理了环境变量速查表、edgeone.json 字段清单和常见报错,需要时翻一下。去把你的想法做成能自动跑的服务吧。接下来,Part 5 我们换到实战模板视角——用 8 个真实案例,看别人怎么把 Makers 的 Agent 能力直接做成产品。