@microi.net/cli 5.8.5 → 5.8.6
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/.codebuddy-plugin/marketplace.json +2 -2
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.mcp.json +1 -1
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/LICENSE +21 -21
- package/README.md +71 -71
- package/assets/build-meta.json +6 -6
- package/assets/feature-matrix.json +138 -138
- package/assets/logo.svg +4 -4
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/codex-marketplace.json +20 -20
- package/scripts/mcp-codex-stdio-adapter.js +189 -189
- package/scripts/mcp-trae-windows-launcher.cmd +21 -21
- package/scripts/microi-cli-mcp.js +7 -7
- package/scripts/microi-cli.js +66 -65
- package/scripts/microi-codex-broker.js +450 -450
- package/scripts/microi-codex-router.js +618 -618
- package/scripts/microi-skills.meta.json +384 -384
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +3566 -3566
- package/skills/README.md +287 -287
- package/skills/ai-engine/SKILL.md +269 -265
- package/skills/ai-engine/agents/openai.yaml +4 -4
- package/skills/ai-engine/references/ai-employees.md +48 -48
- package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
- package/skills/ai-platform-governance/SKILL.md +177 -177
- package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
- package/skills/app-store/SKILL.md +525 -525
- package/skills/app-store/agents/openai.yaml +4 -4
- package/skills/business-blueprint/SKILL.md +193 -193
- package/skills/datasource-engine/SKILL.md +93 -93
- package/skills/datasource-engine/agents/openai.yaml +4 -4
- package/skills/dos-orm/SKILL.md +97 -97
- package/skills/dos-orm/references/api-reference.md +229 -229
- package/skills/email-engine/SKILL.md +81 -81
- package/skills/email-engine/references/v8-email.md +34 -34
- package/skills/job-engine/SKILL.md +176 -176
- package/skills/job-engine/agents/openai.yaml +4 -4
- package/skills/message-notification/SKILL.md +156 -156
- package/skills/message-notification/agents/openai.yaml +5 -5
- package/skills/message-notification/references/contracts.md +102 -102
- package/skills/microi/SKILL.md +14 -14
- package/skills/microi-ai-app-auth.js +652 -652
- package/skills/microi-ai-application/SKILL.md +115 -115
- package/skills/microi-ai-application/agents/openai.yaml +4 -4
- package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
- package/skills/microi-client-frontend/SKILL.md +244 -244
- 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
- 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
- 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
- package/skills/microi-codex/SKILL.md +102 -102
- package/skills/microi-codex-installer/SKILL.md +231 -231
- package/skills/microi-codex-installer/agents/openai.yaml +7 -7
- package/skills/microi-datasource-mapping/SKILL.md +122 -122
- package/skills/microi-db-schema/SKILL.md +175 -175
- package/skills/microi-db-schema/agents/openai.yaml +4 -4
- package/skills/microi-db-schema/references/core-tables.md +695 -695
- package/skills/microi-db-schema/references/form-component-options.md +256 -256
- package/skills/microi-db-schema/references/schema-overview.md +202 -202
- package/skills/microi-db-schema/references/schema.md +646 -646
- package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
- package/skills/microi-deployment/SKILL.md +221 -221
- package/skills/microi-deployment/references/deployment-matrix.md +109 -109
- package/skills/microi-docs-coverage/SKILL.md +133 -133
- package/skills/microi-docs-coverage/references/capability-map.md +91 -91
- package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
- package/skills/microi-form-engine/SKILL.md +333 -333
- package/skills/microi-form-engine/references/component-catalog.md +218 -218
- package/skills/microi-form-engine/references/data-source-events.md +124 -124
- package/skills/microi-form-layout/SKILL.md +205 -205
- 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
- package/skills/microi-frontend-sdk/SKILL.md +194 -194
- 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
- package/skills/microi-left-right-layout/SKILL.md +141 -141
- package/skills/microi-microservice/SKILL.md +326 -324
- package/skills/microi-microservice/references/runtime-delivery.md +278 -278
- package/skills/microi-mobile-app-quality/SKILL.md +185 -185
- 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
- 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
- package/skills/microi-solution-quotation/SKILL.md +78 -78
- package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
- package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
- package/skills/microi-sso/SKILL.md +92 -92
- package/skills/microi-sso/references/acceptance.md +49 -49
- package/skills/microi-sso/references/configuration-and-security.md +53 -53
- package/skills/microi-sso/references/inbound.md +53 -53
- package/skills/microi-sso/references/outbound.md +39 -39
- package/skills/microi-system-delivery/SKILL.md +137 -137
- 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
- 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
- package/skills/microi-ui/SKILL.md +192 -192
- 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
- package/skills/microi-uniapp-frontend/SKILL.md +193 -193
- 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
- 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
- package/skills/microi.v8.js +1921 -1921
- package/skills/module-engine/SKILL.md +255 -255
- package/skills/module-engine/references/module-config.md +204 -204
- package/skills/ocr-engine/SKILL.md +113 -113
- package/skills/ocr-engine/agents/openai.yaml +4 -4
- package/skills/page-engine/SKILL.md +206 -206
- package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
- 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
- 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
- package/skills/performance-testing/SKILL.md +221 -221
- package/skills/playwright-e2e/SKILL.md +196 -196
- 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
- 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
- package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
- package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
- package/skills/print-engine/SKILL.md +259 -259
- package/skills/production-readonly-audit/SKILL.md +41 -41
- package/skills/report-engine/SKILL.md +71 -71
- package/skills/report-engine/agents/openai.yaml +4 -4
- package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
- package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
- package/skills/scripts/sync-embedded-skills.mjs +46 -46
- package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
- package/skills/search-engine/SKILL.md +75 -75
- package/skills/search-engine/agents/openai.yaml +4 -4
- package/skills/spider-engine/SKILL.md +190 -190
- package/skills/system-observability/SKILL.md +248 -248
- package/skills/system-observability/references/memory-incident-triage.md +77 -77
- package/skills/translate-engine/SKILL.md +140 -140
- package/skills/translate-engine/agents/openai.yaml +4 -4
- package/skills/ui-design/SKILL.md +223 -223
- package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
- package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
- package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
- package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
- package/skills/ui-design/references/design-pattern-library.md +184 -184
- package/skills/ui-design/references/mci-design-contract.md +163 -163
- package/skills/ui-design/references/motion-and-media.md +78 -78
- package/skills/ui-design/references/product-flow-recipes.md +94 -94
- 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
- package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
- 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
- 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
- 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
- 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
- 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
- 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
- package/skills/uniapp-mall-assets/SKILL.md +176 -176
- package/skills/unity-integration/SKILL.md +171 -171
- package/skills/unity-integration/agents/openai.yaml +4 -4
- package/skills/unity-integration/references/ai-app-delivery.md +119 -119
- package/skills/unity-integration/references/sdk-api.md +82 -82
- package/skills/unity-integration/references/toolbox-migration.md +66 -66
- package/skills/unity-integration/references/webgl-hosting.md +57 -57
- package/skills/v8-api-config/SKILL.md +388 -388
- package/skills/v8-cache-pattern/SKILL.md +312 -312
- package/skills/v8-crud-api/SKILL.md +178 -178
- 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
- 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
- package/skills/v8-debugging/SKILL.md +284 -284
- package/skills/v8-explorer-tree/SKILL.md +228 -228
- package/skills/v8-export-import/SKILL.md +219 -219
- 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
- package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
- 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
- package/skills/v8-file-upload/SKILL.md +284 -284
- 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
- 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
- package/skills/v8-formengine-http/SKILL.md +238 -238
- package/skills/v8-frontend-events/SKILL.md +180 -180
- package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
- package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
- package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
- package/skills/v8-http-integration/SKILL.md +182 -182
- package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
- 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
- package/skills/v8-image-processing/SKILL.md +190 -190
- package/skills/v8-image-processing/agents/openai.yaml +4 -4
- package/skills/v8-image-processing/references/api-reference.md +623 -623
- package/skills/v8-menu-buttons/SKILL.md +186 -186
- 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
- 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
- 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
- package/skills/v8-mongodb/SKILL.md +200 -200
- package/skills/v8-mq-mqtt/SKILL.md +176 -176
- package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
- package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
- package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
- package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
- package/skills/v8-security/SKILL.md +210 -210
- package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
- package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
- package/skills/v8-sql-query/SKILL.md +302 -302
- package/skills/v8-table-event/SKILL.md +176 -176
- 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
- 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
- package/skills/v8-tcp-integration/SKILL.md +147 -147
- package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
- package/skills/v8-template-engine/SKILL.md +167 -167
- package/skills/v8-utilities/SKILL.md +104 -104
- package/skills/v8-utilities/references/client-api-index.md +143 -143
- package/skills/v8-utilities/references/platform-http-routes.md +83 -83
- package/skills/v8-utilities/references/server-api-index.md +188 -188
- package/skills/v8-workflow/SKILL.md +252 -252
- 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
- package/skills/v8-workflow/references/workflow-configuration.md +49 -49
- package/skills/vision-engine/SKILL.md +160 -160
- package/skills/vision-engine/agents/openai.yaml +4 -4
- package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
- package/skills/workspace-conventions/SKILL.md +273 -273
- 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
- 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
- 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,171 +1,171 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: unity-integration
|
|
3
|
-
description: Microi吾码 Unity、UPM SDK、WebGL、3D 游戏/数字孪生、DiyToken/V8 通讯、AI 应用商城交付与完整验收规范。用于评估或提取 Unity 工具箱,创建 Microi.Unity 包,开发 WebGL 场景,接入 Microi.Client 宿主与 V8 接口,引入可授权素材,发布可安装 AI 应用,或审查 Unity 代码是否错误进入 Microi.Server。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
> **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
|
|
7
|
-
|
|
8
|
-
# Microi Unity 完整交付
|
|
9
|
-
|
|
10
|
-
目标不是“做出一个 Unity 工程”,而是交付一条可复用、可安装、可升级、可验证的 Microi 3D 应用链。
|
|
11
|
-
|
|
12
|
-
## 按任务读取参考
|
|
13
|
-
|
|
14
|
-
| 当前任务 | 必须读取 |
|
|
15
|
-
|---|---|
|
|
16
|
-
| 新建或调用 `Microi.Unity` | `references/sdk-api.md` |
|
|
17
|
-
| WebGL 模板、Microi.Client/AI 应用宿主、性能与部署 | `references/webgl-hosting.md` |
|
|
18
|
-
| AI 应用源码、商城包、官方发布与安装回读 | `references/ai-app-delivery.md` |
|
|
19
|
-
| 从已有客户项目提取 Unity 工具箱或素材 | `references/toolbox-migration.md` |
|
|
20
|
-
|
|
21
|
-
若任务横跨多项,逐个读取相应参考,不从文件名猜协议。
|
|
22
|
-
|
|
23
|
-
## 先做架构裁决
|
|
24
|
-
|
|
25
|
-
1. Unity 客户端 SDK 使用仓库根级 UPM 包:`Microi.Unity/package.json`。
|
|
26
|
-
2. `UnityEngine`、`UnityWebRequest`、Editor API 和 `.jslib` 不进入 `Microi.Server` 的 .NET 类库。
|
|
27
|
-
3. 玩家进度、设备状态、任务、积分和交互记录优先由 V8 接口引擎编排。
|
|
28
|
-
4. 只有缺失的平台级可信协议、鉴权、密钥隔离或底层原子能力,才允许修改 `Microi.Server`;修改前必须说明 V8 为什么无法完成。
|
|
29
|
-
5. 实时房间、租约、进度和去重事实必须按 `OsClient` 存入共享数据库、Redis 或可靠消息系统,不能用单节点内存字典当事实源。
|
|
30
|
-
|
|
31
|
-
推荐目录:
|
|
32
|
-
|
|
33
|
-
```text
|
|
34
|
-
Microi.Unity/ 公共 UPM SDK
|
|
35
|
-
├─ Runtime/Api/ UnityWebRequest 与 DosResult
|
|
36
|
-
├─ Runtime/WebGL/ C# 浏览器桥
|
|
37
|
-
│ └─ Plugins/WebGL/*.jslib
|
|
38
|
-
├─ Editor/ 通用构建工具
|
|
39
|
-
└─ Samples~/ 可运行最小示例
|
|
40
|
-
|
|
41
|
-
AI-Project/<project>/Unity/ 具体 Unity 工程与场景
|
|
42
|
-
Microi-V8-Engine/.../AI应用/<appKey>/ 唯一 AI 应用源码与商城资源
|
|
43
|
-
microi.doc/docs/doc/system-engine/ 官方长期文档
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## 标准工作流
|
|
47
|
-
|
|
48
|
-
### 1. 发现与盘点
|
|
49
|
-
|
|
50
|
-
- 读取 Unity 版本、渲染管线、`Packages/manifest.json`、场景、Editor、Runtime、WebGL Plugins 和现有构建脚本。
|
|
51
|
-
- 搜索 Microi.Client 已有 Unity 宿主、现有 V8 Key、官方 AI 应用是否重名。
|
|
52
|
-
- 为模型、动作、贴图、字体、音频逐项记录来源、作者、许可证、版本和是否允许再分发。
|
|
53
|
-
- 在启动 Unity、Node、浏览器或构建前检查物理内存、同类进程、端口与任务归属。
|
|
54
|
-
|
|
55
|
-
### 2. 分离公共能力与业务能力
|
|
56
|
-
|
|
57
|
-
- API 客户端、DosResult、上下文注入、Token 轮换、浏览器事件和通用构建工具进入 UPM。
|
|
58
|
-
- 相机路径、触发区、特定场景模型、关卡、客户设备协议与业务脚本留在具体项目。
|
|
59
|
-
- 首次提取采用复制和重构;新包完成引用替换与回归前,不移动或删除旧项目文件。
|
|
60
|
-
- 公共包必须有 `package.json`、asmdef、README、LICENSE、CHANGELOG 与 Sample。
|
|
61
|
-
|
|
62
|
-
### 3. 建立 WebGL 宿主握手
|
|
63
|
-
|
|
64
|
-
- Unity 就绪后由宿主用 `SendMessage` 注入 `ApiBaseUrl/OsClient/Authorization/Did`。
|
|
65
|
-
- 会话只保存在运行时内存;禁止 Token 进入 URL、场景、Prefab、日志、构建产物或版本库。
|
|
66
|
-
- `.jslib` 只提供稳定事件:ready、authorization rotated、business event。
|
|
67
|
-
- Token 轮换回调同时携带发起请求时的旧 Token;宿主先做迟到响应保护,再更新统一会话。
|
|
68
|
-
- 页面离屏暂停;组件卸载调用 Unity `Quit()`,清理 iframe/Canvas、WASM、WebGL 上下文、监听器与全局回调。
|
|
69
|
-
|
|
70
|
-
### 4. 用 V8 设计服务端
|
|
71
|
-
|
|
72
|
-
```text
|
|
73
|
-
POST {ApiBase}/apiengine/{ApiEngineKey}
|
|
74
|
-
Content-Type: application/json
|
|
75
|
-
osclient: {OsClient}
|
|
76
|
-
apiengine: 1
|
|
77
|
-
authorization: Bearer {DiyToken}
|
|
78
|
-
did: {DeviceId}
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
- 身份只取 `V8.CurrentUser`;禁止相信客户端 UserId、角色、部门或权限结论。
|
|
82
|
-
- 重新校验坐标、数量、字符串长度、状态转换和资源归属。
|
|
83
|
-
- 写接口使用稳定 `RequestId/EventId` + 数据库唯一索引/幂等台账;锁不能替代幂等。
|
|
84
|
-
- 匿名多人由服务端签发 `SessionId + SessionSecret`;数据库只保存秘密哈希,公开快照不得返回秘密、UserId、设备指纹或内部权限字段。
|
|
85
|
-
- 在线角色、房间版本和掉线到期时间进入共享数据库/Redis;客户端心跳、接口重试和节点切换都不能依赖进程内字典。
|
|
86
|
-
- 位置心跳由服务端限制地图边界、最大速度和递增序列;过期查询以服务端时间为准,正常离场与租约超时都必须幂等。
|
|
87
|
-
- 公屏文字限制长度、频率、表情白名单与稳定请求 ID。WebGL 使用 DOM 输入时必须在 Player 端将 `WebGLInput.captureAllKeyboardInput` 设为 `false`,并阻止输入区的键盘、`beforeinput`、组合输入与指针事件继续驱动角色;只拦截冒泡阶段不足以保证数字、标点和 Shift 符号可输入。若 Unity 6 的 Player 编译响应文件未引用 `UnityEngine.WebGLModule`,使用受 `link.xml` 显式保留的反射设置并以真实键盘 E2E 验收,不得跳过该行为。
|
|
88
|
-
- 接口引擎 `Code=1` 自动提交,失败返回其它 Code 自动回滚,不手动 Commit/Rollback。
|
|
89
|
-
- 表、索引、菜单、接口与权限通过应用 Manifest 安装,不为游戏资源新增 `Microi.Upgrade` 定制迁移。
|
|
90
|
-
- 所有接口必须声明 `ResourcePolicies.ApiEngines`:官方核心 `Managed`;租户扩展 `CreateIfMissing`,后续升级不覆盖。
|
|
91
|
-
|
|
92
|
-
### 持续权威模拟与平台宿主
|
|
93
|
-
|
|
94
|
-
- 先区分接口引擎业务编排、持续固定步模拟和实时通知。SignalR版本通知不是规则执行;秒级Job只用于恢复/扫描/补偿,不能宣称20Hz连续模拟。
|
|
95
|
-
- 仅在现有纯V8无法满足固定步规则时使用通用受信规则宿主。Domain与应用适配仍属于私有应用程序集,平台只提供调度/预算/作用域;禁止把整套游戏规则加入Microi.Server或新增游戏Controller。
|
|
96
|
-
- 后台发行固定tenant、入口、审批摘要和实际DLL/依赖hash;主库绑定已安装与已完成发布版本,每次运行回读撤销。不得从玩家Param、可编辑V8或MCP传路径/URL/Type来装载代码。明确原生代码是受信后端代码,不是沙箱。
|
|
97
|
-
- 使用 `RunPlatformApiRuntime` 之前核后端实际安装。公开入口只收意图,成员和席位由DiyToken重算;DB时钟、租约/fence、完整checkpoint与inbox在同一事务。未知提交保持原RequestId,停机停止接收并有界排空,旧owner不得续写。
|
|
98
|
-
- 连续宿主唤醒需接Owned提示;当前无afterCommit回调,只能在持久写入成功后、return Code=1前发出有界提示,不能说已经提交后唤醒。pump仍须重新锁主库并核owner/fence/租约;原事务回滚不能产生合法推进。终局用DrainOwnedRoom停止后续调度,允许当前事务返回提交;StopOwnedRoom会立即取消当前请求。无外部主机不等于无需后端部署。只给本人/同队可见投影,公开频道不传全量状态。
|
|
99
|
-
- 验收分离规则测试、原子编译、真实Jint/SQL、两节点/强杀恢复、HTTP与实际渲染;固定频率或协议夹具通过不能代表商业竞技品质。
|
|
100
|
-
|
|
101
|
-
### 5. 构建可安装 AI 应用
|
|
102
|
-
|
|
103
|
-
- `ApplicationType` 使用 `Web`;Vue 3 + Vite + TypeScript 作为页面外壳,Unity Canvas/WebGL 与普通 DOM 分层。
|
|
104
|
-
- 官方租户的 `AI应用/<appKey>` 是私有源码、构建脚本、V8、Manifest 与商城合约的唯一编辑根。
|
|
105
|
-
- 页面必须 poster-first:未启动时不下载大体积 WASM/Data;提供加载、错误、重试、全屏、退出和低性能提示。
|
|
106
|
-
- 多人界面要显示本地及远端昵称;同模型远端角色使用快照插值,失效租约及时销毁;公屏固定在不遮挡核心操作区的位置并支持键盘与表情选择。真实键盘验收至少覆盖中文、大小写字母、数字、ASCII/中文标点、Shift 符号与输入法组合文本,禁止用直接设置 input value 的方式替代。
|
|
107
|
-
- 开场语音或剧情对白需要字幕时,字幕事件以 `AudioSource.time` 或同等播放器时间轴为准,中文与英文分行显示在底部安全区;不得用页面加载后的固定定时器冒充音画同步。WebGL 可用可访问 DOM 字幕,Windows/原生端使用同一份 cue 数据。
|
|
108
|
-
- 构建门禁必须拒绝缺失 Unity 产物的“空壳发布”,并校验 WASM、Data、体积、哈希、本机地址、source map 与疑似硬编码 Token。
|
|
109
|
-
- Unity `Data`、WASM 或 Windows 安装包大于 128 MiB 时,MCP/CLI 必须使用协议 v3 原始字节断点续传;禁止拆分文件、转 Base64 或通过提高普通表单上限发布。失败后读取同一不可变会话只续传缺片,并在“系统引擎 → 超大文件上传记录”回读进度、心跳、错误与恢复建议。
|
|
110
|
-
- 先同步私有源码,再发布不可变 Web 产物,最后生成/发布商城包;三个动作分别回读。
|
|
111
|
-
|
|
112
|
-
### 6. 补齐官网与 Skill
|
|
113
|
-
|
|
114
|
-
- 长期能力在中文官网“系统引擎”下建立独立页面,并加入 `mapping_zh.json`、视觉画像与文档责任映射。
|
|
115
|
-
- 页面优先使用主视觉、架构卡、步骤卡和折叠技术细节;不要用连续大段文字堆满屏幕。
|
|
116
|
-
- 不手工维护 `microi.doc/docs/en/`,不因普通功能文档修改 `about/update-log.md`。
|
|
117
|
-
- 文档至少覆盖:架构边界、UPM 安装、宿主握手、V8 请求、安全、CORS、构建、部署、商城安装和分层验收。
|
|
118
|
-
|
|
119
|
-
## 资产与视觉红线
|
|
120
|
-
|
|
121
|
-
- AI 生成素材保存逐图提示词、生成时间、用途和源文件;不要只提交最终图片。
|
|
122
|
-
- AI 设定图、渲染目标图与真实 Unity 运行截图必须分开标注;未通过实机近景、拓扑、材质、性能验收时禁止宣称“与设定图一模一样”或“商业 AAA 已达成”。
|
|
123
|
-
- 网络素材必须允许商业使用和再分发;许可证不清晰就改用原创、程序化或明确授权素材。
|
|
124
|
-
- 官方包不携带客户专属场景、品牌秘密、私有协议或无法追溯的二进制模型。
|
|
125
|
-
- “超清”不能只靠大纹理:同时控制材质、光照、阴影、LOD、裁剪、像素比和下载体积。
|
|
126
|
-
- 支持浅/深色外壳、键盘焦点、减少动效偏好、响应式安全区与清晰错误状态。
|
|
127
|
-
|
|
128
|
-
## WebGL 质量基线
|
|
129
|
-
|
|
130
|
-
- 使用仓库已验证的 Unity LTS;WebGL 采用兼容的 Built-in 或 URP,不走 HDRP。
|
|
131
|
-
- 校验 WebGL 2、WASM、正确 MIME、gzip/Brotli 响应头或解压回退、高 DPI 上限、全屏、键鼠/手柄、焦点恢复和退出释放。
|
|
132
|
-
- WebGL 必须经 HTTP(S) 验收,不能用 `file://`。
|
|
133
|
-
- Unity 2022.3 不把移动浏览器描述为官方支持;移动端需要独立触控、内存、画质和弱网测试。
|
|
134
|
-
- 程序化创建、反射或字符串类型名先用 `link.xml` 精确保留;若 WebGL 仍报告原生 `class ID` 被裁剪,可对该构建关闭 `PlayerSettings.stripEngineCode`,但必须复核包体和浏览器控制台。
|
|
135
|
-
- WebGL 模板设置 `autoSyncPersistentDataPath: true`,并把弃用警告也纳入控制台验收。
|
|
136
|
-
- 同一次高资源阶段只运行一个 Unity/Node/浏览器重任务,并遵守工作区 OOM 保护。
|
|
137
|
-
|
|
138
|
-
## 分层验收矩阵
|
|
139
|
-
|
|
140
|
-
| 证据层 | 必须断言 |
|
|
141
|
-
|---|---|
|
|
142
|
-
| 源码 | UPM 可解析、C# 编译、V8/Manifest/策略测试、安全扫描 |
|
|
143
|
-
| Unity Editor | Play、移动、奔跑、跳跃、碰撞、交互、暂停恢复 |
|
|
144
|
-
| WebGL | IL2CPP/WASM 构建成功,Loader/Data/WASM 完整 |
|
|
145
|
-
| 浏览器 | HTTP 加载、全屏、输入、控制台、DPR、退出释放 |
|
|
146
|
-
| Microi 租户 | 当前用户隔离、Token 轮换、保存重放、无权失败 |
|
|
147
|
-
| 多人在线 | 至少两个独立会话互见唯一昵称、移动与动作;异常断线超过租约后双方快照均不再返回该角色 |
|
|
148
|
-
| 实时公屏 | 两个独立会话互相收发文字与表情;非法表情、超长、超频和请求重放均被正确处理 |
|
|
149
|
-
| 字幕与语音 | 开场或剧情语音逐句驱动中英字幕;暂停/恢复不漂移,字幕位于底部安全区且对比度可读 |
|
|
150
|
-
| 多节点 | 重复投递、节点切换、失败恢复时副作用仅一次 |
|
|
151
|
-
| 大型资产 | 断点后只补缺片、HDFS 整文件哈希一致、后台审计进度与终态可见 |
|
|
152
|
-
| AI 应用 | 私有源码回读、运行版本哈希、列表/详情公开可见 |
|
|
153
|
-
| 应用商城 | 包版本/策略回读,非官方租户安装与升级通过 |
|
|
154
|
-
|
|
155
|
-
任何未执行层都要明确写成未验证或受阻。应用受理编号、源码测试或本地构建不能替代公开 URL、真实租户和非官方安装证据。
|
|
156
|
-
|
|
157
|
-
## 停止发布的条件
|
|
158
|
-
|
|
159
|
-
### 复盘:运行时特效在 WebGL 被裁剪或短到看不见
|
|
160
|
-
|
|
161
|
-
- 触发场景:编辑器开炮正常,公开 WebGL 只出现命中,没有可见飞行子弹。
|
|
162
|
-
- 根因:仅运行时 AddComponent 的 LineRenderer、ParticleSystem 或 Collider 未纳入引擎保留,或高速 easing/过短 lifetime 使飞行阶段几乎不可见。
|
|
163
|
-
- 通用规则:真实发布构建中保留所需模块与动态 Shader;炮口取实际炮管世界变换,飞行持续时间按距离限界,弹芯/尾迹/命中分层,共享材质不可逐次克隆泄漏。
|
|
164
|
-
- 自动化检查:公开 WASM 实际加载,连续至少三帧断言弹体位置变化;检验四种武器、空射、真实权威命中与资源/console 错误。单帧截图不能证明动态特效。
|
|
165
|
-
|
|
166
|
-
- Unity 许可证未激活或 WebGL 模块缺失。
|
|
167
|
-
- Unity 构建只有外壳,没有真实 WASM/Data。
|
|
168
|
-
- 素材许可证、AI 提示词或资产来源不可追溯。
|
|
169
|
-
- 正式产物出现本机地址、Token、source map 或超限单文件。
|
|
170
|
-
- 官方应用重名、目标版本不明确、远端源码/运行版本基线未回读。
|
|
171
|
-
- 商城包缺少 `ResourcePolicies.ApiEngines`,或把租户 Hook 错设为 `Managed`。
|
|
1
|
+
---
|
|
2
|
+
name: unity-integration
|
|
3
|
+
description: Microi吾码 Unity、UPM SDK、WebGL、3D 游戏/数字孪生、DiyToken/V8 通讯、AI 应用商城交付与完整验收规范。用于评估或提取 Unity 工具箱,创建 Microi.Unity 包,开发 WebGL 场景,接入 Microi.Client 宿主与 V8 接口,引入可授权素材,发布可安装 AI 应用,或审查 Unity 代码是否错误进入 Microi.Server。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
|
|
7
|
+
|
|
8
|
+
# Microi Unity 完整交付
|
|
9
|
+
|
|
10
|
+
目标不是“做出一个 Unity 工程”,而是交付一条可复用、可安装、可升级、可验证的 Microi 3D 应用链。
|
|
11
|
+
|
|
12
|
+
## 按任务读取参考
|
|
13
|
+
|
|
14
|
+
| 当前任务 | 必须读取 |
|
|
15
|
+
|---|---|
|
|
16
|
+
| 新建或调用 `Microi.Unity` | `references/sdk-api.md` |
|
|
17
|
+
| WebGL 模板、Microi.Client/AI 应用宿主、性能与部署 | `references/webgl-hosting.md` |
|
|
18
|
+
| AI 应用源码、商城包、官方发布与安装回读 | `references/ai-app-delivery.md` |
|
|
19
|
+
| 从已有客户项目提取 Unity 工具箱或素材 | `references/toolbox-migration.md` |
|
|
20
|
+
|
|
21
|
+
若任务横跨多项,逐个读取相应参考,不从文件名猜协议。
|
|
22
|
+
|
|
23
|
+
## 先做架构裁决
|
|
24
|
+
|
|
25
|
+
1. Unity 客户端 SDK 使用仓库根级 UPM 包:`Microi.Unity/package.json`。
|
|
26
|
+
2. `UnityEngine`、`UnityWebRequest`、Editor API 和 `.jslib` 不进入 `Microi.Server` 的 .NET 类库。
|
|
27
|
+
3. 玩家进度、设备状态、任务、积分和交互记录优先由 V8 接口引擎编排。
|
|
28
|
+
4. 只有缺失的平台级可信协议、鉴权、密钥隔离或底层原子能力,才允许修改 `Microi.Server`;修改前必须说明 V8 为什么无法完成。
|
|
29
|
+
5. 实时房间、租约、进度和去重事实必须按 `OsClient` 存入共享数据库、Redis 或可靠消息系统,不能用单节点内存字典当事实源。
|
|
30
|
+
|
|
31
|
+
推荐目录:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
Microi.Unity/ 公共 UPM SDK
|
|
35
|
+
├─ Runtime/Api/ UnityWebRequest 与 DosResult
|
|
36
|
+
├─ Runtime/WebGL/ C# 浏览器桥
|
|
37
|
+
│ └─ Plugins/WebGL/*.jslib
|
|
38
|
+
├─ Editor/ 通用构建工具
|
|
39
|
+
└─ Samples~/ 可运行最小示例
|
|
40
|
+
|
|
41
|
+
AI-Project/<project>/Unity/ 具体 Unity 工程与场景
|
|
42
|
+
Microi-V8-Engine/.../AI应用/<appKey>/ 唯一 AI 应用源码与商城资源
|
|
43
|
+
microi.doc/docs/doc/system-engine/ 官方长期文档
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 标准工作流
|
|
47
|
+
|
|
48
|
+
### 1. 发现与盘点
|
|
49
|
+
|
|
50
|
+
- 读取 Unity 版本、渲染管线、`Packages/manifest.json`、场景、Editor、Runtime、WebGL Plugins 和现有构建脚本。
|
|
51
|
+
- 搜索 Microi.Client 已有 Unity 宿主、现有 V8 Key、官方 AI 应用是否重名。
|
|
52
|
+
- 为模型、动作、贴图、字体、音频逐项记录来源、作者、许可证、版本和是否允许再分发。
|
|
53
|
+
- 在启动 Unity、Node、浏览器或构建前检查物理内存、同类进程、端口与任务归属。
|
|
54
|
+
|
|
55
|
+
### 2. 分离公共能力与业务能力
|
|
56
|
+
|
|
57
|
+
- API 客户端、DosResult、上下文注入、Token 轮换、浏览器事件和通用构建工具进入 UPM。
|
|
58
|
+
- 相机路径、触发区、特定场景模型、关卡、客户设备协议与业务脚本留在具体项目。
|
|
59
|
+
- 首次提取采用复制和重构;新包完成引用替换与回归前,不移动或删除旧项目文件。
|
|
60
|
+
- 公共包必须有 `package.json`、asmdef、README、LICENSE、CHANGELOG 与 Sample。
|
|
61
|
+
|
|
62
|
+
### 3. 建立 WebGL 宿主握手
|
|
63
|
+
|
|
64
|
+
- Unity 就绪后由宿主用 `SendMessage` 注入 `ApiBaseUrl/OsClient/Authorization/Did`。
|
|
65
|
+
- 会话只保存在运行时内存;禁止 Token 进入 URL、场景、Prefab、日志、构建产物或版本库。
|
|
66
|
+
- `.jslib` 只提供稳定事件:ready、authorization rotated、business event。
|
|
67
|
+
- Token 轮换回调同时携带发起请求时的旧 Token;宿主先做迟到响应保护,再更新统一会话。
|
|
68
|
+
- 页面离屏暂停;组件卸载调用 Unity `Quit()`,清理 iframe/Canvas、WASM、WebGL 上下文、监听器与全局回调。
|
|
69
|
+
|
|
70
|
+
### 4. 用 V8 设计服务端
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
POST {ApiBase}/apiengine/{ApiEngineKey}
|
|
74
|
+
Content-Type: application/json
|
|
75
|
+
osclient: {OsClient}
|
|
76
|
+
apiengine: 1
|
|
77
|
+
authorization: Bearer {DiyToken}
|
|
78
|
+
did: {DeviceId}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
- 身份只取 `V8.CurrentUser`;禁止相信客户端 UserId、角色、部门或权限结论。
|
|
82
|
+
- 重新校验坐标、数量、字符串长度、状态转换和资源归属。
|
|
83
|
+
- 写接口使用稳定 `RequestId/EventId` + 数据库唯一索引/幂等台账;锁不能替代幂等。
|
|
84
|
+
- 匿名多人由服务端签发 `SessionId + SessionSecret`;数据库只保存秘密哈希,公开快照不得返回秘密、UserId、设备指纹或内部权限字段。
|
|
85
|
+
- 在线角色、房间版本和掉线到期时间进入共享数据库/Redis;客户端心跳、接口重试和节点切换都不能依赖进程内字典。
|
|
86
|
+
- 位置心跳由服务端限制地图边界、最大速度和递增序列;过期查询以服务端时间为准,正常离场与租约超时都必须幂等。
|
|
87
|
+
- 公屏文字限制长度、频率、表情白名单与稳定请求 ID。WebGL 使用 DOM 输入时必须在 Player 端将 `WebGLInput.captureAllKeyboardInput` 设为 `false`,并阻止输入区的键盘、`beforeinput`、组合输入与指针事件继续驱动角色;只拦截冒泡阶段不足以保证数字、标点和 Shift 符号可输入。若 Unity 6 的 Player 编译响应文件未引用 `UnityEngine.WebGLModule`,使用受 `link.xml` 显式保留的反射设置并以真实键盘 E2E 验收,不得跳过该行为。
|
|
88
|
+
- 接口引擎 `Code=1` 自动提交,失败返回其它 Code 自动回滚,不手动 Commit/Rollback。
|
|
89
|
+
- 表、索引、菜单、接口与权限通过应用 Manifest 安装,不为游戏资源新增 `Microi.Upgrade` 定制迁移。
|
|
90
|
+
- 所有接口必须声明 `ResourcePolicies.ApiEngines`:官方核心 `Managed`;租户扩展 `CreateIfMissing`,后续升级不覆盖。
|
|
91
|
+
|
|
92
|
+
### 持续权威模拟与平台宿主
|
|
93
|
+
|
|
94
|
+
- 先区分接口引擎业务编排、持续固定步模拟和实时通知。SignalR版本通知不是规则执行;秒级Job只用于恢复/扫描/补偿,不能宣称20Hz连续模拟。
|
|
95
|
+
- 仅在现有纯V8无法满足固定步规则时使用通用受信规则宿主。Domain与应用适配仍属于私有应用程序集,平台只提供调度/预算/作用域;禁止把整套游戏规则加入Microi.Server或新增游戏Controller。
|
|
96
|
+
- 后台发行固定tenant、入口、审批摘要和实际DLL/依赖hash;主库绑定已安装与已完成发布版本,每次运行回读撤销。不得从玩家Param、可编辑V8或MCP传路径/URL/Type来装载代码。明确原生代码是受信后端代码,不是沙箱。
|
|
97
|
+
- 使用 `RunPlatformApiRuntime` 之前核后端实际安装。公开入口只收意图,成员和席位由DiyToken重算;DB时钟、租约/fence、完整checkpoint与inbox在同一事务。未知提交保持原RequestId,停机停止接收并有界排空,旧owner不得续写。
|
|
98
|
+
- 连续宿主唤醒需接Owned提示;当前无afterCommit回调,只能在持久写入成功后、return Code=1前发出有界提示,不能说已经提交后唤醒。pump仍须重新锁主库并核owner/fence/租约;原事务回滚不能产生合法推进。终局用DrainOwnedRoom停止后续调度,允许当前事务返回提交;StopOwnedRoom会立即取消当前请求。无外部主机不等于无需后端部署。只给本人/同队可见投影,公开频道不传全量状态。
|
|
99
|
+
- 验收分离规则测试、原子编译、真实Jint/SQL、两节点/强杀恢复、HTTP与实际渲染;固定频率或协议夹具通过不能代表商业竞技品质。
|
|
100
|
+
|
|
101
|
+
### 5. 构建可安装 AI 应用
|
|
102
|
+
|
|
103
|
+
- `ApplicationType` 使用 `Web`;Vue 3 + Vite + TypeScript 作为页面外壳,Unity Canvas/WebGL 与普通 DOM 分层。
|
|
104
|
+
- 官方租户的 `AI应用/<appKey>` 是私有源码、构建脚本、V8、Manifest 与商城合约的唯一编辑根。
|
|
105
|
+
- 页面必须 poster-first:未启动时不下载大体积 WASM/Data;提供加载、错误、重试、全屏、退出和低性能提示。
|
|
106
|
+
- 多人界面要显示本地及远端昵称;同模型远端角色使用快照插值,失效租约及时销毁;公屏固定在不遮挡核心操作区的位置并支持键盘与表情选择。真实键盘验收至少覆盖中文、大小写字母、数字、ASCII/中文标点、Shift 符号与输入法组合文本,禁止用直接设置 input value 的方式替代。
|
|
107
|
+
- 开场语音或剧情对白需要字幕时,字幕事件以 `AudioSource.time` 或同等播放器时间轴为准,中文与英文分行显示在底部安全区;不得用页面加载后的固定定时器冒充音画同步。WebGL 可用可访问 DOM 字幕,Windows/原生端使用同一份 cue 数据。
|
|
108
|
+
- 构建门禁必须拒绝缺失 Unity 产物的“空壳发布”,并校验 WASM、Data、体积、哈希、本机地址、source map 与疑似硬编码 Token。
|
|
109
|
+
- Unity `Data`、WASM 或 Windows 安装包大于 128 MiB 时,MCP/CLI 必须使用协议 v3 原始字节断点续传;禁止拆分文件、转 Base64 或通过提高普通表单上限发布。失败后读取同一不可变会话只续传缺片,并在“系统引擎 → 超大文件上传记录”回读进度、心跳、错误与恢复建议。
|
|
110
|
+
- 先同步私有源码,再发布不可变 Web 产物,最后生成/发布商城包;三个动作分别回读。
|
|
111
|
+
|
|
112
|
+
### 6. 补齐官网与 Skill
|
|
113
|
+
|
|
114
|
+
- 长期能力在中文官网“系统引擎”下建立独立页面,并加入 `mapping_zh.json`、视觉画像与文档责任映射。
|
|
115
|
+
- 页面优先使用主视觉、架构卡、步骤卡和折叠技术细节;不要用连续大段文字堆满屏幕。
|
|
116
|
+
- 不手工维护 `microi.doc/docs/en/`,不因普通功能文档修改 `about/update-log.md`。
|
|
117
|
+
- 文档至少覆盖:架构边界、UPM 安装、宿主握手、V8 请求、安全、CORS、构建、部署、商城安装和分层验收。
|
|
118
|
+
|
|
119
|
+
## 资产与视觉红线
|
|
120
|
+
|
|
121
|
+
- AI 生成素材保存逐图提示词、生成时间、用途和源文件;不要只提交最终图片。
|
|
122
|
+
- AI 设定图、渲染目标图与真实 Unity 运行截图必须分开标注;未通过实机近景、拓扑、材质、性能验收时禁止宣称“与设定图一模一样”或“商业 AAA 已达成”。
|
|
123
|
+
- 网络素材必须允许商业使用和再分发;许可证不清晰就改用原创、程序化或明确授权素材。
|
|
124
|
+
- 官方包不携带客户专属场景、品牌秘密、私有协议或无法追溯的二进制模型。
|
|
125
|
+
- “超清”不能只靠大纹理:同时控制材质、光照、阴影、LOD、裁剪、像素比和下载体积。
|
|
126
|
+
- 支持浅/深色外壳、键盘焦点、减少动效偏好、响应式安全区与清晰错误状态。
|
|
127
|
+
|
|
128
|
+
## WebGL 质量基线
|
|
129
|
+
|
|
130
|
+
- 使用仓库已验证的 Unity LTS;WebGL 采用兼容的 Built-in 或 URP,不走 HDRP。
|
|
131
|
+
- 校验 WebGL 2、WASM、正确 MIME、gzip/Brotli 响应头或解压回退、高 DPI 上限、全屏、键鼠/手柄、焦点恢复和退出释放。
|
|
132
|
+
- WebGL 必须经 HTTP(S) 验收,不能用 `file://`。
|
|
133
|
+
- Unity 2022.3 不把移动浏览器描述为官方支持;移动端需要独立触控、内存、画质和弱网测试。
|
|
134
|
+
- 程序化创建、反射或字符串类型名先用 `link.xml` 精确保留;若 WebGL 仍报告原生 `class ID` 被裁剪,可对该构建关闭 `PlayerSettings.stripEngineCode`,但必须复核包体和浏览器控制台。
|
|
135
|
+
- WebGL 模板设置 `autoSyncPersistentDataPath: true`,并把弃用警告也纳入控制台验收。
|
|
136
|
+
- 同一次高资源阶段只运行一个 Unity/Node/浏览器重任务,并遵守工作区 OOM 保护。
|
|
137
|
+
|
|
138
|
+
## 分层验收矩阵
|
|
139
|
+
|
|
140
|
+
| 证据层 | 必须断言 |
|
|
141
|
+
|---|---|
|
|
142
|
+
| 源码 | UPM 可解析、C# 编译、V8/Manifest/策略测试、安全扫描 |
|
|
143
|
+
| Unity Editor | Play、移动、奔跑、跳跃、碰撞、交互、暂停恢复 |
|
|
144
|
+
| WebGL | IL2CPP/WASM 构建成功,Loader/Data/WASM 完整 |
|
|
145
|
+
| 浏览器 | HTTP 加载、全屏、输入、控制台、DPR、退出释放 |
|
|
146
|
+
| Microi 租户 | 当前用户隔离、Token 轮换、保存重放、无权失败 |
|
|
147
|
+
| 多人在线 | 至少两个独立会话互见唯一昵称、移动与动作;异常断线超过租约后双方快照均不再返回该角色 |
|
|
148
|
+
| 实时公屏 | 两个独立会话互相收发文字与表情;非法表情、超长、超频和请求重放均被正确处理 |
|
|
149
|
+
| 字幕与语音 | 开场或剧情语音逐句驱动中英字幕;暂停/恢复不漂移,字幕位于底部安全区且对比度可读 |
|
|
150
|
+
| 多节点 | 重复投递、节点切换、失败恢复时副作用仅一次 |
|
|
151
|
+
| 大型资产 | 断点后只补缺片、HDFS 整文件哈希一致、后台审计进度与终态可见 |
|
|
152
|
+
| AI 应用 | 私有源码回读、运行版本哈希、列表/详情公开可见 |
|
|
153
|
+
| 应用商城 | 包版本/策略回读,非官方租户安装与升级通过 |
|
|
154
|
+
|
|
155
|
+
任何未执行层都要明确写成未验证或受阻。应用受理编号、源码测试或本地构建不能替代公开 URL、真实租户和非官方安装证据。
|
|
156
|
+
|
|
157
|
+
## 停止发布的条件
|
|
158
|
+
|
|
159
|
+
### 复盘:运行时特效在 WebGL 被裁剪或短到看不见
|
|
160
|
+
|
|
161
|
+
- 触发场景:编辑器开炮正常,公开 WebGL 只出现命中,没有可见飞行子弹。
|
|
162
|
+
- 根因:仅运行时 AddComponent 的 LineRenderer、ParticleSystem 或 Collider 未纳入引擎保留,或高速 easing/过短 lifetime 使飞行阶段几乎不可见。
|
|
163
|
+
- 通用规则:真实发布构建中保留所需模块与动态 Shader;炮口取实际炮管世界变换,飞行持续时间按距离限界,弹芯/尾迹/命中分层,共享材质不可逐次克隆泄漏。
|
|
164
|
+
- 自动化检查:公开 WASM 实际加载,连续至少三帧断言弹体位置变化;检验四种武器、空射、真实权威命中与资源/console 错误。单帧截图不能证明动态特效。
|
|
165
|
+
|
|
166
|
+
- Unity 许可证未激活或 WebGL 模块缺失。
|
|
167
|
+
- Unity 构建只有外壳,没有真实 WASM/Data。
|
|
168
|
+
- 素材许可证、AI 提示词或资产来源不可追溯。
|
|
169
|
+
- 正式产物出现本机地址、Token、source map 或超限单文件。
|
|
170
|
+
- 官方应用重名、目标版本不明确、远端源码/运行版本基线未回读。
|
|
171
|
+
- 商城包缺少 `ResourcePolicies.ApiEngines`,或把租户 Hook 错设为 `Managed`。
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "Microi Unity 集成"
|
|
3
|
-
short_description: "交付 Unity UPM、WebGL、V8 与可安装 AI 应用"
|
|
4
|
-
default_prompt: "使用 $unity-integration 设计、实现并分层验收完整的 Microi Unity WebGL 应用。"
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "Microi Unity 集成"
|
|
3
|
+
short_description: "交付 Unity UPM、WebGL、V8 与可安装 AI 应用"
|
|
4
|
+
default_prompt: "使用 $unity-integration 设计、实现并分层验收完整的 Microi Unity WebGL 应用。"
|
|
@@ -1,119 +1,119 @@
|
|
|
1
|
-
# Unity AI 应用与商城交付
|
|
2
|
-
|
|
3
|
-
## 唯一源码
|
|
4
|
-
|
|
5
|
-
官方 AI 应用源码放在当前官方连接对应的:
|
|
6
|
-
|
|
7
|
-
```text
|
|
8
|
-
Microi-V8-Engine/<connection>/<product>/AI应用/<appKey>/
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
同一应用的 Vue 外壳、Unity 构建接入、V8 源码、Manifest、资源策略、测试和发布合约都从这里生成。Unity 工程可以保留服务端镜像,但必须由唯一源码生成并做一致性检查。
|
|
12
|
-
|
|
13
|
-
最小文件:
|
|
14
|
-
|
|
15
|
-
```text
|
|
16
|
-
.microi-micro-app.json
|
|
17
|
-
app.json
|
|
18
|
-
package.json
|
|
19
|
-
microi.routes.json
|
|
20
|
-
package-contract.json
|
|
21
|
-
resource-policies.json
|
|
22
|
-
system.manifest.json
|
|
23
|
-
src/
|
|
24
|
-
public/
|
|
25
|
-
server/engines/
|
|
26
|
-
scripts/
|
|
27
|
-
tests/
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
## Web 外壳
|
|
31
|
-
|
|
32
|
-
- Vue 3 + Vite + TypeScript。
|
|
33
|
-
- 复用工作区标准 `microi.v8.js` 与 `microi-ai-app-auth.js`,不要复制改造出第二套认证协议。
|
|
34
|
-
- 匿名模式可以承载公开多人玩法,但必须使用服务端签发、只存哈希、可过期的会话秘密;个人持久化接口仍要求 DiyToken。
|
|
35
|
-
- `ApplicationType=Web`,独立入口为 `index.html`。
|
|
36
|
-
- 构建状态明确区分 `available` 与 `publishable`;无真实 Unity WASM/Data 时禁止正式发布。
|
|
37
|
-
- WebGL 公屏优先使用可访问的 DOM 输入控件,并在 Unity Player 将 `WebGLInput.captureAllKeyboardInput` 设为 `false`;输入区同时隔离键盘、`beforeinput`、组合输入与指针事件。Unity 6 若未向 Player 编译响应文件引用 `UnityEngine.WebGLModule`,可用 `link.xml` 保留类型后反射设置,并必须以真实键盘输入回归。Windows 可使用原生 UI/UIToolkit。不要在外壳和 Unity 中重复绘制同一组操作提示。
|
|
38
|
-
- 语音字幕由真实播放器时间轴逐 cue 驱动,中英文分行放在底部安全区;WebGL DOM 与 Windows 原生 UI 复用同一份字幕数据。固定 `setTimeout` 只能做无音轨占位,不算同步验收。
|
|
39
|
-
|
|
40
|
-
## 多人租约与公屏交付
|
|
41
|
-
|
|
42
|
-
- 在线角色的事实源使用按 `OsClient` 隔离的共享数据库/Redis,不能使用 API 节点静态字典;客户端心跳周期必须短于租约超时。
|
|
43
|
-
- 加入响应只向本人返回会话秘密;数据库保存 SHA-256,位置快照只公开昵称、受限坐标、朝向、动作与房间版本。
|
|
44
|
-
- 正常卸载/离开主动调用 leave;浏览器崩溃、断网或 `kill -9` 依靠服务端租约自然失效,并通过两个真实客户端测量消失时间。
|
|
45
|
-
- 公屏接口校验在线会话、内容长度、表情白名单、速率窗口和请求幂等;公开读取只返回有限时间窗和有限条数。浏览器验收用真实按键输入中文、字母、数字、标点、Shift 符号和输入法组合文本,并由第二个独立会话核对原文;直接调用 `fill()`/赋值只能验证服务端,不能证明键盘链路。
|
|
46
|
-
- 轮询是兼容基线;接入 WebSocket/SignalR 时仍保留共享租约为事实源,并用 V8 授权接口签发短期频道权限。
|
|
47
|
-
|
|
48
|
-
## WebGL 与 Windows 双端交付
|
|
49
|
-
|
|
50
|
-
- WebGL 与 Windows 必须来自同一个 Unity 工程、场景和语义版本;禁止用旧本地包搭配新网页版本。
|
|
51
|
-
- Windows 默认交付 x64 安装包,至少包含当前用户安装、开始菜单入口和卸载信息;没有明确需求时不申请管理员权限。
|
|
52
|
-
- 外壳应给出醒目的本地版下载入口,并同时显示版本、文件大小与 SHA-256;文件名包含语义版本,旧版本 URL 不覆盖。
|
|
53
|
-
- 安装包属于公开运行资产,不属于私有源码。同步 `directory` 前必须排除 `public/downloads` 等生成目录,再把完整安装包随 `dist` 走流式资产发布;禁止拆分 Base64 或伪装成源码规避单文件上限。
|
|
54
|
-
- 单文件大于 128 MiB 时,MCP 与 `@microi.net/cli` 共用协议 v3:默认 16 MiB 原始字节分片、逐片 HDFS 回读、整文件 SHA-256 和确定性会话。重启后必须先查状态并只补缺片;5 GiB 文件应规划为 320 片,不得重新从 0 开始。
|
|
55
|
-
- v3 不设置 Microi 产品级文件/目录字节上限;对象存储、磁盘、代理与协议技术边界仍需容量预检。发布期间在“系统引擎 → 超大文件上传记录”回读字节进度、心跳、失败原因和恢复建议,终态记录保留用于审计。
|
|
56
|
-
- 发布后从公网地址重新下载完整 EXE,比较字节数和 SHA-256;本地制包成功、MCP 返回文件 Id 或 HTTP HEAD 成功都不能替代完整回读。
|
|
57
|
-
- 本地验收至少覆盖静默安装、主程序存在、可启动和卸载入口;签名状态、SmartScreen 信誉和硬件帧率必须单独如实说明。
|
|
58
|
-
|
|
59
|
-
## 商城资源
|
|
60
|
-
|
|
61
|
-
游戏进度表使用应用前缀 `app_*`,不要占用平台保留的 `mci_*` 名称。技术幂等表可以不创建可见菜单;玩家运营表创建父菜单 + 子数据菜单,隐藏 UserId、RequestId、哈希等技术字段。
|
|
62
|
-
|
|
63
|
-
接口策略示例:
|
|
64
|
-
|
|
65
|
-
```json
|
|
66
|
-
{
|
|
67
|
-
"SchemaVersion": 1,
|
|
68
|
-
"ApiEngines": {
|
|
69
|
-
"app_game_bootstrap": { "Ownership": "Application", "UpgradePolicy": "Managed" },
|
|
70
|
-
"app_game_save": { "Ownership": "Application", "UpgradePolicy": "Managed" },
|
|
71
|
-
"app_game_after_save": { "Ownership": "Tenant", "UpgradePolicy": "CreateIfMissing" }
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
租户 Hook 使用新的稳定 Key;首次安装后归租户维护,同 Key 后续版本不能改回 `Managed`。
|
|
77
|
-
|
|
78
|
-
### 仅共享编译运行产物
|
|
79
|
-
|
|
80
|
-
消费者只获得运行应用、不安装业务资源时,商城发布显式传
|
|
81
|
-
`RuntimeAssetsOnly=true`。只接受 `ProtocolVersion=3`、`ApplicationType=Web`、
|
|
82
|
-
显式 `IncludeSource=false` 和已通过提交证明校验的 `SharedPublicRuntime`。
|
|
83
|
-
源码是否在本地或私有开发端保管,与消费者包不含源码分别验收;此模式本身不要求上传本地源码。
|
|
84
|
-
|
|
85
|
-
- 请求资源选择、历史 `SelectMenu/SelectTable/SelectApiEngine/SelectData` 和
|
|
86
|
-
`PreparedAssets.MenuContract` 均为空,非空时拒绝,不自动抹除;禁止混用 `DatabaseOnlyBuild`。
|
|
87
|
-
- 通过既有 `microi_run_engine.params` 向 `ai_app_publish_store` 传入开关,先
|
|
88
|
-
`InspectResourceSnapshot` 再 `Publish + ExpectedResourceSnapshotHash`,两次使用同一组冻结参数。
|
|
89
|
-
- 回读真实包的十一项资源数组、`SourceFiles/BuildAssets` 均为零,`SourceZip/BuildZip` 为空,
|
|
90
|
-
只保留共享运行交付。完整数组和兼容条件见 [应用商城 Skill](../../app-store/SKILL.md#仅共享编译运行产物)。
|
|
91
|
-
- 此模式的目标验收检查编译入口、宿主身份和实际服务契约;没有声明的表、菜单、接口及 Hook
|
|
92
|
-
不应在消费者租户生成。需要租户业务资源时使用普通资源包流程。
|
|
93
|
-
|
|
94
|
-
## 官方发布顺序
|
|
95
|
-
|
|
96
|
-
只有当前 MCP 明确绑定官方 `https://api.itdos.com`、`OsClient=iTdos` 且用户已授权写入时才执行:
|
|
97
|
-
|
|
98
|
-
1. `microi_list_applications` 按精确 AppKey/中文名查重。
|
|
99
|
-
2. 读取远端应用上下文、源码版本、运行版本、行版本/围栏与路由快照。
|
|
100
|
-
3. 本地完成类型检查、测试、真实 Unity 构建和 dist 完整性校验。
|
|
101
|
-
4. 先同步私有源码;生成的 Unity、安装包与构建证据目录不得混入源码清单。任何期望版本不一致都停止重基线。
|
|
102
|
-
5. 发布不可变 Web 运行版本,回读入口、文件数、哈希、状态与公开 URL。
|
|
103
|
-
- 官网、二维码、分享与商城“立即体验”必须指向不带版本号的固定当前入口,且游戏加载完成后地址栏仍保持该入口;不能把 `SharedPublicRuntime.EntryUrl`、`/releases/{Version}/requests/...` 或 `/versions/{Version}/` 当作当前体验地址,也不能用 30x、`meta refresh`、`location.replace` 伪装稳定入口。
|
|
104
|
-
- 不可变版本 URL 只写入历史版本记录、回滚和审计。固定入口可以使用同源全屏加载壳承载当前不可变产物,并必须透传 `autoplay`、`fullscreen` 与 `gamepad` 权限。
|
|
105
|
-
6. 若同时交付 Windows,从稳定公网地址下载完整安装包并核对大小、SHA-256 和版本;在线入口还要加载真实 WASM/Data。
|
|
106
|
-
7. 调用官方 `ai_app_publish_store` 生成并发布精确版本的应用商城包。超时属于结果不确定,必须回读包正文和 ZIP 后才能决定是否重试。
|
|
107
|
-
8. 回读 `sys_microistore` 的 AppKey、版本、状态、预览图、包摘要与资源策略,断言 `AppVersion == PackageInfo.Version == PreparedAssets.PackageVersion`。
|
|
108
|
-
9. 在官网 `/apps.html` 和 `/app-detail.html?app=<appKey>` 做公开页面回读。
|
|
109
|
-
10. 在一个非官方测试租户安装,回读表、菜单、接口和 Hook 所有权;再验证升级不覆盖租户 Hook。
|
|
110
|
-
11. 多人应用用两个独立浏览器会话互相验证昵称、位置、公屏;强制关闭一端,确认超过约定租约后另一端不再看到该角色。
|
|
111
|
-
|
|
112
|
-
源码同步、运行发布、商城发布、官网可见、目标租户安装是五项独立事实。任一步只有受理 ID 或 `doing` 状态,都不能报告最终成功。
|
|
113
|
-
|
|
114
|
-
## 版本与回滚
|
|
115
|
-
|
|
116
|
-
- 运行产物不可变;相同版本不可覆盖为不同哈希。
|
|
117
|
-
- 商城版本必须精确对应已验证运行版本与 Manifest。
|
|
118
|
-
- 升级遵循先扩展、后迁移、再收缩;新旧运行版本短暂并存时协议向前/向后兼容。
|
|
119
|
-
- 回滚恢复上一不可变运行版本;数据库变更需要显式兼容/补偿方案,不能用文件回滚伪装数据回滚。
|
|
1
|
+
# Unity AI 应用与商城交付
|
|
2
|
+
|
|
3
|
+
## 唯一源码
|
|
4
|
+
|
|
5
|
+
官方 AI 应用源码放在当前官方连接对应的:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
Microi-V8-Engine/<connection>/<product>/AI应用/<appKey>/
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
同一应用的 Vue 外壳、Unity 构建接入、V8 源码、Manifest、资源策略、测试和发布合约都从这里生成。Unity 工程可以保留服务端镜像,但必须由唯一源码生成并做一致性检查。
|
|
12
|
+
|
|
13
|
+
最小文件:
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
.microi-micro-app.json
|
|
17
|
+
app.json
|
|
18
|
+
package.json
|
|
19
|
+
microi.routes.json
|
|
20
|
+
package-contract.json
|
|
21
|
+
resource-policies.json
|
|
22
|
+
system.manifest.json
|
|
23
|
+
src/
|
|
24
|
+
public/
|
|
25
|
+
server/engines/
|
|
26
|
+
scripts/
|
|
27
|
+
tests/
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Web 外壳
|
|
31
|
+
|
|
32
|
+
- Vue 3 + Vite + TypeScript。
|
|
33
|
+
- 复用工作区标准 `microi.v8.js` 与 `microi-ai-app-auth.js`,不要复制改造出第二套认证协议。
|
|
34
|
+
- 匿名模式可以承载公开多人玩法,但必须使用服务端签发、只存哈希、可过期的会话秘密;个人持久化接口仍要求 DiyToken。
|
|
35
|
+
- `ApplicationType=Web`,独立入口为 `index.html`。
|
|
36
|
+
- 构建状态明确区分 `available` 与 `publishable`;无真实 Unity WASM/Data 时禁止正式发布。
|
|
37
|
+
- WebGL 公屏优先使用可访问的 DOM 输入控件,并在 Unity Player 将 `WebGLInput.captureAllKeyboardInput` 设为 `false`;输入区同时隔离键盘、`beforeinput`、组合输入与指针事件。Unity 6 若未向 Player 编译响应文件引用 `UnityEngine.WebGLModule`,可用 `link.xml` 保留类型后反射设置,并必须以真实键盘输入回归。Windows 可使用原生 UI/UIToolkit。不要在外壳和 Unity 中重复绘制同一组操作提示。
|
|
38
|
+
- 语音字幕由真实播放器时间轴逐 cue 驱动,中英文分行放在底部安全区;WebGL DOM 与 Windows 原生 UI 复用同一份字幕数据。固定 `setTimeout` 只能做无音轨占位,不算同步验收。
|
|
39
|
+
|
|
40
|
+
## 多人租约与公屏交付
|
|
41
|
+
|
|
42
|
+
- 在线角色的事实源使用按 `OsClient` 隔离的共享数据库/Redis,不能使用 API 节点静态字典;客户端心跳周期必须短于租约超时。
|
|
43
|
+
- 加入响应只向本人返回会话秘密;数据库保存 SHA-256,位置快照只公开昵称、受限坐标、朝向、动作与房间版本。
|
|
44
|
+
- 正常卸载/离开主动调用 leave;浏览器崩溃、断网或 `kill -9` 依靠服务端租约自然失效,并通过两个真实客户端测量消失时间。
|
|
45
|
+
- 公屏接口校验在线会话、内容长度、表情白名单、速率窗口和请求幂等;公开读取只返回有限时间窗和有限条数。浏览器验收用真实按键输入中文、字母、数字、标点、Shift 符号和输入法组合文本,并由第二个独立会话核对原文;直接调用 `fill()`/赋值只能验证服务端,不能证明键盘链路。
|
|
46
|
+
- 轮询是兼容基线;接入 WebSocket/SignalR 时仍保留共享租约为事实源,并用 V8 授权接口签发短期频道权限。
|
|
47
|
+
|
|
48
|
+
## WebGL 与 Windows 双端交付
|
|
49
|
+
|
|
50
|
+
- WebGL 与 Windows 必须来自同一个 Unity 工程、场景和语义版本;禁止用旧本地包搭配新网页版本。
|
|
51
|
+
- Windows 默认交付 x64 安装包,至少包含当前用户安装、开始菜单入口和卸载信息;没有明确需求时不申请管理员权限。
|
|
52
|
+
- 外壳应给出醒目的本地版下载入口,并同时显示版本、文件大小与 SHA-256;文件名包含语义版本,旧版本 URL 不覆盖。
|
|
53
|
+
- 安装包属于公开运行资产,不属于私有源码。同步 `directory` 前必须排除 `public/downloads` 等生成目录,再把完整安装包随 `dist` 走流式资产发布;禁止拆分 Base64 或伪装成源码规避单文件上限。
|
|
54
|
+
- 单文件大于 128 MiB 时,MCP 与 `@microi.net/cli` 共用协议 v3:默认 16 MiB 原始字节分片、逐片 HDFS 回读、整文件 SHA-256 和确定性会话。重启后必须先查状态并只补缺片;5 GiB 文件应规划为 320 片,不得重新从 0 开始。
|
|
55
|
+
- v3 不设置 Microi 产品级文件/目录字节上限;对象存储、磁盘、代理与协议技术边界仍需容量预检。发布期间在“系统引擎 → 超大文件上传记录”回读字节进度、心跳、失败原因和恢复建议,终态记录保留用于审计。
|
|
56
|
+
- 发布后从公网地址重新下载完整 EXE,比较字节数和 SHA-256;本地制包成功、MCP 返回文件 Id 或 HTTP HEAD 成功都不能替代完整回读。
|
|
57
|
+
- 本地验收至少覆盖静默安装、主程序存在、可启动和卸载入口;签名状态、SmartScreen 信誉和硬件帧率必须单独如实说明。
|
|
58
|
+
|
|
59
|
+
## 商城资源
|
|
60
|
+
|
|
61
|
+
游戏进度表使用应用前缀 `app_*`,不要占用平台保留的 `mci_*` 名称。技术幂等表可以不创建可见菜单;玩家运营表创建父菜单 + 子数据菜单,隐藏 UserId、RequestId、哈希等技术字段。
|
|
62
|
+
|
|
63
|
+
接口策略示例:
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
{
|
|
67
|
+
"SchemaVersion": 1,
|
|
68
|
+
"ApiEngines": {
|
|
69
|
+
"app_game_bootstrap": { "Ownership": "Application", "UpgradePolicy": "Managed" },
|
|
70
|
+
"app_game_save": { "Ownership": "Application", "UpgradePolicy": "Managed" },
|
|
71
|
+
"app_game_after_save": { "Ownership": "Tenant", "UpgradePolicy": "CreateIfMissing" }
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
租户 Hook 使用新的稳定 Key;首次安装后归租户维护,同 Key 后续版本不能改回 `Managed`。
|
|
77
|
+
|
|
78
|
+
### 仅共享编译运行产物
|
|
79
|
+
|
|
80
|
+
消费者只获得运行应用、不安装业务资源时,商城发布显式传
|
|
81
|
+
`RuntimeAssetsOnly=true`。只接受 `ProtocolVersion=3`、`ApplicationType=Web`、
|
|
82
|
+
显式 `IncludeSource=false` 和已通过提交证明校验的 `SharedPublicRuntime`。
|
|
83
|
+
源码是否在本地或私有开发端保管,与消费者包不含源码分别验收;此模式本身不要求上传本地源码。
|
|
84
|
+
|
|
85
|
+
- 请求资源选择、历史 `SelectMenu/SelectTable/SelectApiEngine/SelectData` 和
|
|
86
|
+
`PreparedAssets.MenuContract` 均为空,非空时拒绝,不自动抹除;禁止混用 `DatabaseOnlyBuild`。
|
|
87
|
+
- 通过既有 `microi_run_engine.params` 向 `ai_app_publish_store` 传入开关,先
|
|
88
|
+
`InspectResourceSnapshot` 再 `Publish + ExpectedResourceSnapshotHash`,两次使用同一组冻结参数。
|
|
89
|
+
- 回读真实包的十一项资源数组、`SourceFiles/BuildAssets` 均为零,`SourceZip/BuildZip` 为空,
|
|
90
|
+
只保留共享运行交付。完整数组和兼容条件见 [应用商城 Skill](../../app-store/SKILL.md#仅共享编译运行产物)。
|
|
91
|
+
- 此模式的目标验收检查编译入口、宿主身份和实际服务契约;没有声明的表、菜单、接口及 Hook
|
|
92
|
+
不应在消费者租户生成。需要租户业务资源时使用普通资源包流程。
|
|
93
|
+
|
|
94
|
+
## 官方发布顺序
|
|
95
|
+
|
|
96
|
+
只有当前 MCP 明确绑定官方 `https://api.itdos.com`、`OsClient=iTdos` 且用户已授权写入时才执行:
|
|
97
|
+
|
|
98
|
+
1. `microi_list_applications` 按精确 AppKey/中文名查重。
|
|
99
|
+
2. 读取远端应用上下文、源码版本、运行版本、行版本/围栏与路由快照。
|
|
100
|
+
3. 本地完成类型检查、测试、真实 Unity 构建和 dist 完整性校验。
|
|
101
|
+
4. 先同步私有源码;生成的 Unity、安装包与构建证据目录不得混入源码清单。任何期望版本不一致都停止重基线。
|
|
102
|
+
5. 发布不可变 Web 运行版本,回读入口、文件数、哈希、状态与公开 URL。
|
|
103
|
+
- 官网、二维码、分享与商城“立即体验”必须指向不带版本号的固定当前入口,且游戏加载完成后地址栏仍保持该入口;不能把 `SharedPublicRuntime.EntryUrl`、`/releases/{Version}/requests/...` 或 `/versions/{Version}/` 当作当前体验地址,也不能用 30x、`meta refresh`、`location.replace` 伪装稳定入口。
|
|
104
|
+
- 不可变版本 URL 只写入历史版本记录、回滚和审计。固定入口可以使用同源全屏加载壳承载当前不可变产物,并必须透传 `autoplay`、`fullscreen` 与 `gamepad` 权限。
|
|
105
|
+
6. 若同时交付 Windows,从稳定公网地址下载完整安装包并核对大小、SHA-256 和版本;在线入口还要加载真实 WASM/Data。
|
|
106
|
+
7. 调用官方 `ai_app_publish_store` 生成并发布精确版本的应用商城包。超时属于结果不确定,必须回读包正文和 ZIP 后才能决定是否重试。
|
|
107
|
+
8. 回读 `sys_microistore` 的 AppKey、版本、状态、预览图、包摘要与资源策略,断言 `AppVersion == PackageInfo.Version == PreparedAssets.PackageVersion`。
|
|
108
|
+
9. 在官网 `/apps.html` 和 `/app-detail.html?app=<appKey>` 做公开页面回读。
|
|
109
|
+
10. 在一个非官方测试租户安装,回读表、菜单、接口和 Hook 所有权;再验证升级不覆盖租户 Hook。
|
|
110
|
+
11. 多人应用用两个独立浏览器会话互相验证昵称、位置、公屏;强制关闭一端,确认超过约定租约后另一端不再看到该角色。
|
|
111
|
+
|
|
112
|
+
源码同步、运行发布、商城发布、官网可见、目标租户安装是五项独立事实。任一步只有受理 ID 或 `doing` 状态,都不能报告最终成功。
|
|
113
|
+
|
|
114
|
+
## 版本与回滚
|
|
115
|
+
|
|
116
|
+
- 运行产物不可变;相同版本不可覆盖为不同哈希。
|
|
117
|
+
- 商城版本必须精确对应已验证运行版本与 Manifest。
|
|
118
|
+
- 升级遵循先扩展、后迁移、再收缩;新旧运行版本短暂并存时协议向前/向后兼容。
|
|
119
|
+
- 回滚恢复上一不可变运行版本;数据库变更需要显式兼容/补偿方案,不能用文件回滚伪装数据回滚。
|