跳到正文
打开 Stamp

权限申请 ​

在 Stamp 里,agent 只能做 server 的 GitHub App 允许的事。需要更多权限时,它会提一张权限申请,有人做了决定才会生效。

这一页写给负责审批的人。

去哪里看等你处理的申请 ​

  • 左侧导航里的「权限申请」(/requests)。「待我处理」是要你决定的,「我发出的」是你自己提的。可以在「待处理」和「全部」之间切换。
  • 顶栏的盾牌按钮会显示有几条在等你,比如「3 条申请等你处理」。它会把你登录的所有 server 都算上,列表底部会告诉你其余的在哪个 server(比如「前端组 还有 2 条等你处理」)。
  • 一般来说,agent 提完申请也会把拿到的链接发给你,点开就是那张申请。

每张申请都写明由谁处理:某一个人,或者「本服务器的所有者或管理员」。只有申请人和被请求审批的人能打开它,其他人看到的是「没有这个申请」。

申请页面 ​

页面顶部一句话说清楚:谁、要什么、在哪个仓库上,旁边是状态:「等待审批」「已批准」「已完成」「已拒绝」「已过期,未处理」或「已关闭」。

如果由你来决定,会看到一张标题为「等待你审批」的卡片,按钮都在里面。下面的「流程」显示申请走到哪一步,「动态」记录谁在什么时候做了什么。右侧列出申请人、审批人、仓库和时间。

申请的种类 ​

以他人身份操作 ​

agent 想在某个仓库上以你的身份干活,比如 server 的 GitHub App 管不到那个仓库的时候。它会用你的 GitHub 账号推送代码、开 PR,Stamp 会把这些操作标成「via act-as」加上你的用户名。只有申请里点名的那个人能批准。

批准时你要选:

  • 「允许的操作」:「推送代码」「创建拉取请求」「其他拉取请求写操作」(以你的身份评论、编辑、审阅、批准和合入)默认都勾上了。「按需启动 workflow」永远不会默认勾选,需要的话自己勾。
  • 「适用范围」:「仅此仓库:…」、server 的 GitHub App 覆盖的该 owner 下所有仓库,或 App 覆盖的所有仓库。申请人建议的那项会标出来。
  • 「授权有效期」:「7 天」「30 天」(默认)「90 天」或「直到我撤销」。

授权永远不会超出你自己 GitHub 账号在这个仓库上的权限,每次使用都有记录。批准之前,你要先在设置里连接自己的 GitHub 账号。如果 Stamp 的 GitHub App 还没装到这个仓库,页面会先给出「安装 GitHub App」。

这类申请等一天。一天内没人处理,就会变成「已过期,未处理」,agent 需要重新提。

也可以点名你们联合里另一个 server 上的人。对方在自己的 server 上批准,这时授权只覆盖这一个仓库。

允许 agent 启动工作流 ​

agent 申请让 server 上的 agent 可以启动某个仓库的某个 workflow 文件。server 的任意一位所有者或管理员点「允许」即可。没有有效期:允许之后,server 上每个 agent 都能随时启动它。agent 只能在默认分支上启动,而且这个分支必须要求走 PR。想收回,用 stamp workflow disallow。

服务器的 GitHub App ​

成员请 server 的所有者和管理员设置 GitHub App,或者把 App 扩展到某个仓库。所有者或管理员在 设置 › GitHub App 里弄好,再点「标记为已处理」。App 覆盖到那个仓库后,Stamp 也会自动把它处理掉。拒绝这类申请必须写原因,申请人会看到。

安装 GitHub App ​

agent 请某个人把 Stamp 的 GitHub App 装到一个仓库上。页面上有「安装 GitHub App」链接。装好后点「重新检查」;打开这个页面时也会自动检查一次。App 装到仓库上,申请就完成了。

还有一种相关的「设置 GitHub App」:把某个 GitHub 组织的 App 设置交给一个点名的人。只有这个 GitHub 组织的所有者才能创建它的 App。

运行一次仓库管理 API 调用 ​

agent 的仓库管理调用(规则集、分支保护、环境或仓库设置)被 Stamp 拦下后,它可以请一个人把这次调用原样运行一次。申请发给 server 的所有者和管理员,或者点名的某一个人。

页面上会列出完整的方法、路径和请求体。点「以我的身份运行」,Stamp 会用你自己的 GitHub 账号运行一次,前提是 GitHub 显示你是这个仓库的管理员。运行完不会留下任何权限。如果这次调用会改变谁能看到这个仓库,页面会提醒你,并逐项列出要改的值。这类申请等 7 天。

联合相关的申请 ​

  • 「加入联合」:某个 server 申请加入联合,由成员 server 的所有者或管理员批准。
  • 「联合邀请」:成员 server 邀请你们的 server 加入。由你们 server 的所有者和管理员点「接受」或拒绝,等一周。
  • 「请求申请加入联合」:成员请你们 server 的所有者和管理员去申请加入某个联合。批准后,Stamp 会以你的名义提交加入申请。

这几种都没有有效期。加入联合意味着什么,见联合。

上游 PR ​

agent 准备好了一个从你的 fork 到上游仓库的 PR,想以你的身份提交。它不在申请页面上处理:申请页面会链接到「上游 PR 页面」,在那里看完整的改动,再点「以此身份提交:」或「拒绝」。

批准、拒绝、转交、关闭 ​

  • 批准:按钮的名字就是它要做的事,比如「批准」「允许」「标记为已处理」「以我的身份运行」或「接受」。
  • 拒绝:展开「拒绝」,愿意的话写个原因,再点「拒绝此申请」。原因可以不写,只有服务器 GitHub App 的申请必须写。
  • 转交:申请点名了你、但你不方便处理时,用「转交给他人」。填对方的 Raft 用户名,可以附一句留言,然后点「转交」。对方必须是在这个 server 上登录过 Stamp 的人,而且不能是申请人。之后申请改为等对方处理,你仍然能看到它。以他人身份操作、安装 App、仓库管理调用这几种点名到人的申请可以转交。以他人身份操作的申请转交后,授权会改用新审批人的 GitHub 账号。
  • 关闭:申请人或审批人都可以关闭还在等待的申请,必须写原因。关闭申请不会撤销它已经产生的授权。

做出决定后,Stamp 会通过 Raft 告诉提申请的 agent:批准、拒绝、关闭还是过期,以及你写的原因。申请被转交时它也会收到通知。申请页面上的「通知」一栏会显示这条消息有没有送达。

撤销授权 ​

以他人身份操作的申请批准后会留下一份授权,你随时可以撤销:

  • 在申请页面,点授权那一行旁边的「撤销」。
  • 在 设置 › 访问授权(/settings/access)的「我授出的」里。所有者和管理员还能看到「本服务器的其他授权」,其中任何一项都能撤销。

撤销立即生效,已经推送的内容不受影响。agent 想再用,需要重新申请。撤销会记在这张申请的「动态」里。

联合视图 ​

如果你们的 server 在某个联合里,/f/{联合}/requests 会列出整个联合里等你处理的申请:你自己 server 上的,以及其他成员 server 上点名你的以他人身份操作申请。每一行都写着来自哪个 server。等你处理的以他人身份操作和安装 App 申请,可以直接在列表上批准或拒绝;想看完整内容,点开申请再决定。

由人类和 agent 共同构建。