Token导航 LogoToken导航

Agent Skill · 开发

ascendc-operator-design(ascendc 算子设计)

用于辅助界面设计、视觉规范、排版、配色、布局和交互体验优化。它适合让 Agent 根据产品场景整理页面结构、生成 UI 方案、检查视觉一致性或改进组件层级。使用时需要结合现有品牌、设计系统和用户任务,不应只堆装饰元素;涉及真实页面改动时,应通过截图或浏览器预览检查文本溢出、对齐和响应式表现。

ascendc-operator-design 是开发类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描已通过,按安装量在开发类的 21,746 个 Skill 里排第 12,499。

总安装 1,248周安装 50GitHub Stars 12下载 404核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:ascendc-operator-design(ascendc 算子设计)
来源仓库:https://github.com/ascend/agent-skills
仓库路径:skills/ascendc-operator-design
安装命令:
npx skills add https://github.com/ascend/agent-skills --skill ascendc-operator-design
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/ascend/agent-skills --skill ascendc-operator-design

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

ascendc-operator-design 根据算子需求生成完整设计文档 design.md,供后续编码阶段消费。自动分析数学公式、数据类型约束,并推荐合适的实现路径(AscendC Kernel、CATLASS 或 ACLNN)。使用前需确认算子名称、功能描述及对标 PyTorch 接口签名。

设计文档必须包含 Tiling 策略与 UB 分配表,作为代码生成依据。建议在设计完成后立即调用,确保后续开发与测试基于统一规范。

来源仓库内路径:skills/ascendc-operator-design

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/ascend/agent-skills --skill ascendc-operator-d…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

ascendc-operator-design 怎么安装?

在终端执行 npx skills add https://github.com/ascend/agent-skills --skill ascendc-operator-design。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

ascendc-operator-design 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

ascendc-operator-design 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

ascendc-operator-design 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

ascendc-operator-design 用的人多吗?

公开数据是累计安装 1,248 次,近一周安装 50 次,下载 404 次,GitHub 12 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

ascendc-operator-design 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
ascendc-operator-design

ascendc 算子设计 · 本页

1,24812需要联网未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

AscendC Operator Design Skill

根据算子需求生成完整的设计文档(design.md),供后续 code-gen skill 消费。

使用场景

在 ascendc-operator-project-init 创建骨架后、ascendc-operator-code-gen 生成代码之前调用。

设计流程

1. 算子需求分析

如果由调度 skill 调用,算子名称和功能描述已确定,直接进入步骤 2。

如果独立调用,与用户确认以下信息:

信息必填说明
算子名称(snake_case)是如 acosh, rms_norm
功能描述 / 数学公式是如 "acosh(x) = ln(x + sqrt(x²-1))"
支持的数据类型否默认 float16 + float32

MANDATORY: 检查 PyTorch / NumPy 是否存在同名接口。如果存在,接口签名和语义 必须 与之对齐(如 torch.acosh、torch.softmax)。

2. 选择实现路径

根据算子特性,推荐合适的实现方式:

实现路径适用场景判断标准
AscendC Kernel纯 vector 算子不涉及矩阵乘法
CATLASS 模板库GEMM / FlashAttention含 cube 矩阵计算
ACLNN 封装CANN 已有内置算子无需自定义 kernel
新算子默认使用 AscendC Kernel 路径,除非明确涉及矩阵乘法。

3. 详细设计文档生成

MANDATORY: 在生成设计文档之前,必须读取以下参考文档:

  1. 必读: templates/design-template.md — 设计文档模板
  2. 按算子类型选读:

- 逐元素操作(add/relu/acosh/sigmoid...)→ references/elementwise-tiling.md - 归约操作(softmax/layernorm...)→ references/reduction-tiling.md

  1. 通用参考: references/general-tiling-principles.md

绝对不要跳过参考文档的阅读。

3.1 设计文档结构

设计文档包含以下核心章节:

  1. 算子接口定义 — 函数签名、参数说明、支持的数据类型
  2. 计算逻辑设计 — 算法描述、AscendC API 调用伪代码、实现路径选择
  3. Tiling策略 — 两级Tiling设计(Block级 + UB级)、UB分配表、tileLength计算
  4. Workspace需求 — workspace大小计算
  5. 性能优化 — 关键优化点、算子特性分析
  6. Kernel端实现要点 — 偏移计算、执行流程、FP16/BF16 升精度流程
  7. 实现检查清单 — 文件结构、代码要点、测试要点
3.2 计算逻辑伪代码(关键产出)

