自动化 Crons
AIME Chat 内置了自动化 Crons 功能,可以让 AI 按照固定时间计划自动执行任务。你可以为任务配置提示词、绑定项目上下文,并指定使用的 Agent、模型、工具和子 Agent。
从源项目实现来看,自动化功能包含:
- 独立的 自动化页面(侧边栏入口为“自动化”)
- 基于 Cron 表达式 的定时调度
- 任务的 创建、编辑、启用、停用、删除
- 绑定 项目上下文、Agent、模型、工具、子 Agent
- 选择 复用同一个聊天线程 或 每次执行创建新线程
- 保存 最近执行时间、结束时间 和 执行结果
自动化能做什么
Crons 适合以下场景:
- 定时生成日报、周报或项目摘要
- 定时巡检项目文件、代码目录或日志内容
- 定时执行知识整理、内容汇总、信息采集类任务
- 按固定时间触发 AI 分析与结果回传
- 让某些重复性 AI 工作从“手动触发”变为“计划执行”
功能结构
自动化任务的核心信息包括:
| 字段 | 说明 |
|---|---|
| 名称 | 任务名称,需唯一 |
| Prompt | 定时触发时提交给 AI 的提示词 |
| Cron | 调度表达式 |
| Project | 可选,绑定到某个项目上下文 |
| reuseThread | 是否复用上一次运行产生的聊天线程 |
| Description | 可选,任务描述 |
| submitOptions | 执行时使用的模型、Agent、工具、子 Agent |
| isActive | 是否启用 |
| lastRunAt | 最近一次开始执行时间 |
| lastRunEndAt | 最近一次执行结束时间 |
| lastRunResult | 最近一次执行结果 |
调度方式
自动化页面内置了一个 Cron Builder,支持以下几种常见模式:
- 每隔分钟:例如每 5 分钟执行一次
- 每小时:例如每小时第 0 分钟执行
- 每天:例如每天 09:00 执行
- 每周:例如每周一、三、五 09:30 执行
- 自定义:手动输入完整 cron 表达式
Cron 表达式示例
*/5 * * * *
表示每 5 分钟执行一次。
0 * * * *
表示每小时整点执行。
30 9 * * *
表示每天 09:30 执行。
30 9 * * 1,3,5
表示每周一、三、五 09:30 执行。
如果你的需求只是常见的分钟、小时、每天、每周触发,优先使用内置 Builder,会比手写 cron 表达式更直观。
创建一个自动化任务
在自动化页面中,新建任务时通常需要填写以下内容:
- 名称
- 所属项目(可选)
- Cron 计划
- Prompt 提示词
- 模型 / Agent / 工具 / 子 Agent 配置
- 线程模式:复用同一聊天线程,或每次创建一个新线程
- 描述(可选)
- 是否启用
创建后,如果任务处于启用状态,系统会立即注册对应的调度任务。
执行上下文
自动化任务不仅仅是一个定时文本发送器。源项目实现中,它会在触发时构造一次完整的 AI 提交请求,并带上你配置的执行上下文。
可配置内容
| 配置项 | 作用 |
|---|---|
| Model | 指定自动化任务使用的模型 |
| Agent | 指定由哪个 Agent 处理任务 |
| Tools | 控制任务运行时可调用哪些工具 |
| Sub Agents | 为复杂任务启用子 Agent 协作 |
| Project | 将任务与项目资源上下文关联 |
| Thread Mode | 控制多次执行之间是否共用同一个聊天线程 |
这意味着你可以把自动化任务设计成:
- 一个只做摘要的轻量任务
- 一个带项目上下文的定时分析任务
- 一个可调用指定工具的执行型任务
- 一个多 Agent 协作的复杂任务入口
运行机制
从主进程实现来看,自动化任务的大致流程如下:
到达计划时间
↓
CronsManager 触发对应任务
↓
记录 lastRunAt
↓
解析或创建执行线程与上下文
↓
提交 Prompt 到模型 / Agent / 工具系统
↓
保存 lastRunResult 与 lastRunEndAt
应用启动时,系统还会自动恢复已启用的定时任务,因此已保存并启用的自动化配置不会因为重启应用而丢失。
线程模式
自动化任务可以选择两种线程模式:
| 模式 | 行为 | 适合场景 |
|---|---|---|
| 复用同一个聊天线程 | 优先使用上一次执行保存的聊天线程;如果该线程不存在,则自动创建新线程 | 需要延续上下文的日报、持续巡检、长期跟进任务 |
| 每次创建一个新线程 | 每次触发都创建独立线程 | 希望每次结果互不影响的报告、一次性检查、批处理任务 |
复用线程时,系统会保存最近一次运行对应的聊天线程 ID。下一次触发会先尝试读取该线程,读取失败时不会中断任务,而是回退为创建新线程。
页面能力
源项目中的自动化页面支持:
- 查看所有已创建的自动化任务
- 查看名称、cron 表达式、Prompt、绑定项目、启用状态、最近执行时间
- 配置线程复用模式
- 切换任务启用 / 停用状态
- 编辑任务配置
- 删除任务
推荐实践
1. 先让任务目标足够单一
一个自动化任务最好只做一件事情,例如:
- 生成日报
- 汇总最近变更
- 统计某类信息
- 检查某个目录或数据源
目标越单一,结果越稳定,也更容易排查问题。
2. 为自动化任务配置专用 Agent
自动化和手动聊天的交互方式不同,建议单独为自动化任务配置 Agent:
- 回复更结构化
- 输出更稳定
- 限制无关工具
- 明确执行边界
3. 谨慎开放高权限工具
如果自动化任务可以调用文件写入、命令执行、数据库写操作等能力,请务必确认:
- Prompt 足够稳定
- 工具权限最小化
- 执行目标明确
- 风险操作有额外保护
自动化任务默认是不需要人工逐次确认的,因此不建议一开始就赋予高风险写操作能力。更推荐从只读分析、摘要、检索和通知类任务开始。
4. 先低频测试,再提高频率
建议先用较低频率验证任务行为,例如每天一次或每小时一次,确认输出稳定后,再改成更高频的调度方式。
适合的任务示例
项目日报
请总结当前项目目录中今天的重要变更,输出为三部分:
1. 关键改动
2. 风险提醒
3. 明日建议
定时知识整理
请整理最近导入知识库的内容,提取 5 条最重要的信息,并输出简短摘要。
周期性巡检
请检查指定项目中的配置文件与关键目录,识别潜在异常,并以列表形式返回。
常见问题
自动化任务会在应用重启后失效吗?
不会。已启用任务会在应用启动时自动恢复并重新注册。
自动化任务能绑定项目吗?
可以。源项目实现中支持将任务与项目 ID 关联,从而带上对应项目上下文执行。
自动化任务可以选择模型和 Agent 吗?
可以。任务的 submitOptions 中可配置模型、Agent、工具和子 Agent。
自动化任务会保存执行记录吗?
会。系统会记录最近一次开始时间、结束时间以及执行结果。
下一步
如果你准备使用自动化功能,建议按下面的顺序尝试:
- 先创建一个低风险、低频率任务
- 明确 Prompt 输出格式
- 绑定合适的 Agent 与工具集合
- 观察几次执行结果后再逐步提高复杂度