内测功能:AI SRE 目前处于内测阶段,仅对受邀账户开放。如需参与白名单测试,请联系 Flashduty 商务团队申请开通;内测期间功能与界面可能调整。
概述
App 是一个被授权接入的外部应用——目前只有 GitHub 一个。授权一个 GitHub App 后,AI SRE 就能在会话里直接进入你的 GitHub 仓库工作:读懂并探索代码、调查最近的变更 / 提交 / PR、从变更工单追溯一个 PR、回答关于代码库的问题,并在你需要时改一处缺陷、开一个 PR 或提一个 issue。 它的实现方式很朴素:Agent 在自己的沙箱里用原生
gh 与 git 命令操作你的仓库,凭一枚 Safari 在每个回合临时下发、且仅限授权仓库的 GitHub App 安装令牌。Agent 自始至终看不到、也不输入这枚令牌。
位置
进入 插件 → Apps。Apps 是插件区的第一个、也是默认标签页——打开插件区即落在这里。
查看 Apps 标签页需要相应权限;没有权限时该标签页不可见。授权、撤销、启用 / 禁用各自还需对应的操作权限——无权限时对应按钮以禁用态显示。
连接 GitHub 组织
在 Apps 页的 GitHub 卡片上发起授权,整个安装在一个弹窗里通过 GitHub 官方的安装页完成,回调后自动刷新列表。
在 GitHub 上选择组织与仓库
弹窗加载 GitHub App 的安装页。选择要安装到的组织(或个人账户),并授予仓库范围——所有仓库(All repositories)或仅选定仓库(Only select repositories)。授予的仓库集合决定了 AI SRE 之后能访问哪些仓库。
若你不是该组织的所有者,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 zone → Uninstall 卸载该安装。然后回到 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/issues为写,metadata为读。 - Agent 永不接触令牌:Agent 看不到、不输入、不粘贴、也不回显令牌。
echo $GH_TOKEN、env、printenv、或把令牌拼进 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.md、AGENTS.md、README、CONTRIBUTING)。 - 调查变更 / PR:
git log、gh pr list、gh 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 在仓库里的工作方式。