@cannbot-ai/install-helper 1.1.6 → 1.1.8-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -191,13 +191,12 @@ install-helper lang set en_US # 切换为英文
191
191
  | 2 | AscendC Kernel 直调(快速版) | ops-direct-invoke-flash | flash, kernel-flash |
192
192
  | 3 | AscendC 算子注册调用 | ops-registry-invoke | ops-registry, ascendc-registry, registry |
193
193
  | 4 | Catlass 算子直调 | catlass-op-generator | catlass |
194
- | 5 | NPU 推理优化 | model-infer-optimize | model-infer, infer, inference |
194
+ | 5 | NPU 推理优化 | model-infer-optimize | model-infer, infer, inference, sota, sota-approach, model-infer-sota |
195
195
  | 6 | PyPTO 算子开发 | pypto-op-orchestrator | pypto, pytorch |
196
196
  | 7 | TileLang 算子开发 | tilelang-op-orchestrator | tilelang |
197
197
  | 8 | Triton 算子开发 | triton-op-generator | triton |
198
198
  | 9 | torch.compile 图模式 | torch-compile | torch, compile, graph |
199
199
  | 10 | 代码检视 | ops-code-reviewer | code-review, reviewer, review |
200
- | 11 | NPU 推理 SOTA 优化 | model-infer-sota-approach | sota, sota-approach, model-infer-sota |
201
200
 
202
201
  ## 前置条件
203
202
 
