Skip to main content
内测功能:AI SRE 目前处于内测阶段,专业版及以上用户可申请免费试用。请通过 AI SRE 内测申请表 提交申请,审核通过后将开通白名单;内测期间功能与界面可能调整。

概述


Apps 是管理「已授权的外部应用」的地方。每个外部应用以一张应用卡片呈现——你在它的卡片上完成授权、管理安装、并随时启停或撤销。 Apps 下目前有 GitHubGitLab 两个应用,覆盖最常见的代码托管平台。授权其中之一后,AI SRE 就能在会话里直接进入你的代码仓库工作:读懂并探索代码、调查最近的变更 / 提交 / PR(GitLab 里是 MR)、从一张变更工单追溯到对应 PR / MR、回答关于代码库的问题,并在你需要时改一处缺陷、开一个 PR / MR 或提一个 issue——全程用原生 gh / glab / git,就像一名工程师在终端里干活。

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


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 标签页需要相应权限;没有权限时该标签页不可见。授权、断开 / 撤销、启用 / 禁用各自还需对应的操作权限——无权限时对应按钮以禁用态显示。

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 在仓库里的工作方式。