Skip to main content
公测功能:AI SRE 正在公测,面向 On-call 专业版及以上账户灰度开放,公测期间不单独收费;如需开通,请填写 AI SRE 公测申请表。功能与界面可能继续调整。

概述


Apps 是管理「已授权的外部应用」的地方。每个外部应用以一张应用卡片呈现——你在它的卡片上完成授权、管理安装、并随时启停或撤销。 Apps 包含 GitHubGitLabKubernetes App。GitHub 与 GitLab 用于授权代码仓库:AI SRE 可以在会话中读代码、调查变更 / 提交 / PR(GitLab 中为 MR),并按需修改缺陷、创建 PR / MR 或 issue。Kubernetes App 则把指定 Kubernetes 集群接入 AI SRE,并通过配置的 namespace 与权限边界限制 Agent 的操作范围。

主要场景:让云端沙箱访问你的仓库


AI SRE 的会话默认运行在 Flashduty 云端沙箱里。沙箱是干净、隔离的临时环境,不带你的任何 git 登录凭证——这正是 App 要解决的问题。授权 GitHub App 或 GitLab App 后,沙箱里的 Agent 才能 clone 你的仓库、读 diff、开 PR / MR,而你无需向它交出任何密码或 token;它的访问被限制在你授权的那些仓库,且仅为完成任务所需的最小权限。这是这两个 App 的主要用途。
BYOC(自托管 Runner)一般用不到它。 Runner 跑在你自己的机器上,那台机器通常已经配好了 gh / glab / git 凭证(你平时就在上面操作仓库)。这种情况下 Agent 直接用宿主机自带的凭证即可,不需要再授权对应的 App。(若宿主机恰好没配相应凭证,授权 App 同样能让 BYOC 会话用上。)运行环境的差异见 运行环境(BYOC)

位置


进入 插件 → Apps。Apps 是插件区的第一个、也是默认标签页——打开插件区即落在这里。
查看 Apps 标签页需要相应权限;没有权限时该标签页不可见。授权、断开 / 撤销、启用 / 禁用各自还需对应的操作权限——无权限时对应按钮以禁用态显示。

Kubernetes App


Kubernetes App 将集群中的 Agent 接入 AI SRE。创建后,AI SRE 可以在授权范围内查询集群信息并执行可用的 Kubernetes 工具;它只能访问你在配置中指定的 namespace 和权限级别。

创建并安装

1

创建 Kubernetes App

进入 插件 → Apps → Kubernetes App,点击 创建 Kubernetes App。填写集群名称,并选择范围:共享 可供账户内所有会话使用;团队 可供该团队会话及该团队成员的个人会话使用。同一范围内的集群名称不能重复。
2

设置 namespace 与权限

选择 全部 namespace指定 namespace。全部 namespace 会把同一权限应用到当前和未来的 namespace;指定 namespace 可以为每个 namespace 单独选择 只读读取 + 有限修改完全权限。不填写指定 namespace 时,Agent 只能读取集群基础元数据。指定 namespace 的完全权限可对该 namespace 中的全部资源执行所有操作,集群基础元数据仍保持只读;全部 namespace 的完全权限会授予 cluster-admin,还可操作集群级资源和集群 RBAC。
3

执行安装命令

保存后复制控制台生成的安装命令,并在目标集群中执行。安装命令会过期;过期后重新打开安装配置或查看 Manifest 生成新命令,无需轮换 Token。
修改 namespace 或权限后,必须重新执行安装命令,集群中的 RBAC 才会更新。选择 读取 + 有限修改 前,请确认该 namespace 中允许 AI SRE 执行相应操作。完全权限 可以读取、创建、修改和删除资源,也可以读取和修改 ConfigMap、Secret、进入容器、Attach、端口转发或修改 namespace 内 RBAC;仅在确有必要且已完成权限评估时使用。

编辑与撤销

你可以在 Kubernetes App 列表中编辑集群名称、范围和 namespace 权限。撤销会立即使连接和 Token 失效,但不会自动删除集群中的 Agent 与 RBAC。控制台会提供卸载命令;请在对应集群执行它。该命令只删除当前 Kubernetes App 的资源,不会删除共享的 flashduty namespace。

GitHub 应用


下面先以 GitHub 为例,介绍授权、安装管理与仓库授权的调整;GitLab 的流程见下一节。

连接 GitHub 组织

在 GitHub 卡片上发起授权,整个安装在一个弹窗里、通过 GitHub 官方的安装页完成,回调后列表自动刷新。
1

发起授权

在 GitHub 卡片上点击 去授权(如果该 App 已有安装,按钮显示为 更多仓库,带一个 + 号图标)。前端随即打开一个弹窗,加载 GitHub 官方的安装页。
2

在 GitHub 上选择组织与仓库

选择要安装到的组织(或个人账户),并授予仓库范围——所有仓库(All repositories)仅选定仓库(Only select repositories)。授予的仓库集合决定了 AI SRE 之后能访问哪些仓库。
3

确认后自动刷新

