这是部门公共的 GitHub App,负责检视 Issue 和 PR。仓库启用后,新开的 Issue 会收到一次检视评论;PR 在打开、标为可检视(Ready for review)以及 head 更新(推送新提交)时检视,草稿 PR 不检视;管理员可以按仓库关掉其中某种触发。bot 只发评论,不批准、不请求变更,也不合并。管理员为仓库打开开发后,bot 才会按 Issue 改代码并开 PR。许可证为 Apache-2.0。
App 已经创建好了,不需要自己再建。安装地址只用这一个:
https://github.com/apps/agent-ci-infra-bot/installations/select_target
- 打开上面的地址,选择仓库所在的组织或个人账号,再选要安装的仓库。
- 安装之后,找这套 bot 的管理员审核并启用该仓库。
- 启用后就可以开始使用。启用前收到的 Issue 和 PR 事件不会补跑。
自动改代码不是默认行为:只有管理员打开该仓库的开发开关,并且有人(不是 App)给没有指派人的 Issue 加上开发标签(默认 bot-develop)时,bot 才会改代码。完整条件见自动开发什么时候开始。
可以在自己仓库的默认分支放 .bot/ 下的文件,覆盖 bot 的检视、标签、开发规则和虚拟电脑配置;仓库文件优先于内置默认和管理员在控制台的设置。路径、格式和限制见用仓库文件调整规则。
超级管理员或对应项目的管理员可在项目页的「发版本」填写 v1.2.3、v1.2.3-beta.1 等版本,检查并确认完整提交 SHA。仓库需要已接入 CI 门禁,并有版本标签触发的 .github/workflows/release.yml。控制面使用 GitHub App 安装令牌创建注释标签,跟踪该标签的 Release 工作流;全部 job 成功后准备 GitHub Release 草稿,由人编辑并点击「正式发布」。预发布版本正式发布后仍保留预发布标记。仓库工作流自行发布的 Release 会显示为外部已发布。
发行说明只使用本次提交历史范围内的提交和已合并 PR。仓库存在 .agents/skills/release-notes/SKILL.md 时,控制面固定读取本次 SHA 的文件,并使用项目配置的模型按该规则组织真实来源;否则使用内置来源清单。可选的运行分析可以主动申请本仓库的 Actions 只读令牌,按需读取本次 run/attempt 的 job 日志;令牌只保留在工具执行端,日志先脱敏再交给模型,分析结束后撤销令牌。页面保留读取的日志行段和来源链接,分析不参与发布状态判定。失败不会自动重跑,同名标签不会被移动或删除。
相对上一枚可达的合法版本标签,没有新增提交时,页面说明跳过,服务端拒绝确认,不创建发布记录、标签或 Release;还没有这样的版本标签时,现有历史可作为首次发布。已有发布记录仍可查看和按原规则恢复,同名标签始终不会移动或删除。
「公共配置」的门禁 PR 就是接入框架,包含由版本标签触发的 .github/workflows/release.yml,优先使用 CI-workflow 上游模板,缺少时使用本地门禁模板。控制面只提供框架并在人工确认后打标签,不根据 package.json 选择检查命令,也不发布 PyPI、npm 包或镜像。.github/ci-gates.json 保留 lane 名字、命令留空;仓库开发者填写实际检查项,并决定是否在自己的 Release workflow 中增加发包或镜像发布步骤,由标签触发 Release Actions。空 lane 的 not_applicable 报告不代表实际检查通过;详见接入说明。
部署、接入向导、项目管理和升级都在部署这套 bot 和管理员面板。
控制面为每个仓库保留一份 Git 镜像,任务开始前只拉取这次要用的提交,已缓存的提交不再访问 GitHub。每个任务从镜像把固定提交的文件拷进自己的工作目录,之后镜像的更新不影响已拷出的副本。镜像不可用时回到 GitHub API 逐文件准备;GitHub 的递归 tree 被截断时,按目录非递归列举文件。子模块和不支持的 Git mode 条目不下载,子模块仓库不克隆。GitHub 因文件过大而拒绝返回的 blob 会跳过。跳过项的路径和原因记入日志,数量记入覆盖说明;发布时保留这些上游条目。大文件保存在工作区中,由工具读取。哈希不一致、路径越界或工作区被替换时,任务会停止并显示原因。
在「检视」「开发」页点开任务,可查看运行记录和准备日志。失败或暂停的任务详情显示故障说明、原因类别(外部服务或网络波动、GitHub 权限或配置、GitHub 拒绝请求、模型、项目电脑、仓库内容、任务条件变化、GitHub 写入结果未知、Bot 自身问题)和下一步怎么做,准备日志记录固定提交、文件来自 Git 缓存还是 GitHub API、已接收文件数和字节数、跳过路径及原因。
每个仓库一台虚拟电脑,默认一次运行一个任务。超级管理员在「全局设置」设置默认并发数(1–32),项目可以在「机器配置」里单独设置,留空跟随全局默认;超出的任务继续排队。同时运行的任务各用自己的工作目录,共用这台电脑的 CPU、内存和进程数上限。「全局设置」还显示当前运行的镜像标签。
用起来有问题或有建议,欢迎到本仓库提 issue:https://github.com/agent-CI-Infra/bot/issues