> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flashduty.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 自动化

> 让 AI SRE 按 cron 周期、HTTP API 或 On-call 故障事件自动运行一个隐藏会话，用一段任务提示词产出巡检、洞察或复盘结果；本文介绍自动化规则的新建、配置字段、触发方式、运行历史与权限。

<Info>
  **内测功能**：AI SRE 目前处于内测阶段，专业版及以上用户可申请免费试用。请通过 [AI SRE 内测申请表](https://c9xudyniiq.feishu.cn/share/base/form/shrcn0ngCfdoygiaHnAT80BfZiH) 提交申请，审核通过后将开通白名单；内测期间功能与界面可能调整。
</Info>

## 概述

***

自动化（Automation）让 AI SRE 按你设定的节奏自行跑一次 **隐藏会话**——它不出现在控制台左侧的会话列表里，而是在后台用一段固定的 **任务提示词** 驱动 Agent 完成工作，产出巡检、运营洞察或故障复盘等结果。

每条自动化是一条 **规则（rule）**。一条规则至少携带一种触发方式：

* **按周期执行**：用 4 段或 5 段 cron 设定运行节奏（例如每周一上午、每天 09:15），到点自动跑。
* **经 API 调用**：生成一个带 Bearer Token 的触发地址，你在外部系统里用 `POST` 按需触发，把本次运行的上下文随请求体一起带进来。
* **On-call 故障触发**：选择要监听的 On-call 协作空间与严重程度，当匹配故障产生时自动拉起一次诊断运行。

什么时候用它：把重复的例行巡检（如每日健康巡检）、定期产出的洞察 / 复盘报告交给 AI SRE 自动跑；或者把 AI SRE 接进你已有的流水线、变更系统或 On-call 故障流，在事件发生时拉起一次诊断。

入口：左侧导航 **AI SRE → 自动化**，对应路由 `/ai-sre/automations`。

<Note>
  自动化跑出的每一次运行，本质上仍是一个 AI SRE 会话——只是它被标记为隐藏，不混进你的日常会话列表。你随时可以从运行历史点进去，看到这次运行完整的对话、工具调用与产物。
</Note>

## 新建自动化

***

点击页面右上角的 **新建自动化**，会先弹出一个起始选择面板，提供两条入口：

<Steps>
  <Step title="从零开始">
    选择 **从零开始**，进入空白表单，手动填写名称、任务提示词与触发方式。适合你已经清楚要让 Agent 做什么、想完全自定义提示词的场景。
  </Step>

  <Step title="基于预设模板">
    下方列出一组 **预设模板** 卡片（由后端按界面语言下发，中文环境取 `zh-CN`、英文环境取 `en-US`），常见的有 **噪音治理**、**故障复盘**、**升级 / 负载**、**变更**、**值班** 等。点击任一模板卡片，会用模板预置的名称与任务提示词预填表单，你在此基础上微调即可。
  </Step>
</Steps>

无论从哪条入口进入，接下来都是同一张配置表单。

## 配置字段

***

配置表单的字段如下：

| 字段             | 必填 | 说明                                                                                                                                                       |
| -------------- | -- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 名称             | 是  | 规则名称，最长 255 字符。占位示例：`每周值班洞察`。                                                                                                                            |
| 范围             | 是  | 通过 **范围选择器** 选 **个人**（`team_id=0`）或某个 **团队**（`team_id>0`）。范围既决定这条规则的归属与编辑权限，也限定 **执行 Environment** 里可选的自托管 Runner——只有账户全局的 Runner，以及与该范围同团队的 Runner 才可选。 |
| 执行 Environment | 否  | 通过 **环境选择器** 选运行环境：**自动**（由后端挑选最优可用环境，默认值）、**云端沙箱**，或某个 **自托管（BYOC）Runner**。选了某个团队范围后，不属于该范围的团队 Runner 会被自动清除。                                           |
| 任务提示词          | 是  | 描述要让 AI SRE 执行的任务，用富文本编辑器撰写。这段提示词就是每次运行时发给 Agent 的内容。占位提示：`描述 Flashduty AI SRE 要执行的任务。`                                                                  |

<Note>
  **执行 Environment** 的「自动」会在每次运行时由后端挑选当前最优的可用环境；「云端沙箱」是平台托管的临时沙箱；自托管 Runner 则把运行落在你自己的机器上。三者的差异与连接方式见 <a href="/zh/ai-sre/environments">运行环境</a>。
</Note>

## 触发方式

***

一条规则必须 **至少配置一种触发方式**。当前控制台表单在「触发方式」区提供 **按周期执行**、**经 API 调用** 与 **On-call 故障触发** 三种入口，三者可同时启用。

### 按周期执行（cron）

按时间周期自动运行。运行节奏支持两种 cron 写法：

* **4 段**：`小时 日期 月份 星期`，系统自动补 `minute=0`，适合整点任务。
* **5 段**：`分钟 小时 日期 月份 星期`，适合分钟级任务，例如 `15 9 * * *` 表示每天 09:15。

秒级 6 段不支持。分钟必须是一个固定整数；其它字段只支持下表中的简单写法：

| 段         | 取值范围                                |
| --------- | ----------------------------------- |
| 分钟（仅 5 段） | `0`–`59` 的固定整数                      |
| 小时        | `*`、`*/n`（n 为 1–23）或 `0`–`23` 的固定整数 |
| 日期        | `*` 或 `1`–`31`                      |
| 月份        | `*` 或 `1`–`12`                      |
| 星期        | `*` 或 `0`–`7`（`0` 与 `7` 均表示周日）      |

为免手写表达式，界面提供四种模式：

| 模式  | 含义                    |
| --- | --------------------- |
| 每小时 | 每小时运行一次；默认整点，也可指定分钟   |
| 每天  | 选一个时刻，每天该时刻运行         |
| 每周  | 选星期几 + 时刻，每周该时刻运行     |
| 自定义 | 直接填 4 段或 5 段 cron 表达式 |

<Warning>
  **时区**：在 **每天 / 每周** 模式下，你选的时刻按 **本地时区** 理解，保存时会换算成 UTC，界面会在节奏摘要旁标注你的本地时区；**自定义** 模式下表达式按 **UTC** 解释，界面标注为 `UTC`。
</Warning>

<Note>
  实际执行时间可能与设定时间存在 **分钟级延迟**，这是有意为之，用于把系统负载分散开。请不要把规则当作秒级精确的定时器使用。
</Note>

### 经 API 调用（HTTP POST）

让你在外部系统里按需触发这条自动化，而不依赖时间周期。

<Steps>
  <Step title="启用并保存">
    在「触发方式」中添加 **Call via API** 并保存规则。保存成功后，系统会一次性生成本次触发用的 **Token** 与 **触发地址**，并弹出一个包含 `curl` 示例的窗口。
  </Step>

  <Step title="保存 Token">
    Token **只显示一次**：请立即复制保存。关闭弹窗后无法再次查看，只能重新生成（轮换）一个新 Token——重新生成会使旧 Token 失效。
  </Step>

  <Step title="从外部触发">
    用 `POST` 调用触发地址，把 Token 放在 `Authorization: Bearer` 请求头里，请求体用 `text` 字段传入本次运行的上下文。弹窗里给出的 `curl` 示例形如：
  </Step>
</Steps>

```bash theme={null}
curl -X POST 'https://<触发地址>' \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{"text":"描述本次运行的事件或上下文。"}'
```

请求体里的 `text` 会作为本次运行的上下文交给 Agent，叠加在规则配置好的任务提示词之上；可选的 `dedup_key` 用于幂等，相同 trigger 与相同 `dedup_key` 会复用同一次运行。

<Tip>
  一条规则可以 **同时** 启用「按周期执行」与「经 API 调用」：到点自动跑，也允许外部按需拉起。每种触发方式各占一行，可分别 **移除**。
</Tip>

### On-call 故障触发

当你希望 AI SRE 随 On-call 故障自动启动时，添加 **On-call incident** 触发方式。触发器会向 On-call 侧注册订阅，只有匹配指定协作空间和严重程度的故障事件才会启动运行。

<Steps>
  <Step title="添加触发方式">
    在「触发方式」中点击 **On-call incident** 卡片，表单会展开协作空间与严重程度条件。
  </Step>

  <Step title="选择协作空间">
    在 **协作空间** 下拉框中选择要监听的 On-call 协作空间。个人范围规则可选择账户下可见的协作空间；团队范围规则会按所选团队收窄可选协作空间。
  </Step>

  <Step title="选择严重程度">
    在 **严重程度** 中选择 `Critical`、`Warning`、`Info` 中的一个或多个值。启用该触发器时，协作空间和严重程度都至少需要一个值。
  </Step>
</Steps>

如果通过 API 创建或更新规则，对应字段如下：

| 字段                                | 类型        | 说明                                                          |
| --------------------------------- | --------- | ----------------------------------------------------------- |
| `oncall_incident_trigger_enabled` | boolean   | 是否启用 On-call 故障触发器。                                         |
| `oncall_incident_channel_ids`     | int64\[]  | 监听的 On-call 协作空间 ID 列表；创建或启用该触发器时至少需要一个有效 ID。               |
| `oncall_incident_severities`      | string\[] | 监听的故障严重程度，支持 `Critical`、`Warning`、`Info`；创建或启用该触发器时至少需要一个值。 |

匹配事件到达后，系统会以 `oncall_incident` 作为 `trigger_kind` 创建运行，并把 `incident_id`、`channel_id`、`severity` 等事件上下文传给会话。相同触发器与相同 `incident_id` 会复用同一次运行，避免同一故障重复拉起多个隐藏会话。

## 运行历史

***

每条规则都保留它的运行历史。在规则行的 **操作** 列点击 **历史** 图标即可打开（独立路由为 `/ai-sre/automations/:ruleId/history`）。

运行历史以表格呈现，列为：

| 列    | 说明           |
| ---- | ------------ |
| 执行时间 | 本次运行的开始时间    |
| 耗时   | 本次运行的持续时长    |
| 状态   | 本次运行的状态（见下表） |

运行状态的取值：

| 状态          | 含义               |
| ----------- | ---------------- |
| `running`   | 运行中              |
| `retrying`  | 重试中              |
| `succeeded` | 成功               |
| `partial`   | 部分成功             |
| `failed`    | 失败               |
| `skipped`   | 已跳过              |
| `abandoned` | 已放弃（长时间未完成被系统终止） |

表格上方提供两个筛选项：

* **时间范围**：默认显示 **最近 30 天**，可调整范围，最大跨度 **180 天**。
* **状态**：按上表中的运行状态过滤，或选 **全部状态**。

API 返回的运行记录还包含 `trigger_kind`，可能取值为 `schedule`、`manual`、`http_post`、`oncall_incident` 或 `debug`。其中 `manual` 表示通过立即执行接口启动，`oncall_incident` 表示由匹配的 On-call 故障事件启动。

点击任意一行，会跳转到这次运行对应的隐藏会话对话页（`chat?session_id=<会话ID>`），让你查看该次运行完整的消息、工具调用与产物。运行历史检视器的标题会标明「{名称} 最近 180 天的执行历史」。

<Note>
  运行历史只对你 **有编辑权限** 的规则可见；对只读规则（`can_edit=false`），历史入口会被禁用，打开后提示「只读自动化无法查看运行历史」。
</Note>

## 管理与权限

***

### 启用 / 停用、编辑与删除

每条规则在 **操作** 列提供一组操作：

| 操作      | 说明                                                          |
| ------- | ----------------------------------------------------------- |
| 启用 / 停用 | 行内开关。停用后规则保留，但不再触发；停用不会删除已有运行历史。                            |
| 历史      | 打开该规则的运行历史。                                                 |
| 编辑      | 打开配置表单修改规则。                                                 |
| 删除      | 删除该规则，删除前会二次确认，提示「删除后不会再触发该规则。已有运行历史会在保留期后自动清理。」            |
| 立即执行    | 在规则行手动启动一次真实运行。该操作会先做运行前检查，然后为本次运行创建一个隐藏会话；同一规则手动执行最多每分钟一次。 |

对你 **没有编辑权限** 的只读规则（`can_edit=false`），开关与全部操作按钮都会被禁用；打开其表单时顶部会显示「只读 — 你可以查看此自动化，但无法编辑。」

列表上方还提供两个筛选器：**范围**（全部 / 个人 / 团队，选「团队」后可多选具体团队）与 **状态**（全部状态 / 已启用 / 未启用）。

### 作用域与权限

自动化规则与 Customize 下的其它资源（Skill、知识库、MCP、Agent、运行环境）共用同一套两级作用域：

| 维度           | 规则                                                                                                                      |
| ------------ | ----------------------------------------------------------------------------------------------------------------------- |
| 归属           | **个人规则**（`team_id=0`）归创建者所有；**团队规则**（`team_id>0`）归该团队。任何账户成员都可以创建当前 account 下任意团队的自动化，不要求创建者属于该团队。规则创建后，个人 / 团队作用域不可修改。 |
| 可见 / 列表      | 账户 Owner 与管理员可见全部规则；普通成员可见自己创建的规则，以及自己所属团队的规则。                                                                          |
| 编辑 / 管理      | 账户 Owner 与管理员可管理任意规则；普通成员可管理自己创建的规则，也可管理自己所属团队的规则（启用 / 停用、编辑、删除）。                                                       |
| HTTP POST 触发 | 通过触发地址发起一次真实运行时，鉴权只看该 trigger 的 Bearer Token；持有 Token 的外部系统可以触发，运行会按规则的个人或团队作用域创建隐藏会话。                                  |
| On-call 故障触发 | 由已注册的故障订阅触发，不使用 HTTP POST Bearer Token；运行仍按规则的个人或团队作用域创建隐藏会话。                                                           |

<Warning>
  账户是运行时唯一的安全边界，团队是「归属 / 编辑」标签。自动化规则的可见与管理沿用这套模型；与其它 Customize 资源一致的完整规则，详见各资源页面的「作用域」一节。
</Warning>

## 相关页面

***

<CardGroup cols={2}>
  <Card title="控制台" icon="comments" href="/zh/ai-sre/sessions">
    了解会话如何承载一次完整对话——自动化跑出的每次运行本质上就是一个隐藏会话。
  </Card>

  <Card title="运行环境" icon="server" href="/zh/ai-sre/environments">
    了解自动、云端沙箱与自托管 Runner 的差异，以及自动化的执行环境选择。
  </Card>

  <Card title="使用洞察" icon="gauge-high" href="/zh/ai-sre/insight">
    基于会话数据生成团队的故障处理与运营洞察，可作为定时自动化的产出目标。
  </Card>

  <Card title="管理知识" icon="book" href="/zh/ai-sre/knowledge">
    为自动化运行提供领域知识，按团队范围加载。
  </Card>
</CardGroup>
