本文件用于给仓库协作者自己电脑上的 AI 一个固定、完整、可重复执行的 PR 处理流程。
下次只要告诉 AI:
再把本文件提供给 AI,AI 就必须按本文件执行,不能自行脑补流程。
gh、git 命令;如果命令不存在、认证失败、权限不足,必须立刻明确告知用户并停止,不能假装已经操作成功。dev。AI 不得把其他作者的 PR 直接作为自动流程合并到 master。gh pr view 返回的 baseRefName 为准,不能只信用户口述、PR 标题或截图描述。master,AI 必须先自动把它改到 dev,然后重新拉取 PR 元数据与 diff,再继续分析。dev 也不是 master,AI 不得擅自改到别的分支,必须停止并告诉用户当前自动流程只支持 dev。master 转到 dev 时发现同一个来源仓库 + 来源分支已经存在另一个指向 dev 的打开 PR,AI 不得继续硬转,不得继续自动合并,必须先反馈重复 PR 问题。worktree。?、不是编码异常;如果发现异常,必须立刻修正后再继续后续流程。dev,AI 必须停止当前合并流程,重新拉取信息后再决定下一步。AI 至少要拿到下面这些输入:
PR 编号仓库路径只分析 / 分析后需要继续合并补充要求:
OWNER/REPO,则用户还需要补充提供。master 为目标分支时,直接远程改成 dev;如果用户明确禁止任何远程修改,则本流程不适用。AI 必须先执行下面这些动作,不能跳步:
git status --short --branchgit remote -v拉取 PR 元数据:
gh pr view <PR_NUMBER> --repo <OWNER/REPO> --json number,title,body,author,baseRefName,headRefName,headRepository,headRepositoryOwner,changedFiles,additions,deletions,commits,files,isDraft,mergeStateStatus,mergeable,state,url
先根据实时 baseRefName 处理目标分支:
baseRefName = dev:继续下一步。baseRefName = master:先执行“自动转到 dev”流程,再继续下一步。baseRefName 既不是 dev 也不是 master:立即停止,并向用户反馈“当前自动流程只支持 dev”。当 baseRefName = master 时,必须执行下面的自动转分支流程:
gh api --method GET repos/<OWNER/REPO>/pulls -f state=open -f head='<HEAD_OWNER>:<HEAD_REF>' -f base='dev' -f per_page='100'
处理规则:
HEAD_OWNER 与 HEAD_REF,不能猜。number != <PR_NUMBER> 的打开 PR,则视为“重复的 dev PR”:
如果不存在重复的 dev PR,则执行:
gh pr edit <PR_NUMBER> --base dev --repo <OWNER/REPO>
改完目标分支后,必须重新执行一次 PR 元数据拉取,确认新的 baseRefName = dev。
在重新确认 baseRefName = dev 之前,不允许继续分析旧 diff,不允许继续合并。
只有在目标分支已经确认是 dev 后,才能拉取 PR diff:
gh pr diff <PR_NUMBER> --repo <OWNER/REPO>
拉取目标分支与 PR 头:
git fetch origin dev
git fetch origin pull/<PR_NUMBER>/head:refs/remotes/origin/pr-<PR_NUMBER>
如果需要稳定查看行号、文件内容、避免污染当前工作区,创建临时 worktree:
$TempWorktree = '<临时目录>'
git worktree add --detach $TempWorktree origin/pr-<PR_NUMBER>
AI 分析时,必须完整执行下面这些要求:
master -> dev 自动转向,分析时只能基于转向后的最新 diff,不得继续引用转向前的 diff 结论。mergeable、mergeStateStatusbaseRefName 仍然是 dev如果发现需要作者或维护者注意的问题,AI 必须自动发 PR 评论,并且评论格式必须固定如下:
(自动回复)AI分析结果(不一定完全正确,请仓库协作者确认无问题后再继续):
<这里写正式评论内容>
要求:
如果没有发现明确问题:
如果 PR 有问题,但用户明确要求:
则必须进入下面的流程。
禁止在用户当前工作区直接乱合并。
必须先创建临时 worktree,再在临时目录内处理:
git fetch origin dev
git fetch origin pull/<PR_NUMBER>/head:refs/remotes/origin/pr-<PR_NUMBER>
git worktree add <TEMP_WORKTREE> -b pr-<PR_NUMBER>-merge origin/dev
进入临时目录后再执行:
git merge --no-ff --no-commit origin/pr-<PR_NUMBER>
处理规则:
master -> dev 自动转向,本阶段必须以 dev 为唯一合并基准,不允许再回到 master 做本地吸收。xzs。完成临时合并与本地修复后,必须自检下面这些项目:
git status 中不能再有未处理冲突。baseRefName 仍然是 dev;如果不是,停止后续合并并先反馈用户。如果最后决定真正合并,提交信息不能直接写:
merge branch xxxmerge pr #19合并某某分支必须重新分析“最终合并结果到底做了什么”,然后重写提交信息。
<type>: <最终功能或修复结果>
- 合并 PR #<PR_NUMBER> 的核心改动:<一句话概括>
- 本地补充修复:<一句话概括>
- 影响范围:<步骤/模块/页面/接口>
feat: support SUB2API mode for OAuth generation and callback handling
- 合并 PR #19 的核心改动:新增 SUB2API 模式并接入 OAuth 生成与回调提交流程
- 本地补充修复:修正回调地址约束与超时重试带来的重复执行风险
- 影响范围:background orchestration、sidepanel config、sub2api content script
如果本地已经解决该 PR 的内容,并且最终代码已经进入 dev 分支,则继续执行下面动作。
此时需要自动给 PR 留一条感谢评论。
注意:
master -> dev 自动转向,感谢评论不能把最终落地分支写错,必须明确本次内容已吸收到 dev。示例:
感谢贡献这次改动,核心思路和主体实现已经吸收进 dev 分支了。我这边补了一下合并过程里的冲突和相关修正,后续如果你还有类似改进也欢迎继续提交。
如果 PR 还没有因为合并而自动关闭,则感谢评论发完后,自动关闭该 PR:
gh pr close <PR_NUMBER> --repo <OWNER/REPO>
如果需要,先评论再关闭,不要把感谢遗漏掉。
无论是问题评论、感谢评论,还是其他直接发到 GitHub 的回复,只要消息已经发出,AI 必须执行一次“发送后复检”:
AI 在对当前用户做最终反馈时,至少要说明:
mastermaster -> dev 自动转向dev PR拿到本文件后,AI 必须按“先真实读取 PR 元数据,先校正目标分支,再拉取最新 diff 做分析,再按用户要求决定是否进入临时合并修复,最后重写提交信息并在完成后感谢作者、关闭 PR”的顺序执行,不能跳步,不能猜,不能偷懒。