概述
ScheduledTasks 页面提供基于 Cron 的定时任务调度系统,支持三种任务类型(HTTP/Shell/Workflow),可通过标准 Cron 表达式或循环模式配置执行频率。
页面分为两个 Tab:Tasks(任务列表)和 Logs(执行日志)。
任务列表(Tasks Tab)
创建和编辑任务
点击右上角 Add Task 按钮打开任务创建表单,编辑已有任务点击任务行右侧的编辑按钮。
基本信息:
| 字段 | 说明 |
|---|---|
| Task Name | 任务名称(必填) |
| Task Group | 任务分组(可选,用于分类管理) |
| Status | 1 = 启用,0 = 禁用 |
调度配置
Schedule Mode(调度模式):
| 模式 | 说明 |
|---|---|
cron_once | 标准 Cron 表达式调度(默认) |
cron_loop | 循环执行模式 |
Cron Expression:标准 5 段 Cron 表达式,格式为:
┌───────────── 分钟 (0-59)
│ ┌─────────── 小时 (0-23)
│ │ ┌───────── 日 (1-31)
│ │ │ ┌─────── 月 (1-12)
│ │ │ │ ┌───── 星期 (0-6,0 = 周日)
│ │ │ │ │
* * * * *Cron 预设快捷选择:
| 预设 | 表达式 | 说明 |
|---|---|---|
| 每 5 分钟 | */5 * * * * | 每隔 5 分钟执行 |
| 每小时 | 0 * * * * | 每小时整点执行 |
| 每天早上 | 0 9 * * * | 每天早上 9 点执行 |
| 工作日早上 | 0 9 * * 1-5 | 周一至周五早上 9 点执行 |
| 每月 1 日 | 0 2 1 * * | 每月 1 日凌晨 2 点执行 |
Cron Loop 模式(仅 cron_loop 模式):
| 字段 | 说明 |
|---|---|
| Loop Interval Seconds | 循环间隔秒数(必填,需 > 0) |
| Loop Window Seconds | 检测窗口秒数(必填,需 > 0) |
Cron Loop 模式的工作原理:在检测窗口内每隔固定间隔检查是否满足条件,适合需要高频检测的场景。
任务类型
HTTP 类型
定时向指定 URL 发送 HTTP 请求。
| 字段 | 说明 |
|---|---|
| Invoke Target | 目标 URL |
| HTTP Method | 请求方法(GET/POST/PUT/DELETE/PATCH) |
| Args | 请求参数或 Body(可选) |
Shell 类型
定时执行本地 Shell 命令。
| 字段 | 说明 |
|---|---|
| Invoke Target | Shell 命令 |
Workflow 类型
定时启动工作流(需 Claude Backend)。Workflow 类型配置最为复杂,包括以下参数:
| 字段 | 说明 |
|---|---|
| Workflow | 从已安装工作流列表中选择(do/omo/bmad/sparv/requirements 等) |
| Backend | 运行后端(claude/codex/gemini/opencode,workflow 锁定为 claude) |
| Group | Provider Group 选择(可选) |
| Model | 模型选择(可选,留空使用默认) |
| Workdir | 工作目录(必填) |
| Task Description | 任务描述(将作为工作流输入) |
Workflow 配置附加说明:
- 选择工作流后,系统自动将 Backend 锁定为
claude - Claude Backend 为必选,未配置 Claude 时会提示错误
- 可点击文件夹图标选择工作目录
- 可点击"View Config Hierarchy"查看当前工作目录的配置层级(Global → Project → Workdir)
执行策略
| 字段 | 说明 | 默认值 |
|---|---|---|
| Timeout | 超时时间(秒) | 60 |
| Retry Times | 失败重试次数 | 0 |
| Retry Interval | 重试间隔(秒) | 0 |
| Multi Instance | 多实例开关 | 单实例 |
Multi Instance 说明:
- 单实例(Off):前一个执行实例未完成时,新调度会被跳过
- 多实例(On):允许同时运行多个执行实例
Loop 模式附加字段(仅 cron_loop):
- Loop Interval Seconds:循环执行间隔
- Loop Window Seconds:检测窗口
任务操作
每个任务卡片右侧提供以下操作按钮:
| 按钮 | 说明 |
|---|---|
| 播放图标 | 立即执行(手动触发,跳过调度时间) |
| 叉号图标 | 取消(正在运行时取消执行) |
| 编辑图标 | 打开编辑表单 |
| 删除图标 | 删除任务 |
启用/禁用开关:任务卡片左侧的 Toggle 开关控制任务的启用状态。禁用的任务不会被调度执行,但仍保留在系统中。
执行日志(Logs Tab)
Logs Tab 展示所有任务的执行历史记录。
日志过滤
| 过滤器 | 说明 |
|---|---|
| 搜索框 | 按任务名称关键词搜索 |
| Task Filter | 按任务筛选(All 或指定任务) |
| Trigger Filter | 按触发源筛选(All/Cron/Manual) |
| Status Filter | 按状态筛选(All/Success/Failed/Running/Skipped) |
| Time Range | 时间范围(All/Today/7 Days/30 Days) |
日志表格
| 列 | 说明 |
|---|---|
| 复选框 | 多选删除 |
| Task Name | 任务名称 |
| Trigger | 触发源徽章(蓝色=Cron/紫色=Manual) |
| Last Run | 执行开始时间 |
| Total Time | 总耗时(毫秒) |
| Status | 状态徽章(Success/Failed/Running/Skipped) |
| Actions | 操作(查看结果/取消/删除) |
Status 说明:
| 状态 | 颜色 | 说明 |
|---|---|---|
| success | 绿色 | 执行成功 |
| failed | 红色 | 执行失败 |
| running | 黄色 | 正在执行 |
| skipped | 灰色 | 被跳过(通常因为单实例模式下前一个实例未完成) |
日志操作
查看结果:点击眼睛图标,在弹出 Modal 中查看完整的执行结果输出(stdout/stderr)。
删除日志:
- 单条删除:点击删除图标
- 批量删除:勾选多条后点击"Delete Selected"按钮(不会删除正在运行的日志)
清空日志:点击清空操作可按当前过滤条件清空日志。
分页
日志列表支持分页浏览,每页可显示 10/20/50/100 条记录,底部显示分页导航和当前页/总页数信息。
实时事件订阅
ScheduledTasks 页面通过 Wails EventsOn 实时订阅以下事件:
scheduled:task_updated:任务状态变更(自动刷新任务列表)scheduled:log_updated:新日志写入(自动刷新日志列表并同步运行中任务状态)
这确保了任务执行状态和日志的实时更新。
与其他页面的联动
| 源 | 目标 | 联动方式 |
|---|---|---|
| Workflow 任务 | Terminal | 执行时自动跳转到 Terminal 页面 |
| Workflow 任务 | Provider | 执行时使用 Provider 配置的 Backend |
| Workflow Config | Settings | 查看 Config Hierarchy 时调用 AI 分析配置 |
| Log - Running | Terminal | 可取消正在运行的日志关联的任务 |
License 要求
定时任务功能受 License 层级控制:
| 功能 | Community | Pro | Team |
|---|---|---|---|
| HTTP 定时任务 | No | Yes | Yes |
| Shell 定时任务 | No | Yes | Yes |
| Workflow 定时任务 | No | Yes | Yes |
Community 用户无法使用任何定时任务功能。在 Pro/Team 版本中,Workflow 类型任务需要 Claude Backend 可用。
完整授权差异见授权等级。
典型使用场景
场景一:每日代码扫描
任务名称:Daily Code Scan
类型:Workflow
工作流:do
Cron:0 9 * * *
任务描述:执行全库代码质量和安全扫描场景二:定时健康检查
任务名称:Health Check
类型:HTTP
URL:https://your-app.com/health
Cron:*/5 * * * *
超时:30s场景三:高频数据同步
任务名称:Data Sync Loop
类型:Shell
命令:./sync.sh
模式:Cron Loop
间隔:30s
窗口:600s故障排查
任务未执行:
- 确认任务状态为启用(Status = 1)
- 检查 Cron 表达式是否正确
- 确认应用正在运行(Cron 调度依赖应用进程)
- 查看 Logs Tab 是否有执行记录
任务失败:
- 点击失败日志查看详细错误信息
- HTTP 类型:检查 URL 是否可访问、网络是否通畅
- Shell 类型:检查命令语法、工作目录是否正确
- Workflow 类型:检查 Claude Backend 是否可用、工作流是否正确安装
任务堆积(同一任务短时间内多次触发):
- 确认是否使用了 Multi Instance 模式
- 检查 Timeout 设置是否合理(Timeout 过短可能导致误判为失败)
- 考虑切换到单实例模式避免重复执行
Workflow 任务卡住:
- 在 Logs Tab 找到对应运行中(Running)日志
- 点击取消按钮终止执行
- 检查工作流配置是否正确
