# 调度、时区与结果位置

查阅 Cron、执行上下文和送达重试的区别。

## 一项任务包含四组设置

定时任务同时确定执行内容、执行上下文、触发时间和结果位置。先决定由哪个 Agent 处理什么材料，再设置时间。否则容易出现“任务按时完成，但读错材料或把结果放错会话”的情况。

任务定义和运行记录分别查看。定义描述以后怎样运行，记录说明某一次实际上发生了什么。

## 当前新建任务的运行上下文

| 选项 | 历史如何使用 | 适合什么工作 |
| --- | --- | --- |
| 复用已有会话 | 使用指定会话的历史 | 在已讨论的项目中继续处理 |
| 独立运行 | 每次使用独立上下文，不积累旧轮内容 | 从文件重新生成日报或检查报告 |

当前新建界面提供这两种选择。编辑使用旧配置的任务时，还可能看到“使用主会话”或“使用专用长期会话”。前者接入 Agent 主会话，后者持续复用一段专用会话；它们不是当前新建表单中的常规选项。

Room 任务还要选定 Room 会话和执行成员。不能只选群名而不指定实际负责执行的成员。

独立上下文不代表文件系统隔离。多次执行仍可能读写同一个输出文件。需要保留历史报告时，在任务要求中指定按日期命名。

## 结果位置与执行位置分开

**不额外发送** 将结果留在运行记录，不额外发消息。**发送到指定位置** 可以把结果交给有效的 Agent、Room 或 IM 会话。

| 接收目标 | 需要确认 |
| --- | --- |
| Agent 会话 | 接收 Agent 与会话存在 |
| Room | 接收 Room、会话与回复成员有效 |
| IM 会话 | 外部会话仍有有效绑定，通道可发送 |

使用主会话时不支持额外结果回传，不能同时选择发送到另一个位置。Room 的执行成员与回复成员承担不同作用，分别核对。

## 调度方式

| 方式 | 设置内容 | 示例 |
| --- | --- | --- |
| 单次 | 未来的日期和时间 | 明天下午检查一次材料 |
| 每天 | 时间与执行日 | 工作日 9 时整理日报 |
| 每月 | 日期与时间 | 每月 1 日生成汇总 |
| 间隔 | 正数及秒、分钟或小时单位 | 每隔 30 分钟检查一次 |
| 自定义 Cron | 标准五段表达式 | 每周五 17 时生成周报 |

每天模式可以选择执行日，全选才是每天。单次时间必须在未来；有效期填写后也必须是未来时间。每月选择 31 日时，没有该日期的月份不会执行。

## Cron 五段怎样读

```text
分钟  小时  日  月  星期
0     9     *   *   1-5
```

| 表达式 | 含义 |
| --- | --- |
| `0 9 * * *` | 每天 9 时 |
| `0 9 * * 1-5` | 周一至周五 9 时 |
| `0 17 * * 5` | 每周五 17 时 |
| `0 10 1 * *` | 每月 1 日 10 时 |

输入框使用五段格式，不要在开头再加秒字段。间隔任务与固定钟点不同，要求“每天 9 时”时使用每天或 Cron，不用每隔 24 小时代替。

## 时区和有效期

表单可以选择 `Asia/Shanghai`、`UTC` 等时区，初始时区来自当前客户端环境。保存前明确选定任务使用的时区，再核对下次运行时间。

同一个 `0 9 * * *` 在 `Asia/Shanghai` 和 `UTC` 下不是同一时刻。跨地区协作时，把报告覆盖日期的时区也写进指令，避免调度按一种时区、材料按另一种时区截取。

有效期决定这项计划何时结束，不是单次运行的超时时间。到期后仍应查看最后一条运行记录，判断到期前开始的任务状态。

## 权限副本

选择 **复制当前权限** 时，有执行会话就复制其有效模式，否则复制 Agent 模式，同时复制 Agent 的工具允许和禁止规则。创建之后任务持有独立副本。

因此，后来修改 Agent 权限不会自动重写旧任务。长期任务需要新的能力时，应检查任务自身的权限与审批，不要只改全局默认。

## 运行状态与投递状态

![任务触发、执行和结果投递的流程示意](/images/docs/scheduled-run.svg)

| 运行状态 | 说明 | 接下来做什么 |
| --- | --- | --- |
| 等待或排队 | 还未进入实际执行或排在会话队列中 | 检查上下文和队列 |
| 运行 | 正在处理任务 | 查看是否等待审批或信息 |
| 成功 | 本次执行完成 | 检查产物与投递状态 |
| 失败 | 本次执行失败 | 阅读错误和已完成部分 |
| 跳过 | 本次没有执行 | 检查记录原因及调度策略 |
| 取消 | 本次执行被取消 | 核对已发生的操作 |

投递状态另行显示。**无需投递** 在未设置额外发送时是正常结果；**投递失败** 不表示生成文件也失败；**投递结果待确认** 需要先检查接收位置。

执行已成功而投递失败时，优先重试投递。重新运行整个任务可能再次写文件或产生外部操作。

## 停用、删除与离线恢复

停用阻止后续计划触发，不撤销已执行动作。删除中的任务需要等待收尾，出现删除待处理时按页面处理，不要把删除当作立即取消所有运行的替代方式。

宿主离线期间无法正常执行。恢复后的错过任务处理受部署调度策略影响，不能假定每个时间点都会补跑。查看运行记录和下次运行时间，再决定是否手动执行一次。

按步骤创建一项任务见[定时任务与主动跟进](/docs/automations)。
