> ## 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 会话承载您与 Agent 的一次完整对话，包含消息、流式响应、工具调用与产物；本文介绍会话的新建与管理、消息发送、产物预览、会话 Fork、上下文压缩、团队绑定与会话数据导出。

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

## 概述

***

会话（Session）是您与 AI SRE 的一次完整对话。它承载您发送的每一条消息、Agent 的流式回复、过程中的工具调用，以及 Agent 产出的产物（Artifacts，例如代码、报告、图表或 Skill 压缩包）。

每个会话相互独立，拥有自己的上下文、绑定的团队与运行环境。您在左侧边栏切换会话，在中间的对话区收发消息、查看回复与产物。

<Note>
  会话之间彼此隔离：上下文、绑定团队、运行环境互不影响。切换会话不会中断正在运行的回合——AI SRE 会持续把进展写入会话，您返回时可继续看到流式输出。
</Note>

## 新建与管理会话

***

左侧边栏是会话的统一入口。点击 **新对话** 即可开启一个全新会话；列表按最近活动倒序排列，初始显示最近的若干条，更多历史通过 **显示更多** 逐步展开。

### 搜索与筛选

<Steps>
  <Step title="搜索对话">
    顶部搜索框按会话名称过滤；无结果时显示 **未找到匹配对话**。
  </Step>

  <Step title="按范围 / 状态 / 活动筛选">
    点击列表右上角的 **筛选** 图标打开筛选面板，按下列维度组合过滤；当存在非默认筛选时，筛选按钮上会出现一个小圆点提示。
  </Step>
</Steps>

筛选面板支持的维度：

| 维度   | 可选值                     | 说明                                                                                      |
| ---- | ----------------------- | --------------------------------------------------------------------------------------- |
| 范围   | 全部 / 个人 / 团队            | 选择 **团队** 后可在 **全部团队 / 我的团队 / 指定团队** 之间切换，默认 **我的团队**；只有切到 **指定团队** 才会展开内联列表，可搜索并多选具体团队 |
| 状态   | 活跃 / 归档 / 全部            | 默认仅显示 **活跃** 会话；切到 **归档** 查看已归档会话                                                       |
| 最近活动 | 全部 / 24 小时 / 7 天 / 30 天 | 按会话最近一次活动时间收窄结果                                                                         |

面板底部提供 **重置**（恢复默认筛选）与 **完成**（关闭面板）。

### 会话可见性与操作权限

会话以账户为硬边界，跨账户永远不可访问。在同一账户内，个人会话和团队会话的读取、继续对话与管理权限不同：

| 会话类型        | 可读取 / 继续对话      | 可重命名、归档、删除或关联故障             |
| ----------- | --------------- | --------------------------- |
| 个人会话（未绑定团队） | 仅创建者本人          | 仅创建者本人                      |
| 团队会话（绑定团队）  | 同账户内拿到会话 ID 的成员 | 会话创建者、账户 Owner / 管理员、或该团队成员 |

置顶是个人偏好，不会修改会话本身；只要您有权读取这条会话，就可以为自己置顶或取消置顶。账户 Owner / 管理员可以管理团队会话，但不能读取或管理其他成员的个人会话。

### 单条会话操作

将鼠标悬停在会话行上，会显示置顶与归档操作；置顶的会话在名称左侧常驻一个图钉标记。

| 操作          | 入口          | 说明                             |
| ----------- | ----------- | ------------------------------ |
| 置顶对话 / 取消置顶 | 行内悬停的图钉按钮   | 置顶会话排在列表前列                     |
| 归档对话 / 取消归档 | 行内悬停的归档按钮   | 归档后默认从活跃列表隐藏，可在筛选中切到 **归档** 找回 |
| 重命名         | 对话标题处点击直接编辑 | 回车或失焦提交，Esc 取消；名称最长 60 字       |

新会话无需手动命名：第一回合结束后，系统会根据会话内容自动生成标题（`POST /safari/session/generate-name`）；在生成完成前，会先用你的第一条消息派生一个临时标题占位，避免侧边栏长时间停在「未命名」。你随时可以**重命名**来覆盖自动生成的标题（标题最长 60 字）。

