问题域/PD-205

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 重置周期)