| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat(agent): add pypto-pro-op-orchestrator and pro skills Co-authored-by: xuzhenghao8<xuzhenghao8@huawei.com> # message auto-generated for no-merge-commit merge: !348 merge master into master feat(agent): add pypto-pro-op-orchestrator and pro skills Created-by: xuzhenghao8 Commit-by: xuzhenghao8 Merged-by: cann-robot Description: # pypto-pro-op-orchestrator 工作流 > 分析对象: .opencode/agents/pypto-pro-op-orchestrator.md > 关联 skill:pypto-pro-op-plan、pypto-pro-material-explore、pypto-pro-op-design、pypto-pro-op-develop、pypto-golden-generate(Stage 2 复用) --- ## 一、角色定位 pypto-pro-op-orchestrator 是 PyPTO-Pro 算子开发的 **primary(主)编排代理**,只负责三件事:**调度子代理、验收产物、把关质量**。它有三条不可逾越的边界: 1. **从不亲自写 kernel 代码,也不做 API 探索**——所有实作交给子代理。 2. **从不亲自调试或修改 kernel**——检查清单失败项只反馈回子代理,由子代理自修复。 3. **自身不加载业务 skill**——skill 由子代理在收到任务后自行加载,orchestrator 只下达任务、跑验收命令。 --- ## 二、四阶段流水线 编排是一个 **门禁式线性流水线**:每个 Stage 结束时 orchestrator 执行检查清单,通过才推进,不通过则把缺失项反馈给子代理修正。 | Stage | 子代理加载的 skill | 核心产物 | 关键门禁判据 | |---|---|---|---| | **1 需求规划** | pypto-pro-op-plan(内部再调 pypto-intent-understand + pypto-pro-material-explore) | SPEC.md、EXPLORE_REPORT.md、PRO_MATERIAL_INDEX.md、MEMORY.md | EXPLORE_REPORT 含 ≥8 章节且 §3/§4/§5 三方向齐全;无未解决的 unsupported;INDEX 含 §A/§B/§C | | **2 Golden 生成** | pypto-golden-generate(唯一可复用的非 Pro skill,因纯 torch+torch_npu、不含 pl.*) | {op}_golden.py、GOLDEN_PERF_REPORT.md | golden 自验证 exit code 0 | | **3 架构设计** | pypto-pro-op-design | DESIGN.md | 含 §0–§9 十章节;§8 综合评估无 ❌;§9 Tile 数据流全景图存在;无 TBD/待定 | | **4 Kernel 实现** | pypto-pro-op-develop | test_{op}.py(kernel+test 单文件) | 静态检查(设备一致、atol 合理、≥2 个 test)→ orchestrator 亲自运行 python custom/<op>/test_{op}.py 得 PASS | --- ## 三、各 Stage 内部机制 ### Stage 1(先需求后探索) pypto-pro-op-plan 强制"先需求、后探索"顺序——先用 pypto-intent-understand 产出 SPEC.md,再用 pypto-pro-material-explore 探索。探索的核心理念是 **"先建图,后按图索骥"**: - 每次重新扫描仓库动态生成 PRO_MATERIAL_INDEX.md(§A API 文档 grep pypto_pro 过滤、§B a5 样例、§C 教程)。 - 随后 **同一消息内并行发起 3 个 Explore 子代理**(API/约束、a5 样例、教程模式),汇总成 EXPLORE_REPORT.md。 - 报告的 §7 环境常量快照(UB 容量、event_id 上限、stride 阈值)是后续 Stage 3 决策的硬依据。 ### Stage 2(Golden 生成) 复用非 Pro 的 pypto-golden-generate 生成 {op}_golden.py。可复用的原因是它产出纯 torch + torch_npu 参考实现,不涉及 pl.* API,与 PyPTO-Pro 无冲突。golden 提供设备选择函数 _get_device()(经 TILE_FWK_DEVICE_ID 环境变量),供 Stage 4 测试保持设备一致。 ### Stage 3(9 轮迭代式约束收敛) pypto-pro-op-design 是问题驱动的 R0–R8 迭代,不是线性填表: - **R0** Phase 划分 → **R1** API 映射 → **R2** Tile 规划 → **R3** UB 空间布局 → **R4** 循环与 Section → **R5** 分核 → **R6** 同步与核间流水 → **R7** 尾块处理 → **R8** 综合评估。 - **回溯规则**:每轮发现矛盾立即回溯修正前序轮次,不累积到 R8;R8 发现 ≤3 处问题就地修复重跑 R8,>3 处回到最早出问题的轮次,最多 5 次完整迭代。 - 存在显式 **跨轮联合决策**(如 R3↔R6:pipeline 深度决定 double buffer 地址翻倍,需回填 R3)。 - 最终产出 §9 Tile 数据流全景图,作为交给 Stage 4 的"施工图"。 ### Stage 4(单代理自修复闭环) pypto-pro-op-develop 以 DESIGN.md(全局结构)+ EXPLORE_REPORT.md(API 约束/样例/教程)为主依据,7 步走: 1. 确认输入齐全(DESIGN.md §0–§9 完整性) 2. 逐 API 确认参数(参数名/顺序/约束) 3. 编写 tile 声明(默认 make_tile_group + auto_mutex) 4. 编写 section 和循环骨架 5. 填入 Phase 内部实现 6. 编写测试函数(设备须从 _get_device() 取,atol 合理) 7. 本地验证与自修复 子代理 **不得把失败抛回 orchestrator**,须参照 pitfalls.md 自行修到 PASS。 --- ## 四、两个关键控制细节 1. **Stage 4 硬性规则块**:调度 Stage 4 子代理时,prompt **最开头必须逐字粘贴**禁止环境配置的规则块(禁 conda activate/source/export/pip install,运行只允许 python {脚本})。设计意图是 **压制 LLM "先配环境再干活" 的内置先验**。 2. **Stage 4 双阶段验收**:orchestrator 先做静态扫描(文件存在、设备与 golden 一致、atol≥下界、≥2 个 test 覆盖整切+尾块),全过后 **亲自运行** 脚本确认 PASS——这是 orchestrator 唯一"动手"的动作,仍不涉及改代码。 --- ## 五、工作流图 ┌─────────────────────────────────────────────────────────────────────┐ │ 用户请求开发 PyPTO-Pro 算子 │ │ orchestrator 首问:算子名 / 数学公式 / 输入输出 shape+dtype │ └───────────────────────────────┬─────────────────────────────────────┘ ▼ ╔═══════════════════════════ STAGE 1 需求规划 ═══════════════════════════╗ ║ dispatch general 子代理 ──► 自载 skill: pypto-pro-op-plan ║ ║ ├─ Step1 载 pypto-intent-understand ──► SPEC.md ║ ║ └─ Step2 载 pypto-pro-material-explore ║ ║ ├─ 重扫仓库 ──► PRO_MATERIAL_INDEX.md (§A API/§B a5/§C 教程) ║ ║ └─ 并行 3 Explore 子代理(同一消息): ║ ║ [1]API&约束 [2]a5样例 [3]教程模式 ──► EXPLORE_REPORT.md ║ ║ 产物: SPEC / EXPLORE_REPORT / INDEX / MEMORY ║ ╚═══════════════════════════════╤═══════════════════════════════════════╝ orchestrator 门禁: ≥8章节? §3/§4/§5齐? 无unsupported? §A/B/C? FAIL─►反馈缺失项回子代理 │ PASS─▼ ╔═══════════════════════════ STAGE 2 Golden 生成 ═══════════════════════╗ ║ dispatch general 子代理 ──► 自载 skill: pypto-golden-generate ║ ║ (唯一复用的非Pro skill: 纯torch+torch_npu, 无 pl.*) ║ ║ 产物: {op}_golden.py + GOLDEN_PERF_REPORT.md ║ ╚═══════════════════════════════╤═══════════════════════════════════════╝ orchestrator 门禁: golden.py存在? 自验证 exit=0? perf报告在? FAIL─►反馈 │ PASS─▼ ╔═══════════════════════════ STAGE 3 架构设计 ══════════════════════════╗ ║ dispatch general 子代理 ──► 自载 skill: pypto-pro-op-design ║ ║ 9 轮迭代式约束收敛 (问题驱动, 发现矛盾即回溯): ║ ║ R0 Phase划分 → R1 API映射 → R2 Tile规划 → R3 UB布局 ║ ║ → R4 循环/Section → R5 分核 → R6 同步/核间流水 → R7 尾块 ║ ║ → R8 综合评估(≤3就地修/>3回最早轮, 最多5轮) ║ ║ ↖────────── 跨轮回溯 (如 R3↔R6 buffer地址回填) ──────────┘ ║ ║ 产物: DESIGN.md (核心=§9 Tile 数据流全景图) ║ ╚═══════════════════════════════╤═══════════════════════════════════════╝ orchestrator 门禁: §0-§9齐? §8无❌? §9全景图在? 无TBD/待定? FAIL─►反馈对应轮次 │ PASS─▼ ╔═══════════════════════════ STAGE 4 Kernel 实现 ══════════════════════╗ ║ dispatch general 子代理 ║ ║ ⚠ prompt 最开头逐字粘贴【硬性规则块: 禁环境配置/仅 python 脚本】 ║ ║ ──► 自载 skill: pypto-pro-op-develop ║ ║ 7步: 确认输入→逐API确认参数→tile声明→section/循环骨架 ║ ║ →Phase实现→写测试→本地验证 ║ ║ ┌──────── 子代理独立自修复闭环 (不抛回 orchestrator) ────────┐ ║ ║ │ 开发 → 运行 → 失败? → 查 pitfalls.md 定位根因 → 修复 → 重跑 │ ║ ║ └────────────────────────────────────────────────────────────┘ ║ ║ 产物: test_{op}.py (kernel + ≥2 test 单文件) ║ ╚═══════════════════════════════╤═══════════════════════════════════════╝ orchestrator 双阶段验收: ① 静态扫描: 文件在? 设备与golden一致? atol≥下界? test数≥2(整切+尾块)? ② 静态全过 ──► orchestrator 亲自运行 python custom/<op>/test_{op}.py 运行FAIL─►错误反馈回子代理重修 │ PASS─▼ ┌─────────────────────────┐ │ 算子交付 (精度通过) │ └─────────────────────────┘ --- See merge request: cann/pypto-gym!348 | 8 小时前 | |
feat(agent): Migrate Operator Development Capabilities to pypto-gym Co-authored-by: wangzheng97<wangzheng97@hisilicon.com> # message auto-generated for no-merge-commit merge: !345 merge migrate/op-dev-skills into master feat(agent): Migrate Operator Development Capabilities to pypto-gym Created-by: wangzheng97 Commit-by: wangzheng97 Merged-by: cann-robot Description: > 关联 Issue:#13 (Closes #13) ## 概述 将 PyPTO 算子开发能力(op-dev skill / 编排 agent 团队 + 状态机插件 + lint hook)从 cann/pypto 迁入 pypto-gym,并新增 pypto-docs-search 解决 gym 无 docs/、models/ 目录时的资料获取。 ## 提交结构(三段式) - **C1 迁入算子开发能力(自 cann/pypto master 原样迁入)**:17 个 skill + 9 个编排 agent(op-orchestrator 团队)+ pypto-op-lint / pypto-state-transition 插件 + pypto-op-lint hook,与上游逐字节一致,未做修改。 - **C2 自洽裁剪**:删除迁入文件中对未迁入单元的引用,保持自洽子集;个别仍需的脚本能力(CCE 行→前端源码定位)复制到本地作替代,不留悬空描述。 - **C3 新增 pypto-docs-search + devkit 资料接入**:会话初始化用 sync_devkit.py 装配本地缓存(docs/ops/tests,工作树已含则符号链接复用、免下载);检索用原生 Grep/Glob 模板 + 按入口键的索引文件(本地路径优先、在线 _sources 兜底);各 agent/skill 以 capability 级调用 pypto-docs-search,单点已知文档用 raw markdown URL 直取。 ## 说明 - **不迁移** pypto-fused-op-integration:gym 仓内的版本为最新,保留不动。 - 按算子开发范围裁剪,未迁入 pass 开发 / PR 工具 / 部分设备侧深调子 skill 等非算子开发核心单元。 See merge request: cann/pypto-gym!345 | 16 小时前 |