Skip to content

[RFC] ReviewBot PR 全生命周期治理:责任人路由、看板指标与状态提醒 #116

Closed

Description

@zengchuang-hw

Summary

ReviewBot 已经具备 PR 评审、owner 路由、CI 状态采集和 Kanban 指标等分散能力,但还缺少从“进入评审”到“可合入/长期无进展”的完整运营闭环。

本 RFC 希望先在 vllm-project/vllm-omni 落地一套可审计、可去重的 PR 生命周期自动化:

  1. 提高责任人覆盖,并优化模块 owner 与模型 owner 的路由优先级;
  2. 在 Kanban 展示 ReviewBot 相对 Claude Fable 5 和人工评审的质量、效率数据;
  3. 给每次知识库刷新指定明确责任人;
  4. PR 一周无人工 commit/comment 时提醒即将关闭,并进入 Kanban 待处理队列;
  5. CI 失败时提醒修复,CI 恢复且 PR ready 时提醒 committer/maintainer 合入;
  6. 对性能/价值型 PR 用简短问题要求 A/B 或消融证据。

Motivation

  • 现有 owner 路由在 PR 同时涉及模型和公共模块时,容易优先命中模型 owner,而忽略 PR 描述里明确写出的模块边界。
  • Kanban 能说明 ReviewBot 自身是否运行正常,但还不能直接回答“相比 Fable 5 和人工评审,质量与效率如何”。
  • 知识刷新已有审计和更新流程,但缺少明确的人类责任人、截止状态和阻塞升级入口。
  • CI 红、CI 已恢复但无人合入、以及长期无更新的 PR,都依赖 maintainer 人工巡检。
  • 性能 PR 的评审容易停留在“有数字”,没有追问数字隔离了什么瓶颈、证明了什么价值,以及改动中各个 claim 的独立贡献。

Proposed behavior

1. Owner routing:模块信号优先于模型 owner

  • 扩充 owner catalog/coverage,允许一个 PR 产生多个去重后的候选责任人。
  • 路由打分优先级建议为:
    1. PR 描述中明确声明涉及的模块/组件;
    2. changed files 命中的模块 owner;
    3. 模型 owner;
    4. repository/general fallback。
  • 当 PR 描述的模块信号与模型信号冲突时,模块 owner 权重高于模型 owner;模型 owner 可作为补充候选,而不是覆盖模块 owner。
  • 在 ledger/Kanban 记录最终候选、命中信号和得分理由,便于发现误路由与补 owner catalog。
  • 延续 [Feature] review-bot supports issue assignment #87 的安全边界:默认只 mention,不直接修改 GitHub Assignees。

2. 对性能/价值型 PR 增加简短证据追问

当 PR 声称性能提升、资源下降、架构优化或新增高成本机制时,ReviewBot 先提出三个简单问题:

  1. 当前性能瓶颈是什么,证据在哪里?
  2. 这项改动带来的用户或系统价值是什么?
  3. 是否有同 workload、同 head/config 的 A/B 或消融,能隔离每个主要 claim 的独立贡献?

评论应保持简短、可执行,并根据 claim 大小按比例要求证据,不把 smoke/model-addition PR 一律升级成完整性能研究。需要详细格式时,复用仓库 review skill 的 performance-evidence 规则;可参考 Hongsheng 的 vllm-omni#6820 和性能证据较完整的 vllm-omni#6885。

至少要求固定 base/head SHA、硬件、workload、warmup/重复次数、质量/正确性等价信号;多项叠加优化应尽量提供逐项消融,而不是只给一个 blended delta。

3. 知识库刷新必须有明确责任人

  • 每次 release audit、imupdate 或周期性知识刷新都生成/更新一个 Kanban task,并指定一名人类责任人。
  • task 展示 repository、from/to baseline、目标版本/SHA、owner、最近更新时间、验证状态和 blocker。
  • owner 负责确认结构事实更新、owner-scoped rule 评审和最终 validators 通过;机器人不根据一次 diff 自动生成语义规则。
  • 超期或阻塞任务在 Kanban 升级提醒,避免“审计已发现 drift,但无人完成刷新”。

4. 一周无人工活动的 PR 提醒

  • 对 open PR 计算最后人工活动时间:max(last non-bot commit, last non-bot comment/review);机器人自己的评论不能刷新计时。
  • 连续 7 天无人工活动时:
    • 在 PR 留一条去重提醒,说明若继续无更新将按仓库策略关闭;
    • Kanban 标记为 stale / needs-owner-action;
    • 通知 @yenuo26(王语)协调责任人处理。
  • 同一 inactivity window 只提醒一次;新 commit/comment 后清除 stale 状态并重新计时。
  • 第一阶段不自动关闭 PR,只做预警和看板升级;自动关闭需要独立、可配置的仓库策略。

5. CI 失败与 ready-to-merge 提醒闭环

6. Kanban 增加外部基线和人工对照

在 #96/#114 已有运行指标和叙事看板基础上,增加按版本/固定评测窗口展示的对照:

  • ReviewBot / InferMatrix;
  • Claude Fable 5 teacher baseline;
  • 人工 review ground truth / maintainer adjudication。

