Cron 是 OpenSquilla 提供的一项定时任务技能,适用于用户需要安排重复任务、一次性提醒、计时器或 cron 风格作业的场景。
用途
当用户要求“安排某事”“建立重复任务”“创建计时器”或“设置提醒”时,使用该 cron 工具进行调度。
主要能力
调度参数 schedule 是一个结构化对象,不是字符串。工具不会解析自由文本,遇到扁平字符串会返回结构化错误。因此在调用工具前,需要先自行把用户的自然语言转换为下列三种形态之一:
- cron 型:{"kind": "cron", "expr": "<5-field POSIX cron>", "tz": "<optional IANA timezone>"},按日历模式重复。
- every 型:{"kind": "every", "every_seconds": <integer ≥ 1>},按固定的亚分钟或非标准间隔重复。
- at 型:{"kind": "at", "at": "<ISO-8601 with timezone>"},在绝对时间点一次性触发,且时间戳必须包含时区偏移。
Cron 表达式格式为:分 时 日 月 星期,例如 0 9 * * 1-5 表示工作日 9 点。
使用方式
新增任务使用 cron(action="add", schedule={...}, task="...", job_kind="...", session_target="...")。
其他操作包括:
- 列出任务:cron(action="list")。
- 立即触发:cron(action="run", job_id="<job id>")。
- 取消任务:cron(action="remove", job_id="<job id>")。
翻译示例(需在调用前自行推理完成):
- “每5分钟提醒我喝水” → cron(action="add", schedule={"kind": "cron", "expr": "*/5 * * * *"}, task="喝水", job_kind="system_event", session_target="main")
- “每30秒打印一次” → cron(action="add", schedule={"kind": "every", "every_seconds": 30}, task="...", job_kind="agent_turn", session_target="isolated")
- “明天早上9点叫我” → 先计算带时区的绝对 ISO-8601 字符串,再 cron(action="add", schedule={"kind": "at", "at": "<该 ISO-8601>"}, task="...", job_kind="system_event", session_target="main")
- “every weekday at 9am Los Angeles time” → cron(action="add", schedule={"kind": "cron", "expr": "0 9 * * 1-5", "tz": "America/Los_Angeles"}, task="...")
适用场景
适合需要按日历周期重复、按固定秒数间隔重复,或指定绝对时间点一次性执行的提醒与自动化作业。
限制
工具不解析自然语言,必须由调用方先完成自然语言到结构化 schedule 的转换;at 型时间戳必须包含时区,否则会报结构化错误。其余关于收费、平台、效果等信息暂未提供。