<Tip>
  在会话行上停留片刻，会弹出工具提示，显示完整会话名、所属团队与精确时间——便于在名称被截断时确认这是不是您要找的会话。
</Tip>

### 列表状态指示

每行右侧用一个互斥标记表达当前状态：

| 标记        | 含义                                   |
| --------- | ------------------------------------ |
| 旋转的圆圈     | 该会话的 Agent 正在运行（有回合在进行中）             |
| 蓝色小圆点（未读） | Agent 产出了您尚未查看的新内容                   |
| 相对时间      | 以上都没有时，显示最近活动的相对时间（如 `5m`、`3h`、`3d`） |

打开会话即会清除该会话的未读小圆点。

## 发送消息与流式响应

***

在底部输入框输入消息后回车发送。输入框支持 Markdown，并支持以斜杠命令（输入 `/` 调出命令菜单）触发内置 Skill 与命令。

### 附件与上下文引用

<AccordionGroup>
  <Accordion title="上传附件" icon="paperclip">
    点击回形针按钮，或直接拖拽 / 粘贴文件。支持图片、PDF、文本 / Markdown / CSV，以及 Office 文档（Word / Excel / PowerPoint），单个文件最大 **20MB**。单条消息最多上传 **9 个文件**，且全部附件总大小不超过 **50MB**；超出文件数或总大小上限时会分别给出提示。截图可直接在对话中粘贴。
  </Accordion>

  <Accordion title="上下文引用" icon="link">
    从故障、告警、监控规则或主机等页面进入 AI SRE 时，相关对象会作为**引用胶囊**自动嵌入输入框——它是一枚内联的小标签，标明所引用对象的类型——故障、告警事件、告警、监控规则或主机——并随消息一起发送给 Agent，让它直接基于该对象开始分析。点击胶囊可在新标签页打开对应对象；点击胶囊上的关闭按钮即可在发送前移除引用。一条消息可携带多个引用。除了从相关页面自动携带引用外，也可以在任意会话的输入框里直接输入 `@` 触发故障搜索下拉（支持关键词模糊匹配与近期故障列表），选中后插入与自动携带相同的引用胶囊——这是一个随时可用的独立引用入口。
  </Accordion>

  <Accordion title="知识库与 Skill" icon="book">
    会话启动时会按绑定团队自动加载对应的知识库与 Skill；详见下文 <a href="/zh/ai-sre/knowledge">知识库</a> 与 <a href="/zh/ai-sre/skills">Skill</a>。
  </Accordion>
</AccordionGroup>

### 实时流式输出

发送后，Agent 的回复实时流式返回——文本逐字显示，工具调用与思考过程也会即时呈现。

发送瞬间，前端会乐观地把回合标记为「运行中」；约 300ms 后由后端的运行状态确认接管，因此即便您切换页面再回来，运行状态也不会丢失。

<Note>
  回合运行期间，**发送按钮会变为停止按钮**。点击停止会立即中断当前回合：界面随即反馈，被中断的回合会带上「已中断」标记，刷新后依然可见。
</Note>

### 运行中继续输入（排队）

回合运行期间输入框依然可用：您可以继续输入并发送，消息会进入队列，在当前回合结束后依次执行。排队消息以一张可折叠的卡片展示在输入框上方，标题显示排队条数（如「3 条排队」）；队列中的消息可逐条编辑或移除，超过一条时卡片右上角还提供 **全部清空** 一键清空整个队列。

### 运行环境初始化

会话首次运行时，对话流中会出现一张 **运行环境初始化** 卡片，分步展示运行环境（沙箱）的就绪过程：**建立云端容器 → 启动运行时**；若云端模板本身带有启动脚本，新建或重建时还会追加第三个阶段 **运行 setup 脚本**（恢复已有沙箱时不会重跑该脚本）。各阶段串行推进，每次只显示当前正在进行的一步；全部完成后卡片折叠为一行结果，按本次是新建、恢复还是重建分别显示：

