@ohos-cpf/3rdloop 0.0.2 → 0.0.4

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.
Files changed (393) hide show
  1. package/README.md +290 -244
  2. package/bin/3rdloop.mjs +46 -46
  3. package/lib/cli.js +781 -781
  4. package/lib/config-cmd.js +451 -451
  5. package/lib/config.js +318 -318
  6. package/lib/doctor.js +113 -113
  7. package/lib/exit-codes.js +30 -30
  8. package/lib/opencode.js +155 -155
  9. package/lib/orch.js +426 -426
  10. package/lib/queries.js +263 -263
  11. package/lib/step.js +325 -325
  12. package/lib/ui.js +222 -222
  13. package/lib/update.js +279 -279
  14. package/lib/workflow.js +308 -308
  15. package/lib/workflows.js +131 -131
  16. package/package.json +50 -50
  17. package/vendor/Server/Agent/SkillSelector/README.md +343 -343
  18. package/vendor/Server/Agent/SkillSelector/core/Agent.js +207 -207
  19. package/vendor/Server/Agent/SkillSelector/index.js +14 -14
  20. package/vendor/Server/Agent/SkillSelector/llm/llmClient.js +313 -313
  21. package/vendor/Server/Agent/SkillSelector/llm/prompts.js +161 -161
  22. package/vendor/Server/Agent/SkillSelector/llm/reactSteps.js +144 -144
  23. package/vendor/Server/Agent/SkillSelector/matcher/fuzzyMatcher.js +433 -433
  24. package/vendor/Server/Agent/SkillSelector/scanner/skillScanner.js +382 -382
  25. package/vendor/Server/Agent/SkillSelector/utils/actionWords.js +59 -59
  26. package/vendor/Server/Brain/AnalysisStrategies.js +422 -422
  27. package/vendor/Server/Brain/Brain.js +686 -686
  28. package/vendor/Server/Brain/DecompositionStrategies.js +621 -621
  29. package/vendor/Server/Brain/PlanPersistence.js +196 -196
  30. package/vendor/Server/Brain/SkillExecutor.js +251 -251
  31. package/vendor/Server/Brain/index.js +11 -11
  32. package/vendor/Server/CLI/cli.js +275 -275
  33. package/vendor/Server/CLI/deveco-code/index.js +71 -71
  34. package/vendor/Server/CLI/deveco-code.js +5 -5
  35. package/vendor/Server/CLI/opencode/index.js +817 -818
  36. package/vendor/Server/CLI/opencode.js +5 -5
  37. package/vendor/Server/DbUse/MessageArchive.js +61 -61
  38. package/vendor/Server/DbUse/StorageManager.js +107 -107
  39. package/vendor/Server/DbUse/adapters/BaseAdapter.js +94 -94
  40. package/vendor/Server/DbUse/adapters/FileAdapter.js +138 -138
  41. package/vendor/Server/DbUse/adapters/JsonAdapter.js +138 -138
  42. package/vendor/Server/DbUse/adapters/JsonlAdapter.js +114 -114
  43. package/vendor/Server/DbUse/adapters/SqliteAdapter.js +157 -157
  44. package/vendor/Server/DbUse/index.js +160 -160
  45. package/vendor/Server/DbUse/stores/SessionStore.js +279 -279
  46. package/vendor/Server/DbUse/stores/TaskExecutionStore.js +133 -133
  47. package/vendor/Server/DbUse/stores/TaskRegistryStore.js +262 -262
  48. package/vendor/Server/DbUse/stores/TaskStepStore.js +279 -279
  49. package/vendor/Server/FlexRunner/FlexRunner.js +1759 -1759
  50. package/vendor/Server/FlexRunner/index.js +12 -12
  51. package/vendor/Server/Knowledge/KnowledgeImporter.js +523 -523
  52. package/vendor/Server/Knowledge/KnowledgeManager.js +341 -341
  53. package/vendor/Server/Knowledge/index.js +33 -33
  54. package/vendor/Server/LoopEngine/LoopEngine.js +1133 -1133
  55. package/vendor/Server/LoopEngine/index.js +11 -11
  56. package/vendor/Server/Orchestrator/Orchestrator.js +0 -3
  57. package/vendor/Server/Orchestrator/StepNode.js +312 -312
  58. package/vendor/Server/Orchestrator/index.js +13 -13
  59. package/vendor/Server/Routes/controllers/BrainController.js +241 -241
  60. package/vendor/Server/Routes/controllers/FlexRunnerController.js +1125 -1125
  61. package/vendor/Server/Routes/controllers/HealthController.js +44 -44
  62. package/vendor/Server/Routes/controllers/KnowledgeImportController.js +355 -355
  63. package/vendor/Server/Routes/controllers/LoopEngineController.js +788 -788
  64. package/vendor/Server/Routes/controllers/StatsController.js +57 -57
  65. package/vendor/Server/Routes/controllers/StreamController.js +67 -67
  66. package/vendor/Server/Routes/library/logger.js +179 -179
  67. package/vendor/Server/Routes/library/zipArchive.js +172 -172
  68. package/vendor/Server/Routes/router/Router.js +204 -204
  69. package/vendor/Server/Routes/routes/brain.js +47 -47
  70. package/vendor/Server/Routes/routes/flexrunner.js +72 -72
  71. package/vendor/Server/Routes/routes/health.js +28 -28
  72. package/vendor/Server/Routes/routes/index.js +57 -57
  73. package/vendor/Server/Routes/routes/knowledge.js +55 -55
  74. package/vendor/Server/Routes/routes/loopengine.js +58 -58
  75. package/vendor/Server/Routes/routes/orchestrator.js +61 -61
  76. package/vendor/Server/Routes/routes/registry.js +97 -97
  77. package/vendor/Server/Routes/routes/stats.js +23 -23
  78. package/vendor/Server/Routes/routes/stream.js +30 -30
  79. package/vendor/Server/Routes/server.js +203 -203
  80. package/vendor/Server/Routes/sse/SseHub.js +308 -308
  81. package/vendor/Server/Skills/acceptance-check/SKILL.md +191 -191
  82. package/vendor/Server/Skills/acceptance-check/references/PHASE1_ARTIFACT_COLLECTION.md +52 -52
  83. package/vendor/Server/Skills/acceptance-check/references/PHASE2_CRITERIA_EVALUATION.md +77 -77
  84. package/vendor/Server/Skills/acceptance-check/references/PHASE2_EVIDENCE_VERIFICATION.md +70 -70
  85. package/vendor/Server/Skills/arkts-code-check/SKILL.md +320 -320
  86. package/vendor/Server/Skills/arkts-code-check/references/CODE_CHECK_GUIDE.md +210 -210
  87. package/vendor/Server/Skills/arkts-code-check/references/FILE_TYPE_GUIDE.md +28 -28
  88. package/vendor/Server/Skills/arkts-code-check/references/PHASE1_INFO_COLLECTION.md +233 -233
  89. package/vendor/Server/Skills/arkts-code-check/references/REPORT_TEMPLATE.md +219 -219
  90. package/vendor/Server/Skills/arkts-library-compile-validate/SKILL.md +328 -328
  91. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/build.ps1 +93 -93
  92. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/code-linter.cjs +432 -432
  93. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/migrate.cjs +851 -851
  94. package/vendor/Server/Skills/arkts-library-compile-validate/scripts/ohpm-switch.cjs +788 -788
  95. package/vendor/Server/Skills/arkts-library-demo-code/SKILL.md +291 -291
  96. package/vendor/Server/Skills/arkts-library-demo-code/references/API_SIGNATURE_CHECKS.md +68 -68
  97. package/vendor/Server/Skills/arkts-library-demo-code/references/BUILD_VALIDATION.md +184 -184
  98. package/vendor/Server/Skills/arkts-library-demo-code/references/CODE_STANDARDS.md +337 -337
  99. package/vendor/Server/Skills/arkts-library-demo-code/references/EXAMPLES.md +400 -400
  100. package/vendor/Server/Skills/arkts-library-demo-code/references/SYSTEM_API_LOOKUP.md +98 -98
  101. package/vendor/Server/Skills/arkts-library-demo-code/references/TEMPLATE.md +544 -544
  102. package/vendor/Server/Skills/arkts-library-demo-code/scripts/build.ps1 +93 -93
  103. package/vendor/Server/Skills/arkts-library-demo-code/scripts/code-linter.cjs +432 -432
  104. package/vendor/Server/Skills/arkts-library-demo-code/scripts/migrate.cjs +851 -851
  105. package/vendor/Server/Skills/arkts-library-demo-code/scripts/ohpm-switch.cjs +788 -788
  106. package/vendor/Server/Skills/arkts-library-demo-coverage/SKILL.md +174 -174
  107. package/vendor/Server/Skills/arkts-library-demo-scenario/SKILL.md +321 -321
  108. package/vendor/Server/Skills/arkts-library-demo-scenario/references/EXAMPLES.md +100 -100
  109. package/vendor/Server/Skills/arkts-library-demo-scenario/references/TEMPLATE.md +185 -185
  110. package/vendor/Server/Skills/arkts-library-documentation-quality-check/SKILL.md +233 -233
  111. package/vendor/Server/Skills/arkts-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +102 -102
  112. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/CHECK_DIMENSIONS.md +89 -89
  113. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/COMPLIANCE_CHECKLIST.md +62 -62
  114. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/KB_QUERY_GUIDE.md +107 -107
  115. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/MCP_TOOL_DISCOVERY.md +124 -124
  116. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/REPORT_TEMPLATE.md +90 -90
  117. package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/SCORING_FORMULA.md +57 -57
  118. package/vendor/Server/Skills/arkts-library-documentation-quality-check/scripts/validate-skill.cjs +259 -259
  119. package/vendor/Server/Skills/arkts-library-interface-spec/SKILL.md +97 -97
  120. package/vendor/Server/Skills/arkts-library-memory-leak-check/SKILL.md +391 -391
  121. package/vendor/Server/Skills/arkts-library-source-clone/SKILL.md +113 -113
  122. package/vendor/Server/Skills/arkts-library-stability-check/SKILL.md +312 -312
  123. package/vendor/Server/Skills/arkts-library-stability-check/assets/REPORT_TEMPLATE.md +154 -154
  124. package/vendor/Server/Skills/arkts-library-stability-check/references/CHECKLIST.md +165 -165
  125. package/vendor/Server/Skills/arkts-library-stability-check/references/CODE_EXAMPLES.md +308 -308
  126. package/vendor/Server/Skills/arkts-library-stability-check/references/SCORING_RULES.md +90 -90
  127. package/vendor/Server/Skills/arkts-library-stability-check/scripts/validate-skill.cjs +282 -282
  128. package/vendor/Server/Skills/arkts-library-test-coverage-check/SKILL.md +360 -360
  129. package/vendor/Server/Skills/arkts-library-test-coverage-check/assets/REPORT_TEMPLATE.md +145 -145
  130. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/CHECKLIST.md +252 -252
  131. package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +114 -114
  132. package/vendor/Server/Skills/arkts-library-test-coverage-check/scripts/validate-skill.cjs +262 -262
  133. package/vendor/Server/Skills/arkts-library-xts-code/SKILL.md +455 -455
  134. package/vendor/Server/Skills/arkts-library-xts-code/assets/report-template.md +60 -60
  135. package/vendor/Server/Skills/arkts-library-xts-code/references/ACCESS_MODIFIER_PRECHECK.md +76 -76
  136. package/vendor/Server/Skills/arkts-library-xts-code/references/BUILD_VERIFICATION.md +200 -200
  137. package/vendor/Server/Skills/arkts-library-xts-code/references/CODE_STANDARDS.md +518 -518
  138. package/vendor/Server/Skills/arkts-library-xts-code/references/SUBAGENT_PROMPT_TEMPLATE.md +276 -276
  139. package/vendor/Server/Skills/arkts-library-xts-code/references/SYSTEM_API_LOOKUP.md +92 -92
  140. package/vendor/Server/Skills/arkts-library-xts-code/references/XTS_TEMPLATE.md +767 -767
  141. package/vendor/Server/Skills/arkts-library-xts-code/scripts/build.ps1 +93 -93
  142. package/vendor/Server/Skills/arkts-library-xts-code/scripts/code-linter.cjs +432 -432
  143. package/vendor/Server/Skills/arkts-library-xts-code/scripts/migrate.cjs +851 -851
  144. package/vendor/Server/Skills/arkts-library-xts-code/scripts/ohpm-switch.cjs +788 -788
  145. package/vendor/Server/Skills/arkts-library-xts-code/scripts/precheck-access-modifiers.cjs +221 -221
  146. package/vendor/Server/Skills/arkts-library-xts-code-fix/SKILL.md +228 -228
  147. package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +97 -97
  148. package/vendor/Server/Skills/arkts-library-xts-doc/SKILL.md +194 -194
  149. package/vendor/Server/Skills/arkts-library-xts-doc/references/EXAMPLES.md +575 -575
  150. package/vendor/Server/Skills/arkts-library-xts-doc/references/TEMPLATE.md +574 -574
  151. package/vendor/Server/Skills/arkts-library-xts-doc/references/TESTABILITY_GUIDE.md +182 -182
  152. package/vendor/Server/Skills/arkts-library-xts-execution/SKILL.md +490 -490
  153. package/vendor/Server/Skills/arkts-library-xts-execution/references/error-fixing-examples.md +217 -217
  154. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/build.ps1 +93 -93
  155. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/code-linter.cjs +432 -432
  156. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/migrate.cjs +851 -851
  157. package/vendor/Server/Skills/arkts-library-xts-execution/scripts/ohpm-switch.cjs +788 -788
  158. package/vendor/Server/Skills/flutter-code-check/SKILL.md +299 -299
  159. package/vendor/Server/Skills/flutter-code-check/assets/OUTPUT_TEMPLATE.md +311 -311
  160. package/vendor/Server/Skills/flutter-code-check/references/CHECKLIST.md +190 -190
  161. package/vendor/Server/Skills/flutter-code-check/references/PLATFORMS.md +133 -133
  162. package/vendor/Server/Skills/flutter-code-check/scripts/validate-skill.cjs +259 -259
  163. package/vendor/Server/Skills/flutter-interface/README.md +75 -75
  164. package/vendor/Server/Skills/flutter-interface/SKILL.md +291 -291
  165. package/vendor/Server/Skills/flutter-interface/references/EXAMPLES.md +336 -336
  166. package/vendor/Server/Skills/flutter-interface/references/GIT_CLONE_GUIDE.md +190 -190
  167. package/vendor/Server/Skills/flutter-interface/references/SCRIPT_REFERENCE.md +258 -258
  168. package/vendor/Server/Skills/flutter-interface/references/TEMPLATE.md +254 -254
  169. package/vendor/Server/Skills/flutter-library-consistency-check/SKILL.md +517 -517
  170. package/vendor/Server/Skills/flutter-library-consistency-check/references/CHECKLIST.md +381 -381
  171. package/vendor/Server/Skills/flutter-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +341 -341
  172. package/vendor/Server/Skills/flutter-library-consistency-check/references/PLATFORM_LIMITATION_GUIDE.md +71 -71
  173. package/vendor/Server/Skills/flutter-library-documentation-quality-check/SKILL.md +518 -518
  174. package/vendor/Server/Skills/flutter-library-documentation-quality-check/references/CHECKLIST.md +406 -406
  175. package/vendor/Server/Skills/flutter-library-memory-leak-check/SKILL.md +652 -652
  176. package/vendor/Server/Skills/flutter-library-memory-leak-check/references/CHECKLIST.md +396 -396
  177. package/vendor/Server/Skills/flutter-library-stability-check/SKILL.md +744 -744
  178. package/vendor/Server/Skills/flutter-library-stability-check/references/CHECKLIST.md +720 -720
  179. package/vendor/Server/Skills/flutter-library-test-coverage-check/SKILL.md +414 -414
  180. package/vendor/Server/Skills/flutter-library-test-coverage-check/assets/REPORT_TEMPLATE.md +150 -150
  181. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/CHECKLIST.md +304 -304
  182. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCORING_RULES.md +265 -265
  183. package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCRIPT_USAGE.md +286 -286
  184. package/vendor/Server/Skills/knowledge-import/SKILL.md +383 -383
  185. package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +165 -165
  186. package/vendor/Server/Skills/knowledge-import/references/SKILL_LOCATOR_GUIDE.md +91 -91
  187. package/vendor/Server/Skills/knowledge-import/references/SKILL_OPTIMIZATION_GUIDE.md +127 -127
  188. package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +453 -301
  189. package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_CHECKLIST.md +151 -0
  190. package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_ISSUE_TEMPLATE.md +257 -105
  191. package/vendor/Server/Skills/ohos-lib-pr-push/references/GITCODE_API.md +191 -127
  192. package/vendor/Server/Skills/ohos-lib-pr-push/scripts/gitcode-api.cjs +317 -208
  193. package/vendor/Server/Skills/rn-code-check/SKILL.md +320 -320
  194. package/vendor/Server/Skills/rn-code-check/references/API-GUIDE.md +234 -234
  195. package/vendor/Server/Skills/rn-code-check/references/CHECKLIST.md +188 -188
  196. package/vendor/Server/Skills/rn-code-check/references/REPORT-TEMPLATE.md +246 -246
  197. package/vendor/Server/Skills/rn-lib-add-example/SKILL.md +198 -198
  198. package/vendor/Server/Skills/rn-lib-add-example/references/APP_RENAME_GUIDE.md +40 -40
  199. package/vendor/Server/Skills/rn-lib-add-example/references/SHELL_ADAPTATION_CHECKLIST.md +78 -78
  200. package/vendor/Server/Skills/rn-lib-add-example/references/TEMPLATE_REPO_GUIDE.md +70 -70
  201. package/vendor/Server/Skills/rn-lib-add-example/references/VERIFICATION_GUIDE.md +47 -47
  202. package/vendor/Server/Skills/rn-lib-add-example/scripts/create-example.cjs +252 -252
  203. package/vendor/Server/Skills/rn-lib-update-doc/SKILL.md +176 -176
  204. package/vendor/Server/Skills/rn-lib-update-doc/config.json +5 -5
  205. package/vendor/Server/Skills/rn-lib-update-doc/references/changelog-template.md +35 -35
  206. package/vendor/Server/Skills/rn-lib-update-doc/references/format-diff.md +137 -137
  207. package/vendor/Server/Skills/rn-lib-update-doc/references/link-registry.json +33 -33
  208. package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2-overview.md +40 -40
  209. package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2.md +429 -429
  210. package/vendor/Server/Skills/rn-lib-update-doc/scripts/detect-readme-format.cjs +105 -105
  211. package/vendor/Server/Skills/rn-lib-update-doc/scripts/find-usage-doc.cjs +90 -90
  212. package/vendor/Server/Skills/rn-lib-update-doc/scripts/link-verify.cjs +213 -213
  213. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-changelog.cjs +73 -73
  214. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-package-meta.cjs +258 -258
  215. package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-readme-links.cjs +341 -341
  216. package/vendor/Server/Skills/rn-lib-update-doc/scripts/resolve-usage-docs.cjs +67 -67
  217. package/vendor/Server/Skills/rn-library-consistency-check/SKILL.md +299 -299
  218. package/vendor/Server/Skills/rn-library-consistency-check/assets/REPORT_TEMPLATE.md +293 -293
  219. package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_COMPONENT_CHECK_GUIDE.md +857 -857
  220. package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_TURBOMODULE_CHECK_GUIDE.md +856 -856
  221. package/vendor/Server/Skills/rn-library-consistency-check/references/CHECKLIST.md +157 -157
  222. package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_COMPONENT_CHECK_GUIDE.md +801 -801
  223. package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_TURBOMODULE_CHECK_GUIDE.md +683 -683
  224. package/vendor/Server/Skills/rn-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +233 -233
  225. package/vendor/Server/Skills/rn-library-consistency-check/references/NATIVE_COMPONENT_IDENTIFICATION.md +1373 -1373
  226. package/vendor/Server/Skills/rn-library-consistency-check/references/SCORING_STANDARD.md +220 -220
  227. package/vendor/Server/Skills/rn-library-consistency-check/scripts/validate-skill.py +245 -245
  228. package/vendor/Server/Skills/rn-library-documentation-quality-check/SKILL.md +263 -263
  229. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL.md +414 -414
  230. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL_en.md +413 -413
  231. package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +311 -311
  232. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CHECK_CHECKLIST.md +355 -355
  233. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CROSS_VALIDATION_GUIDE.md +115 -115
  234. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/DOC_COLLECTION_GUIDE.md +139 -139
  235. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/EXAMPLES.md +586 -586
  236. package/vendor/Server/Skills/rn-library-documentation-quality-check/references/GOTCHAS.md +57 -57
  237. package/vendor/Server/Skills/rn-library-documentation-quality-check/scripts/validate-skill.py +259 -259
  238. package/vendor/Server/Skills/rn-library-interface-analyzer/SKILL.md +301 -301
  239. package/vendor/Server/Skills/rn-library-interface-analyzer/assets/REPORT_TEMPLATE.md +148 -148
  240. package/vendor/Server/Skills/rn-library-interface-analyzer/references/DOC_ANNOTATION_GUIDE.md +118 -118
  241. package/vendor/Server/Skills/rn-library-interface-analyzer/references/SCRIPT_USAGE_GUIDE.md +168 -168
  242. package/vendor/Server/Skills/rn-library-interface-analyzer/references/URL_PARSING_RULES.md +176 -176
  243. package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +274 -274
  244. package/vendor/Server/Skills/rn-library-issue-generalizer/assets/case-template.md +45 -45
  245. package/vendor/Server/Skills/rn-library-issue-generalizer/assets/rule-template.md +25 -25
  246. package/vendor/Server/Skills/rn-library-issue-generalizer/references/PR_FETCH_GUIDE.md +61 -61
  247. package/vendor/Server/Skills/rn-library-issue-generalizer/references/RULE_TEMPLATE_GUIDE.md +165 -165
  248. package/vendor/Server/Skills/rn-library-issue-generalizer/scripts/fetch-pr-info.py +239 -239
  249. package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +263 -263
  250. package/vendor/Server/Skills/rn-library-known-issue-check/assets/REPORT_TEMPLATE.md +96 -96
  251. package/vendor/Server/Skills/rn-library-known-issue-check/references/COMPLIANCE_CHECKLIST.md +57 -57
  252. package/vendor/Server/Skills/rn-library-known-issue-check/references/INSPECTION_GUIDE.md +99 -99
  253. package/vendor/Server/Skills/rn-library-known-issue-check/references/PRESCREEN_GUIDE.md +64 -64
  254. package/vendor/Server/Skills/rn-library-known-issue-check/references/SOURCE_PREP_GUIDE.md +74 -74
  255. package/vendor/Server/Skills/rn-library-known-issue-check/scripts/validate-known-issue-report.py +164 -164
  256. package/vendor/Server/Skills/rn-library-memory-leak-check/SKILL.md +356 -339
  257. package/vendor/Server/Skills/rn-library-memory-leak-check/assets/REPORT_TEMPLATE.md +85 -83
  258. package/vendor/Server/Skills/rn-library-memory-leak-check/references/CHECKLIST.md +905 -859
  259. package/vendor/Server/Skills/rn-library-memory-leak-check/references/HARMONY_CODE_PATTERNS.md +124 -122
  260. package/vendor/Server/Skills/rn-library-memory-leak-check/scripts/scan_harmony_code.py +287 -279
  261. package/vendor/Server/Skills/rn-library-stability-check/SKILL.md +273 -273
  262. package/vendor/Server/Skills/rn-library-stability-check/assets/REPORT_TEMPLATE.md +129 -129
  263. package/vendor/Server/Skills/rn-library-stability-check/references/CHECKLIST.md +581 -581
  264. package/vendor/Server/Skills/rn-library-stability-check/references/SCORING_RULES.md +138 -138
  265. package/vendor/Server/Skills/rn-library-stability-check/scripts/scan-harmony-code.py +168 -168
  266. package/vendor/Server/Skills/rn-library-test-coverage-check/SKILL.md +526 -506
  267. package/vendor/Server/Skills/rn-library-test-coverage-check/references/CHECKLIST.md +321 -280
  268. package/vendor/Server/Skills/rn-library-test-coverage-check/references/DEMO_LOCATION.md +221 -221
  269. package/vendor/Server/Skills/rn-library-test-coverage-check/references/REPORT_TEMPLATE.md +220 -209
  270. package/vendor/Server/Skills/rn-library-test-coverage-check/references/SCRIPT_USAGE.md +325 -325
  271. package/vendor/Server/Skills/rn-ohos-xts-generator/SKILL.md +279 -279
  272. package/vendor/Server/Skills/rn-ohos-xts-generator/assets/TEST_FILE_TEMPLATES.md +404 -404
  273. package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_TROUBLESHOOTING.md +185 -185
  274. package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_WORKFLOW.md +265 -265
  275. package/vendor/Server/Skills/rn-ohos-xts-generator/references/COMMON_CONFIG.md +189 -189
  276. package/vendor/Server/Skills/rn-ohos-xts-generator/references/CONFIG_GUIDE.md +203 -203
  277. package/vendor/Server/Skills/rn-ohos-xts-generator/references/COVERAGE_ANALYZER.md +147 -147
  278. package/vendor/Server/Skills/rn-ohos-xts-generator/references/DESIGN_DOC_GUIDE.md +148 -148
  279. package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_FLOW.md +165 -165
  280. package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_STRATEGY.md +195 -195
  281. package/vendor/Server/Skills/rn-ohos-xts-generator/references/HARMONY_SCANNER.md +249 -249
  282. package/vendor/Server/Skills/rn-ohos-xts-generator/references/JEST_FRAMEWORK.md +235 -235
  283. package/vendor/Server/Skills/rn-ohos-xts-generator/references/PLATFORM_COMPAT.md +161 -161
  284. package/vendor/Server/Skills/rn-ohos-xts-generator/references/RN_TEST_PATTERNS.md +413 -413
  285. package/vendor/Server/Skills/rn-ohos-xts-generator/references/SOURCE_PARSER.md +235 -235
  286. package/vendor/Server/Skills/rn-ohos-xts-generator/references/TEST_CONVENTIONS.md +245 -245
  287. package/vendor/Server/Skills/rn-ohos-xts-generator/references/TROUBLESHOOTING.md +282 -282
  288. package/vendor/Server/Skills/rn-ohos-xts-generator/references/USAGE_GUIDE.md +251 -251
  289. package/vendor/Server/Skills/rnoh-cptf-api-test/SKILL.md +469 -469
  290. package/vendor/Server/Skills/rnoh-cptf-api-test/assets/CPTF_TEST_TEMPLATE.md +310 -310
  291. package/vendor/Server/Skills/rnoh-cptf-api-test/assets/DEMO_PAGE_TEMPLATE.md +303 -303
  292. package/vendor/Server/Skills/rnoh-cptf-api-test/references/CPTF_TEST_GENERATION_GUIDE.md +421 -421
  293. package/vendor/Server/Skills/rnoh-cptf-api-test/references/DEMO_GENERATION_GUIDE.md +358 -358
  294. package/vendor/Server/Skills/rnoh-cptf-api-test/references/QUALITY_CHECKLIST.md +114 -114
  295. package/vendor/Server/Skills/rnoh-cptf-api-test/references/SPEC_PARSING_GUIDE.md +274 -274
  296. package/vendor/Server/Skills/rnoh-cptf-api-test/scripts/validate-rnoh-cptf-api-test.sh +185 -185
  297. package/vendor/Server/Skills/rnoh-cptf-demo-test/SKILL.md +191 -191
  298. package/vendor/Server/Skills/rnoh-cptf-demo-test/assets/TEST_TEMPLATE.md +216 -216
  299. package/vendor/Server/Skills/rnoh-cptf-demo-test/references/CPTF_SETUP.md +107 -107
  300. package/vendor/Server/Skills/rnoh-cptf-demo-test/references/DEMO_ANALYSIS.md +120 -120
  301. package/vendor/Server/Skills/rnoh-cptf-demo-test/scripts/validate-rnoh-cptf-test.sh +108 -108
  302. package/vendor/Server/Skills/rnoh-cptf-test-run/SKILL.md +237 -237
  303. package/vendor/Server/Skills/rnoh-cptf-test-run/references/DEBUG_PLAYBOOK.md +261 -261
  304. package/vendor/Server/Skills/rnoh-cptf-test-run/scripts/validate-run-env.sh +112 -112
  305. package/vendor/Server/Skills/rnoh-lib-code-adapt/SKILL.md +497 -497
  306. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/adapt-checklist.md +270 -270
  307. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/api-migration-checklist.md +164 -164
  308. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/common-compile-errors.md +556 -556
  309. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/deveco-cli-tools.md +459 -459
  310. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/edge-cases.md +65 -65
  311. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/har-tgz-build.md +512 -512
  312. package/vendor/Server/Skills/rnoh-lib-code-adapt/references/version-compat-matrix.md +132 -132
  313. package/vendor/Server/Skills/rnoh-lib-code-adapt/scripts/auto-integrate.sh +424 -424
  314. package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +137 -137
  315. package/vendor/Server/Skills/rnoh-lib-demo-create/SKILL.md +306 -306
  316. package/vendor/Server/Skills/rnoh-lib-demo-create/assets/DEMO_PAGE_TEMPLATE.md +485 -485
  317. package/vendor/Server/Skills/rnoh-lib-demo-create/assets/INDEX_TEMPLATE.md +172 -172
  318. package/vendor/Server/Skills/rnoh-lib-demo-create/references/DEMO_CODE_RULES.md +422 -422
  319. package/vendor/Server/Skills/rnoh-lib-demo-create/references/QUALITY_CHECKLIST.md +95 -95
  320. package/vendor/Server/Skills/rnoh-lib-demo-create/references/SOURCE_EXPLORATION.md +169 -169
  321. package/vendor/Server/Skills/rnoh-lib-demo-doc/SKILL.md +554 -554
  322. package/vendor/Server/Skills/rnoh-lib-demo-doc/assets/DEMO_DOC_TEMPLATE.md +106 -106
  323. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/COVERAGE_INCREMENTAL.md +216 -216
  324. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/DEMO_DESIGN_RULES.md +413 -413
  325. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/OUTPUT_FORMAT.md +269 -269
  326. package/vendor/Server/Skills/rnoh-lib-demo-doc/references/QUALITY_CHECKLIST.md +98 -98
  327. package/vendor/Server/Skills/rnoh-lib-func-test/SKILL.md +337 -337
  328. package/vendor/Server/Skills/rnoh-lib-rnt-search/SKILL.md +722 -722
  329. package/vendor/Server/Skills/rnoh-lib-rnt-search/assets/PORT_REPORT_TEMPLATE.md +219 -219
  330. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/DEMO_PORTING_GUIDE.md +345 -345
  331. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/PORT_VERIFICATION.md +269 -269
  332. package/vendor/Server/Skills/rnoh-lib-rnt-search/references/RNT_PROJECT_STRUCTURE.md +173 -173
  333. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/analyze-demo-deps.cjs +267 -267
  334. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/detect-rnoh-version.cjs +174 -174
  335. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/find-rnt-demo.sh +111 -111
  336. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/port-demo.sh +186 -186
  337. package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/read-lib-meta.cjs +150 -150
  338. package/vendor/Server/Skills/rnoh-lib-test-align/SKILL.md +296 -296
  339. package/vendor/Server/Skills/rnoh-lib-test-align/references/jest-troubleshooting.md +371 -371
  340. package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +212 -212
  341. package/vendor/Server/Skills/rnoh-lib-test-align/references/runtime-troubleshooting.md +345 -345
  342. package/vendor/Server/Skills/rnoh-lib-test-align/references/unit-test-template.md +223 -223
  343. package/vendor/Server/Skills/rnoh-lib-test-align/scripts/port-test-demo.sh +1053 -1053
  344. package/vendor/Server/Skills/rnoh-lib-version-diff/SKILL.md +295 -255
  345. package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_ADAPTATION.md +82 -77
  346. package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_API_LOOKUP.md +224 -224
  347. package/vendor/Server/Skills/rnoh-lib-version-diff/references/script-reference.md +175 -174
  348. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/detect-upstream-version.js +967 -967
  349. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/generate-diff.js +1798 -1798
  350. package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/package.json +5 -5
  351. package/vendor/Server/Skills/rnoh-lib-version-diff/templates/report-template.md +180 -137
  352. package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +145 -145
  353. package/vendor/Server/Skills/skill-generator/SKILL.md +365 -365
  354. package/vendor/Server/Skills/skill-generator/assets/SKILL_TEMPLATE.md +183 -183
  355. package/vendor/Server/Skills/skill-generator/references/COMPLIANCE_CHECKLIST.md +82 -82
  356. package/vendor/Server/Skills/skill-generator/references/KB_QUERY_GUIDE.md +110 -110
  357. package/vendor/Server/Skills/skill-generator/references/MCP_TOOL_DISCOVERY.md +122 -122
  358. package/vendor/Server/Skills/skill-generator/references/SKILL_SPEC.md +121 -121
  359. package/vendor/Server/Skills/skill-generator/scripts/validate-skill.cjs +259 -259
  360. package/vendor/Server/Skills/task-analysis/SKILL.md +234 -234
  361. package/vendor/Server/Skills/task-analysis/assets/OUTPUT_EXAMPLES.md +160 -160
  362. package/vendor/Server/Skills/task-analysis/references/ACCEPTANCE_CRITERIA_GUIDE.md +190 -190
  363. package/vendor/Server/Skills/task-analysis/references/ANALYSIS_SCHEMA.md +224 -224
  364. package/vendor/Server/Skills/task-analysis/references/INTEGRATION_CONTEXT.md +162 -162
  365. package/vendor/Server/Skills/task-analysis/references/LESSONS_LEARNED.md +55 -55
  366. package/vendor/Server/Skills/task-analysis/references/REPLAN_CONTEXT_GUIDE.md +126 -126
  367. package/vendor/Server/Skills/task-analysis/scripts/validate-analysis-output.sh +256 -256
  368. package/vendor/Server/Skills/task-decomposition/SKILL.md +528 -528
  369. package/vendor/Server/Skills/task-decomposition/assets/OUTPUT_EXAMPLES.md +451 -451
  370. package/vendor/Server/Skills/task-decomposition/references/ACCEPTANCE_CRITERIA_GUIDE.md +179 -179
  371. package/vendor/Server/Skills/task-decomposition/references/DEPENDENCY_GRAPH_GUIDE.md +152 -152
  372. package/vendor/Server/Skills/task-decomposition/references/INTEGRATION_CONTEXT.md +175 -175
  373. package/vendor/Server/Skills/task-decomposition/references/REPLAN_CONTEXT_GUIDE.md +195 -195
  374. package/vendor/Server/Skills/task-decomposition/references/TASK_DECOMPOSITION_TEMPLATES.md +226 -226
  375. package/vendor/Server/Skills/task-decomposition/scripts/list-available-skills.cjs +263 -263
  376. package/vendor/Server/Skills/task-decomposition/scripts/skill-blacklist.json +29 -29
  377. package/vendor/Server/Skills/task-decomposition/scripts/validate-decomposition-output.cjs +376 -376
  378. package/vendor/Server/Skills/task-decomposition/scripts/validate-param-consistency.cjs +259 -259
  379. package/vendor/Server/Skills/task-decomposition/scripts/validate-specified-skills.cjs +216 -216
  380. package/vendor/Server/Skills/task-decomposition/scripts/validate-step-graph.cjs +424 -424
  381. package/vendor/Server/Skills/tpc-cpp-check/SKILL.md +427 -427
  382. package/vendor/Server/Skills/tpc-cpp-check/references/CHECKLIST.md +214 -214
  383. package/vendor/Server/Skills/tpc-cpp-check/references/HPKBUILD_GUIDE.md +235 -235
  384. package/vendor/Server/Skills/tpc-cpp-check/references/REPORT_TEMPLATE.md +250 -250
  385. package/vendor/Server/TestCheck/TestCheck.js +775 -775
  386. package/vendor/Server/TestCheck/index.js +11 -11
  387. package/vendor/Server/library/McpToolGuide.js +280 -280
  388. package/vendor/Server/library/StatsService.js +126 -126
  389. package/vendor/Server/library/cstTime.js +16 -16
  390. package/vendor/VERSION +3 -3
  391. package/workflows/pr-check.mjs +105 -105
  392. package/workflows/pr-push.mjs +192 -192
  393. package/vendor/Server/Agent/SkillSelector/types.js +0 -63
