@microi.net/cli 5.7.8 → 5.7.9

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 (191) hide show
  1. package/.codebuddy-plugin/marketplace.json +2 -2
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.workbuddy-plugin/marketplace.json +2 -2
  5. package/.workbuddy-plugin/plugin.json +1 -1
  6. package/LICENSE +21 -21
  7. package/README.md +71 -71
  8. package/assets/build-meta.json +6 -6
  9. package/assets/feature-matrix.json +138 -138
  10. package/assets/logo.svg +4 -4
  11. package/cordis.patch.yml +1 -1
  12. package/package.json +1 -1
  13. package/scripts/mcp-codex-stdio-adapter.js +0 -0
  14. package/scripts/mcp-server.js +102 -101
  15. package/scripts/microi-cli.js +57 -57
  16. package/scripts/microi-codex-broker.js +450 -450
  17. package/scripts/microi-codex-router.js +0 -0
  18. package/scripts/microi-skills.meta.json +366 -366
  19. package/skills/.microi-skills-version.json +2 -2
  20. package/skills/.progressive-disclosure-manifest.json +27 -27
  21. package/skills/README.md +286 -286
  22. package/skills/ai-engine/SKILL.md +265 -265
  23. package/skills/ai-engine/agents/openai.yaml +4 -4
  24. package/skills/ai-platform-governance/SKILL.md +177 -177
  25. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
  26. package/skills/app-store/SKILL.md +392 -396
  27. package/skills/app-store/agents/openai.yaml +4 -4
  28. package/skills/business-blueprint/SKILL.md +193 -193
  29. package/skills/datasource-engine/SKILL.md +90 -90
  30. package/skills/datasource-engine/agents/openai.yaml +4 -4
  31. package/skills/dos-orm/references/api-reference.md +229 -229
  32. package/skills/email-engine/SKILL.md +78 -78
  33. package/skills/email-engine/references/v8-email.md +34 -34
  34. package/skills/job-engine/SKILL.md +171 -172
  35. package/skills/job-engine/agents/openai.yaml +4 -4
  36. package/skills/message-notification/SKILL.md +155 -156
  37. package/skills/message-notification/agents/openai.yaml +5 -5
  38. package/skills/message-notification/references/contracts.md +102 -102
  39. package/skills/microi-ai-app-auth.js +652 -652
  40. package/skills/microi-ai-application/SKILL.md +102 -106
  41. package/skills/microi-ai-application/agents/openai.yaml +4 -4
  42. package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
  43. package/skills/microi-client-frontend/SKILL.md +235 -240
  44. package/skills/microi-client-frontend/references/progressive-01-3-/345/212/250/346/200/201/346/214/211/351/222/256/347/263/273/347/273/237.md +144 -144
  45. package/skills/microi-client-frontend/references/progressive-02-8-/350/277/220/350/241/214/346/227/266/351/253/230/351/242/221/345/235/221/345/244/215/347/233/230.md +196 -196
  46. package/skills/microi-client-frontend/references/progressive-03-vue3-/345/211/215/347/253/257/345/276/256/346/234/215/345/212/241/345/256/277/344/270/273/350/247/204/345/210/231.md +167 -167
  47. package/skills/microi-codex/SKILL.md +72 -76
  48. package/skills/microi-codex-installer/SKILL.md +225 -223
  49. package/skills/microi-codex-installer/agents/openai.yaml +7 -7
  50. package/skills/microi-datasource-mapping/SKILL.md +107 -111
  51. package/skills/microi-db-schema/SKILL.md +175 -175
  52. package/skills/microi-db-schema/agents/openai.yaml +4 -4
  53. package/skills/microi-db-schema/references/core-tables.md +695 -695
  54. package/skills/microi-db-schema/references/form-component-options.md +256 -256
  55. package/skills/microi-db-schema/references/schema-overview.md +202 -202
  56. package/skills/microi-db-schema/references/schema.md +646 -646
  57. package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
  58. package/skills/microi-deployment/references/deployment-matrix.md +101 -101
  59. package/skills/microi-docs-coverage/references/capability-map.md +0 -1
  60. package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
  61. package/skills/microi-form-engine/SKILL.md +226 -226
  62. package/skills/microi-form-engine/references/component-catalog.md +216 -216
  63. package/skills/microi-form-engine/references/data-source-events.md +124 -124
  64. package/skills/microi-form-layout/SKILL.md +205 -205
  65. package/skills/microi-form-layout/references/progressive-01-3-/344/270/211/347/247/215/345/210/206/347/273/204/347/232/204/345/255/230/345/202/250/344/270/216/351/205/215/347/275/256.md +235 -235
  66. package/skills/microi-frontend-sdk/SKILL.md +188 -188
  67. package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +176 -176
  68. package/skills/microi-left-right-layout/SKILL.md +141 -141
  69. package/skills/microi-microservice/SKILL.md +322 -323
  70. package/skills/microi-microservice/references/runtime-delivery.md +278 -278
  71. package/skills/microi-mobile-app-quality/SKILL.md +181 -181
  72. package/skills/microi-mobile-app-quality/references/progressive-01-4-/351/207/215/350/246/201/346/214/211/351/222/256/345/277/205/351/241/273/345/270/246/345/233/276/346/240/207.md +213 -213
  73. package/skills/microi-mobile-app-quality/references/progressive-02-9-/344/270/273/351/242/230/345/210/207/346/215/242/345/277/205/351/241/273/347/234/237/345/256/236/344/270/224/345/205/250/345/261/200/347/224/237/346/225/210.md +128 -128
  74. package/skills/microi-solution-quotation/SKILL.md +78 -78
  75. package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
  76. package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
  77. package/skills/microi-sso/references/acceptance.md +49 -49
  78. package/skills/microi-sso/references/configuration-and-security.md +53 -53
  79. package/skills/microi-sso/references/inbound.md +53 -53
  80. package/skills/microi-sso/references/outbound.md +39 -39
  81. package/skills/microi-system-delivery/SKILL.md +134 -134
  82. package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +193 -193
  83. package/skills/microi-system-delivery/references/progressive-02-/350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/345/277/205/351/241/273/350/246/206/347/233/226/347/232/204/345/235/221.md +189 -189
  84. package/skills/microi-ui/SKILL.md +174 -174
  85. package/skills/microi-ui/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/234/272/346/231/257/350/223/235/345/233/276.md +183 -183
  86. package/skills/microi-uniapp-frontend/SKILL.md +193 -193
  87. package/skills/microi-uniapp-frontend/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/210/206/347/261/273-/345/217/214/346/240/217/345/210/227/350/241/250/347/213/254/347/253/213/346/273/232/345/212/250.md +225 -225
  88. package/skills/microi-uniapp-frontend/references/progressive-02-/345/205/263/351/224/256/344/270/232/345/212/241/350/265/204/344/272/247/344/270/215/345/276/227/351/273/230/350/256/244/351/200/211/344/270/255.md +154 -154
  89. package/skills/microi.v8.js +1921 -1921
  90. package/skills/module-engine/SKILL.md +237 -250
  91. package/skills/module-engine/references/module-config.md +204 -204
  92. package/skills/ocr-engine/SKILL.md +113 -113
  93. package/skills/ocr-engine/agents/openai.yaml +4 -4
  94. package/skills/page-engine/SKILL.md +180 -191
  95. package/skills/page-engine/references/progressive-01-/346/211/200/346/234/211/347/273/204/344/273/266/347/261/273/345/236/213.md +234 -234
  96. package/skills/page-engine/references/progressive-02-/347/211/210/346/234/254/345/216/206/345/217/262-/345/271/266/345/217/221/344/277/235/345/255/230/344/270/216/345/233/236/346/273/232.md +60 -60
  97. package/skills/performance-testing/SKILL.md +221 -221
  98. package/skills/playwright-e2e/SKILL.md +197 -197
  99. package/skills/playwright-e2e/references/progressive-01-/345/205/250/350/207/252/345/212/250/347/231/273/345/275/225-/345/205/215/351/252/214/350/257/201/347/240/201-/344/275/206/344/270/215/345/205/215/345/257/206/347/240/201-/345/277/205/350/257/273.md +173 -173
  100. package/skills/playwright-e2e/references/progressive-02-/346/226/207/345/255/227/345/257/271/346/257/224/345/272/246/344/270/216/345/217/257/350/257/273/346/200/247/350/207/252/345/212/250/345/214/226/346/243/200/346/237/245-/345/277/205/345/201/232.md +183 -183
  101. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
  102. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
  103. package/skills/print-engine/SKILL.md +259 -259
  104. package/skills/production-readonly-audit/SKILL.md +41 -41
  105. package/skills/report-engine/SKILL.md +71 -71
  106. package/skills/report-engine/agents/openai.yaml +4 -4
  107. package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
  108. package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
  109. package/skills/search-engine/SKILL.md +75 -75
  110. package/skills/search-engine/agents/openai.yaml +4 -4
  111. package/skills/spider-engine/SKILL.md +190 -190
  112. package/skills/system-observability/SKILL.md +238 -238
  113. package/skills/system-observability/references/memory-incident-triage.md +70 -70
  114. package/skills/translate-engine/SKILL.md +140 -140
  115. package/skills/translate-engine/agents/openai.yaml +4 -4
  116. package/skills/ui-design/SKILL.md +191 -191
  117. package/skills/ui-design/assets/templates/MCI-DESIGN.md +198 -198
  118. package/skills/ui-design/references/design-pattern-library.md +184 -184
  119. package/skills/ui-design/references/mci-design-contract.md +163 -163
  120. package/skills/ui-design/references/progressive-01-/351/242/234/350/211/262/344/275/223/347/263/273-css-variables-/346/224/257/346/214/201/344/270/273/351/242/230/345/210/207/346/215/242.md +218 -218
  121. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +137 -137
  122. package/skills/ui-design/references/progressive-03-/345/212/250/346/225/210/350/247/204/350/214/203-/344/270/260/345/257/214/344/275/206/344/270/215/345/215/241.md +235 -235
  123. package/skills/ui-design/references/progressive-04-/347/273/204/344/273/266/351/243/216/346/240/274/351/200/237/346/237/245.md +152 -152
  124. package/skills/ui-design/references/progressive-05-/347/247/273/345/212/250/347/253/257/344/270/223/347/224/250/350/247/204/350/214/203.md +238 -238
  125. package/skills/ui-design/references/progressive-06-/344/270/273/351/242/230/345/210/207/346/215/242/345/256/236/347/216/260.md +194 -194
  126. package/skills/ui-design/references/progressive-07-/351/200/237/346/237/245-/344/273/216/345/244/264/346/220/255/345/273/272/344/270/200/344/270/252/347/247/273/345/212/250/347/253/257/351/241/265/351/235/242.md +207 -207
  127. package/skills/ui-design/references/progressive-08-/350/241/250/345/215/225/345/210/206/347/273/204/350/247/204/350/214/203-tabs-vs-collapsegroup-/345/274/272/345/210/266.md +117 -117
  128. package/skills/uniapp-mall-assets/SKILL.md +176 -176
  129. package/skills/unity-integration/SKILL.md +155 -155
  130. package/skills/unity-integration/agents/openai.yaml +4 -4
  131. package/skills/unity-integration/references/ai-app-delivery.md +103 -103
  132. package/skills/unity-integration/references/sdk-api.md +82 -82
  133. package/skills/unity-integration/references/toolbox-migration.md +66 -66
  134. package/skills/unity-integration/references/webgl-hosting.md +57 -57
  135. package/skills/v8-cache-pattern/SKILL.md +306 -306
  136. package/skills/v8-crud-api/SKILL.md +175 -175
  137. package/skills/v8-crud-api/references/progressive-01-/346/237/245/350/257/242/345/210/227/350/241/250-/345/210/206/351/241/265.md +226 -226
  138. package/skills/v8-crud-api/references/progressive-02-where-/346/235/241/344/273/266/350/257/255/346/263/225/351/200/237/346/237/245.md +49 -49
  139. package/skills/v8-debugging/SKILL.md +284 -284
  140. package/skills/v8-explorer-tree/SKILL.md +228 -228
  141. package/skills/v8-export-import/SKILL.md +209 -209
  142. package/skills/v8-export-import/references/progressive-01-excellayout-/351/253/230/347/272/247/350/207/252/347/224/261/345/270/203/345/261/200.md +211 -211
  143. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
  144. package/skills/v8-export-import/references/progressive-03-/345/256/211/345/205/250-/346/200/247/350/203/275/346/263/250/346/204/217.md +42 -42
  145. package/skills/v8-file-upload/SKILL.md +256 -263
  146. package/skills/v8-file-upload/references/progressive-01-/345/205/254/346/234/211/346/241/266-vs-/347/247/201/346/234/211/346/241/266.md +101 -101
  147. package/skills/v8-file-upload/references/progressive-02-office-/346/226/207/344/273/266/345/234/250/347/272/277/347/274/226/350/276/221/347/211/210/346/234/254/345/217/267/350/247/204/345/210/231.md +150 -150
  148. package/skills/v8-formengine-http/SKILL.md +219 -219
  149. package/skills/v8-frontend-events/SKILL.md +178 -178
  150. package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
  151. package/skills/v8-frontend-events/references/bluetooth-print.md +246 -246
  152. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
  153. package/skills/v8-http-integration/SKILL.md +182 -182
  154. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
  155. package/skills/v8-http-integration/references/progressive-02-/351/224/231/350/257/257/345/244/204/347/220/206/346/250/241/345/274/217.md +44 -44
  156. package/skills/v8-image-processing/SKILL.md +190 -190
  157. package/skills/v8-image-processing/agents/openai.yaml +4 -4
  158. package/skills/v8-image-processing/references/api-reference.md +623 -623
  159. package/skills/v8-menu-buttons/SKILL.md +180 -180
  160. package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +222 -222
  161. package/skills/v8-menu-buttons/references/progressive-02-8-/346/250/241/345/274/217-f-/345/220/216/345/217/260/344/273/273/345/212/241/346/214/211/351/222/256-/351/225/277/344/273/273/345/212/241.md +228 -228
  162. package/skills/v8-menu-buttons/references/progressive-03-10-/345/217/215/346/250/241/345/274/217-/351/201/277/345/205/215.md +104 -104
  163. package/skills/v8-mongodb/SKILL.md +192 -192
  164. package/skills/v8-mq-mqtt/SKILL.md +175 -176
  165. package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
  166. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
  167. package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
  168. package/skills/v8-saas-multi-tenant/SKILL.md +219 -219
  169. package/skills/v8-security/SKILL.md +168 -168
  170. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +198 -198
  171. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +158 -158
  172. package/skills/v8-sql-query/SKILL.md +302 -302
  173. package/skills/v8-table-event/SKILL.md +144 -144
  174. package/skills/v8-table-event/references/progressive-01-informv8-js-/350/241/250/345/215/225/346/211/223/345/274/200/344/272/213/344/273/266.md +197 -197
  175. package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +46 -46
  176. package/skills/v8-tcp-integration/SKILL.md +147 -147
  177. package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
  178. package/skills/v8-template-engine/SKILL.md +167 -167
  179. package/skills/v8-utilities/SKILL.md +90 -90
  180. package/skills/v8-utilities/references/client-api-index.md +143 -143
  181. package/skills/v8-utilities/references/platform-http-routes.md +83 -83
  182. package/skills/v8-utilities/references/server-api-index.md +188 -188
  183. package/skills/v8-workflow/SKILL.md +216 -243
  184. package/skills/v8-workflow/references/progressive-01-/350/212/202/347/202/271/345/274/200/345/247/213-v8-/344/272/213/344/273/266.md +180 -180
  185. package/skills/vision-engine/SKILL.md +159 -159
  186. package/skills/vision-engine/agents/openai.yaml +4 -4
  187. package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
  188. package/skills/workspace-conventions/SKILL.md +261 -261
  189. package/skills/workspace-conventions/references/progressive-01-/347/211/210/346/234/254/346/233/264/346/226/260/346/227/245/345/277/227/344/277/235/346/212/244/350/247/204/345/210/231-/345/274/272/345/210/266.md +208 -208
  190. package/skills/workspace-conventions/references/progressive-02-microi-net-api-/346/234/254/345/234/260/345/220/257/345/212/250/347/272/246/345/256/232.md +216 -216
  191. package/skills/workspace-conventions/references/progressive-03-cli-/344/270/216-ide-/346/217/222/344/273/266/351/224/231/347/211/210/345/205/261/345/255/230/347/272/246/345/256/232.md +27 -27