| 模式 | 折叠后的提示 | 含义                |
| -- | ------ | ----------------- |
| 新建 | 已初始化会话 | 首次为会话创建全新的云端容器    |
| 恢复 | 已恢复会话  | 复用此前的沙箱，文件保持不变    |
| 重建 | 已重建会话  | 原沙箱已被回收，已创建一个新的容器 |

<Warning>
  当上一个沙箱因空闲被回收时，卡片会给出警示：**原沙箱因闲置 N 分钟被回收 — 已保存的文件被重置**。这意味着此前写入沙箱文件系统的内容已不复存在。请将需要长期留存的产出**保存为 Artifact 或沉淀到知识库**，而不要依赖沙箱内的临时文件。
</Warning>

<Warning>
  若初始化过程中出现错误，卡片会转为 **初始化失败** 的错误态，点击可展开查看各阶段的历史与具体错误信息。此时通常需要重试新建会话，或联系 Flashduty 支持。
</Warning>

## 工具调用与产物

***

Agent 在回合中调用的工具（读写文件、查询监控、执行命令、调用 MCP 工具等）以内联可折叠的形式呈现在对话流中，点击即可展开查看输入与输出，默认折叠以保持对话整洁。

### 任务计划（Todo List）

执行多步骤任务时，Agent 会在对话流中放置一枚可点击的进度徽标（形如「第 X / N 步」，带环形进度指示），点击展开为任务计划清单：每一步都带状态图标（未开始 / 执行中 / 已完成 / 已取消）与优先级标签（高 / 中 / 低）。当 Agent 结束回合但某一步仍处于「执行中」时，该步会呈现为「已暂停」，提示您需要发送新消息才能推进，而不是仍在后台运行。

### Agent 提问

排障过程中，Agent 可能需要您澄清信息，这时会在对话流中插入一张交互式提问卡片：单选（点击选项即自动进入下一题）、多选（勾选后需点击 **确认** / **下一步** 才继续）或自定义文本输入（回车提交）。卡片右上角的 **✕** 按钮可跳过整卡提问（必答题不显示该按钮）；多题批次时会额外显示「第 i / N 题」的翻页控件，可用键盘 ←→ 或点击翻页在题目间切换，切换回已答过的题目会保留之前的选择。支持键盘操作：↑↓ 移动选项、Enter 确认、Esc 跳过。

### 需要授权时

当工具或 MCP 调用因缺少凭证或未完成 OAuth 授权而受阻时，对话流中会内联出现一张 **授权〈资源名〉以继续** 卡片，按授权方式分两种：

* **密钥类**：点击卡片按钮弹出输入框，粘贴 API Key / Token 并保存后任务会自动继续；若配置了帮助链接，卡片会附带「如何获取密钥？」。
* **OAuth 类**：点击 **去授权** 在弹出的授权窗口中完成第三方授权；授权完成后卡片按钮变为 **继续任务**，需要您手动点击才会真正恢复被阻塞的工具调用。

<Note>
  OAuth 授权链接有过期时间；过期后卡片会提示「授权链接已过期，请重新触发任务」，需要重新发起一次任务才能拿到新的授权链接。
</Note>

### 子任务（Subagent）

Agent 委派子任务时，对话中会出现一枚可点击的芯片：展示子任务名称与当前意图，进行中显示旋转图标与独立的停止按钮，结束后显示工具调用数 / Token 用量 / 耗时，失败时显示失败原因；若子任务卡在等待授权，芯片上还会给出可点击的授权链接。点击芯片会在右侧打开一个与主对话并排的子会话面板——主对话区域随之收窄，而不是被弹窗遮挡；面板可展开为占满主区域的全屏视图，也可以收起回并排布局。子任务仍在运行时，面板与芯片上都提供独立的停止按钮，只中断该子任务，不影响主会话。

### Artifacts 预览

Agent 产出的文件会以产物形式提供预览。点击产物即在右侧打开预览面板，按类型渲染：

