---
title: "计划任务"
description: "用 Cron 重复执行任务，或让 Agent 通过 Checkback 在指定时间回来继续工作。"
url: "https://ankole.agentbull.com/zh-Hans-CN/docs/schedules/"
lang: "zh-Hans-CN"
---

> 面向 AI Agent 的文档索引：https://ankole.agentbull.com/zh-Hans-CN/llms.txt

# 计划任务

Ankole 提供两种平级的计划工具：

- **Cron** 反复执行一项任务，例如每天生成简报、每周检查项目进度，或每隔 30 分钟巡检一次。
- **Checkback** 只唤醒当前会话一次，适合 Agent 等待一段时间后回来继续检查。

## Cron

Cron 管理需要重复执行的工作。它既支持按日历时间运行，也支持从某个时间点开始，按固定间隔运行。

### 直接让 Agent 创建

正常情况下，不必打开 Console。直接在希望接收结果的聊天会话中告诉 Agent 要做什么、什么时候执行，以及使用哪个时区。Agent 会创建计划任务，并把后续结果发回当前会话。

```text
请创建一个计划任务：每个工作日上午 9 点整理昨天的工作进展、
当前阻塞和今天要跟进的事项，并把结果发到当前会话。
时区使用 Asia/Shanghai。创建后先立即运行一次，
让我确认内容和投递位置。
```

> **💡 你知道吗？**
>
> 每条计划任务实际上通过一条由系统自动建立并维护的<strong>信号路由规则</strong>，将结果发回聊天渠道。

### 高级：从控制台创建计划任务

创建计划任务前，先在目标聊天会话中与 Agent 对话一次，并确认路由规则可以正常收发消息。

1. 打开 Console 的**计划任务**。
2. 选择 Agent，再选择要延续的会话。若下拉列表中没有目标会话，可以粘贴已知的会话 ID。
3. 打开 **Cron** 标签页，选择**新建计划任务**。
4. 选择用于投递结果的路由规则，并填写容易辨认的名称。
5. 选择计划类型，填写执行时间。
6. 填写投递渠道；需要固定回复到某个话题或线程时，再填写投递线程。
7. 保存后选择**立即运行**。先确认任务内容和投递位置正确，再让它按计划运行。

### 选择时间规则

**Cron（表达式）** 适合按日历执行，例如每个工作日上午 9 点。表达式可以使用 5 个字段，也可以使用带秒的 6 个字段。

时区使用 IANA 名称，例如 `Asia/Shanghai`；不要用 `UTC+8` 这类易产生歧义的写法。

```text
0 9 * * 1-5
```

上例表示周一至周五上午 9 点。Console 会按照这条计划填写的时区计算时间，而不是按照浏览器或 Worker 所在机器的时区。

**间隔（周期）** 适合“每隔一段时间执行一次”，例如每 30 分钟检查一次。间隔以毫秒填写；锚点决定周期从什么时刻开始。没有固定日历含义的轮询任务更适合这种方式。

### 任务内容和投递位置

计划任务默认唤醒已有会话，因此 Agent 会沿用该会话的上下文。任务内容只需要说明这一次要做什么，不必重复 Agent 的角色、语气和长期规则。

投递渠道和投递线程来自聊天平台。请使用目标会话对应的渠道 ID；若希望每次结果都回到同一个话题或线程，再填写线程 ID。

第一次配置后务必使用**立即运行**验证，避免任务按时执行却发到错误的位置。

### 暂停、恢复和删除

- **暂停**会保留配置，但不再按时触发，适合节假日或临时停用。
- **恢复**会重新计算下一次执行时间。
- **立即运行**只额外执行一次，不会改变原来的时间表。
- **删除**会移除计划任务。需要保留配置时，请使用暂停。

打开一条计划任务，可以查看最近运行记录。排查问题时，先看是否真的触发，再判断是时间、Agent 运行还是消息投递出了问题。

## Checkback

Checkback 是 Agent 在工作过程中为自己设置的一次性回访，例如“30 分钟后再检查部署是否完成”。默认情况下，时间到了系统会唤醒同一个会话，让 Agent 从原有上下文继续工作。

它和 <a href="https://docs.openclaw.ai/gateway/heartbeat" target="_blank" rel="noreferrer">OpenClaw 的 heartbeat</a> 用途相近：都能让 Agent 在没有新消息时主动回来检查。

Heartbeat 会按固定周期唤醒 Agent，由模型反复判断是否有事要处理。

Checkback 则采用推送模式：Agent 只在确实需要回访时登记一次，系统到点后再推送唤醒事件。

两次检查之间不会为了轮询而调用模型，这种方式避免了空转执行，也更省 token。

直接在对话中说明多久后回来、要检查什么，以及什么情况下需要通知。例如：

```text
30 分钟后回来检查这次部署是否完成。
如果失败、遇到阻塞或状态发生变化，请告诉我；没有变化就保持静默。
```

Console 的 **Checkbacks** 标签页会列出当前会话中还未触发的提醒。你可以查看到期时间、原因和投递规则，也可以取消不再需要的提醒。

## 机械检查交给 Automation Job

Cron 或 Checkback 默认写入事件并唤醒所选 Agent 会话。如果处理过程只是确定性的获取、比较、解析或预定动作，可以让 Agent 创建 automation job，再用它的 `automation_job_id` 绑定触发器。触发事件保持不变，但系统会创建持久脚本 run，而不是启动 Agent turn。脚本可以静默结束，也可以在需要判断时用 `emitEvent` 唤醒归属会话。

例如，每五分钟检查一次价格可以只运行脚本，价格高于阈值时保持静默；跌破阈值时再发出当前价格与来源事实。每次触发都需要记忆、判断或对话时，继续直接唤醒 Agent。

完整介绍、运行记录与收尾规则见 [Automation Job](https://ankole.agentbull.com/zh-Hans-CN/docs/automation-jobs/index.md)；脚本 SDK 与命令合同见 [Worker CLI 能力](https://ankole.agentbull.com/zh-Hans-CN/docs/cli-capabilities/index.md)。

## 常见问题

- **没有按时触发**：确认任务处于启用状态，并检查 Cron 表达式、时区和“下次触发”时间。
- **已经触发但没有收到结果**：检查运行记录，然后确认路由规则、投递渠道和目标 Agent 都可用。
- **时间总是偏几个小时**：使用正确的 IANA 时区，并检查实例时区设置。
- **结果发到了错误的会话**：修改投递渠道或线程，再用**立即运行**验证。
- **Checkback 没有回来**：在 Console 的 **Checkbacks** 中确认它仍然存在，并检查到期时间和原会话的投递规则。

更复杂的失败记录和恢复方法见 [计划任务故障排查](https://ankole.agentbull.com/zh-Hans-CN/docs/faq/index.md)。