@@ -1,160 +1,160 @@
1
- ---
2
- name: vision-engine
3
- description: 设计、实现、配置、扩展和验收视觉引擎能力。处理 Microi.Vision、V8.Vision、ONNX Runtime、图片或视频帧、商品或物体样本库优先匹配、平台 AI 异步回退、人脸特征与关注人员合规、platform-vision-runtime、microi-vision 前端微服务和应用商城交付时使用。
4
- ---
5
-
6
- > **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
7
-
8
- # 视觉引擎
9
-
10
- ## 先读取相关规范
11
-
12
- - 涉及完整表、字段、菜单和权限交付时,读取 `../microi-system-delivery/SKILL.md`。
13
- - 涉及接口引擎业务逻辑时,读取 `../v8-crud-api/SKILL.md` 与 `../v8-api-config/SKILL.md`。
14
- - 涉及图片上传、私有 HDFS 或保留清理时,读取 `../v8-file-upload/SKILL.md`。
15
- - 涉及 AI 回退时,读取 `../ai-engine/SKILL.md`;涉及持久异步任务时读取 `../job-engine/SKILL.md`。
16
- - 涉及人脸、关注人员、日志、租户或特征向量时,读取 `../v8-security/SKILL.md` 与 `../v8-saas-multi-tenant/SKILL.md`。
17
- - 涉及全新工作台时,读取 `../microi-microservice/SKILL.md`、`../microi-frontend-sdk/SKILL.md`、`../ui-design/SKILL.md` 与 `../playwright-e2e/SKILL.md`。
18
- - 涉及官方应用包时,读取 `../app-store/SKILL.md`。
19
-
20
- ## 固定架构
21
-
22
- 用户可见的应用、菜单、页面和文档标题统一使用中性名称“视觉引擎”;`Microi.Vision`、`V8.Vision` 和 `microi-vision` 仅作为程序集、API 与 AppKey 等技术标识,不得把“Microi 视觉识别”作为租户界面的固定品牌名称。
23
-
24
- Microi.Vision 是可信 .NET 宿主中的最小视觉原子层,只负责:
25
-
26
- 1. 有界 JPEG/PNG/WebP 解码;
27
- 2. 只从受控模型目录按 `ModelKey` 加载 `model.json + *.onnx`;
28
- 3. 校验模型路径、大小、任务类型、输入参数和 SHA-256;
29
- 4. 用 ONNX Runtime 执行检测、分割、Embedding/FaceEmbedding,并按已安装运行库选择 CPU、CUDA、TensorRT、OpenVINO 或 DirectML;
30
- 5. 对检测框做人脸五点对齐或对象裁剪,归一化向量并执行 HNSW 近邻检索;
31
- 6. 提供 IoU 目标跟踪、连续帧投票和有界帧流入口。
32
-
33
- 商品/人员表、样本查询、阈值、状态机、AI 回退、业务日志和租户 Hook 必须留在接口引擎。不能把这些逻辑搬入 C# Controller/Service,也不能让 V8 指定模型路径、执行提供程序、Endpoint、API Key、摄像头凭据或其它 OsClient。
34
-
35
- 固定组件:
36
-
37
- | 组件 | 策略 | 职责 |
38
- |---|---|---|
39
- | `platform-vision-runtime` | `Managed` | Recognize/Enroll/Result/Recent/Correct/Bootstrap/Capabilities |
40
- | `platform-vision-ai-worker` | `Managed` | 持久任务消费、Microi.AI 视觉调用、回写与敏感图片清理 |
41
- | `platform-vision-category-options` | `Managed` | 当前租户启用分类选项 |
42
- | `platform-vision-subject-options` | `Managed` | 当前租户启用对象选项 |
43
- | `platform-vision-custom-hook` | `CreateIfMissing` | 租户自己的低敏业务扩展,官方升级永不覆盖 |
44
- | `microi-vision/workbench` | MicroService | 图片、摄像头帧、连续模式、来源阶段、最近记录、纠错与样本录入 |
45
-
46
- 详细数据、状态、协议和验收规范见 [architecture-and-acceptance.md](references/architecture-and-acceptance.md)。
47
-
48
- ## 数据库优先,AI 异步回退
49
-
50
- 识别顺序不可颠倒:
51
-
52
- 1. 生成稳定 `RequestId`,先按 `RequestNo` 做幂等读取;
53
- 2. 用当前策略的 `PipelineKey/ModelKey` 调用 `V8.Vision.Analyze`,先检测/分割,再对每个目标生成特征;
54
- 3. 只查询当前租户 `Status=Ready`、`Mode` 和 `ModelKey` 一致的样本;
55
- 4. 解保护候选向量,调用 `V8.Vision.Search` 执行 HNSW 近邻检索;
56
- 5. 连续视频调用 `V8.Vision.Stabilize` 做会话级投票;达阈值返回 `Status=LocalMatched, MatchSource=Database`;
57
- 6. 未达阈值且 AI 关闭,返回 `Status=Unmatched, MatchSource=None`;
58
- 7. AI 开启时先保存私有输入并创建共享后台任务,立即返回 `Status=AiPending`;
59
- 8. Worker 收敛到 `AiMatched` 或 `Failed`,前端用同一 `RequestNo` 轮询。
60
-
61
- 不得同步阻塞前端等待大模型,不得把 AI 结果自动写入可信对象主数据,也不得把本地相似度与 AI 置信度混成一个分数。生鲜的冰冻状态、新鲜度、预估价格/单位/币种也必须按字段保存 `Database/AI/Manual` 来源:样本或对象主数据优先,只有数据库未命中后才允许 AI 推断;AI 价格只是非约束估计,不能直接覆盖门店售价。
62
-
63
- 历史记录纠错使用 `Correct` 动作:只允许绑定当前租户中启用且模式兼容的对象,记录原标签、原来源、修正人、时间和原因;选择 `SaveAsSample` 时通过来源 `RequestNo` 做幂等录入。AI 结果不得自动加入 `Ready` 样本,必须由有权限的用户明确确认。`Recent/Result` 只返回 `HasImage` 与后端生成的短期授权 URL,禁止把 `InputFilePath`、图片 Base64 或永久公开地址交给浏览器。
64
-
65
- ## V8 原子函数
66
-
67
- ```js
68
- var analyzed = await V8.Vision.Analyze({
69
- FileByteBase64: V8.FilesByteBase64['frame'],
70
- FileName: 'frame.jpg',
71
- PipelineKey: 'general-yolox-dinov2-v1',
72
- Mode: 'General',
73
- FrameId: 'camera-01-000123',
74
- StreamSessionId: 'scale-01-session-42',
75
- FrameSequence: 123
76
- });
77
-
78
- var ranked = await V8.Vision.Search({
79
- QueryEmbeddingBase64: analyzed.Data.Detections[0].EmbeddingBase64,
80
- Candidates: candidates,
81
- Threshold: 0.82,
82
- TopK: 5,
83
- EfSearch: 80,
84
- IndexKey: 'ready-general-samples'
85
- });
86
-
87
- var voted = await V8.Vision.Stabilize({
88
- StreamSessionId: 'scale-01-session-42',
89
- FrameId: 'camera-01-000123',
90
- Key: ranked.Data.Matches.length ? ranked.Data.Matches[0].Key : '__unmatched__',
91
- Confidence: ranked.Data.Matches.length ? ranked.Data.Matches[0].Similarity : 0,
92
- WindowSize: 5,
93
- MinimumVotes: 3
94
- });
95
- ```
96
-
1
+ ---
2
+ name: vision-engine
3
+ description: 设计、实现、配置、扩展和验收视觉引擎能力。处理 Microi.Vision、V8.Vision、ONNX Runtime、图片或视频帧、商品或物体样本库优先匹配、平台 AI 异步回退、人脸特征与关注人员合规、platform-vision-runtime、microi-vision 前端微服务和应用商城交付时使用。
4
+ ---
5
+
6
+ > **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
7
+
8
+ # 视觉引擎
9
+
10
+ ## 先读取相关规范
11
+
12
+ - 涉及完整表、字段、菜单和权限交付时,读取 `../microi-system-delivery/SKILL.md`。
13
+ - 涉及接口引擎业务逻辑时,读取 `../v8-crud-api/SKILL.md` 与 `../v8-api-config/SKILL.md`。
14
+ - 涉及图片上传、私有 HDFS 或保留清理时,读取 `../v8-file-upload/SKILL.md`。
15
+ - 涉及 AI 回退时,读取 `../ai-engine/SKILL.md`;涉及持久异步任务时读取 `../job-engine/SKILL.md`。
16
+ - 涉及人脸、关注人员、日志、租户或特征向量时,读取 `../v8-security/SKILL.md` 与 `../v8-saas-multi-tenant/SKILL.md`。
17
+ - 涉及全新工作台时,读取 `../microi-microservice/SKILL.md`、`../microi-frontend-sdk/SKILL.md`、`../ui-design/SKILL.md` 与 `../playwright-e2e/SKILL.md`。
18
+ - 涉及官方应用包时,读取 `../app-store/SKILL.md`。
19
+
20
+ ## 固定架构
21
+
22
+ 用户可见的应用、菜单、页面和文档标题统一使用中性名称“视觉引擎”;`Microi.Vision`、`V8.Vision` 和 `microi-vision` 仅作为程序集、API 与 AppKey 等技术标识,不得把“Microi 视觉识别”作为租户界面的固定品牌名称。
23
+
24
+ Microi.Vision 是可信 .NET 宿主中的最小视觉原子层,只负责:
25
+
26
+ 1. 有界 JPEG/PNG/WebP 解码;
27
+ 2. 只从受控模型目录按 `ModelKey` 加载 `model.json + *.onnx`;
28
+ 3. 校验模型路径、大小、任务类型、输入参数和 SHA-256;
29
+ 4. 用 ONNX Runtime 执行检测、分割、Embedding/FaceEmbedding,并按已安装运行库选择 CPU、CUDA、TensorRT、OpenVINO 或 DirectML;
30
+ 5. 对检测框做人脸五点对齐或对象裁剪,归一化向量并执行 HNSW 近邻检索;
31
+ 6. 提供 IoU 目标跟踪、连续帧投票和有界帧流入口。
32
+
33
+ 商品/人员表、样本查询、阈值、状态机、AI 回退、业务日志和租户 Hook 必须留在接口引擎。不能把这些逻辑搬入 C# Controller/Service,也不能让 V8 指定模型路径、执行提供程序、Endpoint、API Key、摄像头凭据或其它 OsClient。
34
+
35
+ 固定组件:
36
+
37
+ | 组件 | 策略 | 职责 |
38
+ |---|---|---|
39
+ | `platform-vision-runtime` | `Managed` | Recognize/Enroll/Result/Recent/Correct/Bootstrap/Capabilities |
40
+ | `platform-vision-ai-worker` | `Managed` | 持久任务消费、Microi.AI 视觉调用、回写与敏感图片清理 |
41
+ | `platform-vision-category-options` | `Managed` | 当前租户启用分类选项 |
42
+ | `platform-vision-subject-options` | `Managed` | 当前租户启用对象选项 |
43
+ | `platform-vision-custom-hook` | `CreateIfMissing` | 租户自己的低敏业务扩展,官方升级永不覆盖 |
44
+ | `microi-vision/workbench` | MicroService | 图片、摄像头帧、连续模式、来源阶段、最近记录、纠错与样本录入 |
45
+
46
+ 详细数据、状态、协议和验收规范见 [architecture-and-acceptance.md](references/architecture-and-acceptance.md)。
47
+
48
+ ## 数据库优先,AI 异步回退
49
+
50
+ 识别顺序不可颠倒:
51
+
52
+ 1. 生成稳定 `RequestId`,先按 `RequestNo` 做幂等读取;
53
+ 2. 用当前策略的 `PipelineKey/ModelKey` 调用 `V8.Vision.Analyze`,先检测/分割,再对每个目标生成特征;
54
+ 3. 只查询当前租户 `Status=Ready`、`Mode` 和 `ModelKey` 一致的样本;
55
+ 4. 解保护候选向量,调用 `V8.Vision.Search` 执行 HNSW 近邻检索;
56
+ 5. 连续视频调用 `V8.Vision.Stabilize` 做会话级投票;达阈值返回 `Status=LocalMatched, MatchSource=Database`;
57
+ 6. 未达阈值且 AI 关闭,返回 `Status=Unmatched, MatchSource=None`;
58
+ 7. AI 开启时先保存私有输入并创建共享后台任务,立即返回 `Status=AiPending`;
59
+ 8. Worker 收敛到 `AiMatched` 或 `Failed`,前端用同一 `RequestNo` 轮询。
60
+
61
+ 不得同步阻塞前端等待大模型,不得把 AI 结果自动写入可信对象主数据,也不得把本地相似度与 AI 置信度混成一个分数。生鲜的冰冻状态、新鲜度、预估价格/单位/币种也必须按字段保存 `Database/AI/Manual` 来源:样本或对象主数据优先,只有数据库未命中后才允许 AI 推断;AI 价格只是非约束估计,不能直接覆盖门店售价。
62
+
63
+ 历史记录纠错使用 `Correct` 动作:只允许绑定当前租户中启用且模式兼容的对象,记录原标签、原来源、修正人、时间和原因;选择 `SaveAsSample` 时通过来源 `RequestNo` 做幂等录入。AI 结果不得自动加入 `Ready` 样本,必须由有权限的用户明确确认。`Recent/Result` 只返回 `HasImage` 与后端生成的短期授权 URL,禁止把 `InputFilePath`、图片 Base64 或永久公开地址交给浏览器。
64
+
65
+ ## V8 原子函数
66
+
67
+ ```js
68
+ var analyzed = await V8.Vision.Analyze({
69
+ FileByteBase64: V8.FilesByteBase64['frame'],
70
+ FileName: 'frame.jpg',
71
+ PipelineKey: 'general-yolox-dinov2-v1',
72
+ Mode: 'General',
73
+ FrameId: 'camera-01-000123',
74
+ StreamSessionId: 'scale-01-session-42',
75
+ FrameSequence: 123
76
+ });
77
+
78
+ var ranked = await V8.Vision.Search({
79
+ QueryEmbeddingBase64: analyzed.Data.Detections[0].EmbeddingBase64,
80
+ Candidates: candidates,
81
+ Threshold: 0.82,
82
+ TopK: 5,
83
+ EfSearch: 80,
84
+ IndexKey: 'ready-general-samples'
85
+ });
86
+
87
+ var voted = await V8.Vision.Stabilize({
88
+ StreamSessionId: 'scale-01-session-42',
89
+ FrameId: 'camera-01-000123',
90
+ Key: ranked.Data.Matches.length ? ranked.Data.Matches[0].Key : '__unmatched__',
91
+ Confidence: ranked.Data.Matches.length ? ranked.Data.Matches[0].Similarity : 0,
92
+ WindowSize: 5,
93
+ MinimumVotes: 3
94
+ });
95
+ ```
96
+
97
97
  主流流水线方法:`V8.Vision.Analyze`、`V8.Vision.Search`、`V8.Vision.Stabilize`;兼容原子方法:`V8.Vision.Extract`、`V8.Vision.ExtractBatch`、`V8.Vision.Compare`、`V8.Vision.CompareBatch`、`V8.Vision.GetCapabilities`。业务入口优先使用 `V8.ApiEngine.Run('platform-vision-runtime', ...)`,不要把向量返回给普通浏览器或日志。
