بنقرة واحدة
atb-csv-testcase-generator
ATB CSV 测试用例生成技能。当用户需要为 ATB 算子创建 CSV 格式的泛化测试用例时调用此技能。 覆盖:正例设计、反例设计、性能测试用例、CSV 格式规范。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
ATB CSV 测试用例生成技能。当用户需要为 ATB 算子创建 CSV 格式的泛化测试用例时调用此技能。 覆盖:正例设计、反例设计、性能测试用例、CSV 格式规范。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Kubernetes 集群健康检查与安全修复 — 诊断问题,用户确认后执行修复
排查并优化 Ascend C 算子性能。当用户开发、审查或优化 Ascend C kernel 算子时使用,或当用户提及 Ascend C 性能优化、算子优化、tiling、流水、搬运、 内存优化、NPU/昇腾等关键词时触发。
多语言安全代码审查 (Security Code Review)。对 Python、C++、Shell、Markdown 文件进行系统性安全漏洞检测与修复指导。覆盖 OWASP Top 10、CWE Top 25、CERT 安全编码标准。当用户提及以下内容时,务必使用此技能:安全审查、安全代码审查、security review、code review 中的安全检查、漏洞扫描、安全合规检查(CWE/CERT/OWASP)、编写安全代码、检查代码安全性、推理服务安全审计、多模态 Token 安全校验、JSON 嵌套深度攻击防护。即使用户没有明确说'安全审查',只要涉及代码安全性评估、漏洞检测、安全最佳实践,都应触发此技能。
昇腾NPU CANN Toolkit+Kernels+NNAL安装部署技能。支持从官网下载run包安装和从Docker镜像提取两种方式,覆盖驱动检查、包下载、安装、环境变量配置与验证全流程。当用户需要安装CANN全套组件或指定版本CANN到自定义路径时调用。
根据设计文档生成 AscendC 算子完整代码实现并完成框架适配。TRIGGER when: 设计文档已完成,需要生成 op_host/op_kernel 代码、注册到 PyTorch 框架、编译测试。关键词:代码生成、op_host、op_kernel、tiling、kernel、框架适配、算子注册。
完成AscendC算子设计 - 帮助用户完成算子的架构设计、接口定义和性能规划。当用户提到算子设计、算子开发、tiling策略、内存规划、AscendC kernel设计、两级tiling、核间切分、核内切分时,使用此skill。
| name | atb-csv-testcase-generator |
| description | ATB CSV 测试用例生成技能。当用户需要为 ATB 算子创建 CSV 格式的泛化测试用例时调用此技能。 覆盖:正例设计、反例设计、性能测试用例、CSV 格式规范。 |
| keywords | ["atb","csv","test","testcase","昇腾","泛化测试","正例","反例","性能测试"] |
| metadata | {"author":"ascend-transformer-boost-team + Claude Code + deepseek-v4-pro","version":"1.4.0","created":"2026-04-19","updated":"2026-04-29","skill-type":"testcase","gates":[{"id":"gate-csv","description":"CSV 测试用例确认","trigger":"CSV 用例设计完成后,必须等待用户确认再进入实际迁移阶段"}]} |
| hooks | {"PreToolUse":[{"matcher":"Write|Edit|Bash","hooks":[{"type":"command","command":"([ -z \"$ATB_REPO_PATH\" ] || [ ! -d \"$ATB_REPO_PATH\" ]) && echo '[PATH CHECK] ATB_REPO_PATH 未设置或无效,请先向用户获取 ATB 路径' >&2 || true"}]}],"PostToolUse":[{"matcher":"Write","hooks":[{"type":"command","command":"echo '[HIL GATE 2] CSV 用例已生成/修改。若 CSV 用例设计完成,请向用户展示确认检查表并等待\"确认通过\"。未收到用户确认前,严禁进入实际迁移阶段。'"}]}],"Stop":[{"hooks":[{"type":"command","command":"echo '[CHECK] 确认 CSV 用例已获用户确认(Gate 2)后,方可结束此技能。'"}]}]} |
此技能用于为 ATB 算子生成 CSV 格式的泛化测试用例,支持正例、反例和性能测试用例设计。
在以下情况下调用此技能:
| 类型 | 说明 | 数量建议 |
|---|---|---|
| 正例 | 验证正常功能,覆盖典型场景 | 5-15 个 |
| 反例 | 覆盖所有参数校验分支 | 10-20 个 |
| 性能测试 | 大小 shape 性能验证 | 5-10 个 |
tests/apitest/opstest/csv/ 目录下有丰富的参考用例TestType 列填写 Performance 即为性能测试ExpectedError 列填写错误类型,如 NO_ERROR、I:ERROR_INVALID_TENSOR_DIM 等包含主流模型的常见 shape:
CaseNum|CaseName|OpName|OpParam|InNum|InDType|InFormat|InShape|OutNum|OutDType|OutFormat|OutShape|DataGenType|DataGenRange|InTensorFile|OutTensorFile|TestType|TestLevel|FromModel|SocVersion|ExpectedError
1 |XxxBase |XxxOperation|{"param":0}|1|float16|nd|128,4096|2|int8;float|nd;nd|128,2048;128|customize|-100,100;|||||||Ascend910B;Ascend950|NO_ERROR
# 只支持 float16/bf16,不支持 int64
SwigluQuantErrorDtypeInt64|SwigluQuantOperation|{"quantType":0}|1|int64|nd|128,4096|...|I:ERROR_INVALID_TENSOR_INI_MATCH
# dimNum 必须为 2
SwigluQuantErrorDimNum|SwigluQuantOperation|{"quantType":0}|1|float16|nd|128,4096,1|...|I:ERROR_INVALID_TENSOR_DIM_NUM
# hidden_size 必须能被 2 整除
SwigluQuantErrorHiddenSizeOdd|SwigluQuantOperation|{"quantType":0}|1|float16|nd|128,4097|...|I:ERROR_INVALID_TENSOR_DIM
# quantType 只能为 0
SwigluQuantErrorParam|SwigluQuantOperation|{"quantType":1}|1|float16|nd|128,4096|...|C:ERROR_INVALID_PARAM
# UB 上限检查
SwigluQuantErrorHiddenSizeTooLarge|SwigluQuantOperation|{"quantType":0}|1|float16|nd|5,15714|...|I:ERROR_INVALID_TENSOR_DIM
| 校验类型 | ExpectedError | 覆盖场景 |
|---|---|---|
| 数据类型 | I:ERROR_INVALID_TENSOR_INI_MATCH | int64, int32, float32, bool |
| 数据格式 | I:ERROR_INVALID_TENSOR_INI_MATCH | fractal_z, ncdhw 等 |
| 维度数量 | I:ERROR_INVALID_TENSOR_DIM_NUM | 1D, 3D, 4D |
| 维度值 | I:ERROR_INVALID_TENSOR_DIM | 0, 奇数, 超限 |
| 参数校验 | C:ERROR_INVALID_PARAM | 非法参数值 |
| 输出 Shape | S:ERROR_INVALID_TENSOR_DIM | shape 不匹配 |
| UB 边界 | I:ERROR_INVALID_TENSOR_DIM | hidden_size 过大 |
# 大 shape
SwigluQuantPerformanceLarge|SwigluQuantOperation|{"quantType":0}|1|float16|nd|2048,16384|...|Performance|Ascend910B;Ascend950|NO_ERROR
# 中 shape
SwigluQuantPerformanceMedium|SwigluQuantOperation|{"quantType":0}|1|float16|nd|512,8192|...|Performance|Ascend910B;Ascend950|NO_ERROR
# 小 shape
SwigluQuantPerformanceSmall|SwigluQuantOperation|{"quantType":0}|1|float16|nd|64,256|...|Performance|Ascend910B;Ascend950|NO_ERROR
# bf16 性能
SwigluQuantPerformanceBf16|SwigluQuantOperation|{"quantType":0}|1|bf16|nd|1024,8192|...|Performance|Ascend910B;Ascend950|NO_ERROR
# hidden_size 边界
SwigluQuantPerformanceHidden4096|SwigluQuantOperation|{"quantType":0}|1|float16|nd|256,8192|...|Performance|Ascend910B;Ascend950|NO_ERROR
| 列号 | 名称 | 说明 |
|---|---|---|
| 1 | CaseNum | 用例编号 |
| 2 | CaseName | 用例名称 |
| 3 | OpName | 算子名称(如 SwigluQuantOperation) |
| 4 | OpParam | JSON 格式参数字符串 |
| 5 | InNum | 输入张量数量 |
| 6 | InDType | 输入数据类型(分号分隔) |
| 7 | InFormat | 输入数据格式(分号分隔) |
| 8 | InShape | 输入形状(分号分隔) |
| 9 | OutNum | 输出张量数量 |
| 10 | OutDType | 输出数据类型 |
| 11 | OutFormat | 输出数据格式 |
| 12 | OutShape | 输出形状 |
| 13 | DataGenType | 数据生成类型(通常为 customize) |
| 14 | DataGenRange | 数据生成范围 |
| 15 | InTensorFile | 输入张量文件(空) |
| 16 | OutTensorFile | 输出张量文件(空) |
| 17 | TestType | 测试类型(空或 Performance) |
| 18 | TestLevel | 测试级别(空) |
| 19 | FromModel | 来源模型(空) |
| 20 | SocVersion | 目标 SoC(如 Ascend910B、Ascend950。多个设备用 ; 分隔:Ascend910B;Ascend950) |
| 21 | ExpectedError | 期望错误(NO_ERROR 或错误类型) |
在 CSV 中使用 data_generation.py 支持的数据类型名称:
| 实际类型 | CSV 中使用 |
|---|---|
| float32 | float |
| float16 | float16 或 half |
| bfloat16 | bf16 或 bfloat16 |
| int8 | int8 或 char |
| int32 | int32 或 int |
| int64 | int64 或 long |
| 错误类型 | 说明 | 触发场景 |
|---|---|---|
NO_ERROR | 无错误,正例预期 | 正常执行 |
I:ERROR_INVALID_TENSOR_INI_MATCH | 张量初始化不匹配 | dtype/format 错误 |
I:ERROR_INVALID_TENSOR_DIM_NUM | 维度数量错误 | dimNum 不符合预期 |
I:ERROR_INVALID_TENSOR_DIM | 维度值错误 | 维度值超限/无效 |
C:ERROR_INVALID_PARAM | 参数错误 | 非法参数值 |
S:ERROR_INVALID_TENSOR_DIM | 输出 Shape 错误 | 输出 tensor shape 不匹配 |
设计 CSV 测试用例时,必须同时覆盖 Ascend910B 和 Ascend950 设备。
| 情况 | SocVersion | 说明 |
|---|---|---|
| 910B 和 950 完全一致(场景/约束/dtype/format 均相同) | Ascend910B;Ascend950 | 合并为一条用例 |
| 910B 和 950 存在任何差异 | 分两条,各写各自 SocVersion | 必须分离 |
| 差异类型 | 示例 | 处理方式 |
|---|---|---|
| dtype 支持不同 | 910B 支持 bf16,950 不支持 | 分两条:910B bf16 / 950 用其他 dtype |
| format 支持不同 | 910B 支持 ND,950 仅支持 ND_TRANSPOSE | 分两条,各自指定合法 format |
| 参数约束不同 | 910B quantType=0,1;950 quantType=0 | 分两条,各自合法/非法参数 |
| 维度限制不同 | 910B hidden_size≤31424;950 hidden_size≤32768 | 正向/边界分别设计 |
| ExpectedError 不同 | 同一非法输入,910B 报 ERROR_A,950 报 ERROR_B | 分两条,各自 ExpectedError |
| 性能基准不同 | 910B 和 950 性能预期不同 | 分两条,各自 Performance |
Ascend910B;Ascend950{OpName}{场景}910B / {OpName}{场景}950 便于区分注意:实际运行测试时仅执行 Ascend910B 用例(当前测试环境限制)。Ascend950 用例由用户在 950 设备上手动验证。
执行此技能前,必须从用户处获取以下路径:
<ATB_REPO_PATH>: ATB 仓库路径(如 {your working path}ascend-transformer-boost)从用户或官方文档获取算子的:
# 查看参数校验
cat <ATB_REPO_PATH>/src/ops/ops_infer/<op_name>/<op_name>_operation.cpp
# 查找 ERROR_INVALID_* 分支
grep -n "ERROR_INVALID" <ATB_REPO_PATH>/src/ops/ops_infer/<op_name>/<op_name>_operation.cpp
覆盖:
覆盖所有校验分支:
覆盖:
⚠️ 必须产出两个独立 CSV 文件,不可合并为一个:
# 创建功能用 CSV(正例 + 反例)
touch <ATB_REPO_PATH>/tests/apitest/opstest/csv/<op_name>_func.csv
# 创建性能用 CSV(性能用例)
touch <ATB_REPO_PATH>/tests/apitest/opstest/csv/<op_name>_perf.csv
# 可选:创建合并全量文件
touch <ATB_REPO_PATH>/tests/apitest/opstest/csv/<op_name>_test.csv
| 文件 | 内容 | TestType 列 | 用途 |
|---|---|---|---|
{op}_func.csv | 所有 TestType 非 Performance 的用例(正例+反例) | 空或 Function | Phase 5a 前台快速验证 |
{op}_perf.csv | 所有 TestType=Performance 的用例 | Performance | Phase 5a 后台 subagent 运行 |
{op}_test.csv | 全部用例(func + perf 合并) | 混合 | 全量参考 / Phase 5b 全量回归 |
-t 1(默认),秒级完成_func.csv 和 _perf.csv 各有独立完整 header(21 列)⚠️ 强制步骤 — Gate 2 之前必须执行
CSV 文件创建后,必须调用 superpowers:requesting-code-review agent 进行评审,不可跳过。
评审内容:
| 评审维度 | 检查内容 |
|---|---|
| 完整度 | 正例/反例/性能是否覆盖所有必要场景 |
| 正确性 | OpParam JSON 是否与设计文档参数映射一致 |
| Shape 一致性 | InShape/OutShape 是否与 ACLNN 接口约束一致 |
| 设备分离 | 910B/950 差异场景是否正确分离 SocVersion |
| 格式规范 | 21 列、` |
评审输入:
*_replacement_design.md)评审通过标准:
ERROR_INVALID_* 分支评审问题修复后,方可进入 Gate 2 用户确认。
source <CANN_PATH>/set_env.sh
source <ATB_REPO_PATH>/output/atb/set_env.sh --cxx_abi=1
cd <ATB_REPO_PATH>/tests/framework/python/CsvOpsTestTool
python3 atb_csv_ops_test.py -i <CSV_FILE_PATH>
在开始编写前,确认以下问题:
算子接口:
已有参考:
特殊约束:
## CSV 测试用例设计
### 算子信息
- **算子名称**: XxxOperation
- **接口规格**: [简述]
### 正例列表 (N 个)
| CaseName | InShape | OutShape | 说明 |
|----------|---------|----------|------|
| XxxBase | 128,4096 | 128,2048 | 基例 |
| ... | ... | ... | ... |
### 反例列表 (M 个)
| CaseName | ErrorType | 覆盖分支 |
|----------|-----------|----------|
| XxxErrorDtype | ERROR_INVALID_TENSOR_INI_MATCH | dtype 校验 |
| ... | ... | ... |
### 性能测试列表 (P 个)
| CaseName | InShape | 说明 |
|----------|---------|------|
| XxxPerfLarge | 2048,16384 | 大 shape |
| ... | ... | ... |
### 统计
- 正例: N 个
- 反例: M 个
- 性能测试: P 个
- 总计: N+M+P 个
### 保存路径
- **功能 CSV**: `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_func.csv`(正例+反例)
- **性能 CSV**: `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_perf.csv`(性能用例)
- **合并 CSV**(可选): `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_test.csv`
- **备份/预览**: `{WORKING_DIR}/`
⚠️ 强制检查点 - 不可跳过
CSV 用例设计完成后,必须等待用户确认后方可进入实际迁移阶段。
保存 CSV: 将生成的 CSV 用例保存至 ATB 仓库目录
{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_func.csv(正例+反例){ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_perf.csv(性能用例){ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_test.csv准备确认清单: 供用户逐项确认
## CSV 用例确认 - {OpName}
### 待确认文件
- **功能 CSV**: `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_func.csv`(正例 X 个 + 反例 Y 个)
- **性能 CSV**: `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_perf.csv`(性能 Z 个)
### 确认检查表
| 检查项 | 说明 | 用户确认 |
|--------|------|----------|
| 正例覆盖典型场景 | 包含 float16/bf16 基础用例,主流模型常见 shape | [ ] |
| 反例覆盖所有校验分支 | 覆盖所有 ERROR_INVALID_* 类型 | [ ] |
| 性能测试覆盖大小 shape | 包含大/中/小 shape 测试 | [ ] |
| CSV 已拆分为双文件 | `_func.csv` 和 `_perf.csv` 各自独立 | [ ] |
| CSV 格式符合规范 | 列数=21,分隔符=|,无多余空格 | [ ] |
| 数据类型名称正确 | 使用 data_generation.py 支持的名称 | [ ] |
| ExpectedError 类型正确 | 与参数校验逻辑匹配 | [ ] |
| 可进入实际迁移阶段 | CSV 用例已通过审查 | [ ] |
### 确认方式
- **通过**: 回复 "确认通过" 或逐项打勾确认
- **修改**: 指出具体问题,返回修改后重新确认
### 后续步骤
确认通过后,将进入 Phase 3: 实际迁移阶段
- 下一步调用: `atb-aclnn-operator-migration`
**⚠️ 未收到用户确认前,禁止进入实际迁移阶段**
我已生成 {OpName} 算子的 CSV 测试用例,已拆分为两个独立文件,请确认以下内容:
📄 **功能 CSV**: `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_func.csv`
- 正例: N 个
- 反例: M 个
📄 **性能 CSV**: `{ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_perf.csv`
- 性能测试: P 个
Phase 5a 测试时将分两步:
1. 前台跑 _func.csv(秒级完成)
2. 后台 subagent 逐个跑 _perf.csv(避免 OOM)
请检查:
1. 正例是否覆盖了所有典型场景和数据类型?
2. 反例是否覆盖了所有参数校验分支?
3. 性能测试的 shape 选择是否合理?
4. CSV 拆分是否正确(正例/反例在 _func,性能在 _perf)?
回复 "确认通过" 进入实际迁移阶段,或指出需要修改的地方。
| 文件类型 | 路径 | 说明 |
|---|---|---|
| 功能 CSV | {ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_func.csv | 正例+反例,Phase 5a 前台跑 |
| 性能 CSV | {ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_perf.csv | 性能用例,Phase 5a 后台 subagent 跑 |
| 合并 CSV(可选) | {ATB_REPO_PATH}/tests/apitest/opstest/csv/{op_name}_test.csv | 全量参考 |
变量说明:
ATB_REPO_PATH: ATB 仓库路径WORKING_DIR: working_files 目录op_name: 算子名称小写(如 {xxx}quant)⚠️ 执行后填写:技能执行完成后,参照下方格式填写实际执行结果。
| 步骤 | 检查点描述 | 状态 |
|---|---|---|
| - | 正例设计完成 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| - | 反例设计完成 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| - | 性能测试设计完成 | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| - | CSV 文件已创建(双文件) | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| - | CSV 已拆分为 _func.csv 和 _perf.csv | ✅ PASS / ❌ FAIL / ⏭️ SKIP |
| - | 用户已确认 CSV 用例 ⭐ | ⬜ 待确认 |
VERDICT: ✅ SUCCESS / ⚠️ PARTIAL / ❌ FAILED / ⏭️ SKIPPED
| 等级 | 检查点 | 问题描述 | 建议 |
|---|---|---|---|
| 🔴 CRITICAL | - | - | - |
| 🟡 WARNING | - | - | - |