@@ -1,392 +1,392 @@
1
- ---
2
- name: arkts-library-memory-leak-check
3
- description: 对 ArkTS 鸿蒙化库进行内存泄露检视,聚焦 ArkTS/ETS 与 C/C++ NAPI 绑定代码中的生命周期管理、系统资源释放、NAPI 引用管理、事件订阅管理、闭包与上下文泄露等维度,识别潜在内存泄露风险,生成严苛评分报告(0-100分)。作为 ArkTS 仓库检视流程的第四阶段。
4
- license: Apache-2.0
5
- compatibility: 需要访问 Git 仓库、分析 ArkTS/ETS 及 C/C++ NAPI 绑定源码
6
- metadata:
7
- author: CPPAgent
8
- version: "1.0.0"
9
- ---
10
-
11
- # ArktsLibraryMemoryLeakCheckSkill
12
-
13
- 对**已鸿蒙化的 ArkTS 库**进行内存泄露风险检视,识别 ArkTS/ETS 层与 C/C++ NAPI 绑定层代码中的潜在内存泄露问题,评估资源管理安全性。
14
-
15
- > ⚠️ **核心定位**:ArkTS 鸿蒙化库的内存泄露检视,**覆盖 ArkTS/ETS 层与 C/C++ NAPI 绑定层**,重点关注生命周期管理、系统资源释放、NAPI 引用管理、闭包上下文泄露、跨语言资源释放一致性等问题。
16
-
17
- ---
18
-
19
- ## 任务参数
20
-
21
- | 参数 | 必需 | 说明 |
22
- |------|------|------|
23
- | `repoUrl` | ✅ | Git 仓库地址,支持分支参数 `?branch=xxx` |
24
- | `outputDir` | ✅ | 输出目录绝对路径,存放检视报告 |
25
- | `interfaceDocPath` | ✅ | 接口规格说明文档路径(由 library-interface-analyzer 生成) |
26
- | `repoName` | ✅ | 仓库名称(用于报告标识) |
27
-
28
- ---
29
-
30
- ## 输入依赖
31
-
32
- 本 SKILL 是 ArkTS 仓库检视流程的**第四阶段**,依赖:
33
-
34
- - **前置 SKILL**: `arkts-library-interface-spec`(接口规格说明已生成)
35
- - **输入文件**: `接口规格说明.md`(位于 outputDir);`编码质量检视报告.md` 为**可选参考**(若本地流程无编码质量检视 SKILL,跳过该参考,独立完成检视)
36
- - **仓库源码**: 已克隆到 `{outputDir}/source/`
37
-
38
- > 💡 **利用前置报告**:参考编码质量检视报告中标记的架构问题和代码规范问题,重点关注其中涉及的资源管理相关代码段。
39
-
40
- ---
41
-
42
- ## 工作流程
43
-
44
- ### Phase 1:源码范围识别
45
-
46
- **分层扫描**仓库中的鸿蒙化代码文件:
47
-
48
- 1. **ArkTS/ETS 层**:扫描 `.ets`、`.ts`、`.json5` 文件
49
- 2. **C/C++ NAPI 绑定层**:扫描 `.cpp`、`.c`、`.h`、`.hpp` 文件(重点关注 NAPI 绑定入口)
50
-
51
- **⚠️ 排除范围规则**:仅检视库的**核心源码**,以下目录和文件必须排除,不纳入内存泄露分析:
52
-
53
- | 排除类别 | 目录/文件特征 | 说明 |
54
- |----------|--------------|------|
55
- | Demo/示例用例 | `demo/`、`example/`、`examples/`、`sample/`、`samples/` 目录,文件名含 `demo`、`example`、`sample` | 示例代码仅用于演示库用法,不属于库的核心实现 |
56
- | 单元测试 | `test/`、`tests/`、`__tests__/`、`spec/`、`unittest/` 目录,文件名含 `test`、`spec`、`unittest` | 测试代码验证库功能而非生产运行,其资源管理模式与核心源码不同 |
57
- | 集成测试 | `integration-test/`、`e2e/`、`itest/` 目录 | 同上,非核心源码 |
58
- | 测试工具/辅助 | `mock/`、`fixture/`、`stub/`、`fuzz/` 目录 | 测试辅助代码不属于库运行时逻辑 |
59
-
60
- > **原则**:核心源码指库在**生产运行时**实际执行的代码,即被外部应用调用的公开 API 实现、内部模块逻辑、NAPI 绑定层。Demo 和测试代码中即使存在资源管理问题,也不影响库的实际运行安全性,因此不应纳入检视和评分。
61
-
62
- ```bash
63
- # ArkTS/ETS 层(排除 demo 与测试)
64
- find {{outputDir}}/source -type f \( -name "*.ets" -o -name "*.ts" -o -name "*.json5" \) \
65
- -not -path "*/demo/*" -not -path "*/example/*" -not -path "*/examples/*" \
66
- -not -path "*/sample/*" -not -path "*/samples/*" \
67
- -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/__tests__/*" \
68
- -not -path "*/spec/*" -not -path "*/unittest/*" \
69
- -not -path "*/integration-test/*" -not -path "*/e2e/*" \
70
- -not -path "*/mock/*" -not -path "*/fixture/*" \
71
- -not -path "*/fuzz/*" -not -path "*/stub/*" \
72
- -not -name "*demo*" -not -name "*example*" -not -name "*sample*" \
73
- -not -name "*test*" -not -name "*spec*" -not -name "*unittest*"
74
-
75
- # C/C++ NAPI 绑定层(排除 demo 与测试)
76
- find {{outputDir}}/source -type f \( -name "*.cpp" -o -name "*.c" -o -name "*.h" -o -name "*.hpp" \) \
77
- -not -path "*/demo/*" -not -path "*/example/*" -not -path "*/examples/*" \
78
- -not -path "*/sample/*" -not -path "*/samples/*" \
79
- -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/unittest/*" \
80
- -not -path "*/integration-test/*" -not -path "*/e2e/*" \
81
- -not -path "*/mock/*" -not -path "*/fixture/*" \
82
- -not -path "*/fuzz/*" -not -path "*/stub/*" \
83
- -not -name "*demo*" -not -name "*example*" -not -name "*sample*" \
84
- -not -name "*test*" -not -name "*unittest*" \
85
- | xargs grep -l "napi_" 2>/dev/null || true
86
- ```
87
-
88
- > `workdir: "{{outputDir}}"`
89
-
90
- ### Phase 2:逐文件内存泄露分析
91
-
92
- 对每个源码文件进行内存泄露检视,重点关注以下 7 个维度:
93
-
94
- #### 2.1 ArkTS 生命周期管理
95
-
96
- | 检查项 | 严重度 | 说明 |
97
- |--------|--------|------|
98
- | aboutToDisappear 未清理 | Critical | 组件销毁时未释放资源/移除监听/断开连接 |
99
- | @State 大对象泄露 | Major | @State 变量持有大对象引用(如大数组/Map),组件销毁后未主动置空 |
100
- | @Link/@Prop 双向绑定泄露 | Major | 双向绑定在组件销毁后未断开,父组件仍持有子组件引用 |
101
- | 页面栈泄露 | Major | router.pushUrl 后未调用 router.back,页面未正确弹出 |
102
- | PersistentStorage 泄露 | Minor | 持久化存储键未在组件销毁时清理 |
103
- | CustomComponent 引用泄露 | Major | 父组件通过引用持有已销毁子组件实例 |
104
-
105
- #### 2.2 系统资源释放
106
-
107
- | 检查项 | 严重度 | 说明 |
108
- |--------|--------|------|
109
- | Sensor 未注销 | Critical | sensor.on() 后无对应 sensor.off() |
110
- | Location 未关闭 | Critical | geoLocationManager 开启后未关闭 |
111
- | Network 连接未断开 | Major | HTTP/WebSocket 连接未调用 disconnect/close |
112
- | Timer 未清除 | Major | setInterval/setTimeout 未在生命周期结束时 clearInterval/clearTimeout |
113
- | Worker 未终止 | Major | Worker 创建后未调用 terminate |
114
- | Bitmap/Image 未释放 | Major | 图片资源未调用 recycle/release |
115
- | media.AVPlayer 未释放 | Major | AVPlayer 创建后未调用 release |
116
- | webview.WebView 未销毁 | Major | WebView 未正确销毁,可能持有 JS 上下文引用 |
117
- | XMLParser/JSONParser 未释放 | Minor | 解析器资源未释放 |
118
- | 数据库连接未关闭 | Critical | rdb 关闭未调用 close |
119
-
120
- #### 2.3 事件订阅管理
121
-
122
- | 检查项 | 严重度 | 说明 |
123
- |--------|--------|------|
124
- | CommonEvent 未取消订阅 | Critical | emitter.subscribe/on() 后无 unsubscribe/off() |
125
- | Callback 未移除 | Major | 注册的回调在组件销毁时未移除 |
126
- | Listener on/off 不匹配 | Major | on/off 注册与移除次数不匹配 |
127
- | 全局事件泄露 | Critical | 全局事件订阅未在组件生命周期中管理 |
128
- | emitter 持久订阅泄露 | Major | emitter.on() 使用 Persistent 选项但无取消机制 |
129
-
130
- #### 2.4 闭包与上下文泄露
131
-
132
- | 检查项 | 严重度 | 说明 |
133
- |--------|--------|------|
134
- | 闭包持有组件引用 | Major | 闭包捕获 this/组件引用,组件销毁后闭包仍存活 |
135
- | 全局回调持有组件上下文 | Critical | 全局注册的回调函数持有组件实例引用 |
136
- | 异步回调持有 stale context | Major | setTimeout/Promise 回调中引用已销毁组件上下文 |
137
- | 静态大对象缓存泄露 | Minor | 全局 Map/Array/缓存未在适当时机清理 |
138
-
139
- #### 2.5 NAPI 引用管理(ArkTS 层视角)
140
-
141
- | 检查项 | 严重度 | 说明 |
142
- |--------|--------|------|
143
- | napi_create_reference 未释放 | Critical | napi_create_reference 后无 napi_delete_reference |
144
- | napi_handle_scope 泄露 | Major | napi_open_handle_scope 后无 napi_close_handle_scope |
145
- | napi_callback_info 泄露 | Minor | 回调信息未正确处理释放 |
146
- | ArrayBuffer 外部资源泄露 | Major | napi_create_external ArrayBuffer 的 finalize 回调缺失或未正确释放 |
147
-
148
- #### 2.6 C/C++ 层内存泄露
149
-
150
- | 检查项 | 严重度 | 说明 |
151
- |--------|--------|------|
152
- | malloc/free 不匹配 | Critical | malloc 后无 free,或 calloc/realloc 后未释放 |
153
- | new/delete 不匹配 | Critical | new 后无 delete,new[] 后用 delete(而非 delete[]) |
154
- | 智能指针循环引用 | Critical | shared_ptr 循环引用导致引用计数永不为零 |
155
- | NAPI Native 对象泄露 | Critical | napi_wrap 包装的 Native 对象在 finalize 中未释放 |
156
- | 智能指针误用 | Major | unique_ptr 被 raw pointer 接管后未管理 |
157
- | 全局/静态缓冲区无限增长 | Major | 全局 vector/map 无上限增长,缺少清理机制 |
158
- | RAII 覆盖不全 | Major | 未使用 RAII 管理 C++ 资源(如文件句柄、锁) |
159
- | 内存池未释放 | Minor | 自定义内存池/allocator 未在析构时释放 |
160
-
161
- #### 2.7 跨语言资源释放一致性
162
-
163
- | 检查项 | 严重度 | 说明 |
164
- |--------|--------|------|
165
- | ArkTS on/C++ resource 不对称释放 | Critical | ArkTS 层调用 off() 但 C++ 层未释放对应资源,或反过来 |
166
- | Native 对象生命周期不一致 | Critical | C++ Native 对象与 ArkTS 包装对象生命周期不一致 |
167
- | finalize 回调缺失 | Critical | napi_wrap 未提供 finalize 回调,Native 对象无法被回收 |
168
- | 跨语言回调链泄露 | Major | C++ 层回调引用 ArkTS 函数,双向引用未正确断开 |
169
-
170
- ### Phase 3:内存泄露评分计算
171
-
172
- 基于检视结果进行**严苛评分**(0-100分),采用维度加权扣分与零容忍规则:
173
-
174
- #### 3.1 扣分规则
175
-
176
- ```
177
- 基础分 = 100
178
-
179
- 标准扣分(按问题数量叠加):
180
- - Critical 级别问题:每项 -20 分(上限 -60)
181
- - Major 级别问题:每项 -10 分(上限 -40)
182
- - Minor 级别问题:每项 -4 分(上限 -16)
183
-
184
- 零容忍加重扣分(叠加于标准扣分之上):
185
- - napi_ref/NAPI finalize 缺失:每项额外 -5 分(上限 -15)
186
- - malloc/free 或 new/delete 不匹配:每项额外 -5 分(上限 -15)
187
- - 闭包持有组件引用 + 全局事件泄露组合:额外 -10 分(上限 -10)
188
-
189
- 最终分 = max(0, 基础分 - 标准扣分 - 零容忍加重扣分)
190
- ```
191
-
192
- #### 3.2 维度子评分计算
193
-
194
- 每个维度独立计算子评分(用于报告中明细展示):
195
-
196
- ```
197
- 维度基础分 = 100
198
- 维度扣分:
199
- - 该维度 Critical 问题:每项 -20(上限 -60)
200
- - 该维度 Major 问题:每项 -10(上限 -40)
201
- - 该维度 Minor 问题:每项 -4(上限 -16)
202
- 维度分 = max(0, 维度基础分 - 维度扣分)
203
- ```
204
-
205
- #### 3.3 综合评分 = 各维度子评分加权平均
206
-
207
- ```
208
- 综合评分 = (
209
- 生命周期管理分 × 0.15 +
210
- 系统资源释放分 × 0.20 +
211
- 事件订阅管理分 × 0.15 +
212
- 闭包与上下文泄露分 × 0.10 +
213
- NAPI 引用管理分 × 0.15 +
214
- C/C++ 层内存泄露分 × 0.20 +
215
- 跨语言一致性分 × 0.05
216
- )
217
- ```
218
-
219
- > **重要**:当综合评分与"基础分 - 总扣分"不一致时,取两者中的**较低值**作为最终综合评分。这确保了零容忍加重扣分和维度加权不会导致评分偏高。
220
-
221
- #### 3.4 评分标准说明
222
-
223
- | 分数区间 | 等级 | 说明 |
224
- |----------|------|------|
225
- | 95-100 分 | 优秀 | 资源管理完善,无任何泄露风险 |
226
- | 85-94 分 | 良好 | 仅存在少量 Minor 级别风险,无 Major/Critical 问题 |
227
- | 70-84 分 | 一般 | 存在 Major 级别泄露,需针对性修复 |
228
- | 55-69 分 | 较差 | 存在 Critical 级别泄露风险,内存安全受威胁 |
229
- | <55 分 | 严重不足 | 多个 Critical 泄露问题,内存风险极高,不可发布 |
230
-
231
- > ⚠️ **严苛标准**:内存泄露不同于一般代码质量问题,一旦发生即造成持续损害。因此 85 分以下即不建议发布,55 分以下视为严重不可用。
232
-
233
- ### Phase 4:报告生成
234
-
235
- 在 `{outputDir}` 下生成 `内存泄露检视报告.md`,格式如下:
236
-
237
- ```markdown
238
- # {repoName} 内存泄露检视报告
239
-
240
- ## 一、检视概览
241
-
242
- | 字段 | 内容 |
243
- |------|------|
244
- | **仓库名称** | {repoName} |
245
- | **检视类型** | ArkTS 内存泄露检视 |
246
- | **检视时间** | {timestamp} |
247
- | **分析文件数(ArkTS层)** | {etsFileCount} |
248
- | **分析文件数(C/C++层)** | {cppFileCount} |
249
-
250
- ## 二、综合评分
251
-
252
- **综合评分:{score}/100**
253
-
254
- > 评分等级:{level}。{levelDescription}
255
-
256
- ### 扣分明细
257
-
258
- | 扣分项 | 数量 | 单项扣分 | 小计 | 上限 |
259
- |--------|------|----------|------|------|
260
- | Critical 标准扣分 | {criticalCount} | -20 | {criticalTotal} | -60 |
261
- | Major 标准扣分 | {majorCount} | -10 | {majorTotal} | -40 |
262
- | Minor 标准扣分 | {minorCount} | -4 | {minorTotal} | -16 |
263
- | napi_ref/finalize 零容忍加重 | {napiCriticalCount} | -5 | {napiExtraTotal} | -15 |
264
- | malloc/new 零容忍加重 | {memCriticalCount} | -5 | {memExtraTotal} | -15 |
265
- | 闭包+全局事件组合加重 | {comboCount} | -10 | {comboExtraTotal} | -10 |
266
-
267
- ## 三、检视维度明细
268
-
269
- ### 3.1 ArkTS 生命周期管理
270
-
271
- **维度评分:{dim1Score}/100**
272
-
273
- | 检查项 | 严重度 | 发现数量 | 详情 |
274
- |--------|--------|----------|------|
275
- | …… | …… | …… | …… |
276
-
277
- ### 3.2 系统资源释放
278
-
279
- **维度评分:{dim2Score}/100**
280
-
281
- | 检查项 | 严重度 | 发现数量 | 详情 |
282
- |--------|--------|----------|------|
283
- | …… | …… | …… | …… |
284
-
285
- ### 3.3 事件订阅管理
286
-
287
- **维度评分:{dim3Score}/100**
288
-
289
- | 检查项 | 严重度 | 发现数量 | 详情 |
290
- |--------|--------|----------|------|
291
- | …… | …… | …… | …… |
292
-
293
- ### 3.4 闭包与上下文泄露
294
-
295
- **维度评分:{dim4Score}/100**
296
-
297
- | 检查项 | 严重度 | 发现数量 | 详情 |
298
- |--------|--------|----------|------|
299
- | …… | …… | …… | …… |
300
-
301
- ### 3.5 NAPI 引用管理
302
-
303
- **维度评分:{dim5Score}/100**
304
-
305
- | 检查项 | 严重度 | 发现数量 | 详情 |
306
- |--------|--------|----------|------|
307
- | …… | …… | …… | …… |
308
-
309
- ### 3.6 C/C++ 层内存泄露
310
-
311
- **维度评分:{dim6Score}/100**
312
-
313
- | 检查项 | 严重度 | 发现数量 | 详情 |
314
- |--------|--------|----------|------|
315
- | …… | …… | …… | …… |
316
-
317
- ### 3.7 跨语言资源释放一致性
318
-
319
- **维度评分:{dim7Score}/100**
320
-
321
- | 检查项 | 严重度 | 发现数量 | 详情 |
322
- |--------|--------|----------|------|
323
- | …… | …… | …… | …… |
324
-
325
- ## 四、泄露风险清单
326
-
327
- | # | 文件 | 行号 | 语言层 | 严重度 | 泄露类型 | 泄露描述 | 影响范围 | 修复建议 |
328
- |---|------|------|--------|--------|----------|----------|----------|----------|
329
- | …… | …… | …… | ArkTS/C++ | …… | …… | …… | …… | …… |
330
-
331
- > **语言层**列标注问题所在的代码层:`ArkTS`(ETS/TS 层)或 `C++`(Native 层)或 `跨语言`(涉及两层交互)。
332
-
333
- ## 五、改进建议
334
-
335
- ### 5.1 Critical 级别修复优先级
336
-
337
- (列出所有 Critical 问题的修复建议,按影响排序)
338
-
339
- ### 5.2 Major 级别修复建议
340
-
341
- ……
342
-
343
- ### 5.3 通用改进方案
344
-
345
- ……
346
-
347
- ---
348
-
349
- **报告生成时间**:{timestamp}
350
- ```
351
-
352
- > **重要**:
353
- > 1. 报告必须包含 `**综合评分:XX/100**` 格式,以便后端 `_parseArktsLibraryScore` 函数自动解析评分。
354
- > 2. 每个维度必须包含 `**维度评分:XX/100**` 格式。
355
- > 3. 泄露风险清单必须标注 **语言层**(ArkTS/C++/跨语言)。
356
-
357
- ---
358
-
359
- ## 输出产物
360
-
361
- | 产物 | 文件名 | 说明 |
362
- |------|--------|------|
363
- | 内存泄露检视报告 | `内存泄露检视报告.md` | 综合评分 + 扣分明细 + 7维度评分 + 泄露清单 + 修复建议 |
364
-
365
- 所有产物写入 `{outputDir}` 目录。
366
-
367
- > ⚠️ **输出文件自检**:写入结果文件前,先确认 `内存泄露检视报告.md` 已存在且内容完整(**独立文件,禁止只写入 result 执行结果文件**)。若报告内容仅在草稿中,必须先将其保存为上述独立文件。
368
-
369
- ### 结构化指标输出(必须执行)
370
-
371
- 执行环境会在任务 prompt 中下发一个**结构化指标文件输出路径**(`stepId{X}_loop{L}_meta_{N}.json`)。
372
- 检视完成后,**必须**将最终评分以下述 JSON 对象写入该路径:
373
-
374
- ```json
375
- {
376
- "memoryLeakScore": 85,
377
- "scoreReason": "Critical泄露1处-20等(一句话判定依据,≤50字;触发零容忍规则时必须注明)"
378
- }
379
- ```
380
-
381
- | 字段 | 类型 | 说明 |
382
- |------|------|------|
383
- | `memoryLeakScore` | number | 内存泄露评分(0-100 整数,与报告中 `**综合评分:XX/100**` 的数值一致) |
384
- | `scoreReason` | string | 评分判定依据摘要(可选,前端悬浮提示展示;0 分时强烈建议写明触发的扣分/零容忍规则) |
385
-
386
- **说明**:该文件由执行框架自动收割入库(前端/历史列表直接读取评分,无需解析报告文本)。若 prompt 未下发该路径则跳过本节。
387
-
388
- ---
389
-
390
- ## 评分权重
391
-
1
+ ---
2
+ name: arkts-library-memory-leak-check
3
+ description: 对 ArkTS 鸿蒙化库进行内存泄露检视,聚焦 ArkTS/ETS 与 C/C++ NAPI 绑定代码中的生命周期管理、系统资源释放、NAPI 引用管理、事件订阅管理、闭包与上下文泄露等维度,识别潜在内存泄露风险,生成严苛评分报告(0-100分)。作为 ArkTS 仓库检视流程的第四阶段。
4
+ license: Apache-2.0
5
+ compatibility: 需要访问 Git 仓库、分析 ArkTS/ETS 及 C/C++ NAPI 绑定源码
6
+ metadata:
7
+ author: CPPAgent
8
+ version: "1.0.0"
9
+ ---
10
+
11
+ # ArktsLibraryMemoryLeakCheckSkill
12
+
13
+ 对**已鸿蒙化的 ArkTS 库**进行内存泄露风险检视,识别 ArkTS/ETS 层与 C/C++ NAPI 绑定层代码中的潜在内存泄露问题,评估资源管理安全性。
14
+
15
+ > ⚠️ **核心定位**:ArkTS 鸿蒙化库的内存泄露检视,**覆盖 ArkTS/ETS 层与 C/C++ NAPI 绑定层**,重点关注生命周期管理、系统资源释放、NAPI 引用管理、闭包上下文泄露、跨语言资源释放一致性等问题。
16
+
17
+ ---
18
+
19
+ ## 任务参数
20
+
21
+ | 参数 | 必需 | 说明 |
22
+ |------|------|------|
23
+ | `repoUrl` | ✅ | Git 仓库地址,支持分支参数 `?branch=xxx` |
24
+ | `outputDir` | ✅ | 输出目录绝对路径,存放检视报告 |
25
+ | `interfaceDocPath` | ✅ | 接口规格说明文档路径(由 library-interface-analyzer 生成) |
26
+ | `repoName` | ✅ | 仓库名称(用于报告标识) |
27
+
28
+ ---
29
+
30
+ ## 输入依赖
31
+
32
+ 本 SKILL 是 ArkTS 仓库检视流程的**第四阶段**,依赖:
33
+
34
+ - **前置 SKILL**: `arkts-library-interface-spec`(接口规格说明已生成)
35
+ - **输入文件**: `接口规格说明.md`(位于 outputDir);`编码质量检视报告.md` 为**可选参考**(若本地流程无编码质量检视 SKILL,跳过该参考,独立完成检视)
36
+ - **仓库源码**: 已克隆到 `{outputDir}/source/`
37
+
38
+ > 💡 **利用前置报告**:参考编码质量检视报告中标记的架构问题和代码规范问题,重点关注其中涉及的资源管理相关代码段。
39
+
40
+ ---
41
+
42
+ ## 工作流程
43
+
44
+ ### Phase 1:源码范围识别
45
+
46
+ **分层扫描**仓库中的鸿蒙化代码文件:
47
+
48
+ 1. **ArkTS/ETS 层**:扫描 `.ets`、`.ts`、`.json5` 文件
49
+ 2. **C/C++ NAPI 绑定层**:扫描 `.cpp`、`.c`、`.h`、`.hpp` 文件(重点关注 NAPI 绑定入口)
50
+
51
+ **⚠️ 排除范围规则**:仅检视库的**核心源码**,以下目录和文件必须排除,不纳入内存泄露分析:
52
+
53
+ | 排除类别 | 目录/文件特征 | 说明 |
54
+ |----------|--------------|------|
55
+ | Demo/示例用例 | `demo/`、`example/`、`examples/`、`sample/`、`samples/` 目录,文件名含 `demo`、`example`、`sample` | 示例代码仅用于演示库用法,不属于库的核心实现 |
56
+ | 单元测试 | `test/`、`tests/`、`__tests__/`、`spec/`、`unittest/` 目录,文件名含 `test`、`spec`、`unittest` | 测试代码验证库功能而非生产运行,其资源管理模式与核心源码不同 |
57
+ | 集成测试 | `integration-test/`、`e2e/`、`itest/` 目录 | 同上,非核心源码 |
58
+ | 测试工具/辅助 | `mock/`、`fixture/`、`stub/`、`fuzz/` 目录 | 测试辅助代码不属于库运行时逻辑 |
59
+
60
+ > **原则**:核心源码指库在**生产运行时**实际执行的代码,即被外部应用调用的公开 API 实现、内部模块逻辑、NAPI 绑定层。Demo 和测试代码中即使存在资源管理问题,也不影响库的实际运行安全性,因此不应纳入检视和评分。
61
+
62
+ ```bash
63
+ # ArkTS/ETS 层(排除 demo 与测试)
64
+ find {{outputDir}}/source -type f \( -name "*.ets" -o -name "*.ts" -o -name "*.json5" \) \
65
+ -not -path "*/demo/*" -not -path "*/example/*" -not -path "*/examples/*" \
66
+ -not -path "*/sample/*" -not -path "*/samples/*" \
67
+ -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/__tests__/*" \
68
+ -not -path "*/spec/*" -not -path "*/unittest/*" \
69
+ -not -path "*/integration-test/*" -not -path "*/e2e/*" \
70
+ -not -path "*/mock/*" -not -path "*/fixture/*" \
71
+ -not -path "*/fuzz/*" -not -path "*/stub/*" \
72
+ -not -name "*demo*" -not -name "*example*" -not -name "*sample*" \
73
+ -not -name "*test*" -not -name "*spec*" -not -name "*unittest*"
74
+
75
+ # C/C++ NAPI 绑定层(排除 demo 与测试)
76
+ find {{outputDir}}/source -type f \( -name "*.cpp" -o -name "*.c" -o -name "*.h" -o -name "*.hpp" \) \
77
+ -not -path "*/demo/*" -not -path "*/example/*" -not -path "*/examples/*" \
78
+ -not -path "*/sample/*" -not -path "*/samples/*" \
79
+ -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/unittest/*" \
80
+ -not -path "*/integration-test/*" -not -path "*/e2e/*" \
81
+ -not -path "*/mock/*" -not -path "*/fixture/*" \
82
+ -not -path "*/fuzz/*" -not -path "*/stub/*" \
83
+ -not -name "*demo*" -not -name "*example*" -not -name "*sample*" \
84
+ -not -name "*test*" -not -name "*unittest*" \
85
+ | xargs grep -l "napi_" 2>/dev/null || true
86
+ ```
87
+
88
+ > `workdir: "{{outputDir}}"`
89
+
90
+ ### Phase 2:逐文件内存泄露分析
91
+
92
+ 对每个源码文件进行内存泄露检视,重点关注以下 7 个维度:
93
+
94
+ #### 2.1 ArkTS 生命周期管理
95
+
96
+ | 检查项 | 严重度 | 说明 |
97
+ |--------|--------|------|
98
+ | aboutToDisappear 未清理 | Critical | 组件销毁时未释放资源/移除监听/断开连接 |
99
+ | @State 大对象泄露 | Major | @State 变量持有大对象引用(如大数组/Map),组件销毁后未主动置空 |
100
+ | @Link/@Prop 双向绑定泄露 | Major | 双向绑定在组件销毁后未断开,父组件仍持有子组件引用 |
101
+ | 页面栈泄露 | Major | router.pushUrl 后未调用 router.back,页面未正确弹出 |
102
+ | PersistentStorage 泄露 | Minor | 持久化存储键未在组件销毁时清理 |
103
+ | CustomComponent 引用泄露 | Major | 父组件通过引用持有已销毁子组件实例 |
104
+
105
+ #### 2.2 系统资源释放
106
+
107
+ | 检查项 | 严重度 | 说明 |
108
+ |--------|--------|------|
109
+ | Sensor 未注销 | Critical | sensor.on() 后无对应 sensor.off() |
110
+ | Location 未关闭 | Critical | geoLocationManager 开启后未关闭 |
111
+ | Network 连接未断开 | Major | HTTP/WebSocket 连接未调用 disconnect/close |
112
+ | Timer 未清除 | Major | setInterval/setTimeout 未在生命周期结束时 clearInterval/clearTimeout |
113
+ | Worker 未终止 | Major | Worker 创建后未调用 terminate |
114
+ | Bitmap/Image 未释放 | Major | 图片资源未调用 recycle/release |
115
+ | media.AVPlayer 未释放 | Major | AVPlayer 创建后未调用 release |
116
+ | webview.WebView 未销毁 | Major | WebView 未正确销毁,可能持有 JS 上下文引用 |
117
+ | XMLParser/JSONParser 未释放 | Minor | 解析器资源未释放 |
118
+ | 数据库连接未关闭 | Critical | rdb 关闭未调用 close |
119
+
120
+ #### 2.3 事件订阅管理
121
+
122
+ | 检查项 | 严重度 | 说明 |
123
+ |--------|--------|------|
124
+ | CommonEvent 未取消订阅 | Critical | emitter.subscribe/on() 后无 unsubscribe/off() |
125
+ | Callback 未移除 | Major | 注册的回调在组件销毁时未移除 |
126
+ | Listener on/off 不匹配 | Major | on/off 注册与移除次数不匹配 |
127
+ | 全局事件泄露 | Critical | 全局事件订阅未在组件生命周期中管理 |
128
+ | emitter 持久订阅泄露 | Major | emitter.on() 使用 Persistent 选项但无取消机制 |
129
+
130
+ #### 2.4 闭包与上下文泄露
131
+
132
+ | 检查项 | 严重度 | 说明 |
133
+ |--------|--------|------|
134
+ | 闭包持有组件引用 | Major | 闭包捕获 this/组件引用,组件销毁后闭包仍存活 |
135
+ | 全局回调持有组件上下文 | Critical | 全局注册的回调函数持有组件实例引用 |
136
+ | 异步回调持有 stale context | Major | setTimeout/Promise 回调中引用已销毁组件上下文 |
137
+ | 静态大对象缓存泄露 | Minor | 全局 Map/Array/缓存未在适当时机清理 |
138
+
139
+ #### 2.5 NAPI 引用管理(ArkTS 层视角)
140
+
141
+ | 检查项 | 严重度 | 说明 |
142
+ |--------|--------|------|
143
+ | napi_create_reference 未释放 | Critical | napi_create_reference 后无 napi_delete_reference |
144
+ | napi_handle_scope 泄露 | Major | napi_open_handle_scope 后无 napi_close_handle_scope |
145
+ | napi_callback_info 泄露 | Minor | 回调信息未正确处理释放 |
146
+ | ArrayBuffer 外部资源泄露 | Major | napi_create_external ArrayBuffer 的 finalize 回调缺失或未正确释放 |
147
+
148
+ #### 2.6 C/C++ 层内存泄露
149
+
150
+ | 检查项 | 严重度 | 说明 |
151
+ |--------|--------|------|
152
+ | malloc/free 不匹配 | Critical | malloc 后无 free,或 calloc/realloc 后未释放 |
153
+ | new/delete 不匹配 | Critical | new 后无 delete,new[] 后用 delete(而非 delete[]) |
154
+ | 智能指针循环引用 | Critical | shared_ptr 循环引用导致引用计数永不为零 |
155
+ | NAPI Native 对象泄露 | Critical | napi_wrap 包装的 Native 对象在 finalize 中未释放 |
156
+ | 智能指针误用 | Major | unique_ptr 被 raw pointer 接管后未管理 |
157
+ | 全局/静态缓冲区无限增长 | Major | 全局 vector/map 无上限增长,缺少清理机制 |
158
+ | RAII 覆盖不全 | Major | 未使用 RAII 管理 C++ 资源(如文件句柄、锁) |
159
+ | 内存池未释放 | Minor | 自定义内存池/allocator 未在析构时释放 |
160
+
161
+ #### 2.7 跨语言资源释放一致性
162
+
163
+ | 检查项 | 严重度 | 说明 |
164
+ |--------|--------|------|
165
+ | ArkTS on/C++ resource 不对称释放 | Critical | ArkTS 层调用 off() 但 C++ 层未释放对应资源,或反过来 |
166
+ | Native 对象生命周期不一致 | Critical | C++ Native 对象与 ArkTS 包装对象生命周期不一致 |
167
+ | finalize 回调缺失 | Critical | napi_wrap 未提供 finalize 回调,Native 对象无法被回收 |
168
+ | 跨语言回调链泄露 | Major | C++ 层回调引用 ArkTS 函数,双向引用未正确断开 |
169
+
170
+ ### Phase 3:内存泄露评分计算
171
+
172
+ 基于检视结果进行**严苛评分**(0-100分),采用维度加权扣分与零容忍规则:
173
+
174
+ #### 3.1 扣分规则
175
+
176
+ ```
177
+ 基础分 = 100
178
+
179
+ 标准扣分(按问题数量叠加):
180
+ - Critical 级别问题:每项 -20 分(上限 -60)
181
+ - Major 级别问题:每项 -10 分(上限 -40)
182
+ - Minor 级别问题:每项 -4 分(上限 -16)
183
+
184
+ 零容忍加重扣分(叠加于标准扣分之上):
185
+ - napi_ref/NAPI finalize 缺失:每项额外 -5 分(上限 -15)
186
+ - malloc/free 或 new/delete 不匹配:每项额外 -5 分(上限 -15)
187
+ - 闭包持有组件引用 + 全局事件泄露组合:额外 -10 分(上限 -10)
188
+
189
+ 最终分 = max(0, 基础分 - 标准扣分 - 零容忍加重扣分)
190
+ ```
191
+
192
+ #### 3.2 维度子评分计算
193
+
194
+ 每个维度独立计算子评分(用于报告中明细展示):
195
+
196
+ ```
197
+ 维度基础分 = 100
198
+ 维度扣分:
199
+ - 该维度 Critical 问题:每项 -20(上限 -60)
200
+ - 该维度 Major 问题:每项 -10(上限 -40)
201
+ - 该维度 Minor 问题:每项 -4(上限 -16)
202
+ 维度分 = max(0, 维度基础分 - 维度扣分)
203
+ ```
204
+
205
+ #### 3.3 综合评分 = 各维度子评分加权平均
206
+
207
+ ```
208
+ 综合评分 = (
209
+ 生命周期管理分 × 0.15 +
210
+ 系统资源释放分 × 0.20 +
211
+ 事件订阅管理分 × 0.15 +
212
+ 闭包与上下文泄露分 × 0.10 +
213
+ NAPI 引用管理分 × 0.15 +
214
+ C/C++ 层内存泄露分 × 0.20 +
215
+ 跨语言一致性分 × 0.05
216
+ )
217
+ ```
218
+
219
+ > **重要**:当综合评分与"基础分 - 总扣分"不一致时,取两者中的**较低值**作为最终综合评分。这确保了零容忍加重扣分和维度加权不会导致评分偏高。
220
+
221
+ #### 3.4 评分标准说明
222
+
223
+ | 分数区间 | 等级 | 说明 |
224
+ |----------|------|------|
225
+ | 95-100 分 | 优秀 | 资源管理完善,无任何泄露风险 |
226
+ | 85-94 分 | 良好 | 仅存在少量 Minor 级别风险,无 Major/Critical 问题 |
227
+ | 70-84 分 | 一般 | 存在 Major 级别泄露,需针对性修复 |
228
+ | 55-69 分 | 较差 | 存在 Critical 级别泄露风险,内存安全受威胁 |
229
+ | <55 分 | 严重不足 | 多个 Critical 泄露问题,内存风险极高,不可发布 |
230
+
231
+ > ⚠️ **严苛标准**:内存泄露不同于一般代码质量问题,一旦发生即造成持续损害。因此 85 分以下即不建议发布,55 分以下视为严重不可用。
232
+
233
+ ### Phase 4:报告生成
234
+
235
+ 在 `{outputDir}` 下生成 `内存泄露检视报告.md`,格式如下:
236
+
237
+ ```markdown
238
+ # {repoName} 内存泄露检视报告
239
+
240
+ ## 一、检视概览
241
+
242
+ | 字段 | 内容 |
243
+ |------|------|
244
+ | **仓库名称** | {repoName} |
245
+ | **检视类型** | ArkTS 内存泄露检视 |
246
+ | **检视时间** | {timestamp} |
247
+ | **分析文件数(ArkTS层)** | {etsFileCount} |
248
+ | **分析文件数(C/C++层)** | {cppFileCount} |
249
+
250
+ ## 二、综合评分
251
+
252
+ **综合评分:{score}/100**
253
+
254
+ > 评分等级:{level}。{levelDescription}
255
+
256
+ ### 扣分明细
257
+
258
+ | 扣分项 | 数量 | 单项扣分 | 小计 | 上限 |
259
+ |--------|------|----------|------|------|
260
+ | Critical 标准扣分 | {criticalCount} | -20 | {criticalTotal} | -60 |
261
+ | Major 标准扣分 | {majorCount} | -10 | {majorTotal} | -40 |
262
+ | Minor 标准扣分 | {minorCount} | -4 | {minorTotal} | -16 |
263
+ | napi_ref/finalize 零容忍加重 | {napiCriticalCount} | -5 | {napiExtraTotal} | -15 |
264
+ | malloc/new 零容忍加重 | {memCriticalCount} | -5 | {memExtraTotal} | -15 |
265
+ | 闭包+全局事件组合加重 | {comboCount} | -10 | {comboExtraTotal} | -10 |
266
+
267
+ ## 三、检视维度明细
268
+
269
+ ### 3.1 ArkTS 生命周期管理
270
+
271
+ **维度评分:{dim1Score}/100**
272
+
273
+ | 检查项 | 严重度 | 发现数量 | 详情 |
274
+ |--------|--------|----------|------|
275
+ | …… | …… | …… | …… |
276
+
277
+ ### 3.2 系统资源释放
278
+
279
+ **维度评分:{dim2Score}/100**
280
+
281
+ | 检查项 | 严重度 | 发现数量 | 详情 |
282
+ |--------|--------|----------|------|
283
+ | …… | …… | …… | …… |
284
+
285
+ ### 3.3 事件订阅管理
286
+
287
+ **维度评分:{dim3Score}/100**
288
+
289
+ | 检查项 | 严重度 | 发现数量 | 详情 |
290
+ |--------|--------|----------|------|
291
+ | …… | …… | …… | …… |
292
+
293
+ ### 3.4 闭包与上下文泄露
294
+
295
+ **维度评分:{dim4Score}/100**
296
+
297
+ | 检查项 | 严重度 | 发现数量 | 详情 |
298
+ |--------|--------|----------|------|
299
+ | …… | …… | …… | …… |
300
+
301
+ ### 3.5 NAPI 引用管理
302
+
303
+ **维度评分:{dim5Score}/100**
304
+
305
+ | 检查项 | 严重度 | 发现数量 | 详情 |
306
+ |--------|--------|----------|------|
307
+ | …… | …… | …… | …… |
308
+
309
+ ### 3.6 C/C++ 层内存泄露
310
+
311
+ **维度评分:{dim6Score}/100**
312
+
313
+ | 检查项 | 严重度 | 发现数量 | 详情 |
314
+ |--------|--------|----------|------|
315
+ | …… | …… | …… | …… |
316
+
317
+ ### 3.7 跨语言资源释放一致性
318
+
319
+ **维度评分:{dim7Score}/100**
320
+
321
+ | 检查项 | 严重度 | 发现数量 | 详情 |
322
+ |--------|--------|----------|------|
323
+ | …… | …… | …… | …… |
324
+
325
+ ## 四、泄露风险清单
326
+
327
+ | # | 文件 | 行号 | 语言层 | 严重度 | 泄露类型 | 泄露描述 | 影响范围 | 修复建议 |
328
+ |---|------|------|--------|--------|----------|----------|----------|----------|
329
+ | …… | …… | …… | ArkTS/C++ | …… | …… | …… | …… | …… |
330
+
331
+ > **语言层**列标注问题所在的代码层:`ArkTS`(ETS/TS 层)或 `C++`(Native 层)或 `跨语言`(涉及两层交互)。
332
+
333
+ ## 五、改进建议
334
+
335
+ ### 5.1 Critical 级别修复优先级
336
+
337
+ (列出所有 Critical 问题的修复建议,按影响排序)
338
+
339
+ ### 5.2 Major 级别修复建议
340
+
341
+ ……
342
+
343
+ ### 5.3 通用改进方案
344
+
345
+ ……
346
+
347
+ ---
348
+
349
+ **报告生成时间**:{timestamp}
350
+ ```
351
+
352
+ > **重要**:
353
+ > 1. 报告必须包含 `**综合评分:XX/100**` 格式,以便后端 `_parseArktsLibraryScore` 函数自动解析评分。
354
+ > 2. 每个维度必须包含 `**维度评分:XX/100**` 格式。
355
+ > 3. 泄露风险清单必须标注 **语言层**(ArkTS/C++/跨语言)。
356
+
357
+ ---
358
+
359
+ ## 输出产物
360
+
361
+ | 产物 | 文件名 | 说明 |
362
+ |------|--------|------|
363
+ | 内存泄露检视报告 | `内存泄露检视报告.md` | 综合评分 + 扣分明细 + 7维度评分 + 泄露清单 + 修复建议 |
364
+
365
+ 所有产物写入 `{outputDir}` 目录。
366
+
367
+ > ⚠️ **输出文件自检**:写入结果文件前,先确认 `内存泄露检视报告.md` 已存在且内容完整(**独立文件,禁止只写入 result 执行结果文件**)。若报告内容仅在草稿中,必须先将其保存为上述独立文件。
368
+
369
+ ### 结构化指标输出(必须执行)
370
+
371
+ 执行环境会在任务 prompt 中下发一个**结构化指标文件输出路径**(`stepId{X}_loop{L}_meta_{N}.json`)。
372
+ 检视完成后,**必须**将最终评分以下述 JSON 对象写入该路径:
373
+
374
+ ```json
375
+ {
376
+ "memoryLeakScore": 85,
377
+ "scoreReason": "Critical泄露1处-20等(一句话判定依据,≤50字;触发零容忍规则时必须注明)"
378
+ }
379
+ ```
380
+
381
+ | 字段 | 类型 | 说明 |
382
+ |------|------|------|
383
+ | `memoryLeakScore` | number | 内存泄露评分(0-100 整数,与报告中 `**综合评分:XX/100**` 的数值一致) |
384
+ | `scoreReason` | string | 评分判定依据摘要(可选,前端悬浮提示展示;0 分时强烈建议写明触发的扣分/零容忍规则) |
385
+
386
+ **说明**:该文件由执行框架自动收割入库(前端/历史列表直接读取评分,无需解析报告文本)。若 prompt 未下发该路径则跳过本节。
387
+
388
+ ---
389
+
390
+ ## 评分权重
391
+
392
392
  本 SKILL 在 ArkTS 仓库检视综合评分中权重为 **25%**。