package/dist/index.js CHANGED
@@ -58,10 +58,10 @@ var init_embedded_plugins = __esm({
58
58
  "direct",
59
59
  "kernel"
60
60
  ],
61
- skills: 20,
61
+ skills: 21,
62
62
  agents: 4,
63
63
  description: "Ascend C \u76F4\u8C03\u5168\u6D41\u7A0B\uFF1A\u73AF\u5883\u2192\u8BBE\u8BA1\u2192\u5F00\u53D1\u2192\u5BA1\u67E5\u2192\u6027\u80FD\u9A8C\u6536",
64
- version: "1.2.4",
64
+ version: "1.2.5",
65
65
  configFile: "AGENTS.md",
66
66
  configRootConfigLink: false,
67
67
  installSkills: [
@@ -73,6 +73,7 @@ var init_embedded_plugins = __esm({
73
73
  "ascendc-api-best-practices",
74
74
  "ascendc-regbase-best-practice",
75
75
  "ascendc-blaze-best-practice",
76
+ "ascendc-blaze-migration",
76
77
  "ops-precision-standard",
77
78
  "ascendc-docs-search",
78
79
  "ascendc-env-check",
@@ -163,10 +164,10 @@ var init_embedded_plugins = __esm({
163
164
  "ascendc-registry",
164
165
  "registry"
165
166
  ],
166
- skills: 28,
167
- agents: 3,
167
+ skills: 29,
168
+ agents: 7,
168
169
  description: "\u751F\u4EA7\u7EA7 ACLNN \u6CE8\u518C\u7B97\u5B50\u5168\u6D41\u7A0B\uFF1A\u4EE3\u7801\u2192UT/ST\u2192\u4E0A\u5E93",
169
- version: "1.2.0",
170
+ version: "1.2.3",
170
171
  configFile: "AGENTS.md",
171
172
  configRootConfigLink: false,
172
173
  installSkills: [
@@ -174,6 +175,7 @@ var init_embedded_plugins = __esm({
174
175
  dir: "ops",
175
176
  skills: [
176
177
  "ascendc-blaze-best-practice",
178
+ "ascendc-blaze-migration",
177
179
  "ascendc-api-best-practices",
178
180
  "ascendc-code-review",
179
181
  "ascendc-crash-debug",
@@ -219,8 +221,12 @@ var init_embedded_plugins = __esm({
219
221
  ],
220
222
  installAgents: [
221
223
  "ascendc-ops-architect",
222
- "ascendc-ops-developer",
223
- "ascendc-ops-tester"
224
+ "ascendc-ops-spec-reviewer",
225
+ "ascendc-ops-designer",
226
+ "ascendc-ops-design-reviewer",
227
+ "ascendc-ops-tester",
228
+ "ascendc-ops-test-design-reviewer",
229
+ "ascendc-ops-developer"
224
230
  ],
225
231
  externalRepos: [
226
232
  {
@@ -279,19 +285,22 @@ var init_embedded_plugins = __esm({
279
285
  ]
280
286
  },
281
287
  {
282
- id: "model-infer-sota-approach",
283
- dir: "plugins-official/model-infer-sota-approach",
284
- displayName: "NPU \u63A8\u7406 SOTA \u4F18\u5316",
288
+ id: "model-infer-optimize",
289
+ dir: "plugins-official/model-infer-optimize",
290
+ displayName: "NPU \u63A8\u7406\u4F18\u5316",
285
291
  script: "init.sh",
286
292
  aliases: [
293
+ "model-infer",
294
+ "infer",
295
+ "inference",
287
296
  "sota",
288
297
  "sota-approach",
289
298
  "model-infer-sota"
290
299
  ],
291
300
  skills: 14,
292
- agents: 6,
293
- description: "NPU \u63A8\u7406 baseline \u4E4B\u4E0A profiling \u9A71\u52A8\u7684\u63A2\u7D22\u5F0F\u4F18\u5316\u7F16\u6392\uFF08Plan/round \u81EA\u5FAA\u73AF\uFF0C\u4E0E model-infer-optimize \u524D\u540E\u8854\u63A5\uFF09",
294
- version: "1.0.0",
301
+ agents: 9,
302
+ description: "NPU \u6A21\u578B\u63A8\u7406\u7AEF\u5230\u7AEF\u4F18\u5316\uFF0C\u6DB5\u76D6\u56FA\u5B9A\u9636\u6BB5\u4F18\u5316\uFF08\u5E76\u884C/KVCache/\u878D\u5408/\u91CF\u5316/\u56FE\u6A21\u5F0F\uFF09\u4E0E baseline \u4E4B\u4E0A profiling \u9A71\u52A8\u7684\u63A2\u7D22\u5F0F\u4F18\u5316\uFF08\u6309\u9700\u8C03\u7528\u591A\u6D41/\u9884\u53D6/SuperKernel \u7B49\u5355\u70B9\u4F18\u5316\uFF09",
303
+ version: "1.0.6",
295
304
  configFile: "AGENTS.md",
296
305
  configRootConfigLink: true,
297
306
  installSkills: [
@@ -316,6 +325,9 @@ var init_embedded_plugins = __esm({
316
325
  }
317
326
  ],
318
327
  installAgents: [
328
+ "model-infer-analyzer",
329
+ "model-infer-implementer",
330
+ "model-infer-reviewer",
319
331
  "model-infer-sota-scenario",
320
332
  "model-infer-sota-profiling-instrumenter",
321
333
  "model-infer-sota-profile-analyzer",
@@ -323,57 +335,6 @@ var init_embedded_plugins = __esm({
323
335
  "model-infer-sota-implementer",
324
336
  "model-infer-sota-reviewer"
325
337
  ],
326
- externalRepos: [
327
- {
328
- url: "https://gitcode.com/cann/cann-recipes-infer.git",
329
- dir: "plugins-official/model-infer-sota-approach/cann-recipes-infer",
330
- depth: 1,
331
- configRootLink: true
332
- }
333
- ]
334
- },
335
- {
336
- id: "model-infer-optimize",
337
- dir: "plugins-official/model-infer-optimize",
338
- displayName: "NPU \u63A8\u7406\u4F18\u5316",
339
- script: "init.sh",
340
- aliases: [
341
- "model-infer",
342
- "infer",
343
- "inference"
344
- ],
345
- skills: 14,
346
- agents: 3,
347
- description: "NPU \u6A21\u578B\u63A8\u7406\u7AEF\u5230\u7AEF\u4F18\u5316\uFF08\u5E76\u884C/KVCache/\u878D\u5408/\u91CF\u5316/\u56FE\u6A21\u5F0F/\u591A\u6D41/SuperKernel\uFF09",
348
- version: "1.0.5",
349
- configFile: "AGENTS.md",
350
- configRootConfigLink: true,
351
- installSkills: [
352
- {
353
- dir: "model",
354
- skills: [
355
- "model-infer-migrator",
356
- "model-infer-parallel-analysis",
357
- "model-infer-parallel-impl",
358
- "model-infer-kvcache",
359
- "model-infer-fusion",
360
- "model-infer-quantization",
361
- "model-infer-graph-mode",
362
- "model-infer-precision-debug",
363
- "model-infer-runtime-debug",
364
- "model-infer-multi-stream",
365
- "model-infer-prefetch",
366
- "model-infer-superkernel",
367
- "model-infer-profiling",
368
- "model-infer-perf-breakdown"
369
- ]
370
- }
371
- ],
372
- installAgents: [
373
- "model-infer-analyzer",
374
- "model-infer-implementer",
375
- "model-infer-reviewer"
376
- ],
377
338
  externalRepos: [
378
339
  {
379
340
  url: "https://gitcode.com/cann/cann-recipes-infer.git",
@@ -392,10 +353,10 @@ var init_embedded_plugins = __esm({
392
353
  "pypto",
393
354
  "pytorch"
394
355
  ],
395
- skills: 8,
396
- agents: 3,
356
+ skills: 17,
357
+ agents: 8,
397
358
  description: "PyPTO Python API \u7B97\u5B50\u5168\u6D41\u7A0B\u5F00\u53D1\uFF0C\u8986\u76D6\u9700\u6C42\u7406\u89E3\u3001API \u63A2\u7D22\u3001\u5B9E\u73B0\u4E0E\u8C03\u4F18",
398
- version: "1.1.9",
359
+ version: "1.2.0",
399
360
  configFile: "AGENTS.md",
400
361
  configRootConfigLink: false,
401
362
  installSkills: [
@@ -409,14 +370,28 @@ var init_embedded_plugins = __esm({
409
370
  "pypto-precision-debug",
410
371
  "pypto-precision-compare",
411
372
  "pypto-op-perf-tune",
412
- "pypto-golden-generate"
373
+ "pypto-golden-generate",
374
+ "pypto-orchestration-manual",
375
+ "pypto-op-plan",
376
+ "pypto-docs-search",
377
+ "pypto-op-construct",
378
+ "pypto-op-verify",
379
+ "pypto-op-review",
380
+ "pypto-general-debug",
381
+ "pypto-op-knowledge",
382
+ "pypto-memory-template"
413
383
  ]
414
384
  }
415
385
  ],
416
386
  installAgents: [
417
- "pypto-op-analyst",
418
- "pypto-op-developer",
419
- "pypto-op-perf-tuner"
387
+ "pypto-op-planner",
388
+ "pypto-op-mathematician",
389
+ "pypto-op-architect",
390
+ "pypto-op-designer",
391
+ "pypto-op-coder",
392
+ "pypto-op-verifier",
393
+ "pypto-op-debugger",
394
+ "pypto-op-optimizer"
420
395
  ],
421
396
  externalRepos: [
422
397
  {
@@ -479,7 +454,7 @@ var init_embedded_plugins = __esm({
479
454
  aliases: [
480
455
  "triton"
481
456
  ],
482
- skills: 7,
457
+ skills: 8,
483
458
  agents: 0,
484
459
  description: "Triton-Ascend \u7B97\u5B50 6 \u9636\u6BB5\u81EA\u52A8\u751F\u6210\u4E0E\u4F18\u5316\uFF08\u63CF\u8FF0\u2192\u4EE3\u7801\u2192\u9A8C\u8BC1\u2192\u4F18\u5316\uFF09",
485
460
  version: "1.0.2",
@@ -495,7 +470,8 @@ var init_embedded_plugins = __esm({
495
470
  "triton-op-verifier",
496
471
  "triton-latency-optimizer",
497
472
  "npu-arch",
498
- "triton-precision-debug"
473
+ "triton-precision-debug",
474
+ "triton-simulator-optimizer"
499
475
  ]
500
476
  }
501
477
  ],
@@ -544,7 +520,7 @@ var init_embedded_plugins = __esm({
544
520
  "reviewer",
545
521
  "review"
546
522
  ],
547
- skills: 5,
523
+ skills: 4,
548
524
  agents: 2,
549
525
  description: "Ascend C \u7B97\u5B50\u4EE3\u7801 4 \u9636\u6BB5\u5168\u91CF\u68C0\u89C6\uFF08\u4E3B Agent \u7F16\u6392 + \u5B50 Agent \u5E76\u884C\u68C0\u89C6\uFF09",
550
526
  version: "1.1.0",
@@ -556,15 +532,14 @@ var init_embedded_plugins = __esm({
556
532
  skills: [
557
533
  "ascendc-code-review",
558
534
  "ascendc-docs-search",
559
- "ascendc-task-focus",
560
535
  "ascendc-api-best-practices",
561
536
  "npu-arch"
562
537
  ]
563
538
  }
564
539
  ],
565
540
  installAgents: [
566
- "ascendc-code-summarizer",
567
- "ascendc-ops-reviewer"
541
+ "ascendc-ops-reviewer",
542
+ "ascendc-code-summarizer"
568
543
  ]
569
544
  }
570
545
  ];
@@ -2305,7 +2280,6 @@ var STATIC_SKILL_CATEGORIES = [
2305
2280
  { id: "ascendc-ut-develop", description: "UT \u5F00\u53D1\u4E0E\u8986\u76D6\u7387\u589E\u5F3A", source: "ops" },
2306
2281
  { id: "ascendc-st-design", description: "ST \u6D4B\u8BD5\u7528\u4F8B\u8BBE\u8BA1", source: "ops" },
2307
2282
  { id: "ascendc-whitebox-design", description: "\u767D\u76D2\u6D4B\u8BD5\u7528\u4F8B\u751F\u6210", source: "ops" },
2308
- { id: "ascendc-task-focus", description: "\u957F\u4EFB\u52A1\u805A\u7126\u9632\u8FF7\u5931", source: "ops" },
2309
2283
  { id: "tilelang-op-test-design", description: "TileLang \u6D4B\u8BD5\u8BBE\u8BA1", source: "ops" },
2310
2284
  { id: "tilelang-review", description: "TileLang \u4EE3\u7801\u683C\u5F0F\u68C0\u67E5", source: "ops" },
2311
2285
  { id: "triton-op-verifier", description: "Triton \u7B97\u5B50\u9A8C\u8BC1", source: "ops" }
@@ -2320,6 +2294,7 @@ var STATIC_SKILL_CATEGORIES = [
2320
2294
  { id: "ascendc-direct-invoke-to-registry-invoke", description: "\u76F4\u8C03\u8F6C\u6CE8\u518C\u8C03\u7528", source: "ops" },
2321
2295
  { id: "ascendc-registry-invoke-to-direct-invoke", description: "\u6CE8\u518C\u8C03\u7528\u8F6C\u76F4\u8C03", source: "ops" },
2322
2296
  { id: "ascendc-blaze-best-practice", description: "Matmul/GEMM Blaze \u76F4\u8C03\u751F\u6210", source: "ops" },
2297
+ { id: "ascendc-blaze-migration", description: "AscendC Matmul \u5BB6\u65CF\u7B49\u4EF7\u8FC1\u79FB\u5230 Blaze", source: "ops" },
2323
2298
  { id: "ascendc-simt-best-practices", description: "SIMT \u6700\u4F73\u5B9E\u8DF5\u4E0E API \u5BFC\u822A", source: "ops" },
2324
2299
  { id: "ascendc-simt-tiling-design", description: "SIMT \u7B97\u5B50\u5207\u5206\u8BBE\u8BA1", source: "ops" },
2325
2300
  { id: "torch-ascendc-op-extension", description: "Ascend C \u5BF9\u63A5 PyTorch", source: "ops" },
@@ -2557,16 +2532,11 @@ function enrichPluginMetadata(repoPath) {
2557
2532
  if (pj && pj.name && plugin.displayName === plugin.id) {
2558
2533
  plugin.displayName = pj.name;
2559
2534
  }
2560
- if (!plugin.installAgents || plugin.installAgents.length === 0) {
2561
- const agents = resolveAgentsFromPluginJson(pj);
2562
- if (agents.length > 0) {
2563
- plugin.installAgents = agents;
2564
- }
2565
- }
2535
+ plugin.installAgents = resolveAgentsFromPluginJson(pj);
2566
2536
  const merged = mergeInitSkills(plugin.installSkills, pluginDir, repoPath, scanDirs);
2567
2537
  plugin.installSkills = merged;
2568
2538
  plugin.skills = countSkills(merged);
2569
- plugin.agents = plugin.installAgents ? plugin.installAgents.length : 0;
2539
+ plugin.agents = plugin.installAgents.length;
2570
2540
  }
2571
2541
  }
2572
2542
 
@@ -2891,7 +2861,7 @@ function removeSkillsFromRecord(skillIds, tool, level, installPath) {
2891
2861
  }
2892
2862
  writeSkillRecord(record);
2893
2863
  }
2894
- function getInstalledSkills(tool, level, installPath) {
2864
+ function getInstalledSkills(tool, level, installPath, allowFsScan = true) {
2895
2865
  const record = readSkillRecord();
2896
2866
  const recordedSkills = record[tool]?.[level]?.[installPath]?.skills || [];
2897
2867
  const configRoot = getConfigRoot(tool, level);
@@ -2900,6 +2870,9 @@ function getInstalledSkills(tool, level, installPath) {
2900
2870
  const skillPath = join10(skillsDir, skillId);
2901
2871
  return existsSync11(skillPath) || isSymlink(skillPath);
2902
2872
  });
2873
+ if (!allowFsScan) {
2874
+ return fromRecord;
2875
+ }
2903
2876
  const fromFs = [];
2904
2877
  if (existsSync11(skillsDir)) {
2905
2878
  try {
@@ -2923,7 +2896,7 @@ function getLastBatchSkills(tool, level, installPath) {
2923
2896
  return null;
2924
2897
  }
2925
2898
  const lastBatch = entry.batches[entry.batches.length - 1];
2926
- const configRoot = getConfigRoot(tool, level);
2899
+ const configRoot = level === "project" ? getConfigRoot(tool, level, installPath) : getConfigRoot(tool, level);
2927
2900
  const skillsDir = join10(configRoot, "skills");
2928
2901
  return lastBatch.skills.filter((skillId) => {
2929
2902
  const skillPath = join10(skillsDir, skillId);
@@ -5044,7 +5017,7 @@ async function uninstallCommand(names, options) {
5044
5017
  }
5045
5018
  async function uninstallAll(tool, level, yes) {
5046
5019
  const installPath = level === "project" ? process.cwd() : getConfigRoot(tool, level);
5047
- const installedSkills = getInstalledSkills(tool, level, installPath);
5020
+ const installedSkills = getInstalledSkills(tool, level, installPath, !yes);
5048
5021
  const installedPlugins = scanInstalled().filter((p) => p.tool === tool && p.level === level);
5049
5022
  const totalItems = installedSkills.length + installedPlugins.length;
5050
5023
  if (totalItems === 0) {