> ## 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>

## 新建自动化

***

页面右上角提供两个创建入口：outline 样式的 **通过聊天创建** 按钮，点击后跳转到会话页面并带一段预填的引导提示——「我们来创建一个自动化任务。先说明自动化任务如何运作。然后通过提问了解我需要安排什么任务，以及它应在何时运行。」——由 Agent 通过对话帮你确定任务内容和触发方式，跳过表单；以及 primary 样式的 **创建** 按钮，点击后会弹出一个起始选择面板，提供两条入口：

<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，叠加在规则配置好的任务提示词之上。

请求成功后，响应的 `data` 会返回新建隐藏会话的信息。你可以保存 `session_id`，或直接使用 `session_url` 打开这次运行的完整对话、工具调用和产物：

```json theme={null}
{
  "data": {
    "type": "routine_fire",
    "session_id": "<session-id>",
    "session_url": "https://<console>/ai-sre/chat?session_id=<session-id>"
  }
}
```

<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`：左侧栏是「配置信息」，右侧栏是「执行历史」，两栏并排展示；右侧栏顶部自带一个 **手动执行** 按钮，可以直接在详情页里触发一次运行。

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

| 列    | 说明                                                            |
| ---- | ------------------------------------------------------------- |
| 触发   | 本次运行的触发类型标签，如 `Schedule`、`HTTP POST`、`On-call incident` 或手动执行 |
| 触发详情 | 触发上下文摘要，例如严重程度、协作空间、故障 ID 等（依触发类型而定；没有上下文时显示「无」）              |
| 执行时间 | 本次运行的开始时间                                                     |
| 耗时   | 本次运行的持续时长                                                     |
| 状态   | 本次运行的状态（见下表）                                                  |

运行状态的取值：

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

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

* **时间范围**：默认显示 **最近 30 天**，可调整范围，最大跨度 **180 天**。
* **状态**：按上表中的运行状态过滤，或选 **全部状态**。
* **触发类型**：`全部触发类型` / `Schedule` / `HTTP POST` 三选一。

<Note>
  「触发类型」筛选项目前不包含 On-call incident 选项——即便「触发」列本身能显示 `On-call incident` 标签，也暂时无法单独按它筛选。
</Note>

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

点击任意一行，会跳转到这次运行对应的隐藏会话对话页（`chat?session_id=<会话ID>`），让你查看该次运行完整的消息、工具调用与产物。

<Note>
  运行历史内嵌在规则详情页中，而打开详情页本身就要求你对该规则有编辑权限——没有编辑权限的规则连详情页都无法打开（会提示「自动化规则不存在或无权访问」），因此其运行历史也无法查看。
</Note>

## 管理与权限

***

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

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

| 操作      | 说明                                                          |
| ------- | ----------------------------------------------------------- |
| 启用 / 停用 | 行内开关。停用后规则保留，但不再触发；停用不会删除已有运行历史。                            |
| 立即执行    | 在规则行手动启动一次真实运行。该操作会先做运行前检查，然后为本次运行创建一个隐藏会话；同一规则手动执行最多每分钟一次。 |

点击规则行任意位置会打开该规则的详情页，在详情页里可以编辑配置、删除规则，也能看到运行历史（见上文「运行历史」一节）。

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

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

### 作用域与权限

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

| 维度            | 规则                                                                                                                      |
| ------------- | ----------------------------------------------------------------------------------------------------------------------- |
| 归属            | **个人规则**（`team_id=0`）归创建者所有；**团队规则**（`team_id>0`）归该团队。任何账户成员都可以创建当前 account 下任意团队的自动化，不要求创建者属于该团队。规则创建后，个人 / 团队作用域不可修改。 |
| 可见 / 列表       | 账户 Owner 与管理员可见全部规则；普通成员可见自己创建的规则，以及自己所属团队的规则。                                                                          |
| 编辑 / 管理（团队规则） | 账户 Owner 与管理员可管理任意团队规则；团队普通成员可管理自己所属团队的规则（启用 / 停用、编辑、删除）。                                                               |
| 编辑 / 管理（个人规则） | 仅创建者本人可管理。账户 Owner 与管理员对他人的个人规则 **没有** 管理豁免，甚至无法查看其详情页——打开会直接返回「无权访问」，不是单纯的按钮置灰。                                        |
| HTTP POST 触发  | 通过触发地址发起一次真实运行时，鉴权只看该 trigger 的 Bearer Token；持有 Token 的外部系统可以触发，运行会按规则的个人或团队作用域创建隐藏会话。                                  |
| On-call 故障触发  | 由已注册的故障订阅触发，不使用 HTTP POST Bearer Token；运行仍按规则的个人或团队作用域创建隐藏会话。                                                           |

<Note>
  账户 Owner / 管理员能在列表中看到其他成员的个人规则（见上表「可见 / 列表」），但点击进入详情页会被拒绝——「编辑 / 管理」权限不会像团队规则那样因 Owner / 管理员身份而对个人规则豁免。
</Note>

<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>

  <Card title="产物" icon="folder-open" href="/zh/ai-sre/artifacts">
    自动化运行产出的报告如果被发布，会作为产物沉淀在产物库里，可长期查看与分享。
  </Card>
</CardGroup>
