# PR #23510 完整报告

- 仓库：`sgl-project/sglang`
- 标题：[CI] /rerun-stage: fix workflow-run URL lookup for sgl-kernel PRs
- 合并时间：2026-04-23 08:48
- 原文链接：http://prhub.com.cn/sgl-project/sglang/pull/23510

---

# 执行摘要

- 一句话：修复 CI 中 /rerun-stage 命令在 sgl-kernel PR 上无法正确生成工作流运行 URL 的问题。
- 推荐动作：该 PR 变更简单直接，适合 CI 维护者快速浏览以理解变量同步的重要性。值得关注的设计决策是确保本地变量与工作流输入的一致性，避免因元数据不匹配导致的功能降级。

# 功能与动机

PR #23492 引入的自动 include_wheel_build 路径需要 pr_head_sha 来检测内核变更，但忘记更新 handle_rerun_stage 函数中的本地 pr_head_sha 变量。这导致 find_workflow_run_url 函数构建的预期显示标题（不含 SHA 后缀）与工作流实际运行名称（包含 SHA 后缀）不匹配，URL 查找超时后成功评论降级为警告信息。具体问题在 PR #21247（修改 sgl-kernel）上观察到：调度本身正常工作，但成功评论中的深链接丢失。

# 实现拆解

1. **问题定位与修复**：在 `scripts/ci/utils/slash_command_handler.py` 的 `handle_rerun_stage` 函数中，当检测到内核变更且非 AMD 阶段时，除了设置 `inputs["pr_head_sha"] = pr.head.sha`（已在 PR #23492 中添加）外，现在也同步设置本地变量 `pr_head_sha = pr.head.sha`。
2. **逻辑一致性**：这样确保 `find_workflow_run_url` 函数构建的预期显示标题包含 SHA 后缀，与工作流运行名称（由 `.github/workflows/pr-test.yml` 中的 `run-name` 指令生成）匹配。
3. **向后兼容性**：fork 路径的本地 pr_head_sha 已在 `if is_fork:` 块中设置，保持不变；非 fork 且无内核变更的路径也不受影响。
4. **测试配套**：无新增测试文件，但 PR body 中描述了离线模拟验证和计划中的触发测试。

关键文件：
- `scripts/ci/utils/slash_command_handler.py`（模块 CI 脚本；类别 infra；类型 infrastructure；符号 handle_rerun_stage）: 这是唯一修改的文件，包含 /rerun-stage 命令的处理逻辑，修复了工作流运行 URL 查找的回归问题。

关键符号：handle_rerun_stage

## 关键源码片段

### `scripts/ci/utils/slash_command_handler.py`

这是唯一修改的文件，包含 /rerun-stage 命令的处理逻辑，修复了工作流运行 URL 查找的回归问题。

```python
def handle_rerun_stage(...):
    # ... 其他代码 ...
    
    if kernel_changes and not is_amd_stage:
        inputs["include_wheel_build"] = "true"
        # include_wheel_build 依赖 filter-api 检测内核变更，这需要 pr_head_sha。
        # 确保为非 fork PR 设置 pr_head_sha，并保持本地 pr_head_sha 同步，
        # 以便 find_workflow_run_url 构建包含 SHA 后缀的预期显示标题
        # （工作流的 run-name 会在 inputs.pr_head_sha 设置时包含 SHA）。
        if not is_fork:
            inputs["pr_head_sha"] = pr.head.sha
            pr_head_sha = pr.head.sha  # 新增：同步本地变量
    
    # Record dispatch time before triggering
    dispatch_time = time.time()
    # ... 后续代码 ...

```

# 评论区精华

无 review 评论，所有讨论内容均在 PR body 中由作者 Kangyan-Zhou 详细说明。

- 暂无高价值评论线程

# 风险与影响

- 风险：风险极低：仅修改一个 CI 脚本中的变量赋值，不涉及核心业务逻辑、性能或安全。潜在风险包括：
 1) 变量同步逻辑可能在其他分支路径中被遗漏，但 PR body 已分析所有路径的兼容性；
 2) 若未来工作流运行名称格式变更，可能导致 URL 查找再次失败。
 - 影响：影响范围限于 CI 基础设施：修复后，修改 sgl-kernel 的非 fork PR 使用 /rerun-stage 命令时，成功评论将正确包含工作流运行 URL，提升开发者体验。不影响用户功能、系统性能或团队开发流程。
 - 风险标记：元数据不一致

# 关联脉络

- PR #23492 [CI] /rerun-stage: auto-include wheel build when PR modifies sgl-kernel/: 该 PR 引入了自动 include_wheel_build 路径，但遗漏了本地 pr_head_sha 的同步，导致本次修复的回归问题。
- PR #21247 未提供标题（上下文未给出）: PR body 中提到在该 PR（torch 2.11，修改 sgl-kernel）上观察到了问题现象。