SCM 平台集成
Source Code Management Integration
通过 gh CLI 封装 GitHub PR 全生命周期管理,包括 CI 检查、Review 追踪、合并就绪判断
子问题
1.PR 检测与状态查询
2.CI check 聚合与状态判断
3.Review 决策与评论获取
4.合并就绪度综合评估
5.Rate limit 降级与部分数据缓存策略
6.已合并/已关闭 PR 的状态查询短路优化
7.Bot 评论严重度自动分类(error/warning/info)
各项目的解法1 solutions
Signals
横向对比
| 维度 | Agent |
|---|---|
| PR 检测方式 | gh pr list --head 按分支名匹配,自动发现无 hook Agent 的 PR |
| CI 聚合策略 | 10+ GitHub state 归一化为 5 种,unknown state fail-closed |
| Review 处理 | GraphQL reviewThreads + BOT_AUTHORS Set 分离人类/Bot 评论 |
| 合并就绪度 | 5 维度聚合(CI/Review/冲突/分支状态/Draft)+ blockers 列表 |
| API 通道 | gh CLI execFileAsync 封装,零 SDK 依赖,继承用户认证 |
| 容错策略 | fail-closed CI + merged PR 短路 + Promise.allSettled 部分降级 |
| 缓存机制 | TTLCache 5 分钟默认,rate limit 时 60 分钟长缓存 |
最佳实践
1.fail-closed 策略:CI 查询失败视为 failing 而非 passing
2.GraphQL 变量传参防止注入
3.Promise.allSettled 并行查询 + 半数失败判定 rate limit
4.merged PR 直接返回全绿结果,避免查询 GitHub 返回 null 的 mergeable 字段
5.TTL 缓存分级:正常 5 分钟,rate limit 60 分钟(匹配 GitHub 重置周期)