@microi.net/cli 5.5.7 → 5.5.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.
- package/.codebuddy-plugin/marketplace.json +2 -2
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/assets/build-meta.json +3 -3
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/microi-skills.meta.json +197 -197
- package/skills/.microi-skills-version.json +2 -2
- package/skills/ai-engine/SKILL.md +3 -1
- package/skills/app-store/SKILL.md +2 -0
- package/skills/job-engine/SKILL.md +11 -0
- package/skills/microi-ai-application/SKILL.md +8 -0
- package/skills/microi-microservice/SKILL.md +5 -3
- package/skills/system-observability/SKILL.md +3 -1
- package/skills/system-observability/references/memory-incident-triage.md +4 -2
- package/skills/v8-saas-multi-tenant/SKILL.md +1 -0
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
"url": "https://microi.net"
|
|
6
6
|
},
|
|
7
7
|
"description": "Microi吾码官方 AI 插件市场",
|
|
8
|
-
"version": "5.5.
|
|
8
|
+
"version": "5.5.9",
|
|
9
9
|
"plugins": [
|
|
10
10
|
{
|
|
11
11
|
"name": "microi",
|
|
12
12
|
"source": ".",
|
|
13
13
|
"description": "Microi吾码 AI 开发插件:服务器连接、Skills、MCP、V8 全量同步与低代码交付",
|
|
14
|
-
"version": "5.5.
|
|
14
|
+
"version": "5.5.9",
|
|
15
15
|
"strict": true
|
|
16
16
|
}
|
|
17
17
|
]
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
"url": "https://microi.net"
|
|
6
6
|
},
|
|
7
7
|
"description": "Microi吾码官方 AI 插件市场",
|
|
8
|
-
"version": "5.5.
|
|
8
|
+
"version": "5.5.9",
|
|
9
9
|
"plugins": [
|
|
10
10
|
{
|
|
11
11
|
"name": "microi",
|
|
12
12
|
"source": ".",
|
|
13
13
|
"description": "Microi吾码 AI 开发插件:服务器连接、Skills、MCP、V8 全量同步与低代码交付",
|
|
14
|
-
"version": "5.5.
|
|
14
|
+
"version": "5.5.9",
|
|
15
15
|
"strict": true
|
|
16
16
|
}
|
|
17
17
|
]
|
package/assets/build-meta.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"builtAt": "2026-09-
|
|
3
|
-
"version": "5.5.
|
|
2
|
+
"builtAt": "2026-09-08T15:03:09.827Z",
|
|
3
|
+
"version": "5.5.9",
|
|
4
4
|
"sourceProducts": [
|
|
5
5
|
"vscode-extension",
|
|
6
6
|
"microi-cli",
|
|
@@ -13,6 +13,6 @@
|
|
|
13
13
|
"cli": "616e4bdd794311ba577a00694de75e7604dc91d6b292f63261fbd83b96b2f5b4",
|
|
14
14
|
"router": "ffc14787fc2d3d6173b7a779b77139b759eb1d482cea787f71283f4017a4e223",
|
|
15
15
|
"broker": "caae2730cc411d11c20f33b367968f7538aae8f5b65a713fcc557deedaefcf70",
|
|
16
|
-
"dshBundle": "
|
|
16
|
+
"dshBundle": "844fff122987d522f923835df46700936774e85ef334b715a87a976b09cfd32a"
|
|
17
17
|
}
|
|
18
18
|
}
|
package/cordis.patch.yml
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
serverName: microi
|
|
8
8
|
transport: stdio
|
|
9
9
|
command: !!js process.execPath
|
|
10
|
-
args: ["-e","/*\n * DeepSeek Harness 通过 profile bundle 加载此 `node -e` 引导脚本。\n * DSH 不保证 MCP 子进程 cwd 位于 npm 包根,因此按 DSH_HOME/profile 定位\n * 当前版本的 @microi.net/cli,再复用 Codex 同源适配器与多连接路由器。\n */\nconst fs = require('node:fs');\nconst os = require('node:os');\nconst path = require('node:path');\nconst packageName = '@microi.net/cli';\nconst expectedVersion = '5.5.
|
|
10
|
+
args: ["-e","/*\n * DeepSeek Harness 通过 profile bundle 加载此 `node -e` 引导脚本。\n * DSH 不保证 MCP 子进程 cwd 位于 npm 包根,因此按 DSH_HOME/profile 定位\n * 当前版本的 @microi.net/cli,再复用 Codex 同源适配器与多连接路由器。\n */\nconst fs = require('node:fs');\nconst os = require('node:os');\nconst path = require('node:path');\nconst packageName = '@microi.net/cli';\nconst expectedVersion = '5.5.9';\n\nfunction readJson(filePath) {\n try { return JSON.parse(fs.readFileSync(filePath, 'utf8')); }\n catch { return undefined; }\n}\n\nfunction expandHome(value) {\n if (value === '~') return os.homedir();\n if (value.startsWith('~/') || value.startsWith('~\\\\')) return path.join(os.homedir(), value.slice(2));\n return value;\n}\n\nfunction validRoot(value) {\n const root = path.resolve(value);\n const pkg = readJson(path.join(root, 'package.json'));\n const patch = path.join(root, 'cordis.patch.yml');\n const adapter = path.join(root, 'scripts', 'mcp-codex-stdio-adapter.js');\n const router = path.join(root, 'scripts', 'microi-codex-router.js');\n if (pkg?.name !== packageName || pkg?.version !== expectedVersion) return undefined;\n if (pkg?.dsh?.bundle?.patch !== './cordis.patch.yml') return undefined;\n if (![patch, adapter, router].every(filePath => fs.existsSync(filePath))) return undefined;\n return { root: fs.realpathSync(root), adapter, router, modifiedAt: fs.statSync(router).mtimeMs };\n}\n\nfunction findPlugin() {\n const explicit = String(process.env.MICROI_DSH_PLUGIN_ROOT || '').trim();\n if (explicit) {\n const plugin = validRoot(explicit);\n if (!plugin) throw new Error(`MICROI_DSH_PLUGIN_ROOT 不是版本 ${expectedVersion} 的有效 Microi DSH bundle:${explicit}`);\n return plugin;\n }\n const configuredHome = String(process.env.DSH_HOME || '').trim();\n const dshHome = path.resolve(expandHome(configuredHome || path.join(os.homedir(), '.dsh')));\n const profilesRoot = path.join(dshHome, 'profiles');\n const candidates = [];\n if (fs.existsSync(profilesRoot)) {\n for (const entry of fs.readdirSync(profilesRoot, { withFileTypes: true })) {\n if (!entry.isDirectory() || entry.name === 'node_modules') continue;\n const root = path.join(profilesRoot, entry.name, 'node_modules', '@microi.net', 'cli');\n const plugin = validRoot(root);\n if (plugin) candidates.push(plugin);\n }\n }\n candidates.sort((left, right) => right.modifiedAt - left.modifiedAt);\n if (!candidates[0]) throw new Error(`未在 ${profilesRoot} 找到版本 ${expectedVersion} 的 ${packageName}`);\n return candidates[0];\n}\n\ntry {\n const plugin = findPlugin();\n process.env.MICROI_DSH_PLUGIN_ROOT = plugin.root;\n process.env.MICROI_CODEX_PLUGIN_ROOT = plugin.root;\n process.env.MICROI_TOOL_SOURCE = 'dsh';\n process.env.MICROI_TOOL_VERSION = expectedVersion;\n process.env.MICROI_WORKSPACE_ROOT = process.env.MICROI_WORKSPACE_ROOT || process.cwd();\n process.argv[2] = plugin.router;\n require(plugin.adapter);\n} catch (error) {\n console.error(`[microi-dsh-bootstrap] ${error instanceof Error ? error.message : String(error)}`);\n process.exit(1);\n}\n"]
|
|
11
11
|
env:
|
|
12
12
|
MICROI_TOOL_SOURCE: dsh
|
|
13
13
|
cwd: !!js process.cwd()
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
|
-
"builtAt": "2026-09-
|
|
2
|
+
"builtAt": "2026-09-08T15:03:08.890Z",
|
|
3
3
|
"source": "../microi.skills",
|
|
4
4
|
"extension": {
|
|
5
5
|
"name": "v8-engine",
|
|
6
|
-
"version": "5.5.
|
|
6
|
+
"version": "5.5.9",
|
|
7
7
|
"publisher": "Microi"
|
|
8
8
|
},
|
|
9
9
|
"skills": {
|
|
10
|
-
"version": "5.5.
|
|
10
|
+
"version": "5.5.9",
|
|
11
11
|
"versionRule": "Microi version uses three numeric parts. Each publish increments the last part; when a part exceeds 9 it carries to the previous part: 1.0.9 -> 1.1.0, 1.9.9 -> 2.0.0.",
|
|
12
12
|
"managedBy": "Microi.VSCode/bump-version.js"
|
|
13
13
|
},
|
|
@@ -15,17 +15,17 @@
|
|
|
15
15
|
"dir": "dist/microi.skills",
|
|
16
16
|
"files": 184,
|
|
17
17
|
"skills": 67,
|
|
18
|
-
"bytes":
|
|
18
|
+
"bytes": 2401211
|
|
19
19
|
},
|
|
20
20
|
"fileHashes": {
|
|
21
|
-
".microi-skills-version.json": "
|
|
21
|
+
".microi-skills-version.json": "e7fe3b24f1d85d3cf8fe00df930ddae924f0d5706864c2ce152947a454307c0b",
|
|
22
22
|
".progressive-disclosure-manifest.json": "11c3cb160643398b48ed8f82e8848ffd086a549ce664b90d659660980d805ff4",
|
|
23
23
|
"README.md": "bb09053c6ce4ce3fb4add46c62f4bc2ecd7fa5589e1c206c1aa59f655ca140ec",
|
|
24
|
-
"ai-engine/SKILL.md": "
|
|
24
|
+
"ai-engine/SKILL.md": "7f1c443e63c1e5334333180d9ad42dc2031ab3968c8c688ffeb0985bc7ed6ff1",
|
|
25
25
|
"ai-engine/agents/openai.yaml": "40deb07801006a46b9a7f0020d13251955eeadd04c8e591160210479936f8b5b",
|
|
26
26
|
"ai-platform-governance/SKILL.md": "84ca4bcacf15deecd0c04dc1a664b23041a6a5f020d3a5288c5458b5e7da4b8e",
|
|
27
27
|
"ai-platform-governance/references/progressive-01-功能开关.md": "ea46fb02267e9e3ace3d9d72e67b02183c61e5c198f4b2f27e8196d6ee6d0bec",
|
|
28
|
-
"app-store/SKILL.md": "
|
|
28
|
+
"app-store/SKILL.md": "13393dbc13f82bb97615a08630f34589927425ca71b9d429aee83fece5aa4442",
|
|
29
29
|
"app-store/agents/openai.yaml": "eda8f5cf043e7b8fb0e4fb3acf0625fef95eb49586b43187ced277cd0ae4a2c4",
|
|
30
30
|
"business-blueprint/SKILL.md": "01619a3b6d37b5b67649ee59d2701301222006d3b943882b2802b1721c58f8a9",
|
|
31
31
|
"datasource-engine/SKILL.md": "bed8352f1d43b55145e1c492d1ea0ca1ec8750b5c4d74e1e80cd71aa7b9a2e6f",
|
|
@@ -34,13 +34,13 @@
|
|
|
34
34
|
"dos-orm/references/api-reference.md": "facc5e62cd6439a06263580dab9656271118d4bb5a91b5d9230a79136e6daa72",
|
|
35
35
|
"email-engine/SKILL.md": "5c1ae108b66a7b2dabb9e0637a90ab09d87c3cfd3d17f750c9caa479a23a0dba",
|
|
36
36
|
"email-engine/references/v8-email.md": "6568533ea84f67206c5408a6e4627646a9967f71c2f5e37462409c9641a45771",
|
|
37
|
-
"job-engine/SKILL.md": "
|
|
37
|
+
"job-engine/SKILL.md": "506b9c2b2c4b589066299aa489511fdf730bdda15137d15602f14250b915b7e7",
|
|
38
38
|
"job-engine/agents/openai.yaml": "65889ee39bc34caca9085539d8954a381aab93590c5635eea3bb6f4c001934af",
|
|
39
39
|
"message-notification/SKILL.md": "09b6b9b8ba67627cb4603a69a3a6530db943ffec92adcb520a50da00fad00ee1",
|
|
40
40
|
"message-notification/agents/openai.yaml": "d0e259921410e94caaf8b376d690a529842446e3f32c9523b7dfd1bda599f58c",
|
|
41
41
|
"message-notification/references/contracts.md": "fd520821d533ead45ab6a476bd53cab79b19219cd46ef26120181dbd35dfcb0d",
|
|
42
42
|
"microi-ai-app-auth.js": "e7f62522709eca196dea9c4170da8095cef69dfdf96e00dc470825a6cf4e2a01",
|
|
43
|
-
"microi-ai-application/SKILL.md": "
|
|
43
|
+
"microi-ai-application/SKILL.md": "773e957fa9de2017de03ea4ca69b082b34c4f3b68dd25fc7dca6b6f852b022a0",
|
|
44
44
|
"microi-ai-application/agents/openai.yaml": "d3dfc4d0f2fda3391e90e661ca9d8d051cb43824b011d1a88e99db135870454f",
|
|
45
45
|
"microi-ai-application/references/frontend-baseline.md": "c21a2d38292fd8d445a7538afb45d609881f624f32d39c0fc4bbbb3c2fa64a74",
|
|
46
46
|
"microi-client-frontend/SKILL.md": "73c75058bf1158791433391b708295f70e30860612e49dcd03559f5f1cae5ed1",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
"microi-frontend-sdk/SKILL.md": "f05d35dc4427267582404e5e905654b240ffc0fdcd4c155516fa783eb38c5e14",
|
|
72
72
|
"microi-frontend-sdk/references/progressive-01-token-当前登录用户与当前终端登录协议.md": "5dea28edec5a31b6e6e5e15fefc03df9d1ad9bd4b583388fc77bd2aa67a19165",
|
|
73
73
|
"microi-left-right-layout/SKILL.md": "e2f051bce91e6b7cd103599ea526d543fd0f8caaa4c92c71e9e5d81b1a90cf7d",
|
|
74
|
-
"microi-microservice/SKILL.md": "
|
|
74
|
+
"microi-microservice/SKILL.md": "8ad8077a09259c3f56de473970c55b1882b4bdc73dc3c42dc7f79576eb07faa6",
|
|
75
75
|
"microi-microservice/references/runtime-delivery.md": "0080c9a2611f4b41b490ab896e4dae9a9f086995c8dd608998adc8af81302506",
|
|
76
76
|
"microi-mobile-app-quality/SKILL.md": "9b9cb03a51c586e789720b901a1d4ad8dc4a0abb5913d78ee4c1d2d6882f9837",
|
|
77
77
|
"microi-mobile-app-quality/references/progressive-01-4-重要按钮必须带图标.md": "ec938bd1a64b9896ff5d3165ad217ee5c68a22a51ddb690d8a8a0c7a9365c512",
|
|
@@ -116,8 +116,8 @@
|
|
|
116
116
|
"search-engine/SKILL.md": "c1c33ed02a91a6e8d482f05208a0d49c3dc6639165c9cc017e0e270db0d7ee7e",
|
|
117
117
|
"search-engine/agents/openai.yaml": "5ddbe54965386287b00eba1cd7e38f3c7058edc437538f12ddb165f96f75a6eb",
|
|
118
118
|
"spider-engine/SKILL.md": "e24018f7ab2a07706a70bb592adb7a2f91f0a66e3f9bc944593e18731c53d77e",
|
|
119
|
-
"system-observability/SKILL.md": "
|
|
120
|
-
"system-observability/references/memory-incident-triage.md": "
|
|
119
|
+
"system-observability/SKILL.md": "c232fc133ba8660962d45981ebca062abd97eea64283cec10c87cd0bac3f5f33",
|
|
120
|
+
"system-observability/references/memory-incident-triage.md": "edae0c4e0094bc84e32ed5deb5385d8a96f7579125a14196955b3f066886c5bd",
|
|
121
121
|
"translate-engine/SKILL.md": "a2fd7a15abc6a5559971a2969d216e02efedad5f0456bf95bd27d14029cad5a5",
|
|
122
122
|
"translate-engine/agents/openai.yaml": "8eb47e08a691219bbe22a797ddbdf73234ec77f86e5724bc735fb0738d899112",
|
|
123
123
|
"ui-design/SKILL.md": "fadf47fe594196136bdc358cd43fc0a8d512daa602cdac0c116510c256334138",
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
"v8-mq-mqtt/references/mqtt-production.md": "fec6dd18d58c0f0fc90a295286945f6e7cb7f43c60022c4fd9d48f9baafb35b9",
|
|
179
179
|
"v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-物联网.md": "842c74bd8bc30b932346e34c0d4154edffc1bf6a5a8aaafaaa344f250394762c",
|
|
180
180
|
"v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs": "433b922578f37e95483a3d794ad0bf60ba6344fe9ea580eeb3d34b42c50d352f",
|
|
181
|
-
"v8-saas-multi-tenant/SKILL.md": "
|
|
181
|
+
"v8-saas-multi-tenant/SKILL.md": "63c97e850745b3d3f7e60ca74dbdd2c830a62df5a948802863afebe061cf2911",
|
|
182
182
|
"v8-security/SKILL.md": "d1c5f1d3d0480570ca8852ec21a01580869f276d73b1b0366d03184a3c7fd84a",
|
|
183
183
|
"v8-security/references/progressive-01-2-权限校验.md": "a7e2314b8f2f9bf413956191ffeda6d2f823760def2b06bf6b4c1565e8f71816",
|
|
184
184
|
"v8-security/references/progressive-02-7-日志记录.md": "412be2c82f7e00e5f26711e6dee7b5eb9b734751fee553b9a4a0ce9216bbe928",
|
|
@@ -204,190 +204,190 @@
|
|
|
204
204
|
"workspace-conventions/references/progressive-03-cli-与-ide-插件错版共存约定.md": "86db1f03700fd54dd824d28c553c678202e8f74b796fd0f9d91f63bf53a530b1"
|
|
205
205
|
},
|
|
206
206
|
"fileVersions": {
|
|
207
|
-
".microi-skills-version.json": "5.5.
|
|
208
|
-
".progressive-disclosure-manifest.json": "5.5.
|
|
209
|
-
"README.md": "5.5.
|
|
210
|
-
"ai-engine/SKILL.md": "5.5.
|
|
211
|
-
"ai-engine/agents/openai.yaml": "5.5.
|
|
212
|
-
"ai-platform-governance/SKILL.md": "5.5.
|
|
213
|
-
"ai-platform-governance/references/progressive-01-功能开关.md": "5.5.
|
|
214
|
-
"app-store/SKILL.md": "5.5.
|
|
215
|
-
"app-store/agents/openai.yaml": "5.5.
|
|
216
|
-
"business-blueprint/SKILL.md": "5.5.
|
|
217
|
-
"datasource-engine/SKILL.md": "5.5.
|
|
218
|
-
"datasource-engine/agents/openai.yaml": "5.5.
|
|
219
|
-
"dos-orm/SKILL.md": "5.5.
|
|
220
|
-
"dos-orm/references/api-reference.md": "5.5.
|
|
221
|
-
"email-engine/SKILL.md": "5.5.
|
|
222
|
-
"email-engine/references/v8-email.md": "5.5.
|
|
223
|
-
"job-engine/SKILL.md": "5.5.
|
|
224
|
-
"job-engine/agents/openai.yaml": "5.5.
|
|
225
|
-
"message-notification/SKILL.md": "5.5.
|
|
226
|
-
"message-notification/agents/openai.yaml": "5.5.
|
|
227
|
-
"message-notification/references/contracts.md": "5.5.
|
|
228
|
-
"microi-ai-app-auth.js": "5.5.
|
|
229
|
-
"microi-ai-application/SKILL.md": "5.5.
|
|
230
|
-
"microi-ai-application/agents/openai.yaml": "5.5.
|
|
231
|
-
"microi-ai-application/references/frontend-baseline.md": "5.5.
|
|
232
|
-
"microi-client-frontend/SKILL.md": "5.5.
|
|
233
|
-
"microi-client-frontend/references/progressive-01-3-动态按钮系统.md": "5.5.
|
|
234
|
-
"microi-client-frontend/references/progressive-02-8-运行时高频坑复盘.md": "5.5.
|
|
235
|
-
"microi-client-frontend/references/progressive-03-vue3-前端微服务宿主规则.md": "5.5.
|
|
236
|
-
"microi-codex-installer/SKILL.md": "5.5.
|
|
237
|
-
"microi-codex-installer/agents/openai.yaml": "5.5.
|
|
238
|
-
"microi-codex/SKILL.md": "5.5.
|
|
239
|
-
"microi-datasource-mapping/SKILL.md": "5.5.
|
|
240
|
-
"microi-db-schema/SKILL.md": "5.5.
|
|
241
|
-
"microi-db-schema/agents/openai.yaml": "5.5.
|
|
242
|
-
"microi-db-schema/references/core-tables.md": "5.5.
|
|
243
|
-
"microi-db-schema/references/form-component-options.md": "5.5.
|
|
244
|
-
"microi-db-schema/references/schema-overview.md": "5.5.
|
|
245
|
-
"microi-db-schema/references/schema.md": "5.5.
|
|
246
|
-
"microi-db-schema/references/table-catalog.md": "5.5.
|
|
247
|
-
"microi-deployment/SKILL.md": "5.5.
|
|
248
|
-
"microi-deployment/references/deployment-matrix.md": "5.5.
|
|
249
|
-
"microi-docs-coverage/SKILL.md": "5.5.
|
|
250
|
-
"microi-docs-coverage/references/capability-map.md": "5.5.
|
|
251
|
-
"microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs": "5.5.
|
|
252
|
-
"microi-form-engine/SKILL.md": "5.5.
|
|
253
|
-
"microi-form-engine/references/component-catalog.md": "5.5.
|
|
254
|
-
"microi-form-engine/references/data-source-events.md": "5.5.
|
|
255
|
-
"microi-form-layout/SKILL.md": "5.5.
|
|
256
|
-
"microi-form-layout/references/progressive-01-3-三种分组的存储与配置.md": "5.5.
|
|
257
|
-
"microi-frontend-sdk/SKILL.md": "5.5.
|
|
258
|
-
"microi-frontend-sdk/references/progressive-01-token-当前登录用户与当前终端登录协议.md": "5.5.
|
|
259
|
-
"microi-left-right-layout/SKILL.md": "5.5.
|
|
260
|
-
"microi-microservice/SKILL.md": "5.5.
|
|
261
|
-
"microi-microservice/references/runtime-delivery.md": "5.5.
|
|
262
|
-
"microi-mobile-app-quality/SKILL.md": "5.5.
|
|
263
|
-
"microi-mobile-app-quality/references/progressive-01-4-重要按钮必须带图标.md": "5.5.
|
|
264
|
-
"microi-mobile-app-quality/references/progressive-02-9-主题切换必须真实且全局生效.md": "5.5.
|
|
265
|
-
"microi-solution-quotation/SKILL.md": "5.5.
|
|
266
|
-
"microi-solution-quotation/agents/openai.yaml": "5.5.
|
|
267
|
-
"microi-solution-quotation/scripts/build_solution_quote.py": "5.5.
|
|
268
|
-
"microi-sso/SKILL.md": "5.5.
|
|
269
|
-
"microi-sso/references/acceptance.md": "5.5.
|
|
270
|
-
"microi-sso/references/configuration-and-security.md": "5.5.
|
|
271
|
-
"microi-sso/references/inbound.md": "5.5.
|
|
272
|
-
"microi-sso/references/outbound.md": "5.5.
|
|
273
|
-
"microi-system-delivery/SKILL.md": "5.5.
|
|
274
|
-
"microi-system-delivery/references/progressive-01-标准工作流.md": "5.5.
|
|
275
|
-
"microi-system-delivery/references/progressive-02-自动化测试必须覆盖的坑.md": "5.5.
|
|
276
|
-
"microi-ui/SKILL.md": "5.5.
|
|
277
|
-
"microi-ui/references/progressive-01-移动端场景蓝图.md": "5.5.
|
|
278
|
-
"microi-uniapp-frontend/SKILL.md": "5.5.
|
|
279
|
-
"microi-uniapp-frontend/references/progressive-01-移动端分类-双栏列表独立滚动.md": "5.5.
|
|
280
|
-
"microi-uniapp-frontend/references/progressive-02-关键业务资产不得默认选中.md": "5.5.
|
|
281
|
-
"microi.v8.js": "5.5.
|
|
282
|
-
"module-engine/SKILL.md": "5.5.
|
|
283
|
-
"module-engine/references/module-config.md": "5.5.
|
|
284
|
-
"ocr-engine/SKILL.md": "5.5.
|
|
285
|
-
"ocr-engine/agents/openai.yaml": "5.5.
|
|
286
|
-
"page-engine/SKILL.md": "5.5.
|
|
287
|
-
"page-engine/references/progressive-01-所有组件类型.md": "5.5.
|
|
288
|
-
"page-engine/references/progressive-02-版本历史-并发保存与回滚.md": "5.5.
|
|
289
|
-
"performance-testing/SKILL.md": "5.5.
|
|
290
|
-
"playwright-e2e/SKILL.md": "5.5.
|
|
291
|
-
"playwright-e2e/references/progressive-01-全自动登录-免验证码-但不免密码-必读.md": "5.5.
|
|
292
|
-
"playwright-e2e/references/progressive-02-文字对比度与可读性自动化检查-必做.md": "5.5.
|
|
293
|
-
"playwright-e2e/references/progressive-03-microi-helper-模板.md": "5.5.
|
|
294
|
-
"playwright-e2e/references/progressive-04-ci-建议.md": "5.5.
|
|
295
|
-
"print-engine/SKILL.md": "5.5.
|
|
296
|
-
"production-readonly-audit/SKILL.md": "5.5.
|
|
297
|
-
"report-engine/SKILL.md": "5.5.
|
|
298
|
-
"report-engine/agents/openai.yaml": "5.5.
|
|
299
|
-
"scripts/optimize-progressive-disclosure.mjs": "5.5.
|
|
300
|
-
"scripts/refresh-progressive-disclosure.mjs": "5.5.
|
|
301
|
-
"scripts/validate-progressive-disclosure.mjs": "5.5.
|
|
302
|
-
"search-engine/SKILL.md": "5.5.
|
|
303
|
-
"search-engine/agents/openai.yaml": "5.5.
|
|
304
|
-
"spider-engine/SKILL.md": "5.5.
|
|
305
|
-
"system-observability/SKILL.md": "5.5.
|
|
306
|
-
"system-observability/references/memory-incident-triage.md": "5.5.
|
|
307
|
-
"translate-engine/SKILL.md": "5.5.
|
|
308
|
-
"translate-engine/agents/openai.yaml": "5.5.
|
|
309
|
-
"ui-design/SKILL.md": "5.5.
|
|
310
|
-
"ui-design/assets/pattern-showcase/app.js": "5.5.
|
|
311
|
-
"ui-design/assets/pattern-showcase/index.html": "5.5.
|
|
312
|
-
"ui-design/assets/pattern-showcase/styles.css": "5.5.
|
|
313
|
-
"ui-design/assets/templates/MCI-DESIGN.md": "5.5.
|
|
314
|
-
"ui-design/references/design-pattern-library.md": "5.5.
|
|
315
|
-
"ui-design/references/mci-design-contract.md": "5.5.
|
|
316
|
-
"ui-design/references/motion-and-media.md": "5.5.
|
|
317
|
-
"ui-design/references/product-flow-recipes.md": "5.5.
|
|
318
|
-
"ui-design/references/progressive-01-颜色体系-css-variables-支持主题切换.md": "5.5.
|
|
319
|
-
"ui-design/references/progressive-02-字体.md": "5.5.
|
|
320
|
-
"ui-design/references/progressive-03-动效规范-丰富但不卡.md": "5.5.
|
|
321
|
-
"ui-design/references/progressive-04-组件风格速查.md": "5.5.
|
|
322
|
-
"ui-design/references/progressive-05-移动端专用规范.md": "5.5.
|
|
323
|
-
"ui-design/references/progressive-06-主题切换实现.md": "5.5.
|
|
324
|
-
"ui-design/references/progressive-07-速查-从头搭建一个移动端页面.md": "5.5.
|
|
325
|
-
"ui-design/references/progressive-08-表单分组规范-tabs-vs-collapsegroup-强制.md": "5.5.
|
|
326
|
-
"uniapp-mall-assets/SKILL.md": "5.5.
|
|
327
|
-
"unity-integration/SKILL.md": "5.5.
|
|
328
|
-
"unity-integration/agents/openai.yaml": "5.5.
|
|
329
|
-
"unity-integration/references/ai-app-delivery.md": "5.5.
|
|
330
|
-
"unity-integration/references/sdk-api.md": "5.5.
|
|
331
|
-
"unity-integration/references/toolbox-migration.md": "5.5.
|
|
332
|
-
"unity-integration/references/webgl-hosting.md": "5.5.
|
|
333
|
-
"v8-api-config/SKILL.md": "5.5.
|
|
334
|
-
"v8-cache-pattern/SKILL.md": "5.5.
|
|
335
|
-
"v8-crud-api/SKILL.md": "5.5.
|
|
336
|
-
"v8-crud-api/references/progressive-01-查询列表-分页.md": "5.5.
|
|
337
|
-
"v8-crud-api/references/progressive-02-where-条件语法速查.md": "5.5.
|
|
338
|
-
"v8-debugging/SKILL.md": "5.5.
|
|
339
|
-
"v8-explorer-tree/SKILL.md": "5.5.
|
|
340
|
-
"v8-export-import/SKILL.md": "5.5.
|
|
341
|
-
"v8-export-import/references/progressive-01-excellayout-高级自由布局.md": "5.5.
|
|
342
|
-
"v8-export-import/references/progressive-02-powerpoint-导出.md": "5.5.
|
|
343
|
-
"v8-export-import/references/progressive-03-安全-性能注意.md": "5.5.
|
|
344
|
-
"v8-file-upload/SKILL.md": "5.5.
|
|
345
|
-
"v8-file-upload/references/progressive-01-公有桶-vs-私有桶.md": "5.5.
|
|
346
|
-
"v8-file-upload/references/progressive-02-office-文件在线编辑版本号规则.md": "5.5.
|
|
347
|
-
"v8-formengine-http/SKILL.md": "5.5.
|
|
348
|
-
"v8-frontend-events/SKILL.md": "5.5.
|
|
349
|
-
"v8-frontend-events/references/bluetooth-print-api.md": "5.5.
|
|
350
|
-
"v8-frontend-events/references/bluetooth-print.md": "5.5.
|
|
351
|
-
"v8-frontend-events/references/progressive-01-列表事件.md": "5.5.
|
|
352
|
-
"v8-http-integration/SKILL.md": "5.5.
|
|
353
|
-
"v8-http-integration/references/progressive-01-get-请求.md": "5.5.
|
|
354
|
-
"v8-http-integration/references/progressive-02-错误处理模式.md": "5.5.
|
|
355
|
-
"v8-image-processing/SKILL.md": "5.5.
|
|
356
|
-
"v8-image-processing/agents/openai.yaml": "5.5.
|
|
357
|
-
"v8-image-processing/references/api-reference.md": "5.5.
|
|
358
|
-
"v8-menu-buttons/SKILL.md": "5.5.
|
|
359
|
-
"v8-menu-buttons/references/progressive-01-2-按钮对象-schema.md": "5.5.
|
|
360
|
-
"v8-menu-buttons/references/progressive-02-8-模式-f-后台任务按钮-长任务.md": "5.5.
|
|
361
|
-
"v8-menu-buttons/references/progressive-03-10-反模式-避免.md": "5.5.
|
|
362
|
-
"v8-mongodb/SKILL.md": "5.5.
|
|
363
|
-
"v8-mq-mqtt/SKILL.md": "5.5.
|
|
364
|
-
"v8-mq-mqtt/references/mqtt-production.md": "5.5.
|
|
365
|
-
"v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-物联网.md": "5.5.
|
|
366
|
-
"v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs": "5.5.
|
|
367
|
-
"v8-saas-multi-tenant/SKILL.md": "5.5.
|
|
368
|
-
"v8-security/SKILL.md": "5.5.
|
|
369
|
-
"v8-security/references/progressive-01-2-权限校验.md": "5.5.
|
|
370
|
-
"v8-security/references/progressive-02-7-日志记录.md": "5.5.
|
|
371
|
-
"v8-sql-query/SKILL.md": "5.5.
|
|
372
|
-
"v8-table-event/SKILL.md": "5.5.
|
|
373
|
-
"v8-table-event/references/progressive-01-informv8-js-表单打开事件.md": "5.5.
|
|
374
|
-
"v8-table-event/references/progressive-02-前端事件名-v8-eventname-可能的值.md": "5.5.
|
|
375
|
-
"v8-tcp-integration/SKILL.md": "5.5.
|
|
376
|
-
"v8-tcp-integration/agents/openai.yaml": "5.5.
|
|
377
|
-
"v8-template-engine/SKILL.md": "5.5.
|
|
378
|
-
"v8-utilities/SKILL.md": "5.5.
|
|
379
|
-
"v8-utilities/references/client-api-index.md": "5.5.
|
|
380
|
-
"v8-utilities/references/platform-http-routes.md": "5.5.
|
|
381
|
-
"v8-utilities/references/server-api-index.md": "5.5.
|
|
382
|
-
"v8-workflow/SKILL.md": "5.5.
|
|
383
|
-
"v8-workflow/references/progressive-01-节点开始-v8-事件.md": "5.5.
|
|
384
|
-
"vision-engine/SKILL.md": "5.5.
|
|
385
|
-
"vision-engine/agents/openai.yaml": "5.5.
|
|
386
|
-
"vision-engine/references/architecture-and-acceptance.md": "5.5.
|
|
387
|
-
"workspace-conventions/SKILL.md": "5.5.
|
|
388
|
-
"workspace-conventions/references/progressive-01-版本更新日志保护规则-强制.md": "5.5.
|
|
389
|
-
"workspace-conventions/references/progressive-02-microi-net-api-本地启动约定.md": "5.5.
|
|
390
|
-
"workspace-conventions/references/progressive-03-cli-与-ide-插件错版共存约定.md": "5.5.
|
|
207
|
+
".microi-skills-version.json": "5.5.9",
|
|
208
|
+
".progressive-disclosure-manifest.json": "5.5.9",
|
|
209
|
+
"README.md": "5.5.9",
|
|
210
|
+
"ai-engine/SKILL.md": "5.5.9",
|
|
211
|
+
"ai-engine/agents/openai.yaml": "5.5.9",
|
|
212
|
+
"ai-platform-governance/SKILL.md": "5.5.9",
|
|
213
|
+
"ai-platform-governance/references/progressive-01-功能开关.md": "5.5.9",
|
|
214
|
+
"app-store/SKILL.md": "5.5.9",
|
|
215
|
+
"app-store/agents/openai.yaml": "5.5.9",
|
|
216
|
+
"business-blueprint/SKILL.md": "5.5.9",
|
|
217
|
+
"datasource-engine/SKILL.md": "5.5.9",
|
|
218
|
+
"datasource-engine/agents/openai.yaml": "5.5.9",
|
|
219
|
+
"dos-orm/SKILL.md": "5.5.9",
|
|
220
|
+
"dos-orm/references/api-reference.md": "5.5.9",
|
|
221
|
+
"email-engine/SKILL.md": "5.5.9",
|
|
222
|
+
"email-engine/references/v8-email.md": "5.5.9",
|
|
223
|
+
"job-engine/SKILL.md": "5.5.9",
|
|
224
|
+
"job-engine/agents/openai.yaml": "5.5.9",
|
|
225
|
+
"message-notification/SKILL.md": "5.5.9",
|
|
226
|
+
"message-notification/agents/openai.yaml": "5.5.9",
|
|
227
|
+
"message-notification/references/contracts.md": "5.5.9",
|
|
228
|
+
"microi-ai-app-auth.js": "5.5.9",
|
|
229
|
+
"microi-ai-application/SKILL.md": "5.5.9",
|
|
230
|
+
"microi-ai-application/agents/openai.yaml": "5.5.9",
|
|
231
|
+
"microi-ai-application/references/frontend-baseline.md": "5.5.9",
|
|
232
|
+
"microi-client-frontend/SKILL.md": "5.5.9",
|
|
233
|
+
"microi-client-frontend/references/progressive-01-3-动态按钮系统.md": "5.5.9",
|
|
234
|
+
"microi-client-frontend/references/progressive-02-8-运行时高频坑复盘.md": "5.5.9",
|
|
235
|
+
"microi-client-frontend/references/progressive-03-vue3-前端微服务宿主规则.md": "5.5.9",
|
|
236
|
+
"microi-codex-installer/SKILL.md": "5.5.9",
|
|
237
|
+
"microi-codex-installer/agents/openai.yaml": "5.5.9",
|
|
238
|
+
"microi-codex/SKILL.md": "5.5.9",
|
|
239
|
+
"microi-datasource-mapping/SKILL.md": "5.5.9",
|
|
240
|
+
"microi-db-schema/SKILL.md": "5.5.9",
|
|
241
|
+
"microi-db-schema/agents/openai.yaml": "5.5.9",
|
|
242
|
+
"microi-db-schema/references/core-tables.md": "5.5.9",
|
|
243
|
+
"microi-db-schema/references/form-component-options.md": "5.5.9",
|
|
244
|
+
"microi-db-schema/references/schema-overview.md": "5.5.9",
|
|
245
|
+
"microi-db-schema/references/schema.md": "5.5.9",
|
|
246
|
+
"microi-db-schema/references/table-catalog.md": "5.5.9",
|
|
247
|
+
"microi-deployment/SKILL.md": "5.5.9",
|
|
248
|
+
"microi-deployment/references/deployment-matrix.md": "5.5.9",
|
|
249
|
+
"microi-docs-coverage/SKILL.md": "5.5.9",
|
|
250
|
+
"microi-docs-coverage/references/capability-map.md": "5.5.9",
|
|
251
|
+
"microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs": "5.5.9",
|
|
252
|
+
"microi-form-engine/SKILL.md": "5.5.9",
|
|
253
|
+
"microi-form-engine/references/component-catalog.md": "5.5.9",
|
|
254
|
+
"microi-form-engine/references/data-source-events.md": "5.5.9",
|
|
255
|
+
"microi-form-layout/SKILL.md": "5.5.9",
|
|
256
|
+
"microi-form-layout/references/progressive-01-3-三种分组的存储与配置.md": "5.5.9",
|
|
257
|
+
"microi-frontend-sdk/SKILL.md": "5.5.9",
|
|
258
|
+
"microi-frontend-sdk/references/progressive-01-token-当前登录用户与当前终端登录协议.md": "5.5.9",
|
|
259
|
+
"microi-left-right-layout/SKILL.md": "5.5.9",
|
|
260
|
+
"microi-microservice/SKILL.md": "5.5.9",
|
|
261
|
+
"microi-microservice/references/runtime-delivery.md": "5.5.9",
|
|
262
|
+
"microi-mobile-app-quality/SKILL.md": "5.5.9",
|
|
263
|
+
"microi-mobile-app-quality/references/progressive-01-4-重要按钮必须带图标.md": "5.5.9",
|
|
264
|
+
"microi-mobile-app-quality/references/progressive-02-9-主题切换必须真实且全局生效.md": "5.5.9",
|
|
265
|
+
"microi-solution-quotation/SKILL.md": "5.5.9",
|
|
266
|
+
"microi-solution-quotation/agents/openai.yaml": "5.5.9",
|
|
267
|
+
"microi-solution-quotation/scripts/build_solution_quote.py": "5.5.9",
|
|
268
|
+
"microi-sso/SKILL.md": "5.5.9",
|
|
269
|
+
"microi-sso/references/acceptance.md": "5.5.9",
|
|
270
|
+
"microi-sso/references/configuration-and-security.md": "5.5.9",
|
|
271
|
+
"microi-sso/references/inbound.md": "5.5.9",
|
|
272
|
+
"microi-sso/references/outbound.md": "5.5.9",
|
|
273
|
+
"microi-system-delivery/SKILL.md": "5.5.9",
|
|
274
|
+
"microi-system-delivery/references/progressive-01-标准工作流.md": "5.5.9",
|
|
275
|
+
"microi-system-delivery/references/progressive-02-自动化测试必须覆盖的坑.md": "5.5.9",
|
|
276
|
+
"microi-ui/SKILL.md": "5.5.9",
|
|
277
|
+
"microi-ui/references/progressive-01-移动端场景蓝图.md": "5.5.9",
|
|
278
|
+
"microi-uniapp-frontend/SKILL.md": "5.5.9",
|
|
279
|
+
"microi-uniapp-frontend/references/progressive-01-移动端分类-双栏列表独立滚动.md": "5.5.9",
|
|
280
|
+
"microi-uniapp-frontend/references/progressive-02-关键业务资产不得默认选中.md": "5.5.9",
|
|
281
|
+
"microi.v8.js": "5.5.9",
|
|
282
|
+
"module-engine/SKILL.md": "5.5.9",
|
|
283
|
+
"module-engine/references/module-config.md": "5.5.9",
|
|
284
|
+
"ocr-engine/SKILL.md": "5.5.9",
|
|
285
|
+
"ocr-engine/agents/openai.yaml": "5.5.9",
|
|
286
|
+
"page-engine/SKILL.md": "5.5.9",
|
|
287
|
+
"page-engine/references/progressive-01-所有组件类型.md": "5.5.9",
|
|
288
|
+
"page-engine/references/progressive-02-版本历史-并发保存与回滚.md": "5.5.9",
|
|
289
|
+
"performance-testing/SKILL.md": "5.5.9",
|
|
290
|
+
"playwright-e2e/SKILL.md": "5.5.9",
|
|
291
|
+
"playwright-e2e/references/progressive-01-全自动登录-免验证码-但不免密码-必读.md": "5.5.9",
|
|
292
|
+
"playwright-e2e/references/progressive-02-文字对比度与可读性自动化检查-必做.md": "5.5.9",
|
|
293
|
+
"playwright-e2e/references/progressive-03-microi-helper-模板.md": "5.5.9",
|
|
294
|
+
"playwright-e2e/references/progressive-04-ci-建议.md": "5.5.9",
|
|
295
|
+
"print-engine/SKILL.md": "5.5.9",
|
|
296
|
+
"production-readonly-audit/SKILL.md": "5.5.9",
|
|
297
|
+
"report-engine/SKILL.md": "5.5.9",
|
|
298
|
+
"report-engine/agents/openai.yaml": "5.5.9",
|
|
299
|
+
"scripts/optimize-progressive-disclosure.mjs": "5.5.9",
|
|
300
|
+
"scripts/refresh-progressive-disclosure.mjs": "5.5.9",
|
|
301
|
+
"scripts/validate-progressive-disclosure.mjs": "5.5.9",
|
|
302
|
+
"search-engine/SKILL.md": "5.5.9",
|
|
303
|
+
"search-engine/agents/openai.yaml": "5.5.9",
|
|
304
|
+
"spider-engine/SKILL.md": "5.5.9",
|
|
305
|
+
"system-observability/SKILL.md": "5.5.9",
|
|
306
|
+
"system-observability/references/memory-incident-triage.md": "5.5.9",
|
|
307
|
+
"translate-engine/SKILL.md": "5.5.9",
|
|
308
|
+
"translate-engine/agents/openai.yaml": "5.5.9",
|
|
309
|
+
"ui-design/SKILL.md": "5.5.9",
|
|
310
|
+
"ui-design/assets/pattern-showcase/app.js": "5.5.9",
|
|
311
|
+
"ui-design/assets/pattern-showcase/index.html": "5.5.9",
|
|
312
|
+
"ui-design/assets/pattern-showcase/styles.css": "5.5.9",
|
|
313
|
+
"ui-design/assets/templates/MCI-DESIGN.md": "5.5.9",
|
|
314
|
+
"ui-design/references/design-pattern-library.md": "5.5.9",
|
|
315
|
+
"ui-design/references/mci-design-contract.md": "5.5.9",
|
|
316
|
+
"ui-design/references/motion-and-media.md": "5.5.9",
|
|
317
|
+
"ui-design/references/product-flow-recipes.md": "5.5.9",
|
|
318
|
+
"ui-design/references/progressive-01-颜色体系-css-variables-支持主题切换.md": "5.5.9",
|
|
319
|
+
"ui-design/references/progressive-02-字体.md": "5.5.9",
|
|
320
|
+
"ui-design/references/progressive-03-动效规范-丰富但不卡.md": "5.5.9",
|
|
321
|
+
"ui-design/references/progressive-04-组件风格速查.md": "5.5.9",
|
|
322
|
+
"ui-design/references/progressive-05-移动端专用规范.md": "5.5.9",
|
|
323
|
+
"ui-design/references/progressive-06-主题切换实现.md": "5.5.9",
|
|
324
|
+
"ui-design/references/progressive-07-速查-从头搭建一个移动端页面.md": "5.5.9",
|
|
325
|
+
"ui-design/references/progressive-08-表单分组规范-tabs-vs-collapsegroup-强制.md": "5.5.9",
|
|
326
|
+
"uniapp-mall-assets/SKILL.md": "5.5.9",
|
|
327
|
+
"unity-integration/SKILL.md": "5.5.9",
|
|
328
|
+
"unity-integration/agents/openai.yaml": "5.5.9",
|
|
329
|
+
"unity-integration/references/ai-app-delivery.md": "5.5.9",
|
|
330
|
+
"unity-integration/references/sdk-api.md": "5.5.9",
|
|
331
|
+
"unity-integration/references/toolbox-migration.md": "5.5.9",
|
|
332
|
+
"unity-integration/references/webgl-hosting.md": "5.5.9",
|
|
333
|
+
"v8-api-config/SKILL.md": "5.5.9",
|
|
334
|
+
"v8-cache-pattern/SKILL.md": "5.5.9",
|
|
335
|
+
"v8-crud-api/SKILL.md": "5.5.9",
|
|
336
|
+
"v8-crud-api/references/progressive-01-查询列表-分页.md": "5.5.9",
|
|
337
|
+
"v8-crud-api/references/progressive-02-where-条件语法速查.md": "5.5.9",
|
|
338
|
+
"v8-debugging/SKILL.md": "5.5.9",
|
|
339
|
+
"v8-explorer-tree/SKILL.md": "5.5.9",
|
|
340
|
+
"v8-export-import/SKILL.md": "5.5.9",
|
|
341
|
+
"v8-export-import/references/progressive-01-excellayout-高级自由布局.md": "5.5.9",
|
|
342
|
+
"v8-export-import/references/progressive-02-powerpoint-导出.md": "5.5.9",
|
|
343
|
+
"v8-export-import/references/progressive-03-安全-性能注意.md": "5.5.9",
|
|
344
|
+
"v8-file-upload/SKILL.md": "5.5.9",
|
|
345
|
+
"v8-file-upload/references/progressive-01-公有桶-vs-私有桶.md": "5.5.9",
|
|
346
|
+
"v8-file-upload/references/progressive-02-office-文件在线编辑版本号规则.md": "5.5.9",
|
|
347
|
+
"v8-formengine-http/SKILL.md": "5.5.9",
|
|
348
|
+
"v8-frontend-events/SKILL.md": "5.5.9",
|
|
349
|
+
"v8-frontend-events/references/bluetooth-print-api.md": "5.5.9",
|
|
350
|
+
"v8-frontend-events/references/bluetooth-print.md": "5.5.9",
|
|
351
|
+
"v8-frontend-events/references/progressive-01-列表事件.md": "5.5.9",
|
|
352
|
+
"v8-http-integration/SKILL.md": "5.5.9",
|
|
353
|
+
"v8-http-integration/references/progressive-01-get-请求.md": "5.5.9",
|
|
354
|
+
"v8-http-integration/references/progressive-02-错误处理模式.md": "5.5.9",
|
|
355
|
+
"v8-image-processing/SKILL.md": "5.5.9",
|
|
356
|
+
"v8-image-processing/agents/openai.yaml": "5.5.9",
|
|
357
|
+
"v8-image-processing/references/api-reference.md": "5.5.9",
|
|
358
|
+
"v8-menu-buttons/SKILL.md": "5.5.9",
|
|
359
|
+
"v8-menu-buttons/references/progressive-01-2-按钮对象-schema.md": "5.5.9",
|
|
360
|
+
"v8-menu-buttons/references/progressive-02-8-模式-f-后台任务按钮-长任务.md": "5.5.9",
|
|
361
|
+
"v8-menu-buttons/references/progressive-03-10-反模式-避免.md": "5.5.9",
|
|
362
|
+
"v8-mongodb/SKILL.md": "5.5.9",
|
|
363
|
+
"v8-mq-mqtt/SKILL.md": "5.5.9",
|
|
364
|
+
"v8-mq-mqtt/references/mqtt-production.md": "5.5.9",
|
|
365
|
+
"v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-物联网.md": "5.5.9",
|
|
366
|
+
"v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs": "5.5.9",
|
|
367
|
+
"v8-saas-multi-tenant/SKILL.md": "5.5.9",
|
|
368
|
+
"v8-security/SKILL.md": "5.5.9",
|
|
369
|
+
"v8-security/references/progressive-01-2-权限校验.md": "5.5.9",
|
|
370
|
+
"v8-security/references/progressive-02-7-日志记录.md": "5.5.9",
|
|
371
|
+
"v8-sql-query/SKILL.md": "5.5.9",
|
|
372
|
+
"v8-table-event/SKILL.md": "5.5.9",
|
|
373
|
+
"v8-table-event/references/progressive-01-informv8-js-表单打开事件.md": "5.5.9",
|
|
374
|
+
"v8-table-event/references/progressive-02-前端事件名-v8-eventname-可能的值.md": "5.5.9",
|
|
375
|
+
"v8-tcp-integration/SKILL.md": "5.5.9",
|
|
376
|
+
"v8-tcp-integration/agents/openai.yaml": "5.5.9",
|
|
377
|
+
"v8-template-engine/SKILL.md": "5.5.9",
|
|
378
|
+
"v8-utilities/SKILL.md": "5.5.9",
|
|
379
|
+
"v8-utilities/references/client-api-index.md": "5.5.9",
|
|
380
|
+
"v8-utilities/references/platform-http-routes.md": "5.5.9",
|
|
381
|
+
"v8-utilities/references/server-api-index.md": "5.5.9",
|
|
382
|
+
"v8-workflow/SKILL.md": "5.5.9",
|
|
383
|
+
"v8-workflow/references/progressive-01-节点开始-v8-事件.md": "5.5.9",
|
|
384
|
+
"vision-engine/SKILL.md": "5.5.9",
|
|
385
|
+
"vision-engine/agents/openai.yaml": "5.5.9",
|
|
386
|
+
"vision-engine/references/architecture-and-acceptance.md": "5.5.9",
|
|
387
|
+
"workspace-conventions/SKILL.md": "5.5.9",
|
|
388
|
+
"workspace-conventions/references/progressive-01-版本更新日志保护规则-强制.md": "5.5.9",
|
|
389
|
+
"workspace-conventions/references/progressive-02-microi-net-api-本地启动约定.md": "5.5.9",
|
|
390
|
+
"workspace-conventions/references/progressive-03-cli-与-ide-插件错版共存约定.md": "5.5.9"
|
|
391
391
|
},
|
|
392
392
|
"files": [
|
|
393
393
|
".microi-skills-version.json",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "5.5.
|
|
2
|
+
"version": "5.5.9",
|
|
3
3
|
"versionRule": "Microi version uses three numeric parts. Each publish increments the last part; when a part exceeds 9 it carries to the previous part: 1.0.9 -> 1.1.0, 1.9.9 -> 2.0.0.",
|
|
4
4
|
"managedBy": "Microi.VSCode/bump-version.js",
|
|
5
|
-
"updatedAt": "2026-09-
|
|
5
|
+
"updatedAt": "2026-09-08T15:02:50.285Z"
|
|
6
6
|
}
|
|
@@ -80,7 +80,9 @@ AI 业务统一实现在 `Microi.Server/Microi.AI`。`Microi.Server/Microi.net.A
|
|
|
80
80
|
- MiniMax Code 媒体连接使用管理员独立 OAuth 授权,不读取或复用桌面客户端凭据。令牌在可信后端按租户及引擎记录绑定加密保存,刷新使用共享锁与旧值比较;明确 401 可刷新后重试一次,不确定生成请求不得重发。生成结果节点须先保存到共享存储;下载或 HDFS 失败且存在节点时,通过同一 TaskId 的 `RecoverMiniMaxImageTask` 或 `/v1/microi/image_tasks/{taskId}/recover` 恢复已有图片,不再次生成。目录只公开能力元数据。`MediaModels` 可扩展同协议模型;新的供应商协议仍需适配器、商城字段及真实中转验收,不能只填名称就宣称已接通。
|
|
81
81
|
- 吾码节点之间的图片中转使用 `POST /v1/microi/image_tasks` 与 `GET /v1/microi/image_tasks/{taskId}`,服务端平台 API Key 鉴权,提交必须有稳定 `Idempotency-Key`。查询不占用生成额度;接收节点只能使用已启用且公布的供应商媒体模型,禁止自调用中转环路。MiniMax 官方适配器调用同步 `/v1/image_generation`,其它供应商由对应协议适配器处理。消费者、官方中转节点和前端必须更新到同一持久任务协议;应用包更新不能代替平台二进制与前端更新。
|
|
82
82
|
- HTTP 524、连接取消或空响应仅说明传输状态不确定,不能断言提示词违规、Token Plan 不可用或已扣费。明确供应商拒绝保留 `UpstreamHttpStatus`、`UpstreamCode` 和错误消息;`Failed/Uncertain` 不能在回读时合并成“仍在生成”。MiniMax 同步接口没有本任务可用的结果查询号时,不得伪造回查成功或盲目重发;相同 RequestId 参数冲突必须拒绝。
|
|
83
|
-
- 图片与音乐都使用稳定 `RequestId` 和共享幂等;相同参数回放、参数冲突拒绝,上游结果不确定时禁止换 Id 盲重试。音乐当前仅向平台管理员开放且固定无人声;托管结果为 MP3,开源回退为
|
|
83
|
+
- 图片与音乐都使用稳定 `RequestId` 和共享幂等;相同参数回放、参数冲突拒绝,上游结果不确定时禁止换 Id 盲重试。音乐当前仅向平台管理员开放且固定无人声;托管结果为 MP3,开源回退为 WAV、10~60 秒;采样率、声道、码率和时长以实际文件头为准。成功内容由服务端校验后直接写入当前租户公有 HDFS。
|
|
84
|
+
- `GenerateMiniMaxMusic`(HTTP 与 V8)持久入队后返回 `Code=2 + TaskId`;使用 `GET /api/Ai/GetMiniMaxMusicTask?taskId=...` 或 `V8.AI.GetMiniMaxMusicTask(taskId)` 查询,只有 `Code=1 + Permanent=true + FileUrl` 是成功。任务复用共享数据库唯一键、租约和原生音乐 Worker;HTTP 断连不取消生成,前端按当前 API、租户、用户保存原任务并恢复查询。图片与音乐的中转等待任务合并计算容量,必须为供应商执行任务保留槽位。
|
|
85
|
+
- 音乐中转使用 `POST /v1/microi/music_tasks`、`GET /v1/microi/music_tasks/{taskId}` 和平台 API Key,提交携带稳定 `Idempotency-Key`;客户端节点和中转节点均需更新。官方 Music3 事件编号必须在读取 SSE 前写入共享 Redis,完成文件地址在下载前保存,整个事件流受总时限约束。存在有效原回执时才允许 `POST /api/Ai/RecoverMiniMaxMusicTask?taskId=...`(V8 同名方法)或中转 `/v1/microi/music_tasks/{taskId}/recover` 恢复;不得接受新提示词或再提交供应商生成。没有原回执的旧 `Uncertain` 不能自动修复为成功。应用包更新不替代前后端和中转二进制升级。
|
|
84
86
|
- 聊天附件的公有媒体 URL 优先按当前运行租户 `FileServer + FilePath` 解析,禁止写死域名或沿用其它租户的前缀。图片使用 Element Plus `el-image` 的 `preview-src-list` 原页放大,不能套 `target="_blank"`;音乐使用 `<audio controls preload="metadata">` 在线播放。媒体是结构化附件,文本才走安全 Markdown 渲染,禁止拼接任意 HTML 绕过 URL/类型校验。
|
|
85
87
|
- MiniMax 自 2026-08-20 起不再向新用户开放付费 Music/Lyrics API,并停止旧免费 Music 模型。既有 `music-3.0` 账号仍可优先直连;官方开源 `MiniMax-Music3` Space 可作为明确 410 后的回退,但公开 ZeroGPU 配额不是生产 SLA。需要专属额度时只在既有服务端 `mic_ai` 模型路由中保存官方 Space Endpoint 与受保护 Hugging Face Token,不新增 API `AppSettings`、环境变量或前端密钥。Provider/中转账号未开通、额度不足或上游停用时必须返回可诊断失败,不生成占位音频、不伪报成功。图片、音乐和视频的真实可用性都需用目标租户登录态调用及媒体 GET/播放回读证明,源码存在或接口 HTTP 200 不能替代生成成功。
|
|
86
88
|
- MiniMax 视频生成属于可复用供应商原子能力,应实现在 `Microi.AI`,Controller 只读取可信用户/`OsClient`、绑定参数并传递取消信号。理由是上游密钥隔离、异步 `task_id → file_id → download_url` 协议、订阅额度和跨节点幂等都不是某个可编辑接口引擎应复制的业务逻辑;具体文章、提示词和分发编排仍可留在 Job/接口引擎/发布 Skill。
|
|
@@ -237,6 +237,8 @@ description: Microi 应用商城开发、打包、安装和升级规范。用于
|
|
|
237
237
|
- 通用规则:除主键 `Id` 外,平台普通物理列一律允许 `NULL`。导入器必须将历史 `PhysicalColumns.IS_NULLABLE=NO` 归一为允许为空,不收紧已有列,不为迁就非空约束而回填零/空串/租户值;业务必填由表单与后端事件校验。默认值独立保留。启动前必需的核心表必须在共享租约内完成可空兼容,再插入运行时接口;不能等商城运行后才修复商城自身的启动前置结构。
|
|
238
238
|
- 自动化检查:构造 `V8Limit NOT NULL` 无默认值的旧表、含 `NULL` 的历史记录及带默认值/注释/排序规则/索引的列;同时覆盖普通列已允许 NULL 但被 DROP DEFAULT 的情况,使用 `SELECT DEFAULT(列) FROM 表 LIMIT 0` 识别元数据无法区分的缺失默认标志。断言 Id 仍为主键、旧数据和列属性保留,随后省略可选字段的 INSERT 成功;同版本重启和二次安装不重复 DDL 或回填业务值。
|
|
239
239
|
|
|
240
|
+
- 历史数据库的可选菜单关联字段可能仍为整数类型。引用该表的应用包只能按实际物理类型把空字符串归一为 `NULL`,不能将无关联猜成 `0`,也不能越过表所有权修改既有类型;非空值及文本列保持原样。验收同时覆盖旧整数列、新文本列、重复安装和无效非空值继续报错。
|
|
241
|
+
|
|
240
242
|
## 复盘:应用新增菜单未自动授予系统管理员完整权限
|
|
241
243
|
|
|
242
244
|
- 触发场景:应用首次安装或版本更新新增了 `sys_menu`,菜单数据已经存在,但系统管理员看不到入口或只能执行部分按钮;再次人工到角色管理中勾选后才恢复。
|
|
@@ -24,6 +24,17 @@ Quartz 管理能力包含查询、添加、更新、暂停、恢复、删除任
|
|
|
24
24
|
|
|
25
25
|
## 多节点设计
|
|
26
26
|
|
|
27
|
+
### 新旧平台共库过渡:停用新版调度
|
|
28
|
+
|
|
29
|
+
- 系统设置“开发配置”的 `DisableTaskScheduling`(停用任务调度)默认 `0`,缺字段、空值也按正常调度处理;只有已实现此能力的新版后端识别它。字段由“系统设置”应用和 SaaS 空库基础包交付,不写租户配置值,不逐条 Pause/修改任务状态。
|
|
30
|
+
- 开启时在 Quartz 领取触发器、处理 Misfire 之前按租户过滤;领取后、真正触发前重新读取系统设置缓存。禁止仅在 `IJob.Execute`、Listener veto 或业务 V8 入口 return:共享 Quartz 可能已经推进 NextFireTime,造成旧版漏执行。
|
|
31
|
+
- 集群故障恢复也不得清理停用租户的在途记录或创建其补偿触发器。Quartz 以故障节点为单位清理记录,所以同一故障节点混有被停用租户时,新版推迟该故障节点整组恢复,交给旧节点或关闭开关后处理;其它健康节点仍正常领取。
|
|
32
|
+
- 正常保存系统设置在事务提交后失效缓存,下一次调度检查生效,不用重启;不是强制中断,已经开始的任务允许完成。缓存/配置读取失败拒绝该租户的新领取,不影响其它健康租户;Redis/失效通知异常时不能承诺硬实时。
|
|
33
|
+
- 停用期间只读观察周期计划,不推进共享触发器;每个“租户 + Job + Trigger + 计划时间”写一条 `diy_schedule_job_log`,包含 `Status=Skipped`、`Executed=false`、`Reason=SystemTaskSchedulingDisabled` 和中文说明。Redis 原子预留与数据库确定性主键共同防止多新版节点重复记录;日志说明仅代表新版未执行,旧版仍可能正常执行。不补跑业务、不补写进程停机历史;新增/修改计划的日志目录最多约 10 秒更新。
|
|
34
|
+
- 普通接口调用、MQ 消费、升级/应用安装等持久后台任务不属于此开关的范围。手动触发 Quartz 任务仍经过门禁。
|
|
35
|
+
- 交付顺序:先安装字段并打开开关,再让新版节点参与调度;确认旧版所有调度进程已停止且在途任务完成后,关闭开关交接。不同业务库分别设置,不能用一个租户的值控制全部租户。
|
|
36
|
+
- 验收至少覆盖:默认兼容、开关实时读取、租户隔离、共享库旧节点继续领取、领取后开关变化不推进触发器、Misfire 不误推进、多节点日志去重;不得在真实生产任务上制造副作用做测试。
|
|
37
|
+
|
|
27
38
|
每个任务必须同时具备:
|
|
28
39
|
|
|
29
40
|
1. 分布式租约:Key 至少含 `OsClient + JobKey + 计划时间/业务分片`,有唯一持有者、TTL、续租和仅持有者释放。
|
|
@@ -64,6 +64,14 @@ UniApp 使用 Vue 3 + TypeScript 的官方 Vite 工具链,并同时遵守 `mic
|
|
|
64
64
|
|
|
65
65
|
## 存量迁移
|
|
66
66
|
|
|
67
|
+
### Cocos/WebGL 清晰度和资源生命周期
|
|
68
|
+
|
|
69
|
+
- 独立棋子/角色要求独立几何与身份,并不要求每个 glTF 重复上传整张纹理图集。同时核验磁盘资源和引擎实际 Texture2D/GFX bytes;主题切换时按自有 addRef/decRef 生命周期释放非活动模型和材质,迟到加载不得复活已销毁页面。
|
|
70
|
+
- Cocos 3.8.8 普通 Material 资产的宏与 pipeline states 在 initialize/copy 时设置;不能调用仅对实例有效的 recompileShaders/overridePipelineStates 后就假定生效。实际浏览器要复核绑定的贴图、法线、透明混合和叠加照明,类型检查不替代像素检查。
|
|
71
|
+
- 分开记录原生图片尺寸、局部材质密度、渲染缓冲分辨率、截图及真机画质。不得把放大、局部贴图或多图组合标为原生整幅 4K 母版;保留旧收藏与原始溯源。
|
|
72
|
+
- 七类动作等视觉测试应采集连续变化的真实网格状态;暂停引擎定格截图仅用于画面复核。FPS 必须在不暂停、不截屏的连续渲染区间单独计量,记录分辨率、GPU/软件渲染器与后台负载。
|
|
73
|
+
- 选中、起势、接触和吃子音效按时间轴独立触发。不得选棋就播放炮击或把每种兵种做成同一个音效的简单变调;新声音保留旧母版,削波/循环接缝通过不等于最终听感通过。
|
|
74
|
+
|
|
67
75
|
采用绞杀式迁移,避免一次重写破坏已经验证的规则:
|
|
68
76
|
|
|
69
77
|
1. 先把纯规则、API、音频和实时客户端固定为可测试模块。
|
|
@@ -77,14 +77,16 @@ AppKey 稳定且只含安全字符。`microi.routes.json` 是页面事实源,
|
|
|
77
77
|
### 线上目标在本地 Microi.Client 复现(强制)
|
|
78
78
|
|
|
79
79
|
- 先在一次性隔离 browser context 打开线上友好路由并读取
|
|
80
|
-
`window.__MICROI_RUNTIME_ENDPOINT__`;旧版回退读取页面全局、同源缓存和域名解析,禁止猜
|
|
81
|
-
ApiBase/OsClient。
|
|
80
|
+
`window.__MICROI_RUNTIME_ENDPOINT__`;旧版回退读取页面全局、同源缓存和域名解析,禁止猜
|
|
81
|
+
ApiBase/OsClient。
|
|
82
82
|
- 在新的独立 context 打开
|
|
83
83
|
`http://localhost:61500/?OsClient=<encoded>&ApiBase=<encoded>#/micro-app/{MsKey}/{RoutePath}`。
|
|
84
84
|
两个 URL 参数是当前页面最高优先级;初始化后回读同一个运行时对象确认命中目标。
|
|
85
85
|
- 同源普通窗口共享 Token、CurrentUser、ApiBase、OsClient。并行不同目标必须一组目标一个
|
|
86
86
|
Playwright `browser.newContext()` 或独立浏览器 Profile;多个无痕窗口不保证彼此隔离。
|
|
87
|
-
- 本地复现、主框架宿主验收、远端运行产物和生产部署分别报告;本地通过不能替代发布后回读。
|
|
87
|
+
- 本地复现、主框架宿主验收、远端运行产物和生产部署分别报告;本地通过不能替代发布后回读。
|
|
88
|
+
- 新租户或历史还原库可能没有 `SysConfig.ApiBase`。微服务安装不得依赖该字段才能写入运行 HTML:按目标 `OsClient` 注入上下文,运行时使用同租户宿主的 `microApp.getData()` 或绑定该租户的 API 稳定入口,保留代理路径;不得沿用发布端上下文、跨租户宿主或把 HDFS/CDN 域名当成 API。独立 Web/UniApp 仍需有效的目标 API 配置。
|
|
89
|
+
- 登录用户的角色等历史字段可能返回数组、JSON 字符串或空值。列表运算前必须归一化类型,并优先使用当前接口给出的结构化字段;验收应使用真实旧格式数据验证页面渲染及导航,不能只断言接口成功或没有 `pageerror`,还应检查 Vue 捕获到的控制台异常。
|
|
88
90
|
|
|
89
91
|
迁移 Vue2 定制页到独立 Vite 微服务时,不得假设宿主会提供 Tailwind/UnoCSS 等原子类;
|
|
90
92
|
页面依赖的宽高、颜色、间距、响应式和打印/下载样式必须由组件自身的语义 class 明确声明,
|
|
@@ -97,7 +97,9 @@ UnblockIp:<ip>
|
|
|
97
97
|
- 诊断始终独立于 V8 内存/语句保护;不能为了留证默认开启 `V8Limit`,也不能把正常复杂业务报错当成问题已解决。
|
|
98
98
|
- 先核对包含独立采集器的 API 二进制、可写持久 `logs` 卷和本机 .NET 诊断通道;仅升级商城微服务不代表底层已经上线。
|
|
99
99
|
- 每 2 秒检查点与周期分配样本覆盖尚未返回的执行;API 被强杀后由独立采集器保存末段证据,再由重启节点恢复。极快崩溃、线程调度停顿、磁盘满/丢失仍有缺口,不承诺零丢失。
|
|
100
|
-
-
|
|
100
|
+
- 优化版使用执行边界计量与单独后台线程约 200 ms 身份刷新,不挂载诊断专用的 Jint 逐语句 Constraint,也不依赖可能耗尽的业务线程池定时回调。后台事件必须携带原始 OS 线程 Id 和递增版本;运行中长循环的实时分配看 EventPipe 样本,不能把边界累计值的暂时不变或身份刷新误判成业务没有分配/已经取得进展。
|
|
101
|
+
- `Memory` 动作兼容不变;核对 `Executions.ObservationMode/IdentityRegistryOverflowCount/NativeThreadIdentityUnavailableCount/IdentityRefreshFailureCount` 和 `Collector.ObservedIdentityProtocolVersion/BackgroundIdentityRefreshes/RejectedStaleIdentityMarkers`。字段缺失按旧版/未知处理,不按零故障处理。性能数据与完整边界见下方内存诊断参考文件。
|
|
102
|
+
- 共享 Mongo 事故保留 14 天,本机历史预算 256 MiB。原始片段单段上限 64 MiB,保留最近两段,加上正在写入的一段最多 192 MiB;采集主体到 16 MiB 时提前收尾,为 rundown 留出空间,EventPipe 缓冲固定 64 MiB。完整 API 的收尾实测约 35 MiB,不能用小测试进程的片段大小代替平台验收;仍须检查截断、丢事件和离线方法栈。事件 Id 全局唯一,重放幂等且更新版本只前进;不得回退为无界日志/完整对象序列化。
|
|
101
103
|
- 共享存储断开时先保留本机证据,恢复后补传。多节点共享卷的恢复和清理必须尊重仍存活节点及采集器的租约。
|
|
102
104
|
- 查询先报告 `Fresh/LastCaptureError/LostEvents/OverflowSamples`、本机存储错误和待补传状态;指标缺失应显示不可用,不得按零值宣布健康。
|
|
103
105
|
- 整个容器退出后,重启解析器尝试最后两个原始片段。尾段缺方法栈时保留执行身份与对象类型,并补充前段;必须同时报告 `MissingStackSamples`、`Truncated` 与 `Evidence.StackQuality`,不得把部分恢复称为完整栈。
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
| `Evidence.SharedStorageError/PendingUploads` | Mongo 异常时使用本机证据,另一节点看不到尚未上传记录 |
|
|
42
42
|
| 事故 `Stacks` / `Evidence.StackQuality` | 报告缺栈样本、截断、丢事件;部分证据不能称为完整分配栈 |
|
|
43
43
|
|
|
44
|
-
每 2 秒检查点、约 2 分钟压力窗口、共享 14 天历史、本机 256 MiB
|
|
44
|
+
每 2 秒检查点、约 2 分钟压力窗口、共享 14 天历史、本机 256 MiB 历史预算均为有界默认值。原始片段单段最多 64 MiB,保留最近两段,加上正在写入的一段最多 192 MiB;主体达到 16 MiB 就提前收尾,EventPipe 缓冲固定 64 MiB。完整 API 的 rundown 实测约 35 MiB,原 16/32 MiB 缓冲会丢事件,不能仅以小型测试宿主验收采集完整性。极快退出、调度阻塞、卷丢失、磁盘满和早期崩溃仍可能扩大缺口。整个容器退出后尝试尾段与前段恢复,并保留 `MissingStackSamples/Truncated`。不要删除日志卷来“修复”采集。
|
|
45
45
|
|
|
46
46
|
## 从线索到根因
|
|
47
47
|
|
|
@@ -59,7 +59,9 @@
|
|
|
59
59
|
|
|
60
60
|
- **1,001 行**仅限字段 SQL 选项加载的有界物化:原有选项最多返回 1,000 行,额外一行判断超限。`V8.Db.FromSql(...).ToArray()/ToList()` 和通用 `V8.FormEngine.GetTableData` 没有因此新增全局上限;仍按各自原有 SQL、分页、权限与约束执行。不是改写所有 SQL 的 LIMIT,也不保证数据库扫描量/网络量下降。
|
|
61
61
|
- **约 94.9% 分配减少**来自隔离 MySQL 的 20,000 行测试集,49,203,016 B → 2,490,952 B。不是事故每次读取的行数,也不是整机 RSS 降幅。
|
|
62
|
-
-
|
|
62
|
+
- **历史约 22% 开销**来自早期逐语句版本:200,000 次纯 JS 累加、各预热 3 次、交替测 10 轮,24.2282 ms → 29.4760 ms,增加 5.2478 ms(21.66%)。不要把这个历史值说成优化版固定成本。
|
|
63
|
+
- **2026-09-08 源码优化**移除诊断专用 Jint Constraint,保留执行/异常/异步边界计量,由一个独立后台线程约每 200 ms 发送原始 OS 线程身份和递增版本,避免业务线程池耗尽时刷新停摆。后台不能读取另一业务线程的 `GetAllocatedBytesForCurrentThread`;长循环实时分配用 EventPipe 样本,边界累计值允许滞后,身份刷新不等于业务进展。原生线程身份不可用、注册溢出、采样缺口都要报告。
|
|
64
|
+
- 最终基准使用同一个平台引擎实例交替带/不带诊断作用域,计入进入/退出与结算;各预热 10 次、平衡顺序 60 轮。Windows 24.6168 → 24.3032 ms(−1.27%,测量波动,不能宣称加速),Linux 2 CPU / 2 GiB 容器 28.7750 → 28.8427 ms(约 +0.24%);P95 分别为 31.1117 → 30.1709 ms 和 34.3232 → 35.4739 ms。不能横比裸 Jint 与平台引擎的绝对耗时,不能把该结果作为零开销、线上总成本或固定上限。Windows/Linux 两租户持续执行下的延后采集、轮换、离线栈、线程池耗尽与错序/已清除身份回归单独验证。
|
|
63
65
|
- 该微基准不包含 EventPipe 子进程或生产 HTTP 全链路。不能说 CPU 使用率增加 22 个百分点、内存增加 22% 或所有接口固定变慢 22%;端到端成本必须另外测试。
|
|
64
66
|
|
|
65
67
|
## 完整交付验收
|
|
@@ -55,6 +55,7 @@ V8.OsClientModel.AliOssPublicDomain // 可公开的文件域名
|
|
|
55
55
|
|
|
56
56
|
- 所有可变业务逻辑默认必须由接口引擎编排,包括但不限于租户开通、开库、初始化、归属修复、官网个人中心、付费额度等 SaaS 业务流程。C# 后端只暴露原子 V8 能力,例如建库、导入空库模板、复制 `sys_config`、刷新 SaaS 缓存、补偿回滚、字段兜底等;不要把可变业务分支写死到 Controller 或 `TenantProvisioningService` 这类后端定制代码里。接口引擎缺少能力时,优先扩展 `V8.Method`/V8 引擎原子函数,再由接口引擎调用。
|
|
57
57
|
- 官方租户开通固定由 SaaS 包的 `platform-create-tenant` 编排:`platform-runtime-custom-hook` 的 Before 阶段可以阻断,`AuthorizeCurrentUserTenantProvisioning` / `ProvisionCurrentUserTenant` 只从可信主租户 DiyToken 派生所有者与密码材料;创建完成后的 Hook/审计失败只能返回 Warning,不能诱导重复创建。系统账号偏好/资料与租户系统设置分别由 `app.microi.sys_user`、`app.microi.sys-config` 单一拥有,SaaS/Store 不得复制这些 Managed ApiEngineKey。
|
|
58
|
+
- 租户开库失败时,先核对编排 `OsClientDbConn` 的真实账号与权限。业务库账号通常不能开库、创建用户或授权;应使用已有正确授权的管理账号更新编排,不通过 SQL/MCP 手工修复业务数据库。管理员页面必须同时显示中文原因、失败阶段、可执行的处理方法,以及可展开且已脱敏的原始异常链;区分密码/来源认证失败与数据库权限不足,不能只显示笼统失败或隐藏驱动原始错误。
|
|
58
59
|
- 旧版 UniApp 的 `microi-init` 是 SaaS 包继续托管的 Managed 兼容门面。匿名阶段只组合 `platform-os-client-by-domain` 与 `platform-sys-config` 的公开投影;原始 DiyToken 必须由 `GetCurrentToken` 和 `RefreshLoginUser(..., rawToken)` 在后端重新验证且绑定当前租户,菜单再由只允许该固定 Key 调用的 `GetLegacyInitMenuTree(rawToken, osClient?)` 复用 `SysMenuLogic` 权威角色过滤。禁止在匿名 V8 中直接通过 FormEngine 读取 `sys_menu`;域名解析到其它租户时返回目标 `OsClient` 并要求重试,禁止匿名跨租户读取配置或菜单。
|
|
59
60
|
- 主租户由运行环境决定:优先读取环境变量 `OsClient`,其次读取 `appsettings.json` 的 `AppSettings:OsClient`。只有这条主租户 `sys_osclients` 数据中的平台级字段会作为全局配置生效。
|
|
60
61
|
- 同一个主租户可以同时运行在 `Product/Internal`、`Product/Internet` 等多个分区;租户目录、后台任务领取、通知和批量平台应用维护都必须按当前节点的 `OsClientType + OsClientNetwork` 隔离。一次全量维护只证明当前分区,事故恢复必须先盘点所有活跃分区,再从各分区对应节点分别执行并等待 `SucceededCount=ExpectedCount、FailedCount=0`,随后各自以新幂等键做零安装/零更新复跑。禁止临时改租户网络字段、跨分区借用任务或并发维护可能指向同一物理库的重复租户记录。
|