跳到主要内容

自动化问题

调度(Schedule)和心跳(Heartbeat)有什么区别?

对比项调度(Schedule)心跳(Heartbeat)
触发方式按时间触发(定时/延迟/周期/cron)系统按固定间隔唤醒智能体
用途在未来特定时刻执行指定任务让智能体主动检查状态、监控变化
上下文每次触发创建全新会话,不继承对话上下文在当前智能体上下文中执行
典型场景"3 分钟后提醒我开会"、"每天 9 点生成日报""监控构建状态"、"定期检查邮件"
管理方式ManageSchedule 工具heartbeat/ 目录下的配置

简单记忆:调度 = 闹钟(到时间做特定事),心跳 = 巡逻(定期看看有没有事)。

定时任务没有触发怎么办?

排查步骤:

  1. 确认调度存在 --- 使用 ManageSchedule(action=list)查看调度列表,确认任务未被删除或取消
  2. 检查触发时间 --- 确认 trigger_value 的时区正确(使用带时区的 ISO 格式,如 2026-07-26T09:00:00+08:00
  3. 检查应用是否运行 --- 调度需要 DesireCore 在运行中才能触发;应用关闭期间到期的调度会在下次启动后补触发
  4. 检查执行权限 --- 调度的执行受审批模式约束,需确认模式下允许对应操作

如何查看调度执行历史?

调度每次触发会创建一个新的会话(Run)。查看方式:

  1. 在智能体的对话历史中找到对应时间的会话记录
  2. 调度触发时的 prompt 会作为该会话的第一条消息
  3. 如果调度执行失败,可以在会话记录中看到错误信息

心跳通知太频繁怎么调整?

如果智能体的心跳检查产生过多通知:

  1. 调整心跳间隔 --- 修改 heartbeat 配置中的检查频率
  2. 使用 notify=false --- 无变化时静默记录,不发送通知
  3. 优化检查逻辑 --- 只在确实有变化或需要关注时才设置 notify=true
提示

好的心跳实践:大多数时候返回 no_change(静默),只在发现异常或重要变化时才通知用户。

Sleep 和 Schedule 该用哪个?

场景选择原因
等 5 秒后检查构建状态Sleep需要拿到结果后继续当前任务
3 分钟后提醒开会Schedule独立任务,不需要当前上下文
轮询等待下载完成Sleep在同一任务链中循环检查
每天早上 9 点生成报告Schedule(cron)周期性独立任务

核心区别:Sleep 在当前会话中阻塞等待(保留上下文),Schedule 到期时创建全新会话(无上下文)。

如何创建周期性定时任务?

使用 ManageSchedule 工具,支持四种触发类型:

类型说明示例
delay延迟执行一次ISO Duration:PT30M(30 分钟后)
at指定时刻执行一次2026-07-26T09:00:00+08:00
interval固定间隔重复PT1H(每小时)
cronCron 表达式0 9 * * 1-5(工作日 9 点)

示例 prompt:"每周一早上 9 点提醒我查看周报"→ trigger_type=cron, trigger_value="0 9 * * 1"

调度任务执行失败如何排查?

  1. 查看会话记录 --- 找到调度触发时创建的会话,查看错误信息
  2. 检查 prompt 是否清晰 --- 调度的 prompt 应包含足够的上下文,因为新会话不继承之前的对话
  3. 检查依赖服务 --- 如果任务需要网络、特定文件或 API,确认它们在触发时可用
  4. 检查审批模式 --- 需确认的审批模式下,无人值守的调度可能因等待审批而超时
注意

调度的 prompt 中不要引用"上次对话的内容"或"之前的上下文"——每次触发都是全新会话,没有历史记忆。需要引用信息时,在 prompt 中直接写明。