forge-land 是一个面向 Pull Request 合并决策的自动化技能,属于 forge 技能集。它的核心用途是:判断一个已经“变绿”的 PR 是否需要人工介入,如果需要,指出应该由谁来看。该技能默认无人值守,运行过程中不会向用户提问。
主要能力
- 预检前置条件:检查 PR 是否可合并(mergeable)、CI 是否全部通过(排除基线分支上同样失败的检查)、评审线程是否已全部解决、PR 内容中是否包含
## Exercised章节。任一项不满足都会报告needs-human并说明失败项。 - 风险研判:将指定提交的审阅任务委托给一个全新上下文的子智能体,避免编写代码的会话自评风险。子智能体依据风险清单执行所有检查,返回
## Risk章节。如果运行环境不支持子智能体,则仅依据清单直接判断。 - 写入风险章节:将研判结果写入 PR 正文的
## Risk章节,并校验结果对应的提交 SHA 是否已变化;若已变化则重新从第一步开始,再次变化则报告needs-human。 - 执行动作:根据风险等级和项目配置,报告
merge-ready、review-ready或自动合并(仅当项目设置Auto-merge: low-risk时)。可自动向链接 Issue 的负责人请求评审。 - 输出摘要:以固定格式输出 PR 编号与标题、结果、研判提交与风险等级、检查命中项、评审请求对象。
使用方式
通过命令触发,支持传入 PR 编号或 URL;省略时从当前分支自动识别。可附加 -- <额外上下文>。例如:/forge-land 123 -- the billing module is new, be strict there。
核心调用示例如下:
gh pr view $PR_ARG --json number,author,baseRefName,headRefOid,closingIssuesReferences
git fetch origin "$BASE" "pull/$PR/head"
gh pr edit "$PR" --body-file "$BODY"
gh pr merge "$PR" --squash --auto --match-head-commit "$SHA"
gh api -X POST "repos/{owner}/{repo}/pulls/$PR/requested_reviewers" -f "reviewers[]=<LOGIN>"
需要注意:只有在项目明确设置 Auto-merge: low-risk 时才会自动合并,且合并仅针对已研判的提交(--match-head-commit),不会推送、不会关闭 PR。若自动合并被宿主拒绝且原因与提交变动有关,则报告 needs-human。
适用场景
- 已经通过 CI、线程已解决的 PR 需要快速决定“能不能合、该谁看”。
- 希望在合并前获得与代码作者无关联的独立风险判断。
- 项目已启用低风险自动合并策略,希望进一步减少人工操作。
- 需要向链接 Issue 的负责人或作者请求评审时,自动完成请求。
限制
- 风险结论与具体提交绑定,新推送会使结论失效,需要重新运行。
- 若无法命名“检查会漏掉什么”,则一律判定为
needs-review。 - 如果没有符合条件且拥有写权限的请求对象,则跳过评审请求并在摘要中说明。
- 该技能不负责让 PR 变绿,前置工作应使用 forge-guard;它也可由 forge-ship 在 guard 达到
review-ready后组合调用。 - 关于自动合并的具体配置细节、宿主行为差异等,资料仅给出上述规则,暂未提供更多说明。