必须 将数学公式分解为 AscendC API 调用序列。这是 code-gen skill 的直接输入。

常见数学函数到 AscendC API 映射:

数学运算AscendC API备注
x + yAdd(dst, src0, src1, len)双输入
x - ySub(dst, src0, src1, len)双输入
x * yMul(dst, src0, src1, len)双输入
x / yDiv(dst, src0, src1, len)双输入
x + scalarAdds(dst, src, scalar, len)标量运算,优先使用
x * scalarMuls(dst, src, scalar, len)标量运算,优先使用
abs(x)Abs(dst, src, len)
exp(x)Exp(dst, src, len)
ln(x)Ln(dst, src, len)
sqrt(x)Sqrt(dst, src, len)
1/xReciprocal(dst, src, len)
1/sqrt(x)Rsqrt(dst, src, len)
tanh(x)Tanh(dst, src, len)
relu(x)Relu(dst, src, len)
max(x,y)Max(dst, src0, src1, len)
min(x,y)Min(dst, src0, src1, len)
fp16→fp32Cast(dst, src, CAST_NONE, len)升精度无损
fp32→fp16Cast(dst, src, CAST_ROUND, len)降精度有损

示例 — acosh(x) 的 API 调用序列:

Mul(tmp, x, x, len);        // tmp = x²
Adds(tmp, tmp, -1.0f, len); // tmp = x² - 1
Sqrt(tmp, tmp, len);         // tmp = sqrt(x² - 1)
Add(tmp, tmp, x, len);      // tmp = x + sqrt(x² - 1)
Ln(y, tmp, len);             // y = ln(x + sqrt(x² - 1))
注意:如果计算序列中某步的 dst 与 src 相同(原地操作),大部分 AscendC API 支持,但需确认具体 API。
3.2 Tiling 策略

重要: AscendC 算子采用两级 Tiling 策略,根据算子类型参考相应文档:

┌─────────────────────────────────────────────────────────────┐
│                    全局内存 (GM)                              │
│  ┌─────────────────────────────────────────────────────┐   │
│  │              totalLength 元素数据                     │   │
│  └─────────────────────────────────────────────────────┘   │
└─────────────────────────────────────────────────────────────┘
                           │
          ┌────────────────┼────────────────┐
          ▼                ▼                ▼
    ┌──────────┐     ┌──────────┐     ┌──────────┐
    │  Core 0  │     │  Core 1  │ ... │ Core 39  │   ← Block级Tiling (核间切分)
    └──────────┘     └──────────┘     └──────────┘
          │                │                │
          ▼                ▼                ▼
    ┌──────────┐     ┌──────────┐     ┌──────────┐
    │   UB 0   │     │   UB 1   │     │  UB 39   │   ← UB级Tiling (核内切分)
    └──────────┘     └──────────┘     └──────────┘

Block级Tiling(核间切分):

  • 将数据分配到多个 AI Core 并行处理
  • 负载均衡: 整核/尾核策略,尾核处理数据量小于等于整核

UB级Tiling(核内切分):

  • 每个 Core 内部分块处理数据
  • UB 对齐: 32 字节
  • UB 容量: 不超过 UB_SIZE_LIMIT(实际编码时通过接口获取,示例值 192KB)

参考文档:

  • 逐元素操作: 阅读 references/elementwise-tiling.md(包含完整两级 Tiling 实现)
  • 归约操作: 阅读 references/reduction-tiling.md
  • 通用原则: 参考 references/general-tiling-principles.md
3.3 硬件约束说明
  • UB 缓冲区: 必须按 32 字节对齐,即使逻辑上只需要存储少量数据
  • 归约类算子: 单值缓冲区需要开辟 32B 空间
  • 精度处理:

- FP32 输入: 无需升精度,直接计算 - FP16 输入: 必须升精度到 FP32 计算,保证计算精度 - BF16 输入: 必须升精度到 FP32 计算,vector 计算单元不支持 bfloat16 直接计算

  • Workspace 需求:

- elementwise 类: SYSTEM_WORKSPACE_SIZE(通常为 16MB) - 其他类算子: 根据实际 tiling data 大小计算

3.4 常见算子类型的 UB 分配速查表

根据算子输入数量和数据类型,快速确定 bufferCoefficient:

单输入单输出 elementwise(acosh, relu, sigmoid, exp, ln, sqrt, abs...):

数据类型UB 布局bufferCoefficient
float32inQ(2×4) + outQ(2×4) + tmpBuf(1×4) = 2020
float16inQ(2×2) + outQ(2×2) + tmpBuf1(1×4) + tmpBuf2(1×4) = 1616

