用途
Task Manager 用于为用户创建和管理定时任务。当用户要求周期性执行某项操作(例如“每天早上9点总结我的邮件”)时,可以通过 Task HTTP API 创建计划任务。
识别任务意图
当用户表达以下类似语句时,应识别为定时任务需求:
- “每天/每周/每小时……”
- “提醒我……”
- “在上午9点,做……”
- “安排一个任务……”
- “定期检查……”
- “设置一个 cron job……”
- “创建一个周期性……”
- “设置一个计时器……”
创建任务
使用 Task HTTP API(运行在网关端口上):
curl -X POST http://localhost:$PORT/api/tasks \
-H "Content-Type: application/json" \
-d '{
"name": "daily-summary",
"schedule": "0 9 * * *",
"prompt": "Summarize the key updates from today",
"enabled": true,
"target": {
"channel": "feishu",
"chatId": "oc_xxxx"
}
}'
校验
创建任务前需确认:
- schedule 字段是合法的 5 字段 cron 表达式。
- prompt 非空,且足够具体,以便在无人值守运行时产生有用的输出。
- 如果提供了 target,则 channel 为必填;chatId 可选(若省略,结果会发送到该渠道上所有已知会话)。
- 如果 API 返回错误(非 2xx 状态码),应向用户报告失败及错误信息,而不是假定成功。
TaskRecord 结构
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | 人类可读的任务名称 |
| schedule | string | 是 | cron 表达式(见下文) |
| prompt | string | 是 | 任务触发时发送给智能体的提示词 |
| enabled | boolean | 否 | 默认:true |
| target | object | 否 | 结果投递位置 |
| target.channel | string | 是* | 渠道名称:feishu、dingtalk、wecom、slack、telegram、discord、weixin |
| target.chatId | string | 否 | 会话/对话 ID。若省略,则发送到该渠道上所有已知会话 |
常用 cron 表达式
| 表达式 | 含义 |
|---|---|
| 0 9 * * * | 每天上午 9:00 |
| 0 9 * * 1-5 | 工作日(周一至周五)上午 9:00 |
| */30 * * * * | 每 30 分钟 |
| 0 */2 * * * | 每 2 小时 |
| 0 9 * * 1 | 每周一上午 9:00 |
| 0 0 1 * * | 每月第一天午夜 |
其他 API 端点
- GET /api/tasks — 列出所有任务
- PATCH /api/tasks/:id — 更新任务(部分更新)
- DELETE /api/tasks/:id — 删除任务
- POST /api/tasks/:id/run — 立即执行任务
适用场景
适用于需要按固定时间或周期自动触发智能体执行某项操作的场景,例如每日摘要、周期性检查、定时提醒等,并将结果投递到指定渠道。
限制
- schedule 必须为合法的 5 字段 cron 表达式。
- prompt 必须非空且足够具体。
- 提供 target 时 channel 必填。
- 其他限制暂未提供。