至少展示:

  • 质量:有效 finding 数/率、precision、recall 或覆盖率、severity-weighted yield、与人工意见的 overlap/unique findings;
  • 效率:总耗时、首个可执行 finding 时间、模型/工具调用或成本、人工复核耗时;
  • 可信度:评测 PR 数、finding 数、未知/缺失样本、相同 SHA/base/model/environment/time budget 是否成立。

不满足同一快照和同一预算的结果只能标记为 directional case study,不能显示成严格 A/B 结论。可复用 #24 的比较口径和 #96 的 monthly ground-truth probe。

Lifecycle state/actions

Event/state Action Primary recipient Dedupe key
PR opened/updated owner routing + reason module owner first, model owner supplementary PR + head + routing digest
performance/value claim three-question evidence prompt PR author PR + head + prompt kind
required CI failed ask to fix CI author + distinct last pusher PR + head + ci_failed
CI green and ready ask to merge committer/maintainer PR + head + ready_to_merge
7 days without human activity stale warning + Kanban escalation contributor + @yenuo26 coordination PR + inactivity window
knowledge drift/update due assigned refresh task named knowledge owner repo + target baseline

Acceptance criteria

  • PR 描述明确命中的模块 owner,其路由权重高于模型 owner,并在 ledger/Kanban 可解释。
  • owner catalog 可扩充,多 owner 去重且保留安全的 mention-only 行为。
  • 性能/价值 claim 能触发“瓶颈、价值、A/B/消融”三类简短问题,并按改动规模要求证据。
  • 每个知识刷新任务都有明确 owner、baseline、状态、最近更新时间和验证结果。
  • 7 天无人工 commit/comment 的 PR 只提醒一次,进入 Kanban,并通知 @yenuo26 协调处理;机器人评论不重置计时。
  • CI 红时提醒修复;CI 绿且 ready 时提醒 committer/maintainer 合入;同一 head/state 不重复评论。
  • Kanban 能在同一评测口径下展示 ReviewBot、Fable 5 与人工评审的质量和效率,并始终显示样本量与不可比条件。
  • 首期仅对 vllm-project/vllm-omni 开启,其他 adapter 显式 opt-in。
  • 所有 GitHub 写入继续受现有 posting gate 控制;不自动 merge、不自动 close、不 force-push。

Out of scope

  • 自动替 contributor 修 CI 或自动提交代码。
  • 在本 RFC 中自动关闭 stale PR 或自动 merge ready PR。
  • 用一次 PR diff 自动写入 owner 语义规则。
  • 将不同 SHA、不同模型或不同预算的结果包装成严格 A/B。

Related

Activity

  1. zengchuang-hw commented on Sep 1, 2026

    @zengchuang-hw
    ContributorAuthor

    已按原始纪要拆分为 6 个独立 work items,后续在各子 issue 跟踪设计和实现;本 issue 保留为总览:

  2. tzhouam commented on Sep 3, 2026

    @tzhouam
    Collaborator

    Status 2026-09-03: the six work items are now implemented as stacked PRs on JiusiServe/omni-reviewbot, every one default-off and shadow-first; nothing changes on the host until its flag is set.

    Item PR Flag
    #117 owner routing (module signal over model owner, multi-owner, explainable) JiusiServe/omni-reviewbot#31 (stacked on #27, the #87 test-node rebase) ROUTING_SCORER_ENABLED — scorer records and compares by default, drives the mention only when on. CI_OWNER_LOGINS replaces the hardcoded CI owner and must be set on the host (yenuo26 keeps today's routing) before review mode starts.
    #121 CI closed loop (red → ping contributor, green+clean → ping committer), absorbs #108 JiusiServe/omni-reviewbot#28 CI_LIFECYCLE_ENABLED, MERGE_NOTIFY_LOGINS (empty ⇒ ready_unrouted, recorded only: there is no committer catalog yet)
    #120 seven-day stale reminder + Kanban queue JiusiServe/omni-reviewbot#29 (stacked on #28) STALE_PR_ENABLED, STALE_COORDINATOR_LOGIN
    #122 three performance-evidence questions JiusiServe/omni-reviewbot#30 (stacked on #28) PERF_QUESTIONS_ENABLED (needs TRIAGE_ENABLED)

    Common ground across the four features: one comment per key, claimed in the ledger before the POST with lease recovery and orphan adoption after a crash; request budgets with page caps that fail closed; bot activity (including the reviewbot's own account) never counts as a person; POST_MODE=shadow records would-be comments as artifacts and promotes them exactly once when review mode turns on.

    Deferred, each on a decision only the owners can make:

    Suggested merge order: #27, #28, #31, #29, #30 (children get retargeted to main as their parents merge).

  3. tzhouam commented on Sep 29, 2026

    @tzhouam
    Collaborator

    All four buildable items are merged and enabled in production: #117 (omni-reviewbot#31), #121 + #108 (#28), #120 (#29), #122 (#30). The two deferred items stay open on their own issues, #118 and #119, since both need an owner decision. Closing this parent.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions