跳到主要内容

定时任务

定时任务用于让智能体在未来某个时间或按固定周期执行一段明确指令。它适合提醒、定期汇总、周期性检查、自动化报告和需要在后台独立完成的重复工作。

定时任务与心跳、短等待不同:

能力适合做什么执行方式
定时任务到点执行一段明确 Prompt后台触发新的执行任务
心跳监控持续巡检是否有变化需要关注没事静默,有事通知
Sleep等几秒后继续当前任务链留在当前会话中继续

如果你想“每天 9 点生成日报”,使用定时任务。如果你想“每 30 分钟看看有没有重要邮件,并且没有变化时别打扰我”,使用心跳监控。如果智能体只是需要“等 10 秒再继续检查构建结果”,使用 Sleep

当前上下文不会自动延续

CreateSchedule 创建任务后会立即返回。真正到点时,DesireCore 会启动新的执行任务来发送 Prompt,不会继承当前对话里的临时上下文。定时任务的 Prompt 应写成独立可执行的指令。

创建方式

通过对话创建

最自然的方式是直接告诉智能体你希望什么时候做什么:

你:每天早上 8 点给我一份今日待办和日程概览

智能体:我会创建一个每日早报调度:
名称:每日早报
时间:每天 08:00
动作:发送 Prompt 给当前智能体
Prompt:汇总今天的待办、日程和需要优先关注的事项

你:确认

智能体:调度已创建。到点后会自动执行。

你不需要记忆 Cron 或 Duration 语法。智能体会识别自然语言里的时间意图,并调用 CreateSchedule 创建调度。

常见触发表达包括:

  • “提醒我”“X 分钟后”“每天”“每周”“每月”
  • “闹钟”“倒计时”“定期”“定时”
  • 具体日期、具体时间或 Cron 风格周期
对话主要用于创建

