@microi.net/cli 5.8.5 → 5.8.7

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 (208) 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 +7 -7
  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 +1 -1
  15. package/scripts/microi-cli.js +66 -65
  16. package/scripts/microi-codex-broker.js +450 -450
  17. package/scripts/microi-codex-router.js +618 -618
  18. package/scripts/microi-skills.meta.json +384 -384
  19. package/skills/.microi-skills-version.json +2 -2
  20. package/skills/.progressive-disclosure-manifest.json +21 -21
  21. package/skills/README.md +287 -287
  22. package/skills/ai-engine/SKILL.md +269 -265
  23. package/skills/ai-engine/agents/openai.yaml +4 -4
  24. package/skills/ai-engine/references/ai-employees.md +48 -48
  25. package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
  26. package/skills/ai-platform-governance/SKILL.md +177 -177
  27. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
  28. package/skills/app-store/SKILL.md +525 -525
  29. package/skills/app-store/agents/openai.yaml +4 -4
  30. package/skills/business-blueprint/SKILL.md +193 -193
  31. package/skills/datasource-engine/SKILL.md +93 -93
  32. package/skills/datasource-engine/agents/openai.yaml +4 -4
  33. package/skills/dos-orm/SKILL.md +97 -95
  34. package/skills/dos-orm/references/api-reference.md +229 -229
  35. package/skills/email-engine/SKILL.md +81 -81
  36. package/skills/email-engine/references/v8-email.md +34 -34
  37. package/skills/job-engine/SKILL.md +176 -176
  38. package/skills/job-engine/agents/openai.yaml +4 -4
  39. package/skills/message-notification/SKILL.md +156 -156
  40. package/skills/message-notification/agents/openai.yaml +5 -5
  41. package/skills/message-notification/references/contracts.md +102 -102
  42. package/skills/microi/SKILL.md +14 -14
  43. package/skills/microi-ai-app-auth.js +652 -652
  44. package/skills/microi-ai-application/SKILL.md +115 -115
  45. package/skills/microi-ai-application/agents/openai.yaml +4 -4
  46. package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
  47. package/skills/microi-client-frontend/SKILL.md +246 -244
  48. 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
  49. 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
  50. 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
  51. package/skills/microi-codex/SKILL.md +102 -100
  52. package/skills/microi-codex-installer/SKILL.md +231 -231
  53. package/skills/microi-codex-installer/agents/openai.yaml +7 -7
  54. package/skills/microi-datasource-mapping/SKILL.md +122 -122
  55. package/skills/microi-db-schema/SKILL.md +175 -175
  56. package/skills/microi-db-schema/agents/openai.yaml +4 -4
  57. package/skills/microi-db-schema/references/core-tables.md +695 -695
  58. package/skills/microi-db-schema/references/form-component-options.md +256 -256
  59. package/skills/microi-db-schema/references/schema-overview.md +202 -202
  60. package/skills/microi-db-schema/references/schema.md +646 -646
  61. package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
  62. package/skills/microi-deployment/SKILL.md +222 -220
  63. package/skills/microi-deployment/references/deployment-matrix.md +109 -109
  64. package/skills/microi-docs-coverage/SKILL.md +133 -133
  65. package/skills/microi-docs-coverage/references/capability-map.md +91 -91
  66. package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
  67. package/skills/microi-form-engine/SKILL.md +333 -333
  68. package/skills/microi-form-engine/references/component-catalog.md +218 -218
  69. package/skills/microi-form-engine/references/data-source-events.md +124 -124
  70. package/skills/microi-form-layout/SKILL.md +205 -205
  71. 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
  72. package/skills/microi-frontend-sdk/SKILL.md +194 -194
  73. 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
  74. package/skills/microi-left-right-layout/SKILL.md +141 -141
  75. package/skills/microi-microservice/SKILL.md +328 -326
  76. package/skills/microi-microservice/references/runtime-delivery.md +278 -278
  77. package/skills/microi-mobile-app-quality/SKILL.md +185 -185
  78. 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
  79. 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
  80. package/skills/microi-solution-quotation/SKILL.md +78 -78
  81. package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
  82. package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
  83. package/skills/microi-sso/SKILL.md +96 -90
  84. package/skills/microi-sso/references/acceptance.md +49 -49
  85. package/skills/microi-sso/references/configuration-and-security.md +53 -53
  86. package/skills/microi-sso/references/inbound.md +53 -53
  87. package/skills/microi-sso/references/outbound.md +39 -39
  88. package/skills/microi-system-delivery/SKILL.md +137 -137
  89. 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
  90. 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 +217 -217
  91. package/skills/microi-ui/SKILL.md +192 -192
  92. 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
  93. package/skills/microi-uniapp-frontend/SKILL.md +193 -193
  94. 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
  95. 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
  96. package/skills/microi.v8.js +1921 -1921
  97. package/skills/module-engine/SKILL.md +255 -255
  98. package/skills/module-engine/references/module-config.md +204 -204
  99. package/skills/ocr-engine/SKILL.md +113 -113
  100. package/skills/ocr-engine/agents/openai.yaml +4 -4
  101. package/skills/page-engine/SKILL.md +206 -206
  102. package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
  103. 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
  104. 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
  105. package/skills/performance-testing/SKILL.md +221 -221
  106. package/skills/playwright-e2e/SKILL.md +196 -196
  107. 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
  108. 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
  109. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
  110. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
  111. package/skills/print-engine/SKILL.md +259 -259
  112. package/skills/production-readonly-audit/SKILL.md +41 -41
  113. package/skills/report-engine/SKILL.md +71 -71
  114. package/skills/report-engine/agents/openai.yaml +4 -4
  115. package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
  116. package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
  117. package/skills/scripts/sync-embedded-skills.mjs +46 -46
  118. package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
  119. package/skills/search-engine/SKILL.md +75 -75
  120. package/skills/search-engine/agents/openai.yaml +4 -4
  121. package/skills/spider-engine/SKILL.md +190 -190
  122. package/skills/system-observability/SKILL.md +249 -246
  123. package/skills/system-observability/references/memory-incident-triage.md +77 -77
  124. package/skills/translate-engine/SKILL.md +140 -140
  125. package/skills/translate-engine/agents/openai.yaml +4 -4
  126. package/skills/ui-design/SKILL.md +223 -223
  127. package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
  128. package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
  129. package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
  130. package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
  131. package/skills/ui-design/references/design-pattern-library.md +184 -184
  132. package/skills/ui-design/references/mci-design-contract.md +163 -163
  133. package/skills/ui-design/references/motion-and-media.md +78 -78
  134. package/skills/ui-design/references/product-flow-recipes.md +94 -94
  135. 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
  136. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
  137. 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
  138. 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
  139. 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
  140. 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
  141. 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
  142. 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 +142 -142
  143. package/skills/uniapp-mall-assets/SKILL.md +176 -176
  144. package/skills/unity-integration/SKILL.md +171 -171
  145. package/skills/unity-integration/agents/openai.yaml +4 -4
  146. package/skills/unity-integration/references/ai-app-delivery.md +119 -119
  147. package/skills/unity-integration/references/sdk-api.md +82 -82
  148. package/skills/unity-integration/references/toolbox-migration.md +66 -66
  149. package/skills/unity-integration/references/webgl-hosting.md +57 -57
  150. package/skills/v8-api-config/SKILL.md +388 -388
  151. package/skills/v8-cache-pattern/SKILL.md +312 -312
  152. package/skills/v8-crud-api/SKILL.md +178 -178
  153. 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
  154. 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
  155. package/skills/v8-debugging/SKILL.md +284 -284
  156. package/skills/v8-explorer-tree/SKILL.md +228 -228
  157. package/skills/v8-export-import/SKILL.md +219 -219
  158. 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
  159. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
  160. 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
  161. package/skills/v8-file-upload/SKILL.md +284 -284
  162. 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 +263 -263
  163. 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 +161 -161
  164. package/skills/v8-formengine-http/SKILL.md +238 -238
  165. package/skills/v8-frontend-events/SKILL.md +180 -180
  166. package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
  167. package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
  168. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
  169. package/skills/v8-http-integration/SKILL.md +182 -182
  170. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
  171. 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
  172. package/skills/v8-image-processing/SKILL.md +190 -190
  173. package/skills/v8-image-processing/agents/openai.yaml +4 -4
  174. package/skills/v8-image-processing/references/api-reference.md +623 -623
  175. package/skills/v8-menu-buttons/SKILL.md +186 -186
  176. 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
  177. 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
  178. 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
  179. package/skills/v8-mongodb/SKILL.md +200 -200
  180. package/skills/v8-mq-mqtt/SKILL.md +176 -176
  181. package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
  182. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
  183. package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
  184. package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
  185. package/skills/v8-security/SKILL.md +210 -210
  186. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
  187. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
  188. package/skills/v8-sql-query/SKILL.md +302 -302
  189. package/skills/v8-table-event/SKILL.md +176 -176
  190. 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 +216 -216
  191. 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
  192. package/skills/v8-tcp-integration/SKILL.md +147 -147
  193. package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
  194. package/skills/v8-template-engine/SKILL.md +167 -167
  195. package/skills/v8-utilities/SKILL.md +104 -104
  196. package/skills/v8-utilities/references/client-api-index.md +143 -143
  197. package/skills/v8-utilities/references/platform-http-routes.md +83 -83
  198. package/skills/v8-utilities/references/server-api-index.md +188 -188
  199. package/skills/v8-workflow/SKILL.md +252 -252
  200. 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
  201. package/skills/v8-workflow/references/workflow-configuration.md +49 -49
  202. package/skills/vision-engine/SKILL.md +160 -160
  203. package/skills/vision-engine/agents/openai.yaml +4 -4
  204. package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
  205. package/skills/workspace-conventions/SKILL.md +273 -273
  206. 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 +209 -209
  207. 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 +217 -217
  208. 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
- > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
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
- 主流流水线方法:`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 回退、生鲜属性/价格来源、人脸同意、模型准确率和未执行的物理设备测试。
1
+ ---
2
+ name: vision-engine
3
+ description: 设计、实现、配置、扩展和验收视觉引擎能力。处理 Microi.Vision、V8.Vision、ONNX Runtime、图片或视频帧、商品或物体样本库优先匹配、平台 AI 异步回退、人脸特征与关注人员合规、platform-vision-runtime、microi-vision 前端微服务和应用商城交付时使用。
4
+ ---
5
+
6
+ > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
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
+ 主流流水线方法:`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 回退、生鲜属性/价格来源、人脸同意、模型准确率和未执行的物理设备测试。
@@ -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."