| 类型                  | 预览方式                                     |
| ------------------- | ---------------------------------------- |
| 代码（多语言）             | 语法高亮 + 行号                                |
| Markdown            | 默认渲染视图，可切换 **源码**                        |
| HTML                | 默认渲染视图（iframe 沙箱），可切换 **源码**             |
| 图片                  | 直接显示；加载失败时给出可重试提示                        |
| PDF                 | 浏览器内置查看器渲染                               |
| Skill 压缩包（`.skill`） | 左侧文件树 + 右侧内容，可整包下载，并可一键 **保存 Skill** 到账户 |

预览面板提供 **复制**、**下载** 与 **关闭** 操作。

<Tip>
  报告类产物（如运营洞察报告）可生成包含 Mermaid 图、图表的 HTML，并在渲染视图中直接查看。运营洞察相关能力见 <a href="/zh/ai-sre/insight">运营洞察报告</a>。
</Tip>

所有已发布的产物也可在左侧导航 **产物** 页统一查看与管理（列表、搜索、按个人 / 团队筛选、重命名、下载与删除），详见 <a href="/zh/ai-sre/artifacts">产物</a>。

### 消息操作

将鼠标悬停在消息上会显示操作按钮：

| 操作   | 适用              | 说明                                                            |
| ---- | --------------- | ------------------------------------------------------------- |
| 复制   | 用户消息 / 产物       | 复制消息或文件内容到剪贴板                                                 |
| 重试   | 用户消息            | 以该消息重新发起回合                                                    |
| 编辑   | 用户消息            | 将该消息内容回填到输入框重新编辑；若当前有回合正在运行会先被中断，编辑期间无法添加附件，发送按钮文案变为 **发送回滚** |
| Fork | 已完成回合的 Agent 回复 | 从这条回复所在的完成回合派生一个新会话，继续尝试另一条排查路径                               |

<Note>
  编辑一条历史消息本质上是一次 **回滚（rewind）** 操作：提交后会从该消息处重新生成对话，这条消息之后的内容会被替换，请确认后再提交。
</Note>

### Fork 会话

当一个回合已经完整结束后，Agent 回复右侧会出现 **Fork** 按钮。点击后会弹出「从之前的消息派生？」对话框：默认沿用源会话的运行环境与归属团队，您也可以在对话框内切换到其他在线的 BYOC Runner，或改绑到个人 / 其他团队；点击 **确认** 后才会从该回复所在的回合派生一个新会话，并自动打开。

Fork 适合在同一段排查上下文上尝试另一条路线：新会话保留截至所选回合为止的对话与工具调用记录；环境与团队默认与源会话一致，但由您在派生对话框中确认或主动切换，而非单纯沿用原绑定。后续回合不会带入新会话。新会话会写入一条「由 Chat 派生」分隔线，点击分隔线可回到原会话的来源位置。

<Note>
  只能从**已经完成**的主会话回合 Fork。源会话仍在运行、所选回合尚未完成，或目标是 Subagent 子会话时，系统会拒绝 Fork。
</Note>

Fork 会话会清理只属于运行中的临时状态，例如当前回合缓存、待挂载状态、未持久化的前端状态与本轮计数；已经持久化在历史中的消息、工具调用、可复用的压缩状态会保留，团队与环境绑定则按您在派生对话框中的选择写入新会话。Fork 后的新会话拥有独立的上下文，之后的消息、压缩与运行结果都不会写回原会话。

### 会话反馈

聊天页头部提供一对会话级反馈按钮 **有帮助** / **没帮助**（拇指向上 / 向下），用于对整个会话的质量打分。

点击 **没帮助** 会弹出一张反馈卡片，可勾选预置原因并补充说明：

| 预置原因    | 说明            |
| ------- | ------------- |
| 诊断/根因错误 | 诊断结论或定位的根因不正确 |
| 没定位到问题  | 没有找到真正的根因     |
| 处置建议不可用 | 给出的处置建议无法落地   |
| 答非所问    | 回复偏离了你的问题     |

卡片底部还有一个自由文本框，可补充具体问题（可选）。提交后反馈通过 `POST /safari/feedback/create` 持久化；重新打开该会话时，之前的评分会自动回填到头部按钮上。

## 上下文压缩

***

随着对话变长，会话上下文会逼近模型的上下文窗口上限。AI SRE 会自动压缩较早的对话历史——把它总结为一段摘要并保留最近内容，从而在不丢失关键信息的前提下腾出上下文空间。

压缩有三种触发方式：

| 方式        | 触发时机                    |
| --------- | ----------------------- |
| 自动（回合开始前） | 回合开始前，上下文占用超过阈值时自动压缩    |
| 自动（回合进行中） | 回合进行中上下文继续增长并越过阈值时再次压缩  |
| 手动        | 您主动通过 `/compact` 命令触发压缩 |

### 您会看到什么

* **压缩进行中**：对话流中出现一行「正在压缩对话上下文…」的状态提示，并显示已用时长与进度，压缩完成后自动消失。
* **压缩完成**：对话保持连贯，无需您介入；最直接的指示是聊天页头部的 **Context** 占用百分比随之下降——它反映当前上下文窗口的利用率，将鼠标悬停可查看具体的 token 用量。
* **无需压缩**：当上下文无需压缩（如对话历史太短、已是压缩态）时，手动触发会给出相应提示，例如「上下文无需压缩」「对话历史太短，无需压缩」。

<Note>
  压缩对您是透明的：您感知到的是一段连续的对话。Agent 在后台保留了被压缩内容的摘要，因此后续回合仍能基于此前的关键结论继续工作。
</Note>

## 选择运行环境

***

新建会话时，输入区除了团队选择器外还有一个独立的 **运行环境** 选择器，用来决定 Agent 的工具、Skill 与 MCP 调用具体在哪里执行。选择器分三段：

| 选项             | 说明                                             |
| -------------- | ---------------------------------------------- |
| 自动（默认）         | 由后端自动选择一个可用环境；无可用项时回退到云端沙箱                     |
| 云端环境           | 使用 Flashduty 托管的云端沙箱（默认模板，或账户 / 团队下已创建的云端环境模板） |
| 指定 BYOC Runner | 从您账户内在线的自托管 Runner 中选择一台，让排障进入您的内网             |

自托管 Runner 会按当前状态展示：离线或从未连接过的 Runner 在列表中会置灰，无法选中；若已选中的 Runner 之后离线，也会阻止发送消息并给出提示。

环境选择在发送第一条消息、创建会话时即固定；如需切换，可参考下文「会话入口类型」中 IM 会话的就地切换能力，或 Fork 出一个新会话。

## 绑定团队

***

新建会话时可以为会话 **绑定团队**。绑定后，会话在启动时会自动加载该团队的知识库、Skill 与 MCP，让 Agent 一开始就具备这个团队的领域上下文与能力。未绑定团队时，会话以账户范围运行。

<Steps>
  <Step title="选择团队">
    在新建会话的输入区通过团队选择器挑选要绑定的团队；您上次的选择会被记住，省去每次重复选择。
  </Step>

  <Step title="自动加载团队上下文">
    会话启动即加载「账户范围 + 绑定团队」的知识库 / Skill / MCP 元数据，Agent 随即可用。
  </Step>

  <Step title="跨团队知识按需挂载">
    当 Agent 需要其它团队的知识时，会按需读取对应团队的知识目录，将该团队的知识与能力作为持久上下文挂载进当前会话——一次挂载在本会话内持续有效。
  </Step>
</Steps>

绑定的团队会随会话保留：重新打开同一会话时，仍是原先绑定的团队；该会话所属团队也会在侧边栏的会话提示中标注。

<Warning>
  故障 / 作战室与团队的自动联动仍在演进中。当前您可以为会话显式 **绑定团队**；后续故障场景下的自动绑定能力会持续完善。
</Warning>

资源的团队作用域（账户范围与团队范围、可见性与编辑权限）规则，详见各资源页面的「作用域」一节。

## 会话入口类型（entry\_kind）

***

每个会话在创建时都带有一个 **入口类型（entry\_kind）**，用于标识本次会话由哪个接入面产生。该字段持久化到数据库，并在创建响应中返回。

| 值            | 来源                            | 说明                               |
| ------------ | ----------------------------- | -------------------------------- |
| `web`        | 控制台                           | 默认值；未传入或传入未知值时自动归一为 `web`        |
| `im`         | IM 平台（飞书 / 钉钉 / 企业微信 / Slack） | 由 IM 渠道自动设置；启用会话的**就地切换**能力（见下方） |
| `api`        | 外部 API 调用                     | 用于程序化集成场景                        |
| `automation` | 自动化流程                         | 由自动化任务触发的会话                      |

通过 `POST /safari/session/create` 创建会话时，可在请求体中传入 `entry_kind`（可选，省略即为 `web`）。`entry_kind` 一经创建不可修改。

<Note>
  `entry_kind=im` 的会话支持**就地切换运行环境与团队范围**——即通过 IM 中的 `/env` 与 `/scope` 命令，在不中断对话的情况下重新绑定 BYOC Runner 或团队。控制台会话（`web`）的环境与团队在创建时固定，不支持就地切换。
</Note>

## 会话数据导出

***

通过 `POST /safari/session/export` 可以将一个会话的全部事件以 **NDJSON**（`application/x-ndjson`）格式流式导出，每行一个 JSON 对象。这一能力适用于审计、归档、离线分析或将会话数据接入外部系统等场景。

### 请求参数

| 字段                  | 类型     | 必填 | 说明                                        |
| ------------------- | ------ | -- | ----------------------------------------- |
| `session_id`        | string | 是  | 要导出的会话 ID                                 |
| `include_subagents` | bool   | 否  | 为 `true` 时递归包含所有子 Agent 会话的事件流；默认 `false` |

### 响应格式

响应的 `Content-Type` 为 `application/x-ndjson`，**第一行始终**是 `session_meta` 类型的会话元数据信封，后续各行为会话事件。启用 `include_subagents=true` 时，每遇到一条 `subagent_dispatch` 类型的行，其后紧跟该子会话的完整事件流，子会话同样以自己的 `session_meta` 行作为起始。

```
{"type":"session_meta","session_id":"...","app_name":"..."}   // 第一行：会话元数据
{"type":"message","..."}                                       // 后续：事件行（类型依内容而异）
{"type":"subagent_dispatch","child_session_id":"..."}          // 子 Agent 派发标记
{"type":"session_meta","session_id":"<child>","..."}           // 子会话元数据
{"type":"message","..."}                                       // 子会话事件
```

<Warning>
  若流式传输已开始后发生错误，服务器**无法**切换回标准 JSON 错误包。此时会在流末尾追加一行 JSON 编码的错误对象，消费方需检测该行以判断流是否完整。
</Warning>

**权限**：导出端点使用与发送消息相同的权限门控（`CanChatSession`），即要求调用方具备该会话的消息收发权限，单纯的只读访问权限不够。个人会话只能由创建者导出；团队会话可由同账户内具备会话访问能力的成员导出。

## 相关页面

***

<CardGroup cols={2}>
  <Card title="概述" icon="robot" href="/zh/ai-sre/overview">
    了解 AI SRE 的定位、能力与适用场景。
  </Card>

  <Card title="使用洞察" icon="gauge-high" href="/zh/ai-sre/insight">
    基于会话数据生成团队的故障处理与运营洞察。
  </Card>

  <Card title="管理知识" icon="book" href="/zh/ai-sre/knowledge">
    为会话提供领域知识，按团队加载与跨团队按需挂载。
  </Card>

  <Card title="Skill" icon="wrench" href="/zh/ai-sre/skills">
    用斜杠命令调用的可复用 Skill。
  </Card>

  <Card title="MCP（外部工具）" icon="plug" href="/zh/ai-sre/mcp">
    通过 MCP 连接外部系统，扩展 Agent 的工具能力。
  </Card>

  <Card title="IM 平台" icon="comment-dots" href="/zh/ai-sre/im">
    在 Slack / 飞书 / 钉钉 / 企业微信里 @ Agent 排障，作战室自动诊断。
  </Card>
</CardGroup>
