跳转到主要内容
内测功能:AI SRE 目前处于内测阶段,仅对受邀账户开放。如需参与白名单测试,请联系 Flashduty 商务团队申请开通;内测期间功能与界面可能调整。

概述


App 是一个被授权接入的外部应用——目前只有 GitHub 一个。授权一个 GitHub App 后,AI SRE 就能在会话里直接进入你的 GitHub 仓库工作:读懂并探索代码、调查最近的变更 / 提交 / PR、从变更工单追溯一个 PR、回答关于代码库的问题,并在你需要时改一处缺陷、开一个 PR 或提一个 issue。 它的实现方式很朴素:Agent 在自己的沙箱里用原生 ghgit 命令操作你的仓库,凭一枚 Safari 在每个回合临时下发、且仅限授权仓库的 GitHub App 安装令牌。Agent 自始至终看不到、也不输入这枚令牌。
本页的 GitHub AppMCP 里以 GitHub 为例的 MCP 服务器两种不同的机制,不要混淆:
  • GitHub App(本页):Agent 在自己的沙箱里直接跑 gh / git 操作你的仓库——clone、git loggh pr diff、开 PR……就像一名工程师在终端里干活。
  • MCP 服务器:Agent 通过 工具调用访问一台托管的 MCP 服务器,由那台服务器代为执行操作并返回结果。
一个是「Agent 在 shell 里直接跑 git/gh」,一个是「Agent 调用远端 MCP 服务器的工具」。本页只讲前者。

位置


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

连接 GitHub 组织


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

发起授权

在 GitHub 卡片上点击 去授权(如果该组织已有安装,则按钮显示为 关联新的组织)。后端返回该 GitHub App 的安装链接,前端随即打开一个约 1024 × 760 的弹窗。
2

在 GitHub 上选择组织与仓库

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

GitHub 回调,前端刷新

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

安装管理


每授权一个组织,就在 GitHub 卡片下多出一行安装记录。每行展示:
元素说明
组织名安装所在的 GitHub 组织 / 账户登录名(github_target
状态点一个彩色小圆点 + 文案:已连接active)、已暂停suspended)、已撤销revoked
仓库数该安装当前授予的仓库数量({{n}} 个仓库
卡片右上角的开关在「启用」与「禁用」之间切换,对应把该 App 的安装在 active ↔ suspended 之间整体迁移。禁用 = 暂停:暂停后不再下发安装令牌,Agent 无法再访问这些仓库,但 GitHub 上的安装本身保留,可随时一键重新启用、无需再走一遍 GitHub 授权。一个 App 只要还有至少一个已连接的安装,就视为「已启用」。
在某一行点击 撤销,弹出确认对话框——「撤销组织「…」的授权?撤销后,AI SRE 将无法再访问该组织的仓库。可随时重新授权。」确认后该安装置为 已撤销,从此不再下发令牌;已缓存的令牌也会在其不超过 1 小时的有效期内自然过期。撤销后该安装从卡片上隐去,重新授权同一组织即可恢复。
暂停撤销的区别:暂停是临时关掉、保留 GitHub 安装、可一键恢复;撤销是断开这次授权、需要重新走 GitHub 授权才能再用。

新增或调整仓库授权

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

AI SRE 如何使用它


授权之后,你无需做任何额外配置。当你在会话里让 AI SRE 处理某个仓库的任务时,它会自己在沙箱里干活——这套行为由内置的 github Skill 约束。

令牌:短时、仓库级、最小权限

  • 每回合临时下发:Safari 在每个回合把一枚 GitHub App 安装令牌注入到 bash 环境里,并把 git 接到 gh 的凭证助手上——gh 自动读取该令牌,git 的 HTTPS clone / push 直接可用,不写入 .git/config 或任何 URL。令牌在回合结束时自动过期(缓存有效期 ≤ 1 小时),无需手动吊销。
  • 最小权限:令牌只带必要的权限——contents / pull_requests / issuesmetadata
  • Agent 永不接触令牌:Agent 看不到、不输入、不粘贴、也不回显令牌。echo $GH_TOKENenvprintenv、或把令牌拼进 URL(https://x:TOKEN@github.com/...)这类操作都会被 bash 守卫拦下,以防令牌泄漏进对话记录。
  • 范围只限授权仓库:令牌的作用域被限制在安装时授予的那些仓库。对一个未授予的仓库,访问会返回 404 / 403——这时 Agent 会告诉你「请把该仓库加入安装」,而不是试图绕过范围。
云会话用账户里这个 GitHub App 的安装。如果 gh auth status 报告未登录,说明账户尚未安装 GitHub App、或没装到目标仓库上——Agent 会提示你到 插件 → Apps 安装 GitHub App 并授予对应仓库,不会向你索要令牌。BYOC 会话则不同:它用 Runner 宿主机上自带的 gh(你在宿主机上 gh auth login,或在 Runner 环境里设置 GH_TOKEN),而不用这枚 App 令牌。运行环境的区别见 运行环境(BYOC)

典型动作

Agent 像一名加入项目的工程师那样工作——先理解,再动手,最后验证:
  • 进入仓库:把仓库 clone 进自己的工作区(gh repo clone OWNER/REPO),并优先阅读仓库自带的约定(CLAUDE.mdAGENTS.mdREADMECONTRIBUTING)。
  • 调查变更 / PRgit loggh pr listgh pr view <number>gh pr diff <number>gh search prs——用来追溯故障 / 变更工单里提到的 PR、看某次发布包含了什么、在决策前读懂一段 diff。
  • 改动并提交:新建分支、用最小的 diff 改动、gh pr create 开一个可评审的 PR,或 gh issue create 提一个 issue,并把 PR / issue 链接回报给你。

硬性护栏

这些规则 Agent 绝不逾越:
  • 绝不强推git push --force / -f)。
  • 绝不直接推默认分支——一律走「分支 + PR」。
  • 一个 PR 只装一处逻辑变更,保持可评审;改动一旦膨胀超出聚焦的 diff,就停下把分析交回给你。
  • 绝不删分支、关闭他人的 issue / PR,或改动仓库设置;绝不提交密钥、凭证或构建产物。

权限与范围


GitHub App 的授权撤销账户级操作(team_id = 0)。账户是唯一的安全边界,团队在这里只是归属 / 审计标记:
  • 谁能授权 / 撤销 / 启用 / 禁用:账户内任何具备相应操作权限的成员,都可以授权新组织、撤销任意安装、或启停整个 App——这些操作都作用于账户内的全部安装,不按团队收窄。
  • 运行时令牌解析也是账户级:会话在用到某仓库时,从账户内任意一个已连接的安装里解析并铸造令牌(ResolveSessionToken 不按团队过滤)。账户内的成员共享同一套授权——这与 AI SRE 其它资源「使用 = 账户级、归属 = 团队标记」的模型一致。

相关页面


MCP(外部工具)

另一种接入外部能力的机制:通过工具调用访问托管的 MCP 服务器。

控制台

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

BYOC

BYOC 会话用 Runner 宿主机自带的 gh,而非账户的 GitHub App 令牌。

Skill

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