对话创建适合新增任务。需要调整已有任务时,优先在自动化面板中暂停、删除后重新创建;高级用户也可以通过调度 API 或 schedules/*.json 文件修改配置。普通对话不保证能可靠定位并修改旧任务。

通过自动化面板创建

在资源管理器或智能体详情中打开 自动化 面板,点击 创建 手动填写调度表单:

  1. 选择 目标智能体,也就是到点后由哪个智能体执行。
  2. 填写 调度名称 和可选 描述
  3. 选择 触发类型:固定间隔、Cron 表达式、指定时间或延迟执行。
  4. 根据触发类型填写对应参数,例如 PT1H0 9 * * 1-52026-05-04T15:00:00+08:00
  5. 可选填写 时区,例如 Asia/Shanghai
  6. 填写 Prompt,也就是到点后发送给智能体的指令。
  7. 可选添加 标签,用于分类和筛选。

表单创建比对话创建更适合需要精确控制 Cron、时区或标签的任务。

从模板创建

自动化面板提供 模板 入口。模板会预填名称、描述和常用 Cron 表达式,你只需要选择执行智能体、检查 Prompt 并确认。

分类说明模板示例
代码质量自动化代码审查和缺陷检测提交缺陷扫描
发布部署发布流程自动化每周发布说明、发版前检查
报告汇总定期生成工作汇总站会 Git 摘要、综合周报、PR 团队汇总、技能成长建议
CI / 测试持续集成与测试监控CI 失败汇总、测试覆盖补充、CI 根因分组
性能监控性能指标追踪性能回退检测
依赖管理依赖版本与安全维护依赖漂移检测、依赖安全升级
文档维护文档自动更新文档自动更新
项目管理任务与问题管理问题分诊
创意实验创意或实验性自动化经典小游戏

部分模板没有默认 Cron,因为它们更像一次性或按需任务。使用这类模板时,需要在创建表单里补充触发规则。

模板浏览面板

触发类型

常规创建入口支持四种时间规则:

类型适用场景示例
at在指定时间点触发一次2026-05-04T15:00:00+08:00
delay从现在开始延迟触发一次PT30M30m
interval按固定间隔重复触发PT1H1h30m
cron按日历周期触发0 9 * * 1-5

时间格式

  • at 使用 ISO 8601 日期时间,建议包含时区偏移,例如 2026-05-04T15:00:00+08:00
  • delayinterval 支持 ISO 8601 Duration,例如 PT30MPT1HP1D,也支持 30s5m1h30m2d 这类简写。
  • cron 支持常见的 5 段表达式:分、时、日、月、周,例如 0 9 * * 1-5 表示工作日 9 点。
选择建议

只触发一次,用 atdelay。每隔固定时长执行,用 interval。每天、每周或每月的固定时刻执行,用 cron。不确定时直接用自然语言描述,智能体会选择合适的规则。

高级文件/API 定义

AgentFS 的调度定义结构还可以表示更高级的字段,例如 starts_atexpires_atmax_firesno_overlap,以及高级重复规则 rrule。这些字段主要面向文件或 API 级别的配置;普通对话和创建表单优先使用上面的四种触发类型。

执行动作

普通定时任务触发时会向目标智能体发送一段 Prompt。智能体会像收到一条新的任务消息一样执行它,执行结果会进入对应的会话、通知或执行记录。

定时任务触发时会向目标智能体发送 Prompt,智能体会像收到一条新的任务消息一样执行它。

写 Prompt 时建议包含足够上下文:

汇总今天 08:00 之前新增的 GitHub 通知、重要邮件和日程冲突。
如果没有需要我处理的事项,请给出简短结论。

定时任务适合独立执行的内容。需要依赖当前对话临时上下文时,不要把它拆成定时任务;让智能体在当前会话里继续执行,或使用 Sleep 做短等待。

典型场景

每日早报

每天早上 8 点汇总今天的日程和待办。

智能体到点后可以检查日历事件、整理待办事项、查看重要邮件,并生成一份结构化早报。

定期检查和汇总

每 30 分钟检查 GitHub 通知和邮箱,并总结需要我处理的新事项。

定时任务会每次到点执行 Prompt 并产出结果。

延迟提醒

30 分钟后提醒我参加会议。

这会创建一次性 delay 任务。触发后任务会完成,不再重复执行。

周报汇总

每周五下午 5 点提醒我写周报,并帮我汇总本周的工作。

智能体可以回顾本周对话、任务、PR 和关键决策,生成可直接编辑的周报素材。

发布前检查

每周五 16:00 检查待发布分支的测试、变更说明和迁移脚本,列出阻塞项。

这类任务适合用 Cron 对齐固定工作节奏,并把“检查范围”和“输出格式”写进 Prompt。

自动化管理面板

所有定时任务统一在 自动化 面板中管理。

自动化管理面板

面板布局

  • 顶部显示自动化状态、运行中的任务数量、已暂停的任务数量,并提供 创建模板 入口。
  • 左侧列表显示状态指示点、任务名称、调度 ID、所属智能体、调度规则和下次触发时间。
  • 右侧详情显示选中任务的配置、触发目标、运行统计、执行历史、标签和关联智能体。
  • 窄屏或空间不足时,详情区域会折叠,选择任务后进入详情视图。

筛选与排序

面板顶部提供状态筛选:

筛选说明
全部显示所有调度
运行中仅显示当前活跃的任务
已暂停仅显示保留配置但不会触发的任务
已完成显示一次性任务已结束或达到最大触发次数的任务

任务列表默认按下次触发时间升序排序。有下次触发时间的任务排在前面,即将触发的任务更靠前。

查看任务详情

点击列表中的任务后,详情面板会展示完整信息:

区域内容
基本信息智能体头像、任务名称、当前状态、启用/暂停开关、调度 ID
任务描述创建时填写的用途说明
调度配置触发类型、规则说明、Cron 或 Interval 原始值、时区、错过补偿策略
触发目标动作类型和 Prompt 内容
运行统计下次触发时间、上次触发时间、累计运行次数、错过次数
执行历史最近触发记录,支持分页
标签用于分类的标签列表
关联智能体到点后实际执行任务的智能体

任务详情

管理任务

暂停和恢复

不需要某个任务继续触发时,可以暂停它而不删除配置和历史记录。

操作说明
暂停停止后续调度,保留任务文件
恢复重新按原规则调度

只有 activepaused 状态的任务可以直接切换暂停/恢复。

立即触发

点击 立即触发 可以不等待下次计划时间,手动执行一次当前任务。手动触发不会改变调度规则,本次执行也会进入执行历史。

删除任务

不再需要的任务可以删除。详情面板采用两步确认:第一次点击删除按钮会进入确认状态,需要在 5 秒内再次点击才会真正删除。删除后对应的 schedules/*.json 文件会被移除。

生命周期与状态

调度定义包含 enabledstatus。常见状态如下:

状态说明
pending已创建,但尚未进入可触发窗口
active正常调度中
paused已暂停,不会触发
completed一次性任务结束,或达到最大触发次数
cancelled已取消或删除

更细的生命周期控制可以通过文件或 API 配置:

控制项说明
starts_at在此时间之前即使规则命中也不会触发
expires_at过期后自动停止并完成
max_fires达到指定触发次数后自动完成
no_overlap上一次执行未完成时跳过本次触发,避免同一调度并发执行

时区支持

调度系统支持 IANA 时区。你可以为任务指定 Asia/ShanghaiAmerica/New_York 等时区,Cron 和指定时间会按该时区计算。

如果未指定时区,系统使用操作系统默认时区。跨时区协作时,建议在 Prompt 或表单中显式写出时区,避免“上午 9 点”被不同系统解释成不同时间。

错过补偿

当应用关闭、电脑休眠或调度器未运行时,原本应该触发的时间会被视为错过。调度器启动后会检测错过的 interval 任务,并根据 missed_fire_policy 决定是否补偿。

策略说明适合场景
skip跳过错过的触发,等待下一次只关心最新状态的巡检或提醒
fire_once只补偿一次最近错过的触发每日报告、每日同步等不希望完全遗漏的任务
fire_all按队列补偿错过的触发,并有安全上限每次触发都代表独立工作单元的任务

补偿执行会写入执行历史,便于区分正常触发和补偿触发。fire_once 在应用启动时有即时补偿限流,fire_all 会限制每个调度的最大补偿数量,并限制同时执行补偿的智能体数量,避免长时间离线后一次性产生过多后台任务。

如果需要确定错过后的行为,请显式设置 missed_fire_policy。未设置时按调度器默认策略处理。

执行记录

每次触发都会写入历史记录。记录通常包含:

  • 预定触发时间和实际触发时间
  • 是否为错过补偿,以及对应补偿策略
  • 执行结果:成功、失败或跳过
  • 失败原因
  • 耗时
  • 累计触发次数

任务详情中的执行历史按页展示。接口默认每页返回 20 条,最多 100 条;界面每页展示 5 条,便于在详情面板中快速浏览。

执行历史

如果执行失败,系统会记录错误。周期性任务不会因为单次失败就丢失配置;瞬态错误会进入回退处理,持续失败或不可恢复错误可能使任务暂停,以避免反复失败。

调度与通知

普通定时任务的执行流程是:

  1. 调度器在预定时间触发任务。
  2. 执行器发出 query 动作。
  3. 目标智能体收到 Prompt 并开始新的执行任务。
  4. 执行结果进入对应会话、通知或执行记录。
  5. 状态变化通过实时通道同步到界面。

通知的展示取决于任务结果和智能体输出。

文件位置

每个调度任务保存为智能体仓库中的 JSON 文件:

~/.desirecore/agents/<agent_id>/schedules/<schedule_id>.json

这些文件属于 AgentFS,可以通过文件资源管理器查看,也会随智能体 Git 历史记录变化。直接编辑文件后,需要让调度器重新加载对应智能体的调度配置。