双输入单输出 elementwise(add, mul, sub, div...):

数据类型UB 布局bufferCoefficient
float32inQ_X(2×4) + inQ_Y(2×4) + outQ(2×4) + tmpBuf(2×4) = 3232
float16inQ_X(2×2) + inQ_Y(2×2) + outQ(2×2) + tmpBuf(3×4) = 2424
实战经验:bufferCoefficient 是 code-gen 阶段最关键的参数。设计文档中 必须 明确给出每种 dtype 的值,否则代码生成无法正确计算 tileLength。
3.5 生成设计文档

基于收集的信息,读取 templates/design-template.md 模板,填充所有章节,输出到 csrc/ops/<op_name>/design.md。

输出位置: ascend-kernel/csrc/ops/<op_name>/design.md(覆盖初始化阶段的占位文件)

交互流程

被调度 skill 调用时(推荐流程):

  1. 接收算子名称和功能描述
  2. 自动选择实现路径
  3. 读取参考文档,生成完整设计文档
  4. 输出到 design.md

独立调用时:

  1. 需求收集: 通过对话了解算子需求
  2. 方案推荐: 基于需求推荐实现路径
  3. 详细设计: 生成完整的设计文档
  4. 检查确认: 与用户确认设计要点
  5. 移交开发: 生成检查清单,准备进入编码阶段

注意事项

Tiling 参数设计原则

  1. 参数结构化: // 好的做法:使用结构体 struct MyOperatorTilingData {int64_t totalLength; // 总数据长度 int64_t formerNum; // 整核数量 int64_t formerLength; // 整核数据长度 int64_t tailNum; // 尾核数量 int64_t tailLength; // 尾核数据长度 int64_t tileLength; // UB单次处理长度}; // 避免:使用大量独立参数 void KernelFunc(int64_t totalLength, int64_t tileNum, int64_t tileLength,...);
  2. 两级对齐: // Block级: Cache Line 对齐 (512字节) constexpr int64_t CACHE_LINE_BYTE_LENGTH = 512; int64_t totalLengthCoreAlign = ((totalLengthCore + CACHE_LINE_BYTE_LENGTH - 1) / CACHE_LINE_BYTE_LENGTH) * CACHE_LINE_BYTE_LENGTH; // UB级: 32字节对齐 int64_t ubAlignElements = 32 / dtypeSize; int64_t tileLengthAligned = ((tileLength + ubAlignElements - 1) / ubAlignElements) * ubAlignElements;
  3. UB 分配表: 每个算子设计必须包含 UB 分配表,明确列出:

- 所有 buffer 名称和用途 - 每个 buffer 的大小(字节) - buffer 数量(单 buffer 或 double buffer) - 总 UB 使用量和约束验证

  1. Double Buffer: 使用 BUFFER_NUM=2 实现 double buffer,隐藏内存延迟

其他注意事项

  1. 数据类型对齐: 确保PyTorch tensor类型和AscendC kernel类型匹配(half ↔ float16, float ↔ float32)
  2. 内存对齐: AscendC要求内存地址对齐(UB 32B, Cache Line 512B)
  3. Shape约束: 某些算子对shape有特殊要求(如需要被tile size整除)
  4. 性能权衡: 在代码复杂度和性能之间找到平衡点
  5. 接口定义: 检查PyTorch/Numpy等库是否存在类似算子接口,如果存在,接口定义参考PyTorch/Numpy等库
  6. 测试输入范围: 在设计文档中注明算子的有效输入范围(如 acosh 要求 x >= 1),测试用例需据此生成数据

交付标准(DoD)

设计文档生成后,必须包含以下关键产出物(供 code-gen skill 直接消费):

  • 函数签名: at::Tensor op_name(const at::Tensor &self,...) 完整声明
  • 支持的数据类型: 明确列出(如 float16, float32)
  • AscendC API 调用伪代码: 每步计算映射到具体 API
  • UB 分配表: 每种 dtype 的 buffer 布局和 bufferCoefficient
  • Tiling 参数结构体: 字段定义和计算公式
  • FP16/BF16 升精度流程: 如支持半精度,必须描述 Cast 路径

下一步

设计完成后,使用 ascendc-operator-code-gen skill 生成具体代码实现。

平台分布

Codex

34.09%
按下载量换算138

Claude

29.6%
按下载量换算120

Cursor

18.32%
按下载量换算74

Gemini CLI

9.04%
按下载量换算37

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills