已合并
feat(ops-registry-invoke): add installable workflow plugin #19
zhangzijie创建于 14 天前
feat(ops-registry-invoke): add installable workflow plugin #19
已合并
共 13 个文件变更+1375-0
| @@ -118,6 +118,19 @@ | |||
| 118 | "./model-infer-perf-breakdown" | 118 | "./model-infer-perf-breakdown" |
| 119 | ] | 119 | ] |
| 120 | }, | 120 | }, |
| 121 | + { | ||
| 122 | + "name": "harness-skills", | ||
| 123 | + "category": "skills", | ||
| 124 | + "strict": false, | ||
| 125 | + "source": { | ||
| 126 | + "source": "local", | ||
| 127 | + "path": "harness" | ||
| 128 | + }, | ||
| 129 | + "skills": [ | ||
| 130 | + "./workflow-orchestrator", | ||
| 131 | + "./workflow-rollback-advice" | ||
| 132 | + ] | ||
| 133 | + }, | ||
| 121 | { | 134 | { |
| 122 | "name": "ops-direct-invoke", | 135 | "name": "ops-direct-invoke", |
| 123 | "source": "./plugins/ops-direct-invoke", | 136 | "source": "./plugins/ops-direct-invoke", |
| @@ -175,6 +188,25 @@ | |||
| 175 | "dependencies": [ | 188 | "dependencies": [ |
| 176 | "model-infer-skills" | 189 | "model-infer-skills" |
| 177 | ] | 190 | ] |
| 191 | + }, | ||
| 192 | + { | ||
| 193 | + "name": "ops-registry-invoke", | ||
| 194 | + "source": "./plugins/ops-registry-invoke", | ||
| 195 | + "description": "ACLNN算子开发工作流", | ||
| 196 | + "version": "1.0.0", | ||
| 197 | + "author": { | ||
| 198 | + "name": "CANNBot" | ||
| 199 | + }, | ||
| 200 | + "keywords": [ | ||
| 201 | + "aclnn", | ||
| 202 | + "registry-invoke", | ||
| 203 | + "operator", | ||
| 204 | + "orchestrator" | ||
| 205 | + ], | ||
| 206 | + "category": "development", | ||
| 207 | + "dependencies": [ | ||
| 208 | + "harness-skills" | ||
| 209 | + ] | ||
| 178 | } | 210 | } |
| 179 | ] | 211 | ] |
| 180 | } | 212 | } |
| @@ -35,6 +35,7 @@ bash init.sh | |||
| 35 | | [`ops-direct-invoke`](plugins/ops-direct-invoke/) | skill 驱动的多角色直调算子开发工作流:8 阶段 7 CP 全流程、静默模式、可插拔流程插件、算子仓继承定制 | | 35 | | [`ops-direct-invoke`](plugins/ops-direct-invoke/) | skill 驱动的多角色直调算子开发工作流:8 阶段 7 CP 全流程、静默模式、可插拔流程插件、算子仓继承定制 | |
| 36 | | [`ascendc-st-design`](plugins/ascendc-st-design/) | Ascend C 算子 L0/L1/L2 ST 用例设计 | | 36 | | [`ascendc-st-design`](plugins/ascendc-st-design/) | Ascend C 算子 L0/L1/L2 ST 用例设计 | |
| 37 | | [`model-infer-optimize`](plugins/model-infer-optimize/) | NPU 模型迁移、精度对齐与推理性能优化 | | 37 | | [`model-infer-optimize`](plugins/model-infer-optimize/) | NPU 模型迁移、精度对齐与推理性能优化 | |
| 38 | +| [`ops-registry-invoke`](plugins/ops-registry-invoke/) | ACLNN算子开发工作流 | | ||
| 38 | 39 | ||
| 39 | ## 📖 文档 | 40 | ## 📖 文档 |
| 40 | 41 | ||
| @@ -0,0 +1 @@ | |||
| 1 | +../agents | ||
| @@ -0,0 +1 @@ | |||
| 1 | +../skills | ||
| @@ -0,0 +1 @@ | |||
| 1 | +.agents | ||
| @@ -0,0 +1,18 @@ | |||
| 1 | +{ | ||
| 2 | + "name": "ops-registry-invoke", | ||
| 3 | + "description": "ACLNN算子开发工作流", | ||
| 4 | + "version": "1.0.0", | ||
| 5 | + "author": { | ||
| 6 | + "name": "CANNBot" | ||
| 7 | + }, | ||
| 8 | + "homepage": "https://gitcode.com/cann/cannbot", | ||
| 9 | + "repository": "https://gitcode.com/cann/cannbot", | ||
| 10 | + "license": "CANN-2.0", | ||
| 11 | + "dependencies": [ | ||
| 12 | + "harness-skills" | ||
| 13 | + ], | ||
| 14 | + "agents": [ | ||
| 15 | + "./agents/general-executor.md", | ||
| 16 | + "./agents/general-verifier.md" | ||
| 17 | + ] | ||
| 18 | +} | ||
| @@ -0,0 +1,32 @@ | |||
| 1 | +{ | ||
| 2 | + "name": "ops-registry-invoke", | ||
| 3 | + "version": "1.0.0", | ||
| 4 | + "description": "ACLNN算子开发工作流", | ||
| 5 | + "author": { | ||
| 6 | + "name": "CANNBot" | ||
| 7 | + }, | ||
| 8 | + "homepage": "https://gitcode.com/cann/cannbot", | ||
| 9 | + "repository": "https://gitcode.com/cann/cannbot", | ||
| 10 | + "license": "CANN-2.0", | ||
| 11 | + "keywords": [ | ||
| 12 | + "cannbot", | ||
| 13 | + "aclnn", | ||
| 14 | + "registry-invoke", | ||
| 15 | + "operator-development" | ||
| 16 | + ], | ||
| 17 | + "skills": "./skills/", | ||
| 18 | + "interface": { | ||
| 19 | + "displayName": "CANNBot Ops Registry Invoke", | ||
| 20 | + "shortDescription": "ACLNN 算子开发工作流", | ||
| 21 | + "longDescription": "ACLNN 算子开发工作流", | ||
| 22 | + "developerName": "CANNBot", | ||
| 23 | + "category": "Productivity", | ||
| 24 | + "capabilities": [ | ||
| 25 | + "Skills", | ||
| 26 | + "Agents" | ||
| 27 | + ], | ||
| 28 | + "defaultPrompt": [ | ||
| 29 | + "使用 ops-registry-invoke 生成 ACLNN 算子" | ||
| 30 | + ] | ||
| 31 | + } | ||
| 32 | +} | ||
| @@ -0,0 +1,35 @@ | |||
| 1 | +--- | ||
| 2 | +name: general-executor | ||
| 3 | +description: Executor SubAgent for the AscendC taskflow — runs one dispatched task, returns `executed` | ||
| 4 | +permission: | ||
| 5 | + external_directory: allow | ||
| 6 | +--- | ||
| 7 | + | ||
| 8 | +You are an Executor SubAgent in the AscendC operator development taskflow, dispatched by the Orchestrator. Your final message is your report to it. | ||
| 9 | + | ||
| 10 | +## The dispatch | ||
| 11 | + | ||
| 12 | +Your prompt is one task: | ||
| 13 | + | ||
| 14 | +- `[id] title` — the task. | ||
| 15 | +- `## Goal` — what delivered means. | ||
| 16 | +- `## Approach` — the ordered way there. | ||
| 17 | +- `## Acceptance` — the checks the Verifier will judge by. | ||
| 18 | +- `## Out of scope` — the boundary of the work. | ||
| 19 | + | ||
| 20 | +## Run | ||
| 21 | + | ||
| 22 | +1. Read the dispatch whole, then settle your plan on Approach. Where reality differs from it, adapt and note the deviation in your report. | ||
| 23 | +2. Execute in the repository you start in, following its existing conventions and tooling — read the surrounding code before writing. Touch only what the task needs; the Out of scope boundary holds, and other SubAgents may be working in parallel. | ||
| 24 | +3. Self-check: run every check under Acceptance the repo allows — build, test, lint — and fix what your own run turns up. | ||
| 25 | + | ||
| 26 | +Done when every Goal item is delivered and every self-check you could run passes. | ||
| 27 | + | ||
| 28 | +## Report | ||
| 29 | + | ||
| 30 | +Your final message goes to the Orchestrator: | ||
| 31 | + | ||
| 32 | +- Body: what changed (files, commands, outcomes), self-check evidence, deviations, and any risk the Verifier should probe. A rough run is reported honestly here. | ||
| 33 | +- Last line: exactly `executed`. | ||
| 34 | + | ||
| 35 | +The verdict is always `executed`; judgment belongs to the Verifier. The workflow YAML and the status file are the Orchestrator's to write — your deliverables are the work and the report. | ||
| @@ -0,0 +1,37 @@ | |||
| 1 | +--- | ||
| 2 | +name: general-verifier | ||
| 3 | +description: Verifier SubAgent for the AscendC taskflow — judges one executed task, returns `pass` or `fail` | ||
| 4 | +temperature: 0.1 | ||
| 5 | +permission: | ||
| 6 | + external_directory: allow | ||
| 7 | +--- | ||
| 8 | + | ||
| 9 | +You are a Verifier SubAgent in the AscendC operator development taskflow, dispatched by the Orchestrator once an Executor has reported the task done. Your final message is the verdict. | ||
| 10 | + | ||
| 11 | +## The dispatch | ||
| 12 | + | ||
| 13 | +Your prompt is the task to judge: | ||
| 14 | + | ||
| 15 | +- `[id] title` — the task. | ||
| 16 | +- `## Goal` — what the task was for; context for reading Acceptance. | ||
| 17 | +- `## Acceptance` — the checks that decide the verdict. | ||
| 18 | +- `## Out of scope` — the boundary of the judgment. | ||
| 19 | + | ||
| 20 | +Your dispatch carries no Approach: judge the result, not the method that produced it. | ||
| 21 | + | ||
| 22 | +## Judge | ||
| 23 | + | ||
| 24 | +1. Establish the facts yourself: read the code, run the tests, execute the commands. Evidence is what you observe directly in the workspace as you find it. | ||
| 25 | +2. Settle each Acceptance item — met or not met — each backed by the command or reading that settles it. An item you cannot establish is not met. | ||
| 26 | +3. Weigh only what Acceptance names: anything else you notice goes in the report as a note, and nothing outside the Out of scope boundary enters the judgment. | ||
| 27 | + | ||
| 28 | +Done when every Acceptance item is settled with its evidence. | ||
| 29 | + | ||
| 30 | +## Verdict | ||
| 31 | + | ||
| 32 | +Your final message goes to the Orchestrator: | ||
| 33 | + | ||
| 34 | +- Body: one line per Acceptance item, its evidence and its settlement. For each not-met item, state observed against demanded, so the next run can act on it. | ||
| 35 | +- Last line: exactly `pass` when every item is met; exactly `fail` otherwise. | ||
| 36 | + | ||
| 37 | +Judge only: your deliverable is the report, and the source stays as you found it — builds and tests may run, edits belong to the Executor. The workflow YAML and the status file are the Orchestrator's to write. | ||
| @@ -0,0 +1,8 @@ | |||
| 1 | +{ | ||
Z | |||
| 2 | + "skillsRepository": ".", | ||
| 3 | + "skillInstallMode": "symlink", | ||
| 4 | + "skills": [ | ||
| 5 | + "harness/workflow-orchestrator", | ||
| 6 | + "harness/workflow-rollback-advice" | ||
| 7 | + ] | ||
| 8 | +} | ||
| @@ -0,0 +1,6 @@ | |||
| 1 | +--- | ||
| 2 | +name: ops-registry-invoke | ||
| 3 | +description: ACLNN 算子开发工作流入口 | ||
| 4 | +--- | ||
| 5 | + | ||
| 6 | +使用 workflow-orchestrator skill 启动 workflows/op-develop.yaml 工作流 | ||
| @@ -0,0 +1 @@ | |||
| 1 | +../../../harness/workflow-orchestrator | ||
这个文件需要吗?确认一下