CANN/cannbot-skills CUDA转Ascend算子开发工作流
cuda2ascend【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills社区版直调算子开发工作流。用户描述算子需求Agent 团队按统一流程从需求分析走到代码上库全程可追溯、可恢复、可定制。借鉴了面向对象的设计思想本仓内维护一套通用工作流基类各生态算子仓作为子类可以拉取使用本工作流覆写与自身耦合的领域知识按照仓内开发流程定制本工作流达到一套核心流程服务所有算子仓消除重复建设的目的。设计思想借鉴面向对象思想重构直调算子工作流CANNBot 仓维护一套通用工作流作为基类各算子仓的工作流作为子类继承基类编排流程仅覆写与自身耦合的领域知识和验收实现。封装对算子仓隐藏编排的复杂实现工作流将编排逻辑封装为知识接口。算子仓只关心我提供什么知识不关心工作流怎么用。继承CANNBot 提供基类算子仓继承基类只覆写自己需要的部分。多态工作流核心始终通过逻辑名引用可覆写 Skill领域知识、验收标准实际实现在 init 时由 symlink 绑定确定。知识分层知识分布按抽象层级从高到低分层越靠上越通用稳定、越靠下越具体易变层级承载形式职责可否被子仓覆写主 Agent根目录 AGENTS.mdPM Agent 的全局知识规范行为边界final工作流ops-direct-invoke-workflowskill编排流程的组织与调度final子 Agentagents/*.md调度执行的最小单位规范每一个子步骤的行为finalSkillskills/repo-*/、skills/workflow-*/仓库领域知识、工作流定义模板/验收标准virtual仓内文档仓库 doc 目录面向开发者的参考资料仓库自有其中 Agent 与 Skill 相邻两层职责最易混淆判定原则会变、需被子仓 override 的领域知识归 Skill跨仓通用、用于定义角色身份与行为边界的内容归 Agent。参与角色角色类型职责用户验收/决策需求提出、各确认点审批PM主 Agent调度用户交互、流程编排、问题裁定只调度不执行architect执行Spec 形式化、开发方案与测试方案设计developer / -code / -test / -doc执行代码、测试、文档开发与修复QA验收各 CP 点验收加载对应workflow-cp*Skill 完成判定产出验收报告与用户确认问卷开发流程概览完整流程从需求分析到上库分 8 个阶段方案线与测试线在设计/开发阶段并行CP3/CP4/CP5 构成验收状态机编号流程角色输入输出说明备注阶段0开发准备0开发准备developer-环境信息文档检查 NPU 设备、CANN 环境、编译环境写入.cannbot交付件可复用支持独立触发⛔ CP0环境确认QA环境信息文档用户问卷 jsonQA 加载workflow-cp0生成环境确认问卷PM 发送给用户固定用户确认失败由用户决定修复或停止阶段1需求分析1.1需求分析PM对话上下文、仓库设计约束需求文档数学定义、算子原型、目标芯片、精度/性能要求缺项发问卷补齐CP1需求确认QA需求文档验收结论QA 加载workflow-cp1核对需求需用户确认时生成问卷 json 交 PM 发送不通过打回 1.11.2Spec 生成architect需求文档Specspec.yaml机器可校验需求形式化为 L0 数学契约作为后续方案与测试设计的统一真值源规范见 ops-spec-genCP1Spec 确认QAspec.yaml验收结论QA 加载workflow-cp1-prime核对 Spec9-stage 校验通过需用户确认时生成问卷 json 交 PM 发送不通过打回 1.2阶段2方案设计方案线 / 测试线并行2.1黑盒测试设计architectspec.yaml测试方案文档golden 实现方案、L0/L1/L2 分级用例设计测试线CP2.1测试检查QA测试方案文档验收结论QA 加载workflow-cp2-1完成黑盒测试评审不通过打回 2.12.2开发方案设计architectspec.yaml开发方案文档代码架构、Buffer 规划、Tiling、多核切分、Ascend C 接口验证方案线CP2.2方案检查QA开发方案文档验收结论QA 加载workflow-cp2-2完成开发方案评审不通过打回 2.2CP2方案确认QA开发方案 测试方案验收结论QA 加载workflow-cp2-primeCP2.1、CP2.2 均通过后合并确认不通过打回对应步骤阶段3代码开发开发线 / 测试线并行3.1算子开发developer-code开发方案文档、修改要求算子代码按方案实现、编译验证通过被打回时按修改要求调整开发线3.2测试工程开发developer-test测试方案文档golden 代码 用例表 性能采集框架实现 golden、功能用例、性能采集框架测试线3.3白盒测试补全developer-test算子代码、测试代码白盒测试用例覆盖黑盒未涉及的分支3.1/3.2 汇合后CP3功能验收QA算子代码 测试代码功能验收报告QA 加载workflow-cp3执行全量功能测试含精度比对不通过回退 3.1阶段4性能验收4.1性能采集执行developer-test算子代码CP3 通过后性能数据用 3.2 搭的性能采集框架跑出性能数据基于 CP3 通过后的最终代码CP4性能验收QA算子代码 性能数据性能验收报告QA 加载workflow-cp4评估性能是否达标不通过回退 3.1重走 3.3→CP3→4.1→CP4阶段5代码检视CP5代码检视QA全部变更文件检视结论QA 加载workflow-cp5完成多维度代码检视不通过回退 3.1重走至 CP5阶段6上库准备6.1文档补全developer-doc算子代码 设计文档算子文档补全算子使用文档6.2提交 PRdeveloper-doc全部代码 文档PR提交 PR6.3CI 流水线CI外部PRCI 报告触发 CI编译 UT ST非调度子 Agent6.4codecheck 修复developerCI 报告修复后代码修复 codecheck 问题6.5检视意见修复developerPR 检视意见修复后代码修复 PR 检视意见CP6CI 通过确认QACI 报告 PR 状态上库确认QA 加载workflow-cp6确认 CI 通过、检视意见闭环未通过回退 6.4/6.5 后重触发 CI阶段7开发总结7.1开发报告developer-doc全部交付物开发报告整理开发过程与交付物清单写入.cannbot7.2经验总结developer-doc开发过程记录经验总结文档沉淀开发经验与踩坑记录写入.cannbot设计约束为保证实现一致性、在方案出现分歧时提供统一指导本工作流约定了一组设计约束。理解这些约束能帮助参与开发的开发者把握最初的设计思路——为什么定制要靠 override 而非改编排、为什么执行方与验收方必须分离、为什么中间状态要落盘。约束由 skill 看护这组约束不是一次性文档而是由ops-direct-invoke-workflow-maintainskill 持续看护的维护红线。任何对工作流文件的新增/修改/删除都须先触发该 skill改完后按其派生的可执行检视条款逐条自查——约束不通过则回退修改。开发者若要演进工作流务必先阅读该 skill。结构约束SOLID条款说明单一职责S每个 Skill 只负责一个功能域只有一种原因引起它需要修改开闭O编排对扩展开放、对修改关闭子仓扩展步骤应 override virtual skill而非改动编排里氏替换L子仓 override 后须保持相同逻辑名、输入输出格式与调用方式上层无感知接口隔离I子仓只 override 自己需要的组件不被迫实现全部 virtual 组件依赖倒置D上层只依赖抽象逻辑名不依赖具体实现路径 / 章节结构基类演进兼容基类对外契约逻辑名 / 输入输出格式 / 调用约定一经发布只增不破坏确需破坏性变更须提供迁移路径并通知已接入仓层级感知层级感知方向主 Agent → 工作流 → 子 Agent → Skill → 仓内文档。层级间单向感知下级模块不感知上级子 Agent 不知自己在流程哪一步Skill 不提及被谁调用。层级内黑盒感知同级模块之间互不了解对方内部逻辑。调度约束条款说明职责分离任务的执行方与验收方不能是同一 Agent 实例最小信息每个子 Agent 只获取完成当前任务所需的最小信息集最小权限每个子 Agent 只获取完成当前任务所需的最小操作权限当前由 hook 落地为写权限约束过程有界所有可能循环/重试的环节必须声明最大次数超限暂停并报告确定性交付每个子环节有明确交付件与可判定的通过指标状态可观测每阶段完成后状态持久化到外部.cannbot/state.json不依赖会话记忆可恢复性暂停/失败落盘到可恢复状态点恢复时不重跑已通过阶段修改不越权执行角色严格遵循上游设计发现问题回退上游修改不自行变更上游决策风格约束SKILL.md 只做路由入口文件只做意图识别与路由分发知识细节放 references。机制优于自然语言能用 hook / 脚本 / 权限声明约束的行为不写成 prompt 自然语言。引用而非硬编码涉及仓库领域知识时引导 Agent 读原文而非全文硬编码进 Skill。开发者知识外置对开发者同样可见的知识优先放仓内 docSkill 只做引导。举例不引入外部概念举例只用仓内已有知识或通用概念不引入需额外背景才懂的概念。【免费下载链接】cannbot-skillsCANNBot 是面向 CANN 开发的用于提升开发效率的系列智能体本仓库为其提供可复用的 Skills 模块。项目地址: https://gitcode.com/cann/cannbot-skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考