@ohos-cpf/3rdloop 0.0.1 → 0.0.3
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 +245 -425
- package/bin/3rdloop.mjs +46 -46
- package/lib/cli.js +781 -740
- package/lib/config-cmd.js +452 -0
- package/lib/config.js +318 -317
- package/lib/doctor.js +113 -113
- package/lib/exit-codes.js +30 -30
- package/lib/opencode.js +155 -155
- package/lib/orch.js +426 -426
- package/lib/queries.js +263 -263
- package/lib/step.js +325 -325
- package/lib/ui.js +222 -222
- package/lib/update.js +280 -0
- package/lib/workflow.js +308 -290
- package/lib/workflows.js +131 -131
- package/package.json +50 -50
- package/vendor/Server/Agent/SkillSelector/README.md +343 -343
- package/vendor/Server/Agent/SkillSelector/core/Agent.js +207 -207
- package/vendor/Server/Agent/SkillSelector/index.js +14 -14
- package/vendor/Server/Agent/SkillSelector/llm/llmClient.js +313 -313
- package/vendor/Server/Agent/SkillSelector/llm/prompts.js +161 -161
- package/vendor/Server/Agent/SkillSelector/llm/reactSteps.js +144 -144
- package/vendor/Server/Agent/SkillSelector/matcher/fuzzyMatcher.js +433 -433
- package/vendor/Server/Agent/SkillSelector/scanner/skillScanner.js +382 -382
- package/vendor/Server/Agent/SkillSelector/utils/actionWords.js +59 -59
- package/vendor/Server/Brain/AnalysisStrategies.js +422 -422
- package/vendor/Server/Brain/Brain.js +686 -686
- package/vendor/Server/Brain/DecompositionStrategies.js +621 -621
- package/vendor/Server/Brain/PlanPersistence.js +196 -196
- package/vendor/Server/Brain/SkillExecutor.js +251 -251
- package/vendor/Server/Brain/index.js +11 -11
- package/vendor/Server/CLI/cli.js +275 -243
- package/vendor/Server/CLI/deveco-code/index.js +71 -0
- package/vendor/Server/CLI/deveco-code.js +5 -0
- package/vendor/Server/CLI/opencode/index.js +817 -804
- package/vendor/Server/CLI/opencode.js +5 -5
- package/vendor/Server/DbUse/MessageArchive.js +61 -61
- package/vendor/Server/DbUse/StorageManager.js +107 -107
- package/vendor/Server/DbUse/adapters/BaseAdapter.js +94 -94
- package/vendor/Server/DbUse/adapters/FileAdapter.js +138 -138
- package/vendor/Server/DbUse/adapters/JsonAdapter.js +138 -138
- package/vendor/Server/DbUse/adapters/JsonlAdapter.js +114 -114
- package/vendor/Server/DbUse/adapters/SqliteAdapter.js +157 -157
- package/vendor/Server/DbUse/index.js +160 -160
- package/vendor/Server/DbUse/stores/SessionStore.js +279 -279
- package/vendor/Server/DbUse/stores/TaskExecutionStore.js +133 -133
- package/vendor/Server/DbUse/stores/TaskRegistryStore.js +262 -262
- package/vendor/Server/DbUse/stores/TaskStepStore.js +279 -279
- package/vendor/Server/FlexRunner/FlexRunner.js +1759 -1759
- package/vendor/Server/FlexRunner/index.js +12 -12
- package/vendor/Server/Knowledge/KnowledgeImporter.js +523 -523
- package/vendor/Server/Knowledge/KnowledgeManager.js +341 -341
- package/vendor/Server/Knowledge/index.js +33 -33
- package/vendor/Server/LoopEngine/LoopEngine.js +1133 -1133
- package/vendor/Server/LoopEngine/index.js +11 -11
- package/vendor/Server/Orchestrator/Orchestrator.js +0 -3
- package/vendor/Server/Orchestrator/StepNode.js +312 -312
- package/vendor/Server/Orchestrator/index.js +13 -13
- package/vendor/Server/Routes/controllers/BrainController.js +241 -241
- package/vendor/Server/Routes/controllers/FlexRunnerController.js +1125 -1125
- package/vendor/Server/Routes/controllers/HealthController.js +44 -44
- package/vendor/Server/Routes/controllers/KnowledgeImportController.js +355 -355
- package/vendor/Server/Routes/controllers/LoopEngineController.js +788 -788
- package/vendor/Server/Routes/controllers/StatsController.js +57 -57
- package/vendor/Server/Routes/controllers/StreamController.js +67 -67
- package/vendor/Server/Routes/library/logger.js +179 -179
- package/vendor/Server/Routes/library/zipArchive.js +172 -172
- package/vendor/Server/Routes/router/Router.js +204 -204
- package/vendor/Server/Routes/routes/brain.js +47 -47
- package/vendor/Server/Routes/routes/flexrunner.js +72 -72
- package/vendor/Server/Routes/routes/health.js +28 -28
- package/vendor/Server/Routes/routes/index.js +57 -57
- package/vendor/Server/Routes/routes/knowledge.js +55 -55
- package/vendor/Server/Routes/routes/loopengine.js +58 -58
- package/vendor/Server/Routes/routes/orchestrator.js +61 -61
- package/vendor/Server/Routes/routes/registry.js +97 -97
- package/vendor/Server/Routes/routes/stats.js +23 -23
- package/vendor/Server/Routes/routes/stream.js +30 -30
- package/vendor/Server/Routes/server.js +203 -202
- package/vendor/Server/Routes/sse/SseHub.js +308 -308
- package/vendor/Server/Skills/acceptance-check/SKILL.md +191 -174
- package/vendor/Server/Skills/acceptance-check/references/PHASE1_ARTIFACT_COLLECTION.md +52 -52
- package/vendor/Server/Skills/acceptance-check/references/PHASE2_CRITERIA_EVALUATION.md +77 -77
- package/vendor/Server/Skills/acceptance-check/references/PHASE2_EVIDENCE_VERIFICATION.md +70 -0
- package/vendor/Server/Skills/arkts-code-check/SKILL.md +320 -313
- package/vendor/Server/Skills/arkts-code-check/references/CODE_CHECK_GUIDE.md +210 -159
- package/vendor/Server/Skills/arkts-code-check/references/FILE_TYPE_GUIDE.md +28 -28
- package/vendor/Server/Skills/arkts-code-check/references/PHASE1_INFO_COLLECTION.md +233 -222
- package/vendor/Server/Skills/arkts-code-check/references/REPORT_TEMPLATE.md +219 -219
- package/vendor/Server/Skills/arkts-library-compile-validate/SKILL.md +328 -328
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-compile-validate/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-demo-code/SKILL.md +291 -291
- package/vendor/Server/Skills/arkts-library-demo-code/references/API_SIGNATURE_CHECKS.md +68 -68
- package/vendor/Server/Skills/arkts-library-demo-code/references/BUILD_VALIDATION.md +184 -184
- package/vendor/Server/Skills/arkts-library-demo-code/references/CODE_STANDARDS.md +337 -337
- package/vendor/Server/Skills/arkts-library-demo-code/references/EXAMPLES.md +400 -400
- package/vendor/Server/Skills/arkts-library-demo-code/references/SYSTEM_API_LOOKUP.md +98 -98
- package/vendor/Server/Skills/arkts-library-demo-code/references/TEMPLATE.md +544 -544
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-demo-code/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-demo-coverage/SKILL.md +174 -174
- package/vendor/Server/Skills/arkts-library-demo-scenario/SKILL.md +321 -321
- package/vendor/Server/Skills/arkts-library-demo-scenario/references/EXAMPLES.md +100 -100
- package/vendor/Server/Skills/arkts-library-demo-scenario/references/TEMPLATE.md +185 -185
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/SKILL.md +233 -233
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +102 -102
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/CHECK_DIMENSIONS.md +89 -89
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/COMPLIANCE_CHECKLIST.md +62 -62
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/KB_QUERY_GUIDE.md +107 -107
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/MCP_TOOL_DISCOVERY.md +124 -124
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/REPORT_TEMPLATE.md +90 -90
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/references/SCORING_FORMULA.md +57 -57
- package/vendor/Server/Skills/arkts-library-documentation-quality-check/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/arkts-library-interface-spec/SKILL.md +97 -97
- package/vendor/Server/Skills/arkts-library-memory-leak-check/SKILL.md +391 -391
- package/vendor/Server/Skills/arkts-library-source-clone/SKILL.md +113 -113
- package/vendor/Server/Skills/arkts-library-stability-check/SKILL.md +312 -312
- package/vendor/Server/Skills/arkts-library-stability-check/assets/REPORT_TEMPLATE.md +154 -154
- package/vendor/Server/Skills/arkts-library-stability-check/references/CHECKLIST.md +165 -165
- package/vendor/Server/Skills/arkts-library-stability-check/references/CODE_EXAMPLES.md +308 -308
- package/vendor/Server/Skills/arkts-library-stability-check/references/SCORING_RULES.md +90 -90
- package/vendor/Server/Skills/arkts-library-stability-check/scripts/validate-skill.cjs +282 -282
- package/vendor/Server/Skills/arkts-library-test-coverage-check/SKILL.md +360 -360
- package/vendor/Server/Skills/arkts-library-test-coverage-check/assets/REPORT_TEMPLATE.md +145 -145
- package/vendor/Server/Skills/arkts-library-test-coverage-check/references/CHECKLIST.md +252 -252
- package/vendor/Server/Skills/arkts-library-test-coverage-check/references/MCP_TOOL_USAGE.md +114 -114
- package/vendor/Server/Skills/arkts-library-test-coverage-check/scripts/validate-skill.cjs +262 -262
- package/vendor/Server/Skills/arkts-library-xts-code/SKILL.md +455 -455
- package/vendor/Server/Skills/arkts-library-xts-code/assets/report-template.md +60 -60
- package/vendor/Server/Skills/arkts-library-xts-code/references/ACCESS_MODIFIER_PRECHECK.md +76 -76
- package/vendor/Server/Skills/arkts-library-xts-code/references/BUILD_VERIFICATION.md +200 -200
- package/vendor/Server/Skills/arkts-library-xts-code/references/CODE_STANDARDS.md +518 -518
- package/vendor/Server/Skills/arkts-library-xts-code/references/SUBAGENT_PROMPT_TEMPLATE.md +276 -276
- package/vendor/Server/Skills/arkts-library-xts-code/references/SYSTEM_API_LOOKUP.md +92 -92
- package/vendor/Server/Skills/arkts-library-xts-code/references/XTS_TEMPLATE.md +767 -767
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/arkts-library-xts-code/scripts/precheck-access-modifiers.cjs +221 -221
- package/vendor/Server/Skills/arkts-library-xts-code-fix/SKILL.md +228 -228
- package/vendor/Server/Skills/arkts-library-xts-coverage/SKILL.md +97 -97
- package/vendor/Server/Skills/arkts-library-xts-doc/SKILL.md +194 -194
- package/vendor/Server/Skills/arkts-library-xts-doc/references/EXAMPLES.md +575 -575
- package/vendor/Server/Skills/arkts-library-xts-doc/references/TEMPLATE.md +574 -574
- package/vendor/Server/Skills/arkts-library-xts-doc/references/TESTABILITY_GUIDE.md +182 -182
- package/vendor/Server/Skills/arkts-library-xts-execution/SKILL.md +490 -490
- package/vendor/Server/Skills/arkts-library-xts-execution/references/error-fixing-examples.md +217 -217
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/build.ps1 +93 -93
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/code-linter.cjs +432 -432
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/migrate.cjs +851 -851
- package/vendor/Server/Skills/arkts-library-xts-execution/scripts/ohpm-switch.cjs +788 -788
- package/vendor/Server/Skills/flutter-code-check/SKILL.md +299 -299
- package/vendor/Server/Skills/flutter-code-check/assets/OUTPUT_TEMPLATE.md +311 -311
- package/vendor/Server/Skills/flutter-code-check/references/CHECKLIST.md +190 -190
- package/vendor/Server/Skills/flutter-code-check/references/PLATFORMS.md +133 -133
- package/vendor/Server/Skills/flutter-code-check/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/flutter-interface/README.md +75 -75
- package/vendor/Server/Skills/flutter-interface/SKILL.md +291 -291
- package/vendor/Server/Skills/flutter-interface/references/EXAMPLES.md +336 -336
- package/vendor/Server/Skills/flutter-interface/references/GIT_CLONE_GUIDE.md +190 -190
- package/vendor/Server/Skills/flutter-interface/references/SCRIPT_REFERENCE.md +258 -258
- package/vendor/Server/Skills/flutter-interface/references/TEMPLATE.md +254 -254
- package/vendor/Server/Skills/flutter-library-consistency-check/SKILL.md +517 -517
- package/vendor/Server/Skills/flutter-library-consistency-check/references/CHECKLIST.md +381 -381
- package/vendor/Server/Skills/flutter-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +341 -341
- package/vendor/Server/Skills/flutter-library-consistency-check/references/PLATFORM_LIMITATION_GUIDE.md +71 -71
- package/vendor/Server/Skills/flutter-library-documentation-quality-check/SKILL.md +518 -518
- package/vendor/Server/Skills/flutter-library-documentation-quality-check/references/CHECKLIST.md +406 -406
- package/vendor/Server/Skills/flutter-library-memory-leak-check/SKILL.md +652 -652
- package/vendor/Server/Skills/flutter-library-memory-leak-check/references/CHECKLIST.md +396 -396
- package/vendor/Server/Skills/flutter-library-stability-check/SKILL.md +744 -744
- package/vendor/Server/Skills/flutter-library-stability-check/references/CHECKLIST.md +720 -720
- package/vendor/Server/Skills/flutter-library-test-coverage-check/SKILL.md +414 -414
- package/vendor/Server/Skills/flutter-library-test-coverage-check/assets/REPORT_TEMPLATE.md +150 -150
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/CHECKLIST.md +304 -304
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCORING_RULES.md +265 -265
- package/vendor/Server/Skills/flutter-library-test-coverage-check/references/SCRIPT_USAGE.md +286 -286
- package/vendor/Server/Skills/knowledge-import/SKILL.md +383 -383
- package/vendor/Server/Skills/knowledge-import/references/MCP_TOOL_USAGE.md +165 -165
- package/vendor/Server/Skills/knowledge-import/references/SKILL_LOCATOR_GUIDE.md +91 -91
- package/vendor/Server/Skills/knowledge-import/references/SKILL_OPTIMIZATION_GUIDE.md +127 -127
- package/vendor/Server/Skills/ohos-lib-pr-push/SKILL.md +453 -301
- package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_CHECKLIST.md +151 -0
- package/vendor/Server/Skills/ohos-lib-pr-push/assets/PR_ISSUE_TEMPLATE.md +257 -105
- package/vendor/Server/Skills/ohos-lib-pr-push/references/GITCODE_API.md +191 -127
- package/vendor/Server/Skills/ohos-lib-pr-push/scripts/gitcode-api.cjs +317 -208
- package/vendor/Server/Skills/rn-code-check/SKILL.md +320 -320
- package/vendor/Server/Skills/rn-code-check/references/API-GUIDE.md +234 -234
- package/vendor/Server/Skills/rn-code-check/references/CHECKLIST.md +188 -188
- package/vendor/Server/Skills/rn-code-check/references/REPORT-TEMPLATE.md +246 -246
- package/vendor/Server/Skills/rn-lib-add-example/SKILL.md +198 -198
- package/vendor/Server/Skills/rn-lib-add-example/references/APP_RENAME_GUIDE.md +40 -40
- package/vendor/Server/Skills/rn-lib-add-example/references/SHELL_ADAPTATION_CHECKLIST.md +78 -78
- package/vendor/Server/Skills/rn-lib-add-example/references/TEMPLATE_REPO_GUIDE.md +70 -70
- package/vendor/Server/Skills/rn-lib-add-example/references/VERIFICATION_GUIDE.md +47 -47
- package/vendor/Server/Skills/rn-lib-add-example/scripts/create-example.cjs +252 -252
- package/vendor/Server/Skills/rn-lib-update-doc/SKILL.md +176 -176
- package/vendor/Server/Skills/rn-lib-update-doc/config.json +5 -5
- package/vendor/Server/Skills/rn-lib-update-doc/references/changelog-template.md +35 -35
- package/vendor/Server/Skills/rn-lib-update-doc/references/format-diff.md +137 -137
- package/vendor/Server/Skills/rn-lib-update-doc/references/link-registry.json +33 -33
- package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2-overview.md +40 -40
- package/vendor/Server/Skills/rn-lib-update-doc/references/model-0.4.2.md +429 -429
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/detect-readme-format.cjs +105 -105
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/find-usage-doc.cjs +90 -90
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/link-verify.cjs +213 -213
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-changelog.cjs +73 -73
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-package-meta.cjs +258 -258
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/normalize-readme-links.cjs +341 -341
- package/vendor/Server/Skills/rn-lib-update-doc/scripts/resolve-usage-docs.cjs +67 -67
- package/vendor/Server/Skills/rn-library-consistency-check/SKILL.md +299 -299
- package/vendor/Server/Skills/rn-library-consistency-check/assets/REPORT_TEMPLATE.md +293 -293
- package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_COMPONENT_CHECK_GUIDE.md +857 -857
- package/vendor/Server/Skills/rn-library-consistency-check/references/ARKTS_TURBOMODULE_CHECK_GUIDE.md +856 -856
- package/vendor/Server/Skills/rn-library-consistency-check/references/CHECKLIST.md +157 -157
- package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_COMPONENT_CHECK_GUIDE.md +801 -801
- package/vendor/Server/Skills/rn-library-consistency-check/references/CPP_TURBOMODULE_CHECK_GUIDE.md +683 -683
- package/vendor/Server/Skills/rn-library-consistency-check/references/FUNCTION_COMPARISON_GUIDE.md +233 -233
- package/vendor/Server/Skills/rn-library-consistency-check/references/NATIVE_COMPONENT_IDENTIFICATION.md +1373 -1373
- package/vendor/Server/Skills/rn-library-consistency-check/references/SCORING_STANDARD.md +220 -220
- package/vendor/Server/Skills/rn-library-consistency-check/scripts/validate-skill.py +245 -245
- package/vendor/Server/Skills/rn-library-documentation-quality-check/SKILL.md +263 -263
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL.md +414 -414
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/MODEL_en.md +413 -413
- package/vendor/Server/Skills/rn-library-documentation-quality-check/assets/REPORT_TEMPLATE.md +311 -311
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CHECK_CHECKLIST.md +355 -355
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/CROSS_VALIDATION_GUIDE.md +115 -115
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/DOC_COLLECTION_GUIDE.md +139 -139
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/EXAMPLES.md +586 -586
- package/vendor/Server/Skills/rn-library-documentation-quality-check/references/GOTCHAS.md +57 -57
- package/vendor/Server/Skills/rn-library-documentation-quality-check/scripts/validate-skill.py +259 -259
- package/vendor/Server/Skills/rn-library-interface-analyzer/SKILL.md +301 -301
- package/vendor/Server/Skills/rn-library-interface-analyzer/assets/REPORT_TEMPLATE.md +148 -148
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/DOC_ANNOTATION_GUIDE.md +118 -118
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/SCRIPT_USAGE_GUIDE.md +168 -168
- package/vendor/Server/Skills/rn-library-interface-analyzer/references/URL_PARSING_RULES.md +176 -176
- package/vendor/Server/Skills/rn-library-issue-generalizer/SKILL.md +274 -274
- package/vendor/Server/Skills/rn-library-issue-generalizer/assets/case-template.md +45 -45
- package/vendor/Server/Skills/rn-library-issue-generalizer/assets/rule-template.md +25 -25
- package/vendor/Server/Skills/rn-library-issue-generalizer/references/PR_FETCH_GUIDE.md +61 -61
- package/vendor/Server/Skills/rn-library-issue-generalizer/references/RULE_TEMPLATE_GUIDE.md +165 -165
- package/vendor/Server/Skills/rn-library-issue-generalizer/scripts/fetch-pr-info.py +239 -239
- package/vendor/Server/Skills/rn-library-known-issue-check/SKILL.md +263 -263
- package/vendor/Server/Skills/rn-library-known-issue-check/assets/REPORT_TEMPLATE.md +96 -96
- package/vendor/Server/Skills/rn-library-known-issue-check/references/COMPLIANCE_CHECKLIST.md +57 -57
- package/vendor/Server/Skills/rn-library-known-issue-check/references/INSPECTION_GUIDE.md +99 -99
- package/vendor/Server/Skills/rn-library-known-issue-check/references/PRESCREEN_GUIDE.md +64 -64
- package/vendor/Server/Skills/rn-library-known-issue-check/references/SOURCE_PREP_GUIDE.md +74 -74
- package/vendor/Server/Skills/rn-library-known-issue-check/scripts/validate-known-issue-report.py +164 -164
- package/vendor/Server/Skills/rn-library-memory-leak-check/SKILL.md +356 -339
- package/vendor/Server/Skills/rn-library-memory-leak-check/assets/REPORT_TEMPLATE.md +85 -83
- package/vendor/Server/Skills/rn-library-memory-leak-check/references/CHECKLIST.md +905 -859
- package/vendor/Server/Skills/rn-library-memory-leak-check/references/HARMONY_CODE_PATTERNS.md +124 -122
- package/vendor/Server/Skills/rn-library-memory-leak-check/scripts/scan_harmony_code.py +287 -279
- package/vendor/Server/Skills/rn-library-stability-check/SKILL.md +273 -273
- package/vendor/Server/Skills/rn-library-stability-check/assets/REPORT_TEMPLATE.md +129 -129
- package/vendor/Server/Skills/rn-library-stability-check/references/CHECKLIST.md +581 -581
- package/vendor/Server/Skills/rn-library-stability-check/references/SCORING_RULES.md +138 -138
- package/vendor/Server/Skills/rn-library-stability-check/scripts/scan-harmony-code.py +168 -168
- package/vendor/Server/Skills/rn-library-test-coverage-check/SKILL.md +526 -506
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/CHECKLIST.md +321 -280
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/DEMO_LOCATION.md +221 -221
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/REPORT_TEMPLATE.md +220 -209
- package/vendor/Server/Skills/rn-library-test-coverage-check/references/SCRIPT_USAGE.md +325 -325
- package/vendor/Server/Skills/rn-ohos-xts-generator/SKILL.md +279 -279
- package/vendor/Server/Skills/rn-ohos-xts-generator/assets/TEST_FILE_TEMPLATES.md +404 -404
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_TROUBLESHOOTING.md +185 -185
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/BUILD_WORKFLOW.md +265 -265
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/COMMON_CONFIG.md +189 -189
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/CONFIG_GUIDE.md +203 -203
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/COVERAGE_ANALYZER.md +147 -147
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/DESIGN_DOC_GUIDE.md +148 -148
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_FLOW.md +165 -165
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/GENERATION_STRATEGY.md +195 -195
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/HARMONY_SCANNER.md +249 -249
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/JEST_FRAMEWORK.md +235 -235
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/PLATFORM_COMPAT.md +161 -161
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/RN_TEST_PATTERNS.md +413 -413
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/SOURCE_PARSER.md +235 -235
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/TEST_CONVENTIONS.md +245 -245
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/TROUBLESHOOTING.md +282 -282
- package/vendor/Server/Skills/rn-ohos-xts-generator/references/USAGE_GUIDE.md +251 -251
- package/vendor/Server/Skills/rnoh-cptf-api-test/SKILL.md +469 -469
- package/vendor/Server/Skills/rnoh-cptf-api-test/assets/CPTF_TEST_TEMPLATE.md +310 -310
- package/vendor/Server/Skills/rnoh-cptf-api-test/assets/DEMO_PAGE_TEMPLATE.md +303 -303
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/CPTF_TEST_GENERATION_GUIDE.md +421 -421
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/DEMO_GENERATION_GUIDE.md +358 -358
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/QUALITY_CHECKLIST.md +114 -114
- package/vendor/Server/Skills/rnoh-cptf-api-test/references/SPEC_PARSING_GUIDE.md +274 -274
- package/vendor/Server/Skills/rnoh-cptf-api-test/scripts/validate-rnoh-cptf-api-test.sh +185 -185
- package/vendor/Server/Skills/rnoh-cptf-demo-test/SKILL.md +191 -191
- package/vendor/Server/Skills/rnoh-cptf-demo-test/assets/TEST_TEMPLATE.md +216 -216
- package/vendor/Server/Skills/rnoh-cptf-demo-test/references/CPTF_SETUP.md +107 -107
- package/vendor/Server/Skills/rnoh-cptf-demo-test/references/DEMO_ANALYSIS.md +120 -120
- package/vendor/Server/Skills/rnoh-cptf-demo-test/scripts/validate-rnoh-cptf-test.sh +108 -108
- package/vendor/Server/Skills/rnoh-cptf-test-run/SKILL.md +237 -237
- package/vendor/Server/Skills/rnoh-cptf-test-run/references/DEBUG_PLAYBOOK.md +261 -261
- package/vendor/Server/Skills/rnoh-cptf-test-run/scripts/validate-run-env.sh +112 -112
- package/vendor/Server/Skills/rnoh-lib-code-adapt/SKILL.md +497 -497
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/adapt-checklist.md +270 -270
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/api-migration-checklist.md +164 -164
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/common-compile-errors.md +556 -556
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/deveco-cli-tools.md +459 -459
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/edge-cases.md +65 -65
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/har-tgz-build.md +512 -512
- package/vendor/Server/Skills/rnoh-lib-code-adapt/references/version-compat-matrix.md +132 -132
- package/vendor/Server/Skills/rnoh-lib-code-adapt/scripts/auto-integrate.sh +424 -424
- package/vendor/Server/Skills/rnoh-lib-demo-coverage/SKILL.md +137 -137
- package/vendor/Server/Skills/rnoh-lib-demo-create/SKILL.md +306 -306
- package/vendor/Server/Skills/rnoh-lib-demo-create/assets/DEMO_PAGE_TEMPLATE.md +485 -485
- package/vendor/Server/Skills/rnoh-lib-demo-create/assets/INDEX_TEMPLATE.md +172 -172
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/DEMO_CODE_RULES.md +422 -422
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/QUALITY_CHECKLIST.md +95 -95
- package/vendor/Server/Skills/rnoh-lib-demo-create/references/SOURCE_EXPLORATION.md +169 -169
- package/vendor/Server/Skills/rnoh-lib-demo-doc/SKILL.md +554 -554
- package/vendor/Server/Skills/rnoh-lib-demo-doc/assets/DEMO_DOC_TEMPLATE.md +106 -106
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/COVERAGE_INCREMENTAL.md +216 -216
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/DEMO_DESIGN_RULES.md +413 -413
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/OUTPUT_FORMAT.md +269 -269
- package/vendor/Server/Skills/rnoh-lib-demo-doc/references/QUALITY_CHECKLIST.md +98 -98
- package/vendor/Server/Skills/rnoh-lib-func-test/SKILL.md +337 -337
- package/vendor/Server/Skills/rnoh-lib-rnt-search/SKILL.md +722 -722
- package/vendor/Server/Skills/rnoh-lib-rnt-search/assets/PORT_REPORT_TEMPLATE.md +219 -219
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/DEMO_PORTING_GUIDE.md +345 -345
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/PORT_VERIFICATION.md +269 -269
- package/vendor/Server/Skills/rnoh-lib-rnt-search/references/RNT_PROJECT_STRUCTURE.md +173 -173
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/analyze-demo-deps.cjs +267 -267
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/detect-rnoh-version.cjs +174 -174
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/find-rnt-demo.sh +111 -111
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/port-demo.sh +186 -186
- package/vendor/Server/Skills/rnoh-lib-rnt-search/scripts/read-lib-meta.cjs +150 -150
- package/vendor/Server/Skills/rnoh-lib-test-align/SKILL.md +296 -296
- package/vendor/Server/Skills/rnoh-lib-test-align/references/jest-troubleshooting.md +371 -371
- package/vendor/Server/Skills/rnoh-lib-test-align/references/port-test-demo-guide.md +212 -212
- package/vendor/Server/Skills/rnoh-lib-test-align/references/runtime-troubleshooting.md +345 -345
- package/vendor/Server/Skills/rnoh-lib-test-align/references/unit-test-template.md +223 -223
- package/vendor/Server/Skills/rnoh-lib-test-align/scripts/port-test-demo.sh +1053 -1053
- package/vendor/Server/Skills/rnoh-lib-version-diff/SKILL.md +295 -255
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_ADAPTATION.md +82 -77
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/OHOS_API_LOOKUP.md +224 -224
- package/vendor/Server/Skills/rnoh-lib-version-diff/references/script-reference.md +175 -174
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/detect-upstream-version.js +967 -967
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/generate-diff.js +1798 -1798
- package/vendor/Server/Skills/rnoh-lib-version-diff/scripts/package.json +5 -5
- package/vendor/Server/Skills/rnoh-lib-version-diff/templates/report-template.md +180 -137
- package/vendor/Server/Skills/rnoh-lib-xts-coverage/SKILL.md +145 -145
- package/vendor/Server/Skills/skill-generator/SKILL.md +365 -365
- package/vendor/Server/Skills/skill-generator/assets/SKILL_TEMPLATE.md +183 -183
- package/vendor/Server/Skills/skill-generator/references/COMPLIANCE_CHECKLIST.md +82 -82
- package/vendor/Server/Skills/skill-generator/references/KB_QUERY_GUIDE.md +110 -110
- package/vendor/Server/Skills/skill-generator/references/MCP_TOOL_DISCOVERY.md +122 -122
- package/vendor/Server/Skills/skill-generator/references/SKILL_SPEC.md +121 -121
- package/vendor/Server/Skills/skill-generator/scripts/validate-skill.cjs +259 -259
- package/vendor/Server/Skills/task-analysis/SKILL.md +234 -234
- package/vendor/Server/Skills/task-analysis/assets/OUTPUT_EXAMPLES.md +160 -160
- package/vendor/Server/Skills/task-analysis/references/ACCEPTANCE_CRITERIA_GUIDE.md +190 -190
- package/vendor/Server/Skills/task-analysis/references/ANALYSIS_SCHEMA.md +224 -224
- package/vendor/Server/Skills/task-analysis/references/INTEGRATION_CONTEXT.md +162 -162
- package/vendor/Server/Skills/task-analysis/references/LESSONS_LEARNED.md +55 -55
- package/vendor/Server/Skills/task-analysis/references/REPLAN_CONTEXT_GUIDE.md +126 -126
- package/vendor/Server/Skills/task-analysis/scripts/validate-analysis-output.sh +256 -256
- package/vendor/Server/Skills/task-decomposition/SKILL.md +528 -528
- package/vendor/Server/Skills/task-decomposition/assets/OUTPUT_EXAMPLES.md +451 -451
- package/vendor/Server/Skills/task-decomposition/references/ACCEPTANCE_CRITERIA_GUIDE.md +179 -179
- package/vendor/Server/Skills/task-decomposition/references/DEPENDENCY_GRAPH_GUIDE.md +152 -152
- package/vendor/Server/Skills/task-decomposition/references/INTEGRATION_CONTEXT.md +175 -175
- package/vendor/Server/Skills/task-decomposition/references/REPLAN_CONTEXT_GUIDE.md +195 -195
- package/vendor/Server/Skills/task-decomposition/references/TASK_DECOMPOSITION_TEMPLATES.md +226 -226
- package/vendor/Server/Skills/task-decomposition/scripts/list-available-skills.cjs +263 -263
- package/vendor/Server/Skills/task-decomposition/scripts/skill-blacklist.json +29 -29
- package/vendor/Server/Skills/task-decomposition/scripts/validate-decomposition-output.cjs +376 -376
- package/vendor/Server/Skills/task-decomposition/scripts/validate-param-consistency.cjs +259 -259
- package/vendor/Server/Skills/task-decomposition/scripts/validate-specified-skills.cjs +216 -216
- package/vendor/Server/Skills/task-decomposition/scripts/validate-step-graph.cjs +424 -424
- package/vendor/Server/Skills/tpc-cpp-check/SKILL.md +427 -427
- package/vendor/Server/Skills/tpc-cpp-check/references/CHECKLIST.md +214 -214
- package/vendor/Server/Skills/tpc-cpp-check/references/HPKBUILD_GUIDE.md +235 -235
- package/vendor/Server/Skills/tpc-cpp-check/references/REPORT_TEMPLATE.md +250 -250
- package/vendor/Server/TestCheck/TestCheck.js +775 -775
- package/vendor/Server/TestCheck/index.js +11 -11
- package/vendor/Server/library/McpToolGuide.js +280 -280
- package/vendor/Server/library/StatsService.js +126 -126
- package/vendor/Server/library/cstTime.js +16 -16
- package/vendor/VERSION +3 -3
- package/workflows/pr-check.mjs +105 -105
- package/workflows/pr-push.mjs +193 -0
- package/vendor/Server/Agent/SkillSelector/types.js +0 -63
|
@@ -1,427 +1,427 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: tpc-cpp-check
|
|
3
|
-
description: 检视 tpc_c_cplusplus 仓库适配库 PR 的规范性,包括编译脚本(HPKBUILD)、文档格式、目录结构、SHA512SUM 等,并输出结构化检视报告。当用户需要对 C/C++ 三方库 PR 进行规范性检视时调用。支持 GitCode 平台。仅基于 PR 差异和 API 获取文件内容进行检视,无需克隆整个仓库。
|
|
4
|
-
license: Apache-2.0
|
|
5
|
-
compatibility: 需要 curl、网络访问 GitCode API 的权限,无需 git clone
|
|
6
|
-
metadata:
|
|
7
|
-
version: "1.0.0"
|
|
8
|
-
platform: gitcode
|
|
9
|
-
libraryType: tpccplus
|
|
10
|
-
---
|
|
11
|
-
# TpcCheckSkill — tpc_c_cplusplus 适配库 PR 规范性检视
|
|
12
|
-
|
|
13
|
-
## 概述
|
|
14
|
-
|
|
15
|
-
本 Skill 负责对 tpc_c_cplusplus 仓库中适配库 PR 进行规范性检视,包括编译脚本(HPKBUILD)、文档格式(README_zh.md、hap_integrate.md)、目录结构、SHA512SUM、README.OpenSource 等的合规性检查,输出结构化检视报告。
|
|
16
|
-
|
|
17
|
-
**核心设计原则:仅基于 PR 内容进行检视,不克隆整个仓库。** 所有文件内容通过 GitCode API 按需获取,只审查 PR 中实际变更的文件。
|
|
18
|
-
|
|
19
|
-
**关键特性**:
|
|
20
|
-
- **零克隆**:通过 GitCode API 获取 PR diff 和文件内容,无需 `git clone`,大幅减少时间和资源消耗
|
|
21
|
-
- 支持**增量检视**(已有库修改)和**全量检视**(新增库)两种模式
|
|
22
|
-
- 重点检查 HPKBUILD 编译脚本的字段完整性、函数规范性、构建类型合规性
|
|
23
|
-
- 检查文档格式与内容、SHA512SUM 校验、Patch 命名等
|
|
24
|
-
- 输出按严重程度分级的结构化报告
|
|
25
|
-
|
|
26
|
-
**重要:所有输出文档必须使用中文。**
|
|
27
|
-
|
|
28
|
-
---
|
|
29
|
-
|
|
30
|
-
## 任务参数
|
|
31
|
-
|
|
32
|
-
| 参数 | 必需 | 说明 |
|
|
33
|
-
|------|------|------|
|
|
34
|
-
| `prUrl` | ✅ | PR 地址,如 `https://gitcode.com/tpc_c_cplusplus/thirdparty/pulls/123` |
|
|
35
|
-
| `outputDir` | ✅ | 输出目录绝对路径,如 `/path/to/codecheck/owner_repo_pr123` |
|
|
36
|
-
| `libraryType` | ❌ | 固定为 `tpccplus` |
|
|
37
|
-
| `accessToken` | ❌ | GitCode API 访问令牌;GitCode API 强烈建议提供 |
|
|
38
|
-
| `branch` | ❌ | 目标分支名;若提供则优先使用 |
|
|
39
|
-
|
|
40
|
-
---
|
|
41
|
-
|
|
42
|
-
## 工作流程
|
|
43
|
-
|
|
44
|
-
### Phase 1:信息收集(仅 API 调用,不克隆仓库)
|
|
45
|
-
|
|
46
|
-
#### 1.1 解析 PR 地址
|
|
47
|
-
|
|
48
|
-
从 `prUrl` 提取:`platform`、`owner`、`repo`、`prNumber`。
|
|
49
|
-
|
|
50
|
-
| 平台 | URL 模式 | API 支持 |
|
|
51
|
-
|------|----------|----------|
|
|
52
|
-
| GitCode | `https://gitcode.com/{owner}/{repo}/pulls/{num}` | ✅ **API 优先** |
|
|
53
|
-
| Gitee | `https://gitee.com/{owner}/{repo}/pulls/{num}` | 部分 API |
|
|
54
|
-
| GitHub | `https://github.com/{owner}/{repo}/pull/{num}` | API diff |
|
|
55
|
-
| GitLab | `https://gitlab.com/{owner}/{repo}/-/merge_requests/{num}` | API diff |
|
|
56
|
-
|
|
57
|
-
#### 1.2 获取 PR 元数据
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/pulls/{prNumber}?access_token={accessToken}"
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
提取:`title`、`base.ref`(目标分支)、`head.sha`、`user.name`、`created_at`、`state`
|
|
64
|
-
|
|
65
|
-
#### 1.3 获取 PR 文件变更列表
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/pulls/{prNumber}/files?access_token={accessToken}&per_page=100"
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
返回 PR 中所有变更文件的列表,每个条目包含:
|
|
72
|
-
- `filename`:文件路径
|
|
73
|
-
- `status`:变更类型(added / modified / removed / renamed)
|
|
74
|
-
- `additions`:新增行数
|
|
75
|
-
- `deletions`:删除行数
|
|
76
|
-
- `patch`:文件 diff 内容(若文件不大)
|
|
77
|
-
|
|
78
|
-
> **分页处理**:若文件数超过 100,使用 `page` 参数翻页获取全部。
|
|
79
|
-
|
|
80
|
-
#### 1.4 获取 PR Diff(完整补丁)
|
|
81
|
-
|
|
82
|
-
```bash
|
|
83
|
-
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/pulls/{prNumber}/diff?access_token={accessToken}" -o {outputDir}/pr.diff
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
或通过 commit patch 获取(适用于 squash merge 场景):
|
|
87
|
-
|
|
88
|
-
```bash
|
|
89
|
-
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/commit/{head.sha}/patch?access_token={accessToken}" -o {outputDir}/pr.patch
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
> **注意**:commit 路径使用 `commit`(单数),不是 `commits`
|
|
93
|
-
|
|
94
|
-
将 diff/patch 保存到 `{outputDir}/pr.diff` 供后续分析。
|
|
95
|
-
|
|
96
|
-
#### 1.5 按需获取文件内容(替代 git clone)
|
|
97
|
-
|
|
98
|
-
**核心机制:只获取 PR 中变更的文件内容,不克隆整个仓库。**
|
|
99
|
-
|
|
100
|
-
对 PR 中每个变更的文件,通过 API 获取其内容:
|
|
101
|
-
|
|
102
|
-
```bash
|
|
103
|
-
# 获取 PR head 分支上的文件内容(变更后的版本)
|
|
104
|
-
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/contents/{filePath}?ref={head.sha}&access_token={accessToken}"
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
返回 JSON 包含 `content` 字段(Base64 编码),解码后得到文件内容:
|
|
108
|
-
|
|
109
|
-
```bash
|
|
110
|
-
echo "{content}" | base64 -d > {outputDir}/files/{filePath}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
> **大文件处理**:若文件超过 1MB,API 可能返回错误,此时使用 `?ref={head.sha}&download=true` 参数直接获取原始内容。
|
|
114
|
-
|
|
115
|
-
对于需要对比的情况(检查删除/修改的旧内容),可获取 base 分支上的文件:
|
|
116
|
-
|
|
117
|
-
```bash
|
|
118
|
-
# 获取目标分支上的文件内容(变更前的版本)
|
|
119
|
-
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/contents/{filePath}?ref={base.ref}&access_token={accessToken}"
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
#### 1.6 获取适配库目录结构(仅目录列表,不下载文件)
|
|
123
|
-
|
|
124
|
-
判断检视策略时需要知道 base 分支上是否已存在该库目录:
|
|
125
|
-
|
|
126
|
-
```bash
|
|
127
|
-
# 查询 base 分支上的目录结构
|
|
128
|
-
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/contents/{libDir}?ref={base.ref}&access_token={accessToken}"
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
返回目录下的文件和子目录列表(仅名称和类型,不下载内容),用于:
|
|
132
|
-
- 判断是**增量检视**还是**全量检视**
|
|
133
|
-
- 增量检视时了解未变更文件是否存在(不获取其内容)
|
|
134
|
-
|
|
135
|
-
> **注意**:API 返回的目录列表可能不完整(子目录深度有限),若需检查深层目录(如 `docs/pic/`),可单独请求子目录。
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
### Phase 2:差异分析与检视策略判断
|
|
140
|
-
|
|
141
|
-
#### 2.1 识别变更的适配库目录
|
|
142
|
-
|
|
143
|
-
从 PR 文件变更列表(1.3 的返回结果)中提取变更文件路径,识别涉及的适配库目录:
|
|
144
|
-
- `thirdparty/<libname>/` → thirdparty 类型的适配库
|
|
145
|
-
- `community/<libname>/` → community 类型的适配库
|
|
146
|
-
|
|
147
|
-
若 PR 涉及多个适配库目录,需分别对每个库独立检视。
|
|
148
|
-
|
|
149
|
-
#### 2.2 判断检视策略:增量 vs 全量
|
|
150
|
-
|
|
151
|
-
**判断方法**:通过 1.6 步骤获取的 base 分支目录列表,判断该库目录是否已存在:
|
|
152
|
-
|
|
153
|
-
- **目录存在** → 已有库的修改 → **增量检视**:仅检查 PR 中变更的文件的规范性
|
|
154
|
-
- **目录不存在** → 新增库 → **全量检视**:对所有必需文件和可选文件进行完整合规性检查
|
|
155
|
-
|
|
156
|
-
> **全量检视时的文件获取**:全量检视需要检查所有必需文件,对 PR 中未变更的必需文件,需通过 API 单独获取其内容进行审查。但若某必需文件既不在 PR 变更中,也不在 base 分支上,则记录为"缺失"问题。
|
|
157
|
-
|
|
158
|
-
#### 2.3 统计改动规模
|
|
159
|
-
|
|
160
|
-
从 PR 文件变更列表统计:文件数、新增/删除行数、变更类型分布。
|
|
161
|
-
|
|
162
|
-
#### 2.4 获取变更文件的完整内容
|
|
163
|
-
|
|
164
|
-
对 Phase 3 检视需要审查的每个文件,按 1.5 的方法获取其完整内容并保存到 `{outputDir}/files/` 目录下。
|
|
165
|
-
|
|
166
|
-
**按需获取原则**:
|
|
167
|
-
- HPKBUILD:必须获取完整内容
|
|
168
|
-
- SHA512SUM:必须获取完整内容
|
|
169
|
-
- README.OpenSource:必须获取完整内容
|
|
170
|
-
- README_zh.md:必须获取完整内容
|
|
171
|
-
- docs/hap_integrate.md:若 PR 变更了此文件或为全量检视,获取完整内容
|
|
172
|
-
- HPKCHECK:若存在,获取完整内容
|
|
173
|
-
- OAT.xml:仅检查是否存在,不获取内容
|
|
174
|
-
- Patch 文件:若 PR 变更了 patch,获取完整内容
|
|
175
|
-
|
|
176
|
-
---
|
|
177
|
-
|
|
178
|
-
### Phase 3:规范性检视
|
|
179
|
-
|
|
180
|
-
> 详细检查项参见 [references/CHECKLIST.md](references/CHECKLIST.md)
|
|
181
|
-
|
|
182
|
-
#### 3.1 目录结构检查
|
|
183
|
-
|
|
184
|
-
**thirdparty 适配库必需文件**:
|
|
185
|
-
|
|
186
|
-
| 文件 | 必需性 | 检查方式 |
|
|
187
|
-
|------|--------|----------|
|
|
188
|
-
| HPKBUILD | **必需** | PR 变更内容 + API |
|
|
189
|
-
| SHA512SUM | **必需** | PR 变更内容 + API |
|
|
190
|
-
| README.OpenSource | **必需** | PR 变更内容 + API |
|
|
191
|
-
| README_zh.md | **必需** | PR 变更内容 + API |
|
|
192
|
-
| docs/ | **必需** | 目录列表 API |
|
|
193
|
-
| docs/hap_integrate.md | **必需** | PR 变更内容 + API |
|
|
194
|
-
| docs/pic/ | 有文档时必需 | 目录列表 API |
|
|
195
|
-
| HPKCHECK | 建议 | 目录列表 API |
|
|
196
|
-
| OAT.xml | 建议 | 目录列表 API |
|
|
197
|
-
|
|
198
|
-
**community 适配库必需文件**:
|
|
199
|
-
|
|
200
|
-
| 文件 | 必需性 | 检查方式 |
|
|
201
|
-
|------|--------|----------|
|
|
202
|
-
| HPKBUILD | **必需** | PR 变更内容 + API |
|
|
203
|
-
| SHA512SUM | **必需** | PR 变更内容 + API |
|
|
204
|
-
|
|
205
|
-
其余文件为可选但建议有。
|
|
206
|
-
|
|
207
|
-
> **增量检视**:仅检查 PR 中变更的文件是否存在规范性问题,不对未变更的文件提出缺失问题。
|
|
208
|
-
>
|
|
209
|
-
> **全量检视**:对所有必需文件进行完整性检查,缺失的必需文件记为 Critical 问题。
|
|
210
|
-
|
|
211
|
-
#### 3.2 HPKBUILD 检查(重点维度)
|
|
212
|
-
|
|
213
|
-
读取通过 API 获取的 HPKBUILD 文件完整内容,逐项检查。
|
|
214
|
-
|
|
215
|
-
**必需字段**:
|
|
216
|
-
|
|
217
|
-
| 字段 | 必需 | 说明 |
|
|
218
|
-
|------|------|------|
|
|
219
|
-
| `pkgname` | 必需 | 与目录名一致 |
|
|
220
|
-
| `pkgver` | 必需 | 上游版本号,与上游 tag 一致;**不能是 `master`** |
|
|
221
|
-
| `pkgrel` | 必需 | 发布号,默认 0 |
|
|
222
|
-
| `pkgdesc` | 必需 | 简短描述 |
|
|
223
|
-
| `url` | 必需 | 上游官网链接 |
|
|
224
|
-
| `archs` | 必需 | 必须包含 `armeabi-v7a` `arm64-v8a` `x86_64` |
|
|
225
|
-
| `license` | 必需 | 许可证数组 |
|
|
226
|
-
| `depends` | 必需 | 依赖库名数组 |
|
|
227
|
-
| `makedepends` | 必需 | 构建依赖数组 |
|
|
228
|
-
| `source` | 必需 | 源码下载链接 |
|
|
229
|
-
| `downloadpackage` | 必需 | true/false |
|
|
230
|
-
| `autounpack` | 必需 | true/false |
|
|
231
|
-
| `builddir` | 必需 | 解压后目录名 |
|
|
232
|
-
| `packagename` | 必需 | 压缩包名 |
|
|
233
|
-
|
|
234
|
-
**pkgver 版本号规范**:
|
|
235
|
-
1. 必须与上游 tag 名称一致(含 `v` 前缀)
|
|
236
|
-
2. 不能是 `master`,无合适 release tag 时应使用 commit hash
|
|
237
|
-
3. commit hash 作为 pkgver 时,不应使用额外的 `commitid` 变量
|
|
238
|
-
4. pkgver 与 builddir 的关系:不带 `v` → `builddir=$pkgname-${pkgver}`;带 `v` → `builddir=$pkgname-${pkgver:1}`
|
|
239
|
-
|
|
240
|
-
**必需函数**:`prepare()`、`build()`、`package()`、`check()`、`cleanbuild()`
|
|
241
|
-
|
|
242
|
-
**构建类型检查**:
|
|
243
|
-
|
|
244
|
-
| buildtools | 必须包含 |
|
|
245
|
-
|------------|----------|
|
|
246
|
-
| cmake | 使用 `${OHOS_SDK}/native/build-tools/cmake/bin/cmake`,`-DOHOS_ARCH=$ARCH` |
|
|
247
|
-
| configure | `source envset.sh`,`setXXXENV`/`unsetXXXENV` |
|
|
248
|
-
| automake | `source envset.sh`,`setXXXENV`/`unsetXXXENV` |
|
|
249
|
-
| make | `source envset.sh`,使用 `$CC` |
|
|
250
|
-
| meson | `source envset.sh`,`--cross-file`,`ninja -C` |
|
|
251
|
-
|
|
252
|
-
**必需头部**:Apache 2.0 许可证头部 + Contributor/Maintainer 信息
|
|
253
|
-
|
|
254
|
-
> 详细检查项参见 [references/HPKBUILD_GUIDE.md](references/HPKBUILD_GUIDE.md)
|
|
255
|
-
|
|
256
|
-
#### 3.3 SHA512SUM 检查
|
|
257
|
-
|
|
258
|
-
读取通过 API 获取的 SHA512SUM 文件完整内容,检查:
|
|
259
|
-
|
|
260
|
-
- 每行格式:`<128字符SHA512哈希> <文件名>`
|
|
261
|
-
- 必须包含源码压缩包校验值
|
|
262
|
-
- 如有 patch 文件,也必须包含其校验值
|
|
263
|
-
|
|
264
|
-
#### 3.4 README.OpenSource 检查
|
|
265
|
-
|
|
266
|
-
读取通过 API 获取的 README.OpenSource 文件完整内容,检查:
|
|
267
|
-
|
|
268
|
-
- 必须是合法 JSON 数组
|
|
269
|
-
- 每个对象必须包含:Name、License、License File、Version Number、Owner、Upstream URL、Description
|
|
270
|
-
- Name 应与 pkgname 一致,Version Number 应与 pkgver 对应
|
|
271
|
-
|
|
272
|
-
#### 3.5 README_zh.md 检查
|
|
273
|
-
|
|
274
|
-
读取通过 API 获取的 README_zh.md 文件完整内容,检查:
|
|
275
|
-
|
|
276
|
-
必须包含章节:功能简介、三方库版本、已适配功能、使用约束(链接到 `../../docs/constraint.md`)、集成方式(链接到 `docs/hap_integrate.md`)
|
|
277
|
-
|
|
278
|
-
#### 3.6 docs/hap_integrate.md 检查
|
|
279
|
-
|
|
280
|
-
读取通过 API 获取的 docs/hap_integrate.md 文件完整内容,检查:
|
|
281
|
-
|
|
282
|
-
必须包含章节:准备应用工程、准备应用开发环境(链接到 `../../../docs/hap_integrate_environment.md`)、增加构建脚本及配置文件、准备三方库源码、应用中使用三方库、编译工程、运行效果、参考资料
|
|
283
|
-
|
|
284
|
-
#### 3.7 可选文件检查
|
|
285
|
-
|
|
286
|
-
- **OAT.xml**:仅通过目录列表 API 检查文件是否存在
|
|
287
|
-
- **HPKCHECK**:若存在,通过 API 获取完整内容,检查 `source HPKBUILD` 行、`openharmonycheck()` 函数名、`cd $OLDPWD` 和 `return $res`
|
|
288
|
-
- **Patch 文件**:命名格式 `<libname>_oh_pkg.patch` / `<libname>_oh_test.patch`,SHA512SUM 中有校验值
|
|
289
|
-
|
|
290
|
-
---
|
|
291
|
-
|
|
292
|
-
### Phase 4:问题分级与影响分析
|
|
293
|
-
|
|
294
|
-
#### 4.1 严重程度定义
|
|
295
|
-
|
|
296
|
-
| 级别 | 含义 | 合入影响 |
|
|
297
|
-
|------|------|----------|
|
|
298
|
-
| **严重 (Critical)** | 缺失必需文件、JSON/XML 格式错误、构建脚本核心函数缺失或错误 | **阻断合入** |
|
|
299
|
-
| **重要 (Major)** | 必需字段缺失或值不正确、文档章节缺失、链接路径错误 | **阻断合入** |
|
|
300
|
-
| **一般 (Minor)** | 建议项缺失(如 HPKCHECK、OAT.xml)、描述不够详尽 | 可后续迭代 |
|
|
301
|
-
| **表面 (Cosmetic)** | 拼写小错误、格式风格不一致 | 可后续迭代 |
|
|
302
|
-
|
|
303
|
-
#### 4.2 合入阻断规则
|
|
304
|
-
|
|
305
|
-
**严重 (Critical) 和重要 (Major) 问题为合入前置条件,必须在 PR 合入前全部修复,否则不予批准合入。**
|
|
306
|
-
|
|
307
|
-
---
|
|
308
|
-
|
|
309
|
-
### Phase 5:生成检视报告
|
|
310
|
-
|
|
311
|
-
输出文件:
|
|
312
|
-
- `{outputDir}/check-report.md` — 检视报告
|
|
313
|
-
- `{outputDir}/changed-files.txt` — 修改文件列表
|
|
314
|
-
- `{outputDir}/result.txt` — 合入建议分级结果
|
|
315
|
-
|
|
316
|
-
> 报告格式参见 [references/REPORT_TEMPLATE.md](references/REPORT_TEMPLATE.md)
|
|
317
|
-
|
|
318
|
-
#### 5.1 合入建议分级标准
|
|
319
|
-
|
|
320
|
-
根据检视结果,将合入建议分为四个等级:
|
|
321
|
-
|
|
322
|
-
| 等级 | 标识 | 颜色建议 | 判断标准 | 举例场景 |
|
|
323
|
-
|------|------|----------|----------|----------|
|
|
324
|
-
| **建议合入** | ✅ `PASS` | 绿色 | 无或极少(≤2 Minor)问题,改动风险低 | 纯文档更新、配置优化 |
|
|
325
|
-
| **条件合入** | ⚠️ `CONDITIONAL` | 黄色 | 存在少量(≤3 Major)可修复问题 | 需补充文档章节、链接路径错误 |
|
|
326
|
-
| **修改后合入** | 🔧 `NEED_FIX` | 橙色 | 存在较多问题(≥1 Critical 或 ≥4 Major),需修复后方可合入 | HPKBUILD 核心函数缺失、必需文件缺失 |
|
|
327
|
-
| **不允许合入** | ❌ `REJECT` | 红色 | 存在严重问题(≥2 Critical),影响构建/功能/安全 | 多个必需文件缺失、构建脚本严重错误 |
|
|
328
|
-
|
|
329
|
-
**分级判断流程**:
|
|
330
|
-
|
|
331
|
-
```
|
|
332
|
-
统计问题数量:
|
|
333
|
-
- Critical 级别问题数
|
|
334
|
-
- Major 级别问题数
|
|
335
|
-
- Minor 级别问题数
|
|
336
|
-
|
|
337
|
-
判断逻辑:
|
|
338
|
-
IF Critical ≥ 2 → ❌ REJECT
|
|
339
|
-
IF Critical ≥ 1 → 🔧 NEED_FIX
|
|
340
|
-
IF Major ≥ 4 → 🔧 NEED_FIX
|
|
341
|
-
IF Major ≥ 1 → ⚠️ CONDITIONAL
|
|
342
|
-
IF Minor ≤ 2 → ✅ PASS
|
|
343
|
-
ELSE → ⚠️ CONDITIONAL
|
|
344
|
-
```
|
|
345
|
-
|
|
346
|
-
#### 5.2 result.txt 文件格式
|
|
347
|
-
|
|
348
|
-
`result.txt` 用于存储分级结果和统计信息,格式如下:
|
|
349
|
-
|
|
350
|
-
```txt
|
|
351
|
-
=== 合入建议分级报告 ===
|
|
352
|
-
PR 地址:{prUrl}
|
|
353
|
-
仓库:{owner}/{repo}
|
|
354
|
-
PR 编号:#{prNumber}
|
|
355
|
-
生成时间:{YYYY-MM-DD HH:mm:ss}
|
|
356
|
-
|
|
357
|
-
【合入建议】:✅ 建议合入
|
|
358
|
-
|
|
359
|
-
【问题统计】
|
|
360
|
-
- Critical 级别:0 个
|
|
361
|
-
- Major 级别:0 个
|
|
362
|
-
- Minor 级别:2 个
|
|
363
|
-
|
|
364
|
-
【分级理由】
|
|
365
|
-
本次修改仅包含少量 Minor 级别优化建议,无功能性问题,改动风险低,建议直接合入。
|
|
366
|
-
|
|
367
|
-
【详细分析】
|
|
368
|
-
━━━ Critical 级别问题 ━━━
|
|
369
|
-
{列出所有 Critical 问题,每个占一行}
|
|
370
|
-
|
|
371
|
-
━━━ Major 级别问题 ━━━
|
|
372
|
-
{列出所有 Major 问题,每个占一行}
|
|
373
|
-
|
|
374
|
-
━━━ Minor 级别问题 ━━━
|
|
375
|
-
1. [文件类型:建议项] 缺少 HPKCHECK 测试脚本(建议补充)
|
|
376
|
-
2. [文件类型:建议项] 缺少 OAT.xml 合规审计配置(建议补充)
|
|
377
|
-
|
|
378
|
-
━━━ 合入建议 ━━━
|
|
379
|
-
建议合入:本次修改质量良好,无功能性风险。
|
|
380
|
-
|
|
381
|
-
=== 分级结束 ===
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
#### 5.3 结构化指标输出(必须执行)
|
|
385
|
-
|
|
386
|
-
执行环境会在任务 prompt 中下发一个**结构化指标文件输出路径**(`stepId{X}_loop{L}_meta_{N}.json`)。
|
|
387
|
-
检视完成后,**必须**将分级结果以下述 JSON 对象写入该路径:
|
|
388
|
-
|
|
389
|
-
```json
|
|
390
|
-
{
|
|
391
|
-
"mergeLevel": "PASS | CONDITIONAL | NEED_FIX | REJECT",
|
|
392
|
-
"critical": 0,
|
|
393
|
-
"major": 0,
|
|
394
|
-
"minor": 0
|
|
395
|
-
}
|
|
396
|
-
```
|
|
397
|
-
|
|
398
|
-
| 字段 | 类型 | 说明 |
|
|
399
|
-
|------|------|------|
|
|
400
|
-
| `mergeLevel` | string | 合入等级:PASS / CONDITIONAL / NEED_FIX / REJECT |
|
|
401
|
-
| `critical` | number | Critical 级别问题数 |
|
|
402
|
-
| `major` | number | Major 级别问题数 |
|
|
403
|
-
| `minor` | number | Minor 级别问题数 |
|
|
404
|
-
|
|
405
|
-
**说明**:该文件由执行框架自动收割入库(前端/历史列表直接读取,无需解析报告文本);详细的统计与理由已在 `result.txt` 中完整记录。若 prompt 未下发该路径则跳过本节。
|
|
406
|
-
|
|
407
|
-
---
|
|
408
|
-
|
|
409
|
-
## 注意事项
|
|
410
|
-
|
|
411
|
-
1. **不克隆仓库**:所有文件内容通过 GitCode API 按需获取,只获取 PR 中变更的文件和检视必需的文件,大幅减少时间和资源消耗
|
|
412
|
-
2. **API 限流**:GitCode API 有调用频率限制,建议提供 `accessToken` 以提高限额;无 Token 时注意控制请求频率
|
|
413
|
-
3. **增量检视范围**:仅检查 PR 变更的文件,不对未修改的文件提出缺失问题
|
|
414
|
-
4. **预存问题不在增量检视范围内**:增量检视不纳入仓库中已存在的问题
|
|
415
|
-
5. **报告文件名必须是 `check-report.md`**,路径在 `{outputDir}` 下
|
|
416
|
-
6. **所有输出文档必须使用中文**
|
|
417
|
-
7. **pkgver 不能是 `master`**:这是历史遗留模式,新增或修改的适配库不应再使用
|
|
418
|
-
8. **大文件处理**:若 API 返回的文件内容为 Base64 编码且超过 1MB,应使用 download 参数获取原始内容
|
|
419
|
-
9. **Base64 解码**:GitCode API contents 端点返回的 `content` 字段为 Base64 编码,需解码后才是文件原始内容
|
|
420
|
-
|
|
421
|
-
---
|
|
422
|
-
|
|
423
|
-
## 参考文档
|
|
424
|
-
|
|
425
|
-
- [规范性检查清单](references/CHECKLIST.md)
|
|
426
|
-
- [HPKBUILD 详细检查指南](references/HPKBUILD_GUIDE.md)
|
|
427
|
-
- [检视报告模板](references/REPORT_TEMPLATE.md)
|
|
1
|
+
---
|
|
2
|
+
name: tpc-cpp-check
|
|
3
|
+
description: 检视 tpc_c_cplusplus 仓库适配库 PR 的规范性,包括编译脚本(HPKBUILD)、文档格式、目录结构、SHA512SUM 等,并输出结构化检视报告。当用户需要对 C/C++ 三方库 PR 进行规范性检视时调用。支持 GitCode 平台。仅基于 PR 差异和 API 获取文件内容进行检视,无需克隆整个仓库。
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
compatibility: 需要 curl、网络访问 GitCode API 的权限,无需 git clone
|
|
6
|
+
metadata:
|
|
7
|
+
version: "1.0.0"
|
|
8
|
+
platform: gitcode
|
|
9
|
+
libraryType: tpccplus
|
|
10
|
+
---
|
|
11
|
+
# TpcCheckSkill — tpc_c_cplusplus 适配库 PR 规范性检视
|
|
12
|
+
|
|
13
|
+
## 概述
|
|
14
|
+
|
|
15
|
+
本 Skill 负责对 tpc_c_cplusplus 仓库中适配库 PR 进行规范性检视,包括编译脚本(HPKBUILD)、文档格式(README_zh.md、hap_integrate.md)、目录结构、SHA512SUM、README.OpenSource 等的合规性检查,输出结构化检视报告。
|
|
16
|
+
|
|
17
|
+
**核心设计原则:仅基于 PR 内容进行检视,不克隆整个仓库。** 所有文件内容通过 GitCode API 按需获取,只审查 PR 中实际变更的文件。
|
|
18
|
+
|
|
19
|
+
**关键特性**:
|
|
20
|
+
- **零克隆**:通过 GitCode API 获取 PR diff 和文件内容,无需 `git clone`,大幅减少时间和资源消耗
|
|
21
|
+
- 支持**增量检视**(已有库修改)和**全量检视**(新增库)两种模式
|
|
22
|
+
- 重点检查 HPKBUILD 编译脚本的字段完整性、函数规范性、构建类型合规性
|
|
23
|
+
- 检查文档格式与内容、SHA512SUM 校验、Patch 命名等
|
|
24
|
+
- 输出按严重程度分级的结构化报告
|
|
25
|
+
|
|
26
|
+
**重要:所有输出文档必须使用中文。**
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## 任务参数
|
|
31
|
+
|
|
32
|
+
| 参数 | 必需 | 说明 |
|
|
33
|
+
|------|------|------|
|
|
34
|
+
| `prUrl` | ✅ | PR 地址,如 `https://gitcode.com/tpc_c_cplusplus/thirdparty/pulls/123` |
|
|
35
|
+
| `outputDir` | ✅ | 输出目录绝对路径,如 `/path/to/codecheck/owner_repo_pr123` |
|
|
36
|
+
| `libraryType` | ❌ | 固定为 `tpccplus` |
|
|
37
|
+
| `accessToken` | ❌ | GitCode API 访问令牌;GitCode API 强烈建议提供 |
|
|
38
|
+
| `branch` | ❌ | 目标分支名;若提供则优先使用 |
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 工作流程
|
|
43
|
+
|
|
44
|
+
### Phase 1:信息收集(仅 API 调用,不克隆仓库)
|
|
45
|
+
|
|
46
|
+
#### 1.1 解析 PR 地址
|
|
47
|
+
|
|
48
|
+
从 `prUrl` 提取:`platform`、`owner`、`repo`、`prNumber`。
|
|
49
|
+
|
|
50
|
+
| 平台 | URL 模式 | API 支持 |
|
|
51
|
+
|------|----------|----------|
|
|
52
|
+
| GitCode | `https://gitcode.com/{owner}/{repo}/pulls/{num}` | ✅ **API 优先** |
|
|
53
|
+
| Gitee | `https://gitee.com/{owner}/{repo}/pulls/{num}` | 部分 API |
|
|
54
|
+
| GitHub | `https://github.com/{owner}/{repo}/pull/{num}` | API diff |
|
|
55
|
+
| GitLab | `https://gitlab.com/{owner}/{repo}/-/merge_requests/{num}` | API diff |
|
|
56
|
+
|
|
57
|
+
#### 1.2 获取 PR 元数据
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/pulls/{prNumber}?access_token={accessToken}"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
提取:`title`、`base.ref`(目标分支)、`head.sha`、`user.name`、`created_at`、`state`
|
|
64
|
+
|
|
65
|
+
#### 1.3 获取 PR 文件变更列表
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/pulls/{prNumber}/files?access_token={accessToken}&per_page=100"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
返回 PR 中所有变更文件的列表,每个条目包含:
|
|
72
|
+
- `filename`:文件路径
|
|
73
|
+
- `status`:变更类型(added / modified / removed / renamed)
|
|
74
|
+
- `additions`:新增行数
|
|
75
|
+
- `deletions`:删除行数
|
|
76
|
+
- `patch`:文件 diff 内容(若文件不大)
|
|
77
|
+
|
|
78
|
+
> **分页处理**:若文件数超过 100,使用 `page` 参数翻页获取全部。
|
|
79
|
+
|
|
80
|
+
#### 1.4 获取 PR Diff(完整补丁)
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/pulls/{prNumber}/diff?access_token={accessToken}" -o {outputDir}/pr.diff
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
或通过 commit patch 获取(适用于 squash merge 场景):
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/commit/{head.sha}/patch?access_token={accessToken}" -o {outputDir}/pr.patch
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
> **注意**:commit 路径使用 `commit`(单数),不是 `commits`
|
|
93
|
+
|
|
94
|
+
将 diff/patch 保存到 `{outputDir}/pr.diff` 供后续分析。
|
|
95
|
+
|
|
96
|
+
#### 1.5 按需获取文件内容(替代 git clone)
|
|
97
|
+
|
|
98
|
+
**核心机制:只获取 PR 中变更的文件内容,不克隆整个仓库。**
|
|
99
|
+
|
|
100
|
+
对 PR 中每个变更的文件,通过 API 获取其内容:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# 获取 PR head 分支上的文件内容(变更后的版本)
|
|
104
|
+
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/contents/{filePath}?ref={head.sha}&access_token={accessToken}"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
返回 JSON 包含 `content` 字段(Base64 编码),解码后得到文件内容:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
echo "{content}" | base64 -d > {outputDir}/files/{filePath}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
> **大文件处理**:若文件超过 1MB,API 可能返回错误,此时使用 `?ref={head.sha}&download=true` 参数直接获取原始内容。
|
|
114
|
+
|
|
115
|
+
对于需要对比的情况(检查删除/修改的旧内容),可获取 base 分支上的文件:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# 获取目标分支上的文件内容(变更前的版本)
|
|
119
|
+
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/contents/{filePath}?ref={base.ref}&access_token={accessToken}"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
#### 1.6 获取适配库目录结构(仅目录列表,不下载文件)
|
|
123
|
+
|
|
124
|
+
判断检视策略时需要知道 base 分支上是否已存在该库目录:
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# 查询 base 分支上的目录结构
|
|
128
|
+
curl -s "https://api.gitcode.com/api/v5/repos/{owner}/{repo}/contents/{libDir}?ref={base.ref}&access_token={accessToken}"
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
返回目录下的文件和子目录列表(仅名称和类型,不下载内容),用于:
|
|
132
|
+
- 判断是**增量检视**还是**全量检视**
|
|
133
|
+
- 增量检视时了解未变更文件是否存在(不获取其内容)
|
|
134
|
+
|
|
135
|
+
> **注意**:API 返回的目录列表可能不完整(子目录深度有限),若需检查深层目录(如 `docs/pic/`),可单独请求子目录。
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### Phase 2:差异分析与检视策略判断
|
|
140
|
+
|
|
141
|
+
#### 2.1 识别变更的适配库目录
|
|
142
|
+
|
|
143
|
+
从 PR 文件变更列表(1.3 的返回结果)中提取变更文件路径,识别涉及的适配库目录:
|
|
144
|
+
- `thirdparty/<libname>/` → thirdparty 类型的适配库
|
|
145
|
+
- `community/<libname>/` → community 类型的适配库
|
|
146
|
+
|
|
147
|
+
若 PR 涉及多个适配库目录,需分别对每个库独立检视。
|
|
148
|
+
|
|
149
|
+
#### 2.2 判断检视策略:增量 vs 全量
|
|
150
|
+
|
|
151
|
+
**判断方法**:通过 1.6 步骤获取的 base 分支目录列表,判断该库目录是否已存在:
|
|
152
|
+
|
|
153
|
+
- **目录存在** → 已有库的修改 → **增量检视**:仅检查 PR 中变更的文件的规范性
|
|
154
|
+
- **目录不存在** → 新增库 → **全量检视**:对所有必需文件和可选文件进行完整合规性检查
|
|
155
|
+
|
|
156
|
+
> **全量检视时的文件获取**:全量检视需要检查所有必需文件,对 PR 中未变更的必需文件,需通过 API 单独获取其内容进行审查。但若某必需文件既不在 PR 变更中,也不在 base 分支上,则记录为"缺失"问题。
|
|
157
|
+
|
|
158
|
+
#### 2.3 统计改动规模
|
|
159
|
+
|
|
160
|
+
从 PR 文件变更列表统计:文件数、新增/删除行数、变更类型分布。
|
|
161
|
+
|
|
162
|
+
#### 2.4 获取变更文件的完整内容
|
|
163
|
+
|
|
164
|
+
对 Phase 3 检视需要审查的每个文件,按 1.5 的方法获取其完整内容并保存到 `{outputDir}/files/` 目录下。
|
|
165
|
+
|
|
166
|
+
**按需获取原则**:
|
|
167
|
+
- HPKBUILD:必须获取完整内容
|
|
168
|
+
- SHA512SUM:必须获取完整内容
|
|
169
|
+
- README.OpenSource:必须获取完整内容
|
|
170
|
+
- README_zh.md:必须获取完整内容
|
|
171
|
+
- docs/hap_integrate.md:若 PR 变更了此文件或为全量检视,获取完整内容
|
|
172
|
+
- HPKCHECK:若存在,获取完整内容
|
|
173
|
+
- OAT.xml:仅检查是否存在,不获取内容
|
|
174
|
+
- Patch 文件:若 PR 变更了 patch,获取完整内容
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
### Phase 3:规范性检视
|
|
179
|
+
|
|
180
|
+
> 详细检查项参见 [references/CHECKLIST.md](references/CHECKLIST.md)
|
|
181
|
+
|
|
182
|
+
#### 3.1 目录结构检查
|
|
183
|
+
|
|
184
|
+
**thirdparty 适配库必需文件**:
|
|
185
|
+
|
|
186
|
+
| 文件 | 必需性 | 检查方式 |
|
|
187
|
+
|------|--------|----------|
|
|
188
|
+
| HPKBUILD | **必需** | PR 变更内容 + API |
|
|
189
|
+
| SHA512SUM | **必需** | PR 变更内容 + API |
|
|
190
|
+
| README.OpenSource | **必需** | PR 变更内容 + API |
|
|
191
|
+
| README_zh.md | **必需** | PR 变更内容 + API |
|
|
192
|
+
| docs/ | **必需** | 目录列表 API |
|
|
193
|
+
| docs/hap_integrate.md | **必需** | PR 变更内容 + API |
|
|
194
|
+
| docs/pic/ | 有文档时必需 | 目录列表 API |
|
|
195
|
+
| HPKCHECK | 建议 | 目录列表 API |
|
|
196
|
+
| OAT.xml | 建议 | 目录列表 API |
|
|
197
|
+
|
|
198
|
+
**community 适配库必需文件**:
|
|
199
|
+
|
|
200
|
+
| 文件 | 必需性 | 检查方式 |
|
|
201
|
+
|------|--------|----------|
|
|
202
|
+
| HPKBUILD | **必需** | PR 变更内容 + API |
|
|
203
|
+
| SHA512SUM | **必需** | PR 变更内容 + API |
|
|
204
|
+
|
|
205
|
+
其余文件为可选但建议有。
|
|
206
|
+
|
|
207
|
+
> **增量检视**:仅检查 PR 中变更的文件是否存在规范性问题,不对未变更的文件提出缺失问题。
|
|
208
|
+
>
|
|
209
|
+
> **全量检视**:对所有必需文件进行完整性检查,缺失的必需文件记为 Critical 问题。
|
|
210
|
+
|
|
211
|
+
#### 3.2 HPKBUILD 检查(重点维度)
|
|
212
|
+
|
|
213
|
+
读取通过 API 获取的 HPKBUILD 文件完整内容,逐项检查。
|
|
214
|
+
|
|
215
|
+
**必需字段**:
|
|
216
|
+
|
|
217
|
+
| 字段 | 必需 | 说明 |
|
|
218
|
+
|------|------|------|
|
|
219
|
+
| `pkgname` | 必需 | 与目录名一致 |
|
|
220
|
+
| `pkgver` | 必需 | 上游版本号,与上游 tag 一致;**不能是 `master`** |
|
|
221
|
+
| `pkgrel` | 必需 | 发布号,默认 0 |
|
|
222
|
+
| `pkgdesc` | 必需 | 简短描述 |
|
|
223
|
+
| `url` | 必需 | 上游官网链接 |
|
|
224
|
+
| `archs` | 必需 | 必须包含 `armeabi-v7a` `arm64-v8a` `x86_64` |
|
|
225
|
+
| `license` | 必需 | 许可证数组 |
|
|
226
|
+
| `depends` | 必需 | 依赖库名数组 |
|
|
227
|
+
| `makedepends` | 必需 | 构建依赖数组 |
|
|
228
|
+
| `source` | 必需 | 源码下载链接 |
|
|
229
|
+
| `downloadpackage` | 必需 | true/false |
|
|
230
|
+
| `autounpack` | 必需 | true/false |
|
|
231
|
+
| `builddir` | 必需 | 解压后目录名 |
|
|
232
|
+
| `packagename` | 必需 | 压缩包名 |
|
|
233
|
+
|
|
234
|
+
**pkgver 版本号规范**:
|
|
235
|
+
1. 必须与上游 tag 名称一致(含 `v` 前缀)
|
|
236
|
+
2. 不能是 `master`,无合适 release tag 时应使用 commit hash
|
|
237
|
+
3. commit hash 作为 pkgver 时,不应使用额外的 `commitid` 变量
|
|
238
|
+
4. pkgver 与 builddir 的关系:不带 `v` → `builddir=$pkgname-${pkgver}`;带 `v` → `builddir=$pkgname-${pkgver:1}`
|
|
239
|
+
|
|
240
|
+
**必需函数**:`prepare()`、`build()`、`package()`、`check()`、`cleanbuild()`
|
|
241
|
+
|
|
242
|
+
**构建类型检查**:
|
|
243
|
+
|
|
244
|
+
| buildtools | 必须包含 |
|
|
245
|
+
|------------|----------|
|
|
246
|
+
| cmake | 使用 `${OHOS_SDK}/native/build-tools/cmake/bin/cmake`,`-DOHOS_ARCH=$ARCH` |
|
|
247
|
+
| configure | `source envset.sh`,`setXXXENV`/`unsetXXXENV` |
|
|
248
|
+
| automake | `source envset.sh`,`setXXXENV`/`unsetXXXENV` |
|
|
249
|
+
| make | `source envset.sh`,使用 `$CC` |
|
|
250
|
+
| meson | `source envset.sh`,`--cross-file`,`ninja -C` |
|
|
251
|
+
|
|
252
|
+
**必需头部**:Apache 2.0 许可证头部 + Contributor/Maintainer 信息
|
|
253
|
+
|
|
254
|
+
> 详细检查项参见 [references/HPKBUILD_GUIDE.md](references/HPKBUILD_GUIDE.md)
|
|
255
|
+
|
|
256
|
+
#### 3.3 SHA512SUM 检查
|
|
257
|
+
|
|
258
|
+
读取通过 API 获取的 SHA512SUM 文件完整内容,检查:
|
|
259
|
+
|
|
260
|
+
- 每行格式:`<128字符SHA512哈希> <文件名>`
|
|
261
|
+
- 必须包含源码压缩包校验值
|
|
262
|
+
- 如有 patch 文件,也必须包含其校验值
|
|
263
|
+
|
|
264
|
+
#### 3.4 README.OpenSource 检查
|
|
265
|
+
|
|
266
|
+
读取通过 API 获取的 README.OpenSource 文件完整内容,检查:
|
|
267
|
+
|
|
268
|
+
- 必须是合法 JSON 数组
|
|
269
|
+
- 每个对象必须包含:Name、License、License File、Version Number、Owner、Upstream URL、Description
|
|
270
|
+
- Name 应与 pkgname 一致,Version Number 应与 pkgver 对应
|
|
271
|
+
|
|
272
|
+
#### 3.5 README_zh.md 检查
|
|
273
|
+
|
|
274
|
+
读取通过 API 获取的 README_zh.md 文件完整内容,检查:
|
|
275
|
+
|
|
276
|
+
必须包含章节:功能简介、三方库版本、已适配功能、使用约束(链接到 `../../docs/constraint.md`)、集成方式(链接到 `docs/hap_integrate.md`)
|
|
277
|
+
|
|
278
|
+
#### 3.6 docs/hap_integrate.md 检查
|
|
279
|
+
|
|
280
|
+
读取通过 API 获取的 docs/hap_integrate.md 文件完整内容,检查:
|
|
281
|
+
|
|
282
|
+
必须包含章节:准备应用工程、准备应用开发环境(链接到 `../../../docs/hap_integrate_environment.md`)、增加构建脚本及配置文件、准备三方库源码、应用中使用三方库、编译工程、运行效果、参考资料
|
|
283
|
+
|
|
284
|
+
#### 3.7 可选文件检查
|
|
285
|
+
|
|
286
|
+
- **OAT.xml**:仅通过目录列表 API 检查文件是否存在
|
|
287
|
+
- **HPKCHECK**:若存在,通过 API 获取完整内容,检查 `source HPKBUILD` 行、`openharmonycheck()` 函数名、`cd $OLDPWD` 和 `return $res`
|
|
288
|
+
- **Patch 文件**:命名格式 `<libname>_oh_pkg.patch` / `<libname>_oh_test.patch`,SHA512SUM 中有校验值
|
|
289
|
+
|
|
290
|
+
---
|
|
291
|
+
|
|
292
|
+
### Phase 4:问题分级与影响分析
|
|
293
|
+
|
|
294
|
+
#### 4.1 严重程度定义
|
|
295
|
+
|
|
296
|
+
| 级别 | 含义 | 合入影响 |
|
|
297
|
+
|------|------|----------|
|
|
298
|
+
| **严重 (Critical)** | 缺失必需文件、JSON/XML 格式错误、构建脚本核心函数缺失或错误 | **阻断合入** |
|
|
299
|
+
| **重要 (Major)** | 必需字段缺失或值不正确、文档章节缺失、链接路径错误 | **阻断合入** |
|
|
300
|
+
| **一般 (Minor)** | 建议项缺失(如 HPKCHECK、OAT.xml)、描述不够详尽 | 可后续迭代 |
|
|
301
|
+
| **表面 (Cosmetic)** | 拼写小错误、格式风格不一致 | 可后续迭代 |
|
|
302
|
+
|
|
303
|
+
#### 4.2 合入阻断规则
|
|
304
|
+
|
|
305
|
+
**严重 (Critical) 和重要 (Major) 问题为合入前置条件,必须在 PR 合入前全部修复,否则不予批准合入。**
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
### Phase 5:生成检视报告
|
|
310
|
+
|
|
311
|
+
输出文件:
|
|
312
|
+
- `{outputDir}/check-report.md` — 检视报告
|
|
313
|
+
- `{outputDir}/changed-files.txt` — 修改文件列表
|
|
314
|
+
- `{outputDir}/result.txt` — 合入建议分级结果
|
|
315
|
+
|
|
316
|
+
> 报告格式参见 [references/REPORT_TEMPLATE.md](references/REPORT_TEMPLATE.md)
|
|
317
|
+
|
|
318
|
+
#### 5.1 合入建议分级标准
|
|
319
|
+
|
|
320
|
+
根据检视结果,将合入建议分为四个等级:
|
|
321
|
+
|
|
322
|
+
| 等级 | 标识 | 颜色建议 | 判断标准 | 举例场景 |
|
|
323
|
+
|------|------|----------|----------|----------|
|
|
324
|
+
| **建议合入** | ✅ `PASS` | 绿色 | 无或极少(≤2 Minor)问题,改动风险低 | 纯文档更新、配置优化 |
|
|
325
|
+
| **条件合入** | ⚠️ `CONDITIONAL` | 黄色 | 存在少量(≤3 Major)可修复问题 | 需补充文档章节、链接路径错误 |
|
|
326
|
+
| **修改后合入** | 🔧 `NEED_FIX` | 橙色 | 存在较多问题(≥1 Critical 或 ≥4 Major),需修复后方可合入 | HPKBUILD 核心函数缺失、必需文件缺失 |
|
|
327
|
+
| **不允许合入** | ❌ `REJECT` | 红色 | 存在严重问题(≥2 Critical),影响构建/功能/安全 | 多个必需文件缺失、构建脚本严重错误 |
|
|
328
|
+
|
|
329
|
+
**分级判断流程**:
|
|
330
|
+
|
|
331
|
+
```
|
|
332
|
+
统计问题数量:
|
|
333
|
+
- Critical 级别问题数
|
|
334
|
+
- Major 级别问题数
|
|
335
|
+
- Minor 级别问题数
|
|
336
|
+
|
|
337
|
+
判断逻辑:
|
|
338
|
+
IF Critical ≥ 2 → ❌ REJECT
|
|
339
|
+
IF Critical ≥ 1 → 🔧 NEED_FIX
|
|
340
|
+
IF Major ≥ 4 → 🔧 NEED_FIX
|
|
341
|
+
IF Major ≥ 1 → ⚠️ CONDITIONAL
|
|
342
|
+
IF Minor ≤ 2 → ✅ PASS
|
|
343
|
+
ELSE → ⚠️ CONDITIONAL
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
#### 5.2 result.txt 文件格式
|
|
347
|
+
|
|
348
|
+
`result.txt` 用于存储分级结果和统计信息,格式如下:
|
|
349
|
+
|
|
350
|
+
```txt
|
|
351
|
+
=== 合入建议分级报告 ===
|
|
352
|
+
PR 地址:{prUrl}
|
|
353
|
+
仓库:{owner}/{repo}
|
|
354
|
+
PR 编号:#{prNumber}
|
|
355
|
+
生成时间:{YYYY-MM-DD HH:mm:ss}
|
|
356
|
+
|
|
357
|
+
【合入建议】:✅ 建议合入
|
|
358
|
+
|
|
359
|
+
【问题统计】
|
|
360
|
+
- Critical 级别:0 个
|
|
361
|
+
- Major 级别:0 个
|
|
362
|
+
- Minor 级别:2 个
|
|
363
|
+
|
|
364
|
+
【分级理由】
|
|
365
|
+
本次修改仅包含少量 Minor 级别优化建议,无功能性问题,改动风险低,建议直接合入。
|
|
366
|
+
|
|
367
|
+
【详细分析】
|
|
368
|
+
━━━ Critical 级别问题 ━━━
|
|
369
|
+
{列出所有 Critical 问题,每个占一行}
|
|
370
|
+
|
|
371
|
+
━━━ Major 级别问题 ━━━
|
|
372
|
+
{列出所有 Major 问题,每个占一行}
|
|
373
|
+
|
|
374
|
+
━━━ Minor 级别问题 ━━━
|
|
375
|
+
1. [文件类型:建议项] 缺少 HPKCHECK 测试脚本(建议补充)
|
|
376
|
+
2. [文件类型:建议项] 缺少 OAT.xml 合规审计配置(建议补充)
|
|
377
|
+
|
|
378
|
+
━━━ 合入建议 ━━━
|
|
379
|
+
建议合入:本次修改质量良好,无功能性风险。
|
|
380
|
+
|
|
381
|
+
=== 分级结束 ===
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
#### 5.3 结构化指标输出(必须执行)
|
|
385
|
+
|
|
386
|
+
执行环境会在任务 prompt 中下发一个**结构化指标文件输出路径**(`stepId{X}_loop{L}_meta_{N}.json`)。
|
|
387
|
+
检视完成后,**必须**将分级结果以下述 JSON 对象写入该路径:
|
|
388
|
+
|
|
389
|
+
```json
|
|
390
|
+
{
|
|
391
|
+
"mergeLevel": "PASS | CONDITIONAL | NEED_FIX | REJECT",
|
|
392
|
+
"critical": 0,
|
|
393
|
+
"major": 0,
|
|
394
|
+
"minor": 0
|
|
395
|
+
}
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
| 字段 | 类型 | 说明 |
|
|
399
|
+
|------|------|------|
|
|
400
|
+
| `mergeLevel` | string | 合入等级:PASS / CONDITIONAL / NEED_FIX / REJECT |
|
|
401
|
+
| `critical` | number | Critical 级别问题数 |
|
|
402
|
+
| `major` | number | Major 级别问题数 |
|
|
403
|
+
| `minor` | number | Minor 级别问题数 |
|
|
404
|
+
|
|
405
|
+
**说明**:该文件由执行框架自动收割入库(前端/历史列表直接读取,无需解析报告文本);详细的统计与理由已在 `result.txt` 中完整记录。若 prompt 未下发该路径则跳过本节。
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
## 注意事项
|
|
410
|
+
|
|
411
|
+
1. **不克隆仓库**:所有文件内容通过 GitCode API 按需获取,只获取 PR 中变更的文件和检视必需的文件,大幅减少时间和资源消耗
|
|
412
|
+
2. **API 限流**:GitCode API 有调用频率限制,建议提供 `accessToken` 以提高限额;无 Token 时注意控制请求频率
|
|
413
|
+
3. **增量检视范围**:仅检查 PR 变更的文件,不对未修改的文件提出缺失问题
|
|
414
|
+
4. **预存问题不在增量检视范围内**:增量检视不纳入仓库中已存在的问题
|
|
415
|
+
5. **报告文件名必须是 `check-report.md`**,路径在 `{outputDir}` 下
|
|
416
|
+
6. **所有输出文档必须使用中文**
|
|
417
|
+
7. **pkgver 不能是 `master`**:这是历史遗留模式,新增或修改的适配库不应再使用
|
|
418
|
+
8. **大文件处理**:若 API 返回的文件内容为 Base64 编码且超过 1MB,应使用 download 参数获取原始内容
|
|
419
|
+
9. **Base64 解码**:GitCode API contents 端点返回的 `content` 字段为 Base64 编码,需解码后才是文件原始内容
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
## 参考文档
|
|
424
|
+
|
|
425
|
+
- [规范性检查清单](references/CHECKLIST.md)
|
|
426
|
+
- [HPKBUILD 详细检查指南](references/HPKBUILD_GUIDE.md)
|
|
427
|
+
- [检视报告模板](references/REPORT_TEMPLATE.md)
|