内测功能:AI SRE 目前处于内测阶段,专业版及以上用户可申请免费试用。请通过 AI SRE 内测申请表 提交申请,审核通过后将开通白名单;内测期间功能与界面可能调整。
概述
Apps 是管理「已授权的外部应用」的地方。每个外部应用以一张应用卡片呈现——你在它的卡片上完成授权、管理安装、并随时启停或撤销。 Apps 下目前有 GitHub 与 GitLab 两个应用,覆盖最常见的代码托管平台。授权其中之一后,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 zone → Uninstall 卸载该安装。然后回到 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 Owner 在 Group Settings → Applications 创建一个归属分组的应用;在 GitLab.com 上,如果你不是任何分组的 Owner,也可以在 User Settings → Applications 创建一个归属你个人账户的应用;实例管理员也可以在 Admin Area → Applications 创建。填入向导给出的 Redirect URI,勾选 Confidential,Scopes 只勾 api。创建后 GitLab 会给出一个 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 卡片下会显示当前连接的实例地址与状态。Manage repos(管理仓库)
Manage repos(管理仓库)
重新打开仓库选择器,勾选新增的分组 / 项目,或取消勾选不再需要的——保存后 AI SRE 的访问范围随即更新。
Disconnect(断开连接)
Disconnect(断开连接)
断开这次连接。Flashduty 会尽力清理为这个账户配置的机器人身份及其名下的令牌;如果某一步清理没有成功,界面会给出提示。断开后该实例的所有访问随即失效,重新连接需要再走一遍 OAuth 授权。
AI SRE 如何在仓库里工作
授权之后你无需任何额外配置。当你在会话里让 AI SRE 处理某个仓库的任务时,它会像一名加入项目的工程师那样工作——先理解,再动手,最后验证。这套行为分别由内置的
github Skill 与 gitlab Skill 约束。
典型动作
- 进入仓库:把仓库 clone 进自己的工作区,并优先阅读仓库自带的约定(
CLAUDE.md、AGENTS.md、README、CONTRIBUTING)。 - 调查变更 / 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 create或glab mr create开一个可评审的 PR / MR,或用gh issue create/glab issue create提一个 issue,并把链接回报给你。
- 绝不强推(
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 在仓库里的工作方式。