你在 GitHub 上确认后,弹窗自动关闭,Apps 页提示 授权成功 并刷新安装列表,新组织随即出现。
若你不是该组织的所有者,GitHub 会把请求转交给组织所有者走「请求安装」的审批流程;审批通过后该安装才会激活。安装到哪个组织、授予哪些仓库,完全由 GitHub 侧的安装页决定,Flashduty 不在中间代为选择。

安装管理

每授权一个组织,就在 GitHub 卡片下多出一行安装记录。每行展示:
卡片右上角的开关在「启用」与「禁用」之间切换。禁用 = 暂停:暂停后 Agent 无法再访问这些仓库,但 GitHub 上的安装本身保留,可随时一键重新启用、无需再走一遍 GitHub 授权。一个 App 只要还有至少一个已连接的安装,就视为「已启用」。
在某一行点击 撤销,确认后该安装置为 已撤销,AI SRE 从此不再能访问该组织的仓库。撤销后该安装从卡片上隐去,重新授权同一组织即可恢复。
暂停撤销的区别:暂停是临时关掉、保留 GitHub 安装、可一键恢复;撤销是断开这次授权、需要重新走 GitHub 授权才能再用。

新增或调整仓库授权

某个组织已经连接好了,但你想让 AI SRE 访问该组织里更多的仓库——不必撤销重连。在 插件 → Apps 里,对该组织再次点击 更多仓库(或直接打开该 App 在 GitHub 上的 Configure 页),GitHub 会展示 Repository access 选择界面;勾选你要新增的仓库并保存,AI SRE 会自动重新同步已授予的仓库列表,新仓库无需重建连接就能用。
兜底:如果新加的仓库在会话里仍报「无法访问 / 404 / 403」,到 GitHub 上打开该 App 的页面(如 github.com/apps/flashduty)→ Configure → 选中对应组织 → 拉到底部的 Danger zoneUninstall 卸载该安装。然后回到 Flashduty 的 插件 → Apps 重新授权该组织,并在这一次里一并勾选你需要的全部仓库。

GitLab 应用


GitLab 应用连接一个 GitLab 实例——不管是 GitLab.com极狐 GitLab(jihulab.com SaaS 或私有化发行版),还是你自己的其他自建(Self-managed)实例,连接方式都完全一样:先在该实例上注册一个 OAuth 应用,再完成授权。授权之后,AI SRE 就能在授权范围内的仓库里读代码、调查变更 / MR、并在你需要时提 issue、开 MR。和 GitHub 一样,你不需要粘贴任何个人令牌:Flashduty 通过 OAuth 拿到授权后,会为你的账户配置一个专属的机器人身份来完成实际访问。

连接 GitLab 实例

1

选择要连接的 GitLab 实例

在 GitLab 卡片上点击 Connect,三选一:
  • GitLab.com——地址固定为 https://gitlab.com,无需填写;
  • 极狐 GitLab——地址固定为 https://jihulab.com,无需填写;
  • 自建实例 / Self-managed——需要填写实例的根地址:浏览器地址栏里群组 / 项目路径之前的那部分,例如 https://gitlab.example.com;如果实例部署在子路径下,要带上子路径,例如 https://example.com/gitlab
2

选择连接环境

连接和重新授权 GitLab 时的网络请求会从这里选择的环境发出。GitLab.com、极狐 GitLab 等公网实例可使用默认云端环境;只有内网可访问的自建实例,请选择能够访问它的 BYOC Runner。系统不会在 Runner 离线或不可达时自动切换环境,请选择可用环境后重新发起连接或授权。
3

在该实例上注册一个 OAuth 应用

连接向导会展示一个可复制的 Redirect URI。带着它去你填写的 GitLab 实例创建一个 OAuth 应用:group OwnerGroup Settings → Applications 创建一个归属分组的应用;在 GitLab.com 上,如果你不是任何分组的 Owner,也可以在 User Settings → Applications 创建一个归属你个人账户的应用;实例管理员也可以在 Admin Area → Applications 创建。填入向导给出的 Redirect URI,勾选 Confidential,Scopes 只勾 api。创建后 GitLab 会给出一个 Application ID 和一个 Secret,回到连接向导粘贴这两项。
这一步对每一个 GitLab 实例都一样——GitLab.com、极狐 GitLab(jihulab.com SaaS 及其私有化发行版)、或任何其他自建实例:地址不同,注册 OAuth 应用、粘贴 Application ID / Secret 的步骤完全相同。
4

在弹出的窗口中完成 GitLab 授权

这一步会显示这次要用哪个实例的哪个 OAuth 应用来授权;如果想换一个应用,点击 更换 OAuth 应用 回到上一步重新注册。确认无误后,向导打开一个弹窗,跳转到 GitLab 的官方授权页;用你的 GitLab 账户登录并确认授权。授权完成后弹窗自动关闭,向导进入下一步。
5

选择要授权的分组与项目

AI SRE 展示一个仓库选择器,列出你拥有 Owner 角色的分组你拥有 Maintainer 角色的项目。勾选想让 AI SRE 访问的分组 / 项目并保存——勾选一个分组即覆盖其下的所有项目,包括之后新建的项目。
一个账户同一时间只能连接一个 GitLab 实例(GitLab.com 或某一个自建实例)。要换成另一个实例,需要先断开当前这个。

机器人身份与权限

保存仓库选择后,Flashduty 会在这些分组 / 项目下为账户配置一个专属机器人(优先使用服务账号;实例不支持服务账号时,回退为分组 / 项目级的访问令牌),供 AI SRE 会话使用。无论哪种方式,机器人的权限都被限制在 Developer 级别,和你在 GitLab 里能授予的最小权限一致。令牌会在到期前自动轮换,无需你手动处理。 如果这个 GitLab 实例不支持服务账号,机器人会回退为分组 / 项目级令牌——这类令牌本身只能绑定单个分组或项目,因此仓库选择器会限制为最多选择一个分组或一个项目。若你在多选状态下勾选了多个分组 / 项目并保存,Flashduty 会提示「该 GitLab 实例不支持服务账号,请仅选择一个分组或一个项目后重试」,并把选择器切换为单选模式:之后再勾选新的分组或项目会自动清空其余已选项,需要重新只保留一个分组或一个项目后再次保存。
GitLab.com 上的一条限制:GitLab 官方规定,分组 / 项目级访问令牌只在付费(非免费、非试用)命名空间上可用。连接 GitLab.com 本身不受影响,但如果你要授权的分组 / 项目所在命名空间是免费版或试用版,机器人配置会失败,界面上会展示一条来自 GitLab 的说明(“provisioning_denied”)。把对应命名空间升级到付费版后重新授权即可。

管理已连接的实例

GitLab 卡片下会显示当前连接的实例地址与状态。
重新打开仓库选择器,勾选新增的分组 / 项目,或取消勾选不再需要的——保存后 AI SRE 的访问范围随即更新。
断开这次连接。Flashduty 会尽力清理为这个账户配置的机器人身份及其名下的令牌;如果某一步清理没有成功,界面会给出提示。断开后该实例的所有访问随即失效,重新连接需要再走一遍 OAuth 授权。

AI SRE 如何在仓库里工作


授权之后你无需任何额外配置。当你在会话里让 AI SRE 处理某个仓库的任务时,它会像一名加入项目的工程师那样工作——先理解,再动手,最后验证。这套行为分别由内置的 github Skill 与 gitlab Skill 约束。 典型动作
  • 进入仓库:把仓库 clone 进自己的工作区,并优先阅读仓库自带的约定(CLAUDE.mdAGENTS.mdREADMECONTRIBUTING)。
  • 调查变更 / PR / MR:用 git log,以及 GitHub 上的 gh pr list / gh pr view / gh pr diff / gh search prs,或 GitLab 上等效的 glab mr list / glab mr view / glab mr diff,追溯故障 / 变更工单里提到的 PR / MR、看某次发布包含了什么、在决策前读懂一段 diff。
  • 改动并提交:新建分支、用最小的 diff 改动,用 gh pr createglab mr create 开一个可评审的 PR / MR,或用 gh issue create / glab issue create 提一个 issue,并把链接回报给你。
硬性护栏——这些规则 Agent 绝不逾越:
  • 绝不强推git push --force),绝不直接推默认分支——一律走「分支 + PR / MR」。
  • 一个 PR / MR 只装一处逻辑变更,保持可评审;改动一旦膨胀超出聚焦的 diff,就停下把分析交回给你。
  • 绝不删分支、关闭他人的 issue / PR / MR,或改动仓库设置;绝不提交密钥、凭证或构建产物。
如果在云会话里 Agent 报告无法访问仓库,通常是账户尚未授权对应的 App(GitHub 或 GitLab)、或没有把目标仓库 / 分组纳入授权范围——到 插件 → Apps 补充授权即可。Agent 不会向你索要任何令牌。

权限与范围


GitHub App 与 GitLab App 的授权撤销 / 断开都是账户级操作。账户是唯一的安全边界,团队在这里只是归属 / 审计标记:账户内任何具备相应权限的成员都可以完成授权、撤销 / 断开、或启停整个 App;会话在用到某仓库时,也从账户内当前有效的安装取得访问凭证。账户内的成员共享同一套授权——这与 AI SRE 其它资源「使用 = 账户级、归属 = 团队标记」的模型一致。 两者的范围模型略有差别:GitHub App 允许同一账户安装多个组织,各自独立启停 / 撤销;GitLab App 每个账户同一时间只能连接一个 GitLab 实例——要切换到另一个实例,需要先断开当前这个。

相关页面


MCP(外部工具)

通过 Model Context Protocol 接入外部工具与数据源。

控制台

在会话中观察 Agent 如何 clone 仓库、读 diff、开 PR / MR。

运行环境(BYOC)

BYOC 会话用 Runner 宿主机自带的凭证,一般不需要 GitHub / GitLab App。

Skill

内置的 github / gitlab Skill 约束 Agent 在仓库里的工作方式。