CANN/cannbot-skills:大型PR代码概要指南
2026/6/8 10:31:51 网站建设 项目流程

代码概要 — 索引模式(大型 PR 检视)

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

派发

派发子 Agent 执行代码概要生成。subagent_type按优先级:"ascendc-code-summarizer""general"

Agent({ subagent_type: "ascendc-code-summarizer 或 general", description: "代码概要:" + 文件组名, prompt: "代码概要生成(大型PR — 索引模式) 【输入】 - 文件组名:{group_name} - 本组文件列表:{group_file_list} - diff 文件路径:{diff_file_path} - 完整源码路径:{repo_path} - 概要输出路径:{code_summary_output_path} - 芯片架构参数:{arch_params}(若为首个文件组则为空字符串,自行提取;否则直接复用) 【执行要求】 1. 严格按本文件「子 Agent 执行指南」中定义的 5 步流程执行 2. 概要写入输出路径 3. 返回结构化结果 【执行指南位置】 Read 本文件的「子 Agent 执行指南」章节获取完整指令。 " })

子 Agent 执行指南

以下内容仅子 Agent 读取,主 Agent 不执行。

核心原则

  1. 索引优先— 只生成导航所需的关键信息,不做深度变量溯源
  2. 范围约束— 只分析本组文件列表中的文件,不越界
  3. 快速完成— grep 为主,避免逐文件深度阅读

关键知识

Tiling/Kernel 分层
侧别文件位置代码特征职责
Kernel 侧op_kernel/*.cpp/.h__aicore__AscendC::pipe.InitBufferAI Core 上执行计算
Tiling 侧op_host/*.cpp/.hgert::TilingContextTilingData参数校验、资源计算、多核切分
变量来源类型(仅标注类型,不深追)
来源特征标注
Tiling 传递tilingData.GetXXX()[TilingData]
硬件配置GetCoreNumAic()等平台 API[硬件配置]
常量定义constexpr/const[常量]
外部输入函数参数、用户传入[外部输入]

执行流程(5 步)

Step 1: 读取变更 — Read 本组文件在 diff 中的变更部分 Step 2: 确认侧别 — 按路径判定,与 file-split 结果交叉验证 Step 3: 生成索引 — 函数清单 + API 调用索引 + 常量清单 Step 4: 提取架构参数 — 从 platformInfo_ 提取核数/对齐常量(仅首个文件组) Step 5: 输出概要 — 按精简模板填充,写入输出路径

Step 1: 读取变更

  1. Read diff 文件,仅关注本组文件列表中的变更 hunks
  2. 不需要读完整源码(diff 已包含变更行的上下文)
  3. 提取:变更函数名、新增/修改的 API 调用、变更的常量定义

Step 2: 确认侧别

按关键知识中的侧别特征表判定,与 file-split 的侧别标签交叉验证。若不一致,以代码特征为准并标注差异。

Step 3: 生成索引

对每个本组文件,grep 提取:

Step 3.1 — 函数清单: Grep 函数定义(^[\\w<>]+ [\\w:]+::\\w+\\([^)]*\\)等模式),填入: | 函数 | 签名 | 行范围 | 所属文件 | 角色 | 变更? |

Step 3.2 — API 调用索引: Grep AscendC API 调用模式(DataCopyReduceMaxEnQueDeQueSetGlobalBuffer等),填入: | API | 行号 | 所属文件 | 上下文 | 变更? |

Step 3.3 — 常量清单: Grepconstexpr/const/#define,填入: | 常量 | 值 | 位置(文件:行) | 用途 | 变更? |

Step 4: 提取架构参数(仅首个文件组)

{arch_params}为空:

  • GrepplatformInfo_中提取的核数、对齐常量等
  • 若无法从本地确定数值,使用/npu-archskill 查询 否则直接复用传入的{arch_params}

Step 5: 输出概要

按输出模板填充,写入输出路径。


输出模板(索引模式,精简版)

# 代码概要 — {operator_name}({Kernel/Tiling/混合}侧) ## 变更文件概览 | # | 文件 | 侧别 | 变更类型 | 变更行数 | |---|------|------|---------|---------| | 1 | {path} | {Tiling/Kernel} | {新增/修改/删除} | ±{N} | ## 函数清单 | 函数 | 签名 | 行范围 | 所属文件 | 角色 | 变更? | |------|------|--------|---------|------|-------| ## API 调用索引 | API | 行号 | 所属文件 | 上下文 | 变更? | |-----|------|---------|--------|-------| ## 常量清单 | 常量 | 值 | 位置(文件:行) | 用途 | 变更? | |------|-----|-------------|------|-------| ## 文件组间依赖 | 依赖的共享头文件 | 引用位置 | 用途 | |---------------|---------|------| ## 变量来源标注 | 关键变量 | 来源类型 | 所属文件 | |---------|---------|---------| ## 芯片架构参数(仅首个文件组输出) | 参数 | 值 | 来源 | |------|-----|------|

与标准 summary 的差异速查

跳过的分析原因
变量声明→初始化→校验链追踪检视子 Agent 按需 grep
TilingData 每个字段的 Host 侧赋值公式检视子 Agent 按需 grep
流水线模式 / Buffer 管理 / 多核切分性能条例检视时自行分析
跨文件防御摘要按文件组隔离后不需要跨文件追踪

返回格式

侧别: {Kernel侧 / Tiling侧 / 混合} 算子名: {operator_name} 核心 API: {API 列表} 概要路径: {输出路径} 架构参数: {arch_params 字符串,供其他文件组复用}

约束

  • 概要必须写入输出路径
  • 禁止对本组文件列表之外的文件做分析
  • 禁止做深度变量溯源(声明→初始化→校验链)
  • 函数/API/常量清单通过 grep 即可,无需逐文件深度阅读

【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体,本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询