98
-
99
- ## 模型与准确率门禁
100
-
101
- - 默认 `builtin-visual-fingerprint-v1` 只是相同/近似样图指纹,不能称为语义分类器或人脸模型。
102
- - 内核已经实现 YOLOv8/YOLOX/RT-DETR/SCRFD 常见 ONNX 输出适配、DINOv2/DINOv3/SigLIP2 类嵌入、ArcFace 类人脸嵌入、HNSW、IoU 跟踪和连续帧投票;生产结果取决于实际安装的受控模型包与门店数据,不得把“已兼容”写成“模型准确率已通过”。
103
- - 模型代码许可证、权重许可证、训练数据限制和商用授权必须分别核对;`model.json` 的 `License` 字段不是法律结论。
104
- - 每个模型包固定版本、输入尺寸、RGB/BGR、Mean/Std、池化、来源、许可证和 SHA-256;不允许浮动 URL 在线下载后直接加载。
105
- - 模型必须在目标 CPU/GPU、真实镜头、光照、角度和包装变化下建立标注集,测 Top-1/Top-K、误接受率、误拒绝率、P50/P95/P99、内存和人工复核率。
106
- - 没有真实模型包与标注结果时,只能说“平台接入完成/指纹联调通过”,不能说“商品或人脸识别准确率通过”。
107
- - ONNX Runtime 是主流部署运行时,但运行时主流不等于所装模型第一梯队;未测真实标注集与目标硬件 P50/P95/P99 前,不得宣称准确率或速度第一梯队。
108
-
109
- ## 人脸与关注人员强制边界
110
-
111
- - 录入、识别、留存和共享生物特征前必须有合法依据、告知/同意、用途限制、访问控制和删除流程。
112
- - 工作台 Face 模式必须要求本次明确同意;前端门禁不能替代后端校验。
113
- - 人脸模板和请求按当前租户隔离;向量使用绑定租户和接口引擎的保护能力保存,列表/Hook/普通日志不返回正文。
114
- - 默认 `RetainFaceInput=0`;AI Worker 无论成功失败都清理临时图片。
115
- - 数据库未命中时,大模型只能描述中性可见事实,不得猜姓名、罪犯身份、族群、健康、政治等敏感属性。
116
- - “罪犯/关注人员”命中仅是人工复核线索,不能单独触发抓捕、处罚、解雇、拒绝服务或身份认证。
117
- - 身份认证仍使用 DiyToken、Passkey/严格人脸一次性票据和原有权限体系;视觉相似度不能替代登录或强身份验证。
118
-
119
- ## 视频入口
120
-
121
- 前端使用 `getUserMedia` 并按 `FrameIntervalMs` 取帧,必须提供开启、暂停、继续、立即识别当前帧和关闭操作;每次打开摄像头生成新的 `StreamSessionId`,每帧递增 `FrameSequence`。自动连续模式允许跳过相同画面,人工主按钮必须显式绕过前端去重以提交当前帧。可信边缘宿主将 RTSP/WebRTC 解码为 `IAsyncEnumerable<MicroiVisionExtractParam>` 后调用 `RecognizeFramesAsync`。Microi.Vision 不直接连接调用方提交的 RTSP URL,不保存摄像头账号,不承担流媒体服务器职责。
122
-
123
- 打开摄像头、`getUserMedia`、`video.play()`、关闭和组件卸载之间必须使用递增操作令牌或等价取消机制。关闭时先同步写入关闭态并使旧操作失效,再停止轨道和清空 `srcObject`;不能等待媒体清理完成后才改 UI,否则快速关闭会被较早的异步打开流程反向覆盖。移动控件或条件渲染按钮可在 `pointerdown` 立即执行停止语义,并对随后 `click` 做短时去重,防止 DOM 重排吞掉关闭操作。
124
-
125
- 连续帧必须有:最大图片大小、最小间隔、单客户端串行、取消/停止、RequestId 幂等、网络退避和后台任务去重。不能每个视频帧都无界调用大模型。接口返回 `AiPending` 后,前端必须进入 single-flight 状态:暂停提交新帧,只轮询当前 `RequestId`,直到 `AiMatched/AiFailed/Unmatched`、超时或用户取消后才允许下一帧;禁止并行创建多个 AI 任务。
126
-
127
- 跨版本接口字段必须在协议边界归一化。连续稳定结果至少兼容 `.NET` 原子常用的 `VoteCount/WindowCount/AverageConfidence` 与历史接口的 `Votes/WindowSize/Confidence`,前端只读取归一化 DTO,任何真实响应都不得展示 `undefined/undefined`。
128
-
129
- 手机收银/巡检工作台属于高频全屏操作面:在宿主提供的可用高度内同时露出取景区、主要识别按钮、当前状态、核心结果和“最近识别”入口,不依赖页面纵向滚动才能完成一次识别;竖屏按采集/结果/最近记录三段紧凑分配,短横屏改为三列,且不得改变已验收的桌面布局。历史列表可以成为卡片内部的唯一滚动区。相机权限拒绝、数据库匹配中、数据库未命中、AI 等待、终态结果和恢复操作都要在当前视口可见,平台底部菜单和安全区不得遮挡按钮。
130
-
131
- 桌面工作台使用宿主可用宽度,不再用固定窄版 `max-width`;采集、结果、最近记录同屏三栏。预览使用有界容器和 `object-fit: contain`,上传竖图或打开摄像头不能撑高整个页面。不要同时提供语义重复的底部“再次识别当前画面”和主操作按钮;保留一个清晰的“立即识别”,连续模式另提供暂停/继续。
132
-
133
- ## 交付顺序
134
-
135
- 1. 更新并测试 Microi.Vision、V8 注入与 API DI;
136
- 2. 用 MCP `microi_plan_system` 做 dry run,再生成并 `microi_validate_system`;
137
- 3. 同步私有微服务源码,构建后按 V3 stage/finalize 发布公开产物并回读;
138
- 4. 写入默认分类/策略,按业务 Key 先查后写;
139
- 5. 发布框架 NuGet/Docker,使目标运行时实际包含 `V8.Vision`;
140
- 6. 通过官方应用发布引擎生成商城包,明确 `Managed/CreateIfMissing`,回读包 SHA 和不可变版本;
141
- 7. 在目标租户安装/更新后做真实浏览器、接口、后台任务和模型测试;
142
- 8. 分别报告源码、包、制品、部署、浏览器、模型准确率和物理摄像头边界。
143
-
144
- `Microi.Vision` 必须作为独立闭源仓维护:`Microi.Anderson.sln` 使用 `ProjectReference`,公开 `Microi.net.sln` 只能使用同版本 NuGet;一键发布必须像 `Microi.AI`、`Microi.WorkFlow` 一样对 DLL 执行 Obfuscar、回写 nupkg,并以加密前后哈希变化及 `.microi-encrypted` 清单为门禁。模型权重继续独立分发,不进入 NuGet。
145
-
146
- ## 禁止事项
147
-
148
- - 禁止用 HTTP 200、构建成功、Mock UI、同一图片命中代替真实商品/人脸准确率。
149
- - 禁止把大模型标签伪装成数据库命中或权威身份。
150
- - 禁止把 AI 新鲜度、冰冻状态或估价伪装成传感器、检疫、食品安全结论或正式售价。
151
- - 禁止把历史识别的原始私有文件路径或永久公开 URL 返回前端,也禁止未经人工确认把 AI 结果自动沉淀为可信样本。
152
- - 禁止在接口参数中接受模型目录、任意本地路径、任意网络地址或执行提供程序。
153
- - 禁止把图片 Base64、原始人脸、向量、提示词、AI Key 写入 Hook 或普通日志。
154
- - 禁止用进程内队列、`static` 字典或本地文件作为 AI 任务完成事实源。
155
- - 禁止在应用升级时覆盖 `platform-vision-custom-hook`。
156
- - 禁止只发布商城包却宣称旧平台运行时已经具备 `V8.Vision`。
157
-
158
- ## 验收输出
159
-
160
- 最终报告至少分开列出:源码测试、5 表/字段/索引、7 菜单、5 引擎/4 事件、微服务源码与构建哈希、商城包与版本、框架制品、目标节点版本、真实浏览器、PC/手机横竖屏布局、历史图片与纠错、真实图片素材来源、数据库命中、AI 回退、生鲜属性/价格来源、人脸同意、模型准确率和未执行的物理设备测试。
98
+
99
+ ## 模型与准确率门禁
100
+
101
+ - 默认 `builtin-visual-fingerprint-v1` 只是相同/近似样图指纹,不能称为语义分类器或人脸模型。
102
+ - 内核已经实现 YOLOv8/YOLOX/RT-DETR/SCRFD 常见 ONNX 输出适配、DINOv2/DINOv3/SigLIP2 类嵌入、ArcFace 类人脸嵌入、HNSW、IoU 跟踪和连续帧投票;生产结果取决于实际安装的受控模型包与门店数据,不得把“已兼容”写成“模型准确率已通过”。
103
+ - 模型代码许可证、权重许可证、训练数据限制和商用授权必须分别核对;`model.json` 的 `License` 字段不是法律结论。
104
+ - 每个模型包固定版本、输入尺寸、RGB/BGR、Mean/Std、池化、来源、许可证和 SHA-256;不允许浮动 URL 在线下载后直接加载。
105
+ - 模型必须在目标 CPU/GPU、真实镜头、光照、角度和包装变化下建立标注集,测 Top-1/Top-K、误接受率、误拒绝率、P50/P95/P99、内存和人工复核率。
106
+ - 没有真实模型包与标注结果时,只能说“平台接入完成/指纹联调通过”,不能说“商品或人脸识别准确率通过”。
107
+ - ONNX Runtime 是主流部署运行时,但运行时主流不等于所装模型第一梯队;未测真实标注集与目标硬件 P50/P95/P99 前,不得宣称准确率或速度第一梯队。
108
+
109
+ ## 人脸与关注人员强制边界
110
+
111
+ - 录入、识别、留存和共享生物特征前必须有合法依据、告知/同意、用途限制、访问控制和删除流程。
112
+ - 工作台 Face 模式必须要求本次明确同意;前端门禁不能替代后端校验。
113
+ - 人脸模板和请求按当前租户隔离;向量使用绑定租户和接口引擎的保护能力保存,列表/Hook/普通日志不返回正文。
114
+ - 默认 `RetainFaceInput=0`;AI Worker 无论成功失败都清理临时图片。
115
+ - 数据库未命中时,大模型只能描述中性可见事实,不得猜姓名、罪犯身份、族群、健康、政治等敏感属性。
116
+ - “罪犯/关注人员”命中仅是人工复核线索,不能单独触发抓捕、处罚、解雇、拒绝服务或身份认证。
117
+ - 身份认证仍使用 DiyToken、Passkey/严格人脸一次性票据和原有权限体系;视觉相似度不能替代登录或强身份验证。
118
+
119
+ ## 视频入口
120
+
121
+ 前端使用 `getUserMedia` 并按 `FrameIntervalMs` 取帧,必须提供开启、暂停、继续、立即识别当前帧和关闭操作;每次打开摄像头生成新的 `StreamSessionId`,每帧递增 `FrameSequence`。自动连续模式允许跳过相同画面,人工主按钮必须显式绕过前端去重以提交当前帧。可信边缘宿主将 RTSP/WebRTC 解码为 `IAsyncEnumerable<MicroiVisionExtractParam>` 后调用 `RecognizeFramesAsync`。Microi.Vision 不直接连接调用方提交的 RTSP URL,不保存摄像头账号,不承担流媒体服务器职责。
122
+
123
+ 打开摄像头、`getUserMedia`、`video.play()`、关闭和组件卸载之间必须使用递增操作令牌或等价取消机制。关闭时先同步写入关闭态并使旧操作失效,再停止轨道和清空 `srcObject`;不能等待媒体清理完成后才改 UI,否则快速关闭会被较早的异步打开流程反向覆盖。移动控件或条件渲染按钮可在 `pointerdown` 立即执行停止语义,并对随后 `click` 做短时去重,防止 DOM 重排吞掉关闭操作。
124
+
125
+ 连续帧必须有:最大图片大小、最小间隔、单客户端串行、取消/停止、RequestId 幂等、网络退避和后台任务去重。不能每个视频帧都无界调用大模型。接口返回 `AiPending` 后,前端必须进入 single-flight 状态:暂停提交新帧,只轮询当前 `RequestId`,直到 `AiMatched/AiFailed/Unmatched`、超时或用户取消后才允许下一帧;禁止并行创建多个 AI 任务。
126
+
127
+ 跨版本接口字段必须在协议边界归一化。连续稳定结果至少兼容 `.NET` 原子常用的 `VoteCount/WindowCount/AverageConfidence` 与历史接口的 `Votes/WindowSize/Confidence`,前端只读取归一化 DTO,任何真实响应都不得展示 `undefined/undefined`。
128
+
129
+ 手机收银/巡检工作台属于高频全屏操作面:在宿主提供的可用高度内同时露出取景区、主要识别按钮、当前状态、核心结果和“最近识别”入口,不依赖页面纵向滚动才能完成一次识别;竖屏按采集/结果/最近记录三段紧凑分配,短横屏改为三列,且不得改变已验收的桌面布局。历史列表可以成为卡片内部的唯一滚动区。相机权限拒绝、数据库匹配中、数据库未命中、AI 等待、终态结果和恢复操作都要在当前视口可见,平台底部菜单和安全区不得遮挡按钮。
130
+
131
+ 桌面工作台使用宿主可用宽度,不再用固定窄版 `max-width`;采集、结果、最近记录同屏三栏。预览使用有界容器和 `object-fit: contain`,上传竖图或打开摄像头不能撑高整个页面。不要同时提供语义重复的底部“再次识别当前画面”和主操作按钮;保留一个清晰的“立即识别”,连续模式另提供暂停/继续。
132
+
133
+ ## 交付顺序
134
+
135
+ 1. 更新并测试 Microi.Vision、V8 注入与 API DI;
136
+ 2. 用 MCP `microi_plan_system` 做 dry run,再生成并 `microi_validate_system`;
137
+ 3. 同步私有微服务源码,构建后按 V3 stage/finalize 发布公开产物并回读;
138
+ 4. 写入默认分类/策略,按业务 Key 先查后写;
139
+ 5. 发布框架 NuGet/Docker,使目标运行时实际包含 `V8.Vision`;
140
+ 6. 通过官方应用发布引擎生成商城包,明确 `Managed/CreateIfMissing`,回读包 SHA 和不可变版本;
141
+ 7. 在目标租户安装/更新后做真实浏览器、接口、后台任务和模型测试;
142
+ 8. 分别报告源码、包、制品、部署、浏览器、模型准确率和物理摄像头边界。
143
+
144
+ `Microi.Vision` 必须作为独立闭源仓维护:`Microi.Anderson.sln` 使用 `ProjectReference`,公开 `Microi.net.sln` 只能使用同版本 NuGet;一键发布必须像 `Microi.AI`、`Microi.WorkFlow` 一样对 DLL 执行 Obfuscar、回写 nupkg,并以加密前后哈希变化及 `.microi-encrypted` 清单为门禁。模型权重继续独立分发,不进入 NuGet。
145
+
146
+ ## 禁止事项
147
+
148
+ - 禁止用 HTTP 200、构建成功、Mock UI、同一图片命中代替真实商品/人脸准确率。
149
+ - 禁止把大模型标签伪装成数据库命中或权威身份。
150
+ - 禁止把 AI 新鲜度、冰冻状态或估价伪装成传感器、检疫、食品安全结论或正式售价。
151
+ - 禁止把历史识别的原始私有文件路径或永久公开 URL 返回前端,也禁止未经人工确认把 AI 结果自动沉淀为可信样本。
152
+ - 禁止在接口参数中接受模型目录、任意本地路径、任意网络地址或执行提供程序。
153
+ - 禁止把图片 Base64、原始人脸、向量、提示词、AI Key 写入 Hook 或普通日志。
154
+ - 禁止用进程内队列、`static` 字典或本地文件作为 AI 任务完成事实源。
155
+ - 禁止在应用升级时覆盖 `platform-vision-custom-hook`。
156
+ - 禁止只发布商城包却宣称旧平台运行时已经具备 `V8.Vision`。
157
+
158
+ ## 验收输出
159
+
160
+ 最终报告至少分开列出:源码测试、5 表/字段/索引、7 菜单、5 引擎/4 事件、微服务源码与构建哈希、商城包与版本、框架制品、目标节点版本、真实浏览器、PC/手机横竖屏布局、历史图片与纠错、真实图片素材来源、数据库命中、AI 回退、生鲜属性/价格来源、人脸同意、模型准确率和未执行的物理设备测试。
@@ -1,4 +1,4 @@
1
- interface:
2
- display_name: "视觉引擎"
3
- short_description: "构建与验收数据库优先、AI回退的通用视觉识别"
4
- default_prompt: "Use $vision-engine to build and validate tenant-isolated Microi.Vision workflows."
1
+ interface:
2
+ display_name: "视觉引擎"
3
+ short_description: "构建与验收数据库优先、AI回退的通用视觉识别"
4
+ default_prompt: "Use $vision-engine to build and validate tenant-isolated Microi.Vision workflows."