CANN/cannbot-skills PR检视工作流
PR 检视场景
【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills
触发
检视 PR、审核 PR、帮我检视这个 PR
编排
任务清单
启动时创建 4 个固定任务(全部 pending):
| 任务 | 阶段 | 内容 |
|---|---|---|
| 任务0 | 获取 diff + 代码概要 + 条例分组 | code-fetch → 并行派发 code-summarize + clause-routing |
| 任务1 | 逐条检视 | 按波次派发检视子 Agent |
| 任务2 | 行号校对 | steps/pr-review.line-verify.md |
| 任务3 | 撰写报告 | steps/common.report-write.md |
阶段0:获取 diff + 代码概要 + 条例分组
- 将任务0 标记为 in_progress
- 提取 PR 链接,判断托管平台
- Read + 执行
steps/pr-review.code-fetch.md的派发指令,派发子 Agent 获取 diff 和完整源码 - 等待 code-fetch 子 Agent 返回(产出 diff_path + repo_path)
- 快速检测 diff 规模:
- Read diff 文件的前 200 行,提取变更文件路径列表,统计总数
- 若文件数 >10:输出「检测到大型 PR({N} 个文件),自动切换大型 PR 检视流程」→ 将全部现有任务标记为 deleted → 转至执行
workflows/pr-large-review.md(diff_path + repo_path 已就绪,从该 workflow 的阶段0 Step 5 file-split 开始,该 workflow 会创建新的任务清单)→ 本 workflow 终止 - 若文件数 ≤10:继续执行下方标准流程
- 在单个消息中并行派发两个子 Agent:
子 Agent A — 代码概要:
Read + 执行 steps/pr-review.code-summarize.md 的派发指令 传入:diff 路径 + 完整源码路径 + 概要输出路径 ./operators/pr-{pr_number}/code_summary.md子 Agent B — 条例分组:
Read + 执行 steps/common.clause-routing.md 的派发指令 传入:代码文件路径 + diff 路径 + 用户意图范围(如用户指定了检视范围,传入对应类别名;否则传空表示全量)- 等待两者返回,收集:
- 子 Agent A → 侧别 + 概要路径
- 子 Agent B → 分组规划表
- 将任务0 标记为 done
阶段1:逐条检视
- 将任务1 标记为 in_progress
- Read
steps/pr-review.clause-review.md获取 prompt 模板 - 按阶段0 的分组规划表,逐波派发:
- 每波在单个消息中并行调用 ≤10 个
Agent工具 subagent_type优先"ascendc-ops-reviewer",不可用则"general"- 每组用 prompt 模板填入:侧别 + 条例ID + diff路径 + 完整源码路径 + 概要路径
- 代码范围:使用 routing 输出中每组的侧别标签(仅Kernel / 仅Tiling / 全部),填入 prompt 的「检视代码范围」字段
- 波次内并行,波次间串行
- 波次内并行,波次间串行
- 每波在单个消息中并行调用 ≤10 个
- 每波完成后输出进度,所有波次完成后汇总
- 将任务1 标记为 done
阶段2:行号校对
- 将任务2 标记为 in_progress
- Read + 执行
steps/pr-review.line-verify.md - 将任务2 标记为 done
阶段3:撰写报告
- 将任务3 标记为 in_progress
- Read + 执行
steps/common.report-write.md - 报告输出路径
./operators/pr-{pr_number}/{pr_number}_review_summary.md - 将任务3 标记为 done
与文件检视的关键差异
| 差异点 | 说明 |
|---|---|
| 阶段0 多一步 code-fetch | 先获取 diff + clone 源码,再并行派发 |
| 阶段1 传 diff + 完整源码 | 每组额外传入 diff 路径、完整源码路径、代码范围 |
| 阶段2 PR 独有 | 越界校验 + 实际行号定位 |
| 报告路径 | ./operators/pr-{pr_number}/ |
约束
- 严格按阶段顺序执行,禁止跳步
- PR 检视模式下 code-fetch 失败则终止流程
- 禁止提前 Read 未执行阶段的 step 文件
【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
