@microi.net/cli 5.5.7 → 5.5.8

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.
@@ -5,13 +5,13 @@
5
5
  "url": "https://microi.net"
6
6
  },
7
7
  "description": "Microi吾码官方 AI 插件市场",
8
- "version": "5.5.7",
8
+ "version": "5.5.8",
9
9
  "plugins": [
10
10
  {
11
11
  "name": "microi",
12
12
  "source": ".",
13
13
  "description": "Microi吾码 AI 开发插件:服务器连接、Skills、MCP、V8 全量同步与低代码交付",
14
- "version": "5.5.7",
14
+ "version": "5.5.8",
15
15
  "strict": true
16
16
  }
17
17
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "microi",
3
- "version": "5.5.7",
3
+ "version": "5.5.8",
4
4
  "description": "Microi吾码 AI 开发插件:服务器连接、Skills、MCP、V8 全量同步与低代码交付",
5
5
  "author": {
6
6
  "name": "Microi.Net",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "microi",
3
- "version": "5.5.7",
3
+ "version": "5.5.8",
4
4
  "description": "Microi吾码低代码平台的 Codex 开发插件,共享 VS Code/CLI 的连接、同步、MCP、V8 与交付能力。",
5
5
  "author": {
6
6
  "name": "Microi.Net",
@@ -5,13 +5,13 @@
5
5
  "url": "https://microi.net"
6
6
  },
7
7
  "description": "Microi吾码官方 AI 插件市场",
8
- "version": "5.5.7",
8
+ "version": "5.5.8",
9
9
  "plugins": [
10
10
  {
11
11
  "name": "microi",
12
12
  "source": ".",
13
13
  "description": "Microi吾码 AI 开发插件:服务器连接、Skills、MCP、V8 全量同步与低代码交付",
14
- "version": "5.5.7",
14
+ "version": "5.5.8",
15
15
  "strict": true
16
16
  }
17
17
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "microi",
3
- "version": "5.5.7",
3
+ "version": "5.5.8",
4
4
  "description": "Microi吾码 AI 开发插件:服务器连接、Skills、MCP、V8 全量同步与低代码交付",
5
5
  "author": {
6
6
  "name": "Microi.Net",
@@ -1,6 +1,6 @@
1
1
  {
2
- "builtAt": "2026-09-07T15:19:23.250Z",
3
- "version": "5.5.7",
2
+ "builtAt": "2026-09-07T21:23:25.619Z",
3
+ "version": "5.5.8",
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": "411bf12dede0750393a3ceee34b7d0a15c6656a82116adb58b4aee9aae00a40a"
16
+ "dshBundle": "63e9aea9b47f2eb504d06bacd706a59acc576710d26fed3a1dc7317ec739b806"
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.7';\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"]
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.8';\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,6 +1,6 @@
1
1
  {
2
2
  "name": "@microi.net/cli",
3
- "version": "5.5.7",
3
+ "version": "5.5.8",
4
4
  "description": "Microi吾码 AI 开发 CLI 与多宿主 Plugin:服务器连接、Skills、MCP、V8 同步和低代码交付",
5
5
  "license": "MIT",
6
6
  "homepage": "https://microi.net/doc/v8-engine/vs-code-plugin.html",
@@ -1,13 +1,13 @@
1
1
  {
2
- "builtAt": "2026-09-07T15:19:22.454Z",
2
+ "builtAt": "2026-09-07T21:23:24.816Z",
3
3
  "source": "../microi.skills",
4
4
  "extension": {
5
5
  "name": "v8-engine",
6
- "version": "5.5.7",
6
+ "version": "5.5.8",
7
7
  "publisher": "Microi"
8
8
  },
9
9
  "skills": {
10
- "version": "5.5.7",
10
+ "version": "5.5.8",
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": 2392106
18
+ "bytes": 2395426
19
19
  },
20
20
  "fileHashes": {
21
- ".microi-skills-version.json": "073d86322a2875dc3b5523d3cd7b7d6e0e02a3b77e9220a36350229446509f6c",
21
+ ".microi-skills-version.json": "6259bb9fa45f898769a0a55e5788d95a76451c153369002c4f900aa098ad764a",
22
22
  ".progressive-disclosure-manifest.json": "11c3cb160643398b48ed8f82e8848ffd086a549ce664b90d659660980d805ff4",
23
23
  "README.md": "bb09053c6ce4ce3fb4add46c62f4bc2ecd7fa5589e1c206c1aa59f655ca140ec",
24
24
  "ai-engine/SKILL.md": "3a098b42f3f918104e825967c3b61fa3fac32d4f7a55fb5529650aa1c29c7baa",
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": "d011140b61119bc544a1e0854d009e8f33c203722f62bc96e21f08962d363f9f",
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",
@@ -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": "7ac1018522988a8e3b3d2c96e824b9cae21ad33f04afb778739217d20f6968be",
120
- "system-observability/references/memory-incident-triage.md": "c82232675aa50afbd1dfb00111c1eddcf8c59e4a0f75768b797dd49672c6fed8",
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": "b179cf083fd0112ee128656becca77619ae019f2c1e7286a54b7c9d249c87ffd",
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.7",
208
- ".progressive-disclosure-manifest.json": "5.5.7",
209
- "README.md": "5.5.7",
210
- "ai-engine/SKILL.md": "5.5.7",
211
- "ai-engine/agents/openai.yaml": "5.5.7",
212
- "ai-platform-governance/SKILL.md": "5.5.7",
213
- "ai-platform-governance/references/progressive-01-功能开关.md": "5.5.7",
214
- "app-store/SKILL.md": "5.5.7",
215
- "app-store/agents/openai.yaml": "5.5.7",
216
- "business-blueprint/SKILL.md": "5.5.7",
217
- "datasource-engine/SKILL.md": "5.5.7",
218
- "datasource-engine/agents/openai.yaml": "5.5.7",
219
- "dos-orm/SKILL.md": "5.5.7",
220
- "dos-orm/references/api-reference.md": "5.5.7",
221
- "email-engine/SKILL.md": "5.5.7",
222
- "email-engine/references/v8-email.md": "5.5.7",
223
- "job-engine/SKILL.md": "5.5.7",
224
- "job-engine/agents/openai.yaml": "5.5.7",
225
- "message-notification/SKILL.md": "5.5.7",
226
- "message-notification/agents/openai.yaml": "5.5.7",
227
- "message-notification/references/contracts.md": "5.5.7",
228
- "microi-ai-app-auth.js": "5.5.7",
229
- "microi-ai-application/SKILL.md": "5.5.7",
230
- "microi-ai-application/agents/openai.yaml": "5.5.7",
231
- "microi-ai-application/references/frontend-baseline.md": "5.5.7",
232
- "microi-client-frontend/SKILL.md": "5.5.7",
233
- "microi-client-frontend/references/progressive-01-3-动态按钮系统.md": "5.5.7",
234
- "microi-client-frontend/references/progressive-02-8-运行时高频坑复盘.md": "5.5.7",
235
- "microi-client-frontend/references/progressive-03-vue3-前端微服务宿主规则.md": "5.5.7",
236
- "microi-codex-installer/SKILL.md": "5.5.7",
237
- "microi-codex-installer/agents/openai.yaml": "5.5.7",
238
- "microi-codex/SKILL.md": "5.5.7",
239
- "microi-datasource-mapping/SKILL.md": "5.5.7",
240
- "microi-db-schema/SKILL.md": "5.5.7",
241
- "microi-db-schema/agents/openai.yaml": "5.5.7",
242
- "microi-db-schema/references/core-tables.md": "5.5.7",
243
- "microi-db-schema/references/form-component-options.md": "5.5.7",
244
- "microi-db-schema/references/schema-overview.md": "5.5.7",
245
- "microi-db-schema/references/schema.md": "5.5.7",
246
- "microi-db-schema/references/table-catalog.md": "5.5.7",
247
- "microi-deployment/SKILL.md": "5.5.7",
248
- "microi-deployment/references/deployment-matrix.md": "5.5.7",
249
- "microi-docs-coverage/SKILL.md": "5.5.7",
250
- "microi-docs-coverage/references/capability-map.md": "5.5.7",
251
- "microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs": "5.5.7",
252
- "microi-form-engine/SKILL.md": "5.5.7",
253
- "microi-form-engine/references/component-catalog.md": "5.5.7",
254
- "microi-form-engine/references/data-source-events.md": "5.5.7",
255
- "microi-form-layout/SKILL.md": "5.5.7",
256
- "microi-form-layout/references/progressive-01-3-三种分组的存储与配置.md": "5.5.7",
257
- "microi-frontend-sdk/SKILL.md": "5.5.7",
258
- "microi-frontend-sdk/references/progressive-01-token-当前登录用户与当前终端登录协议.md": "5.5.7",
259
- "microi-left-right-layout/SKILL.md": "5.5.7",
260
- "microi-microservice/SKILL.md": "5.5.7",
261
- "microi-microservice/references/runtime-delivery.md": "5.5.7",
262
- "microi-mobile-app-quality/SKILL.md": "5.5.7",
263
- "microi-mobile-app-quality/references/progressive-01-4-重要按钮必须带图标.md": "5.5.7",
264
- "microi-mobile-app-quality/references/progressive-02-9-主题切换必须真实且全局生效.md": "5.5.7",
265
- "microi-solution-quotation/SKILL.md": "5.5.7",
266
- "microi-solution-quotation/agents/openai.yaml": "5.5.7",
267
- "microi-solution-quotation/scripts/build_solution_quote.py": "5.5.7",
268
- "microi-sso/SKILL.md": "5.5.7",
269
- "microi-sso/references/acceptance.md": "5.5.7",
270
- "microi-sso/references/configuration-and-security.md": "5.5.7",
271
- "microi-sso/references/inbound.md": "5.5.7",
272
- "microi-sso/references/outbound.md": "5.5.7",
273
- "microi-system-delivery/SKILL.md": "5.5.7",
274
- "microi-system-delivery/references/progressive-01-标准工作流.md": "5.5.7",
275
- "microi-system-delivery/references/progressive-02-自动化测试必须覆盖的坑.md": "5.5.7",
276
- "microi-ui/SKILL.md": "5.5.7",
277
- "microi-ui/references/progressive-01-移动端场景蓝图.md": "5.5.7",
278
- "microi-uniapp-frontend/SKILL.md": "5.5.7",
279
- "microi-uniapp-frontend/references/progressive-01-移动端分类-双栏列表独立滚动.md": "5.5.7",
280
- "microi-uniapp-frontend/references/progressive-02-关键业务资产不得默认选中.md": "5.5.7",
281
- "microi.v8.js": "5.5.7",
282
- "module-engine/SKILL.md": "5.5.7",
283
- "module-engine/references/module-config.md": "5.5.7",
284
- "ocr-engine/SKILL.md": "5.5.7",
285
- "ocr-engine/agents/openai.yaml": "5.5.7",
286
- "page-engine/SKILL.md": "5.5.7",
287
- "page-engine/references/progressive-01-所有组件类型.md": "5.5.7",
288
- "page-engine/references/progressive-02-版本历史-并发保存与回滚.md": "5.5.7",
289
- "performance-testing/SKILL.md": "5.5.7",
290
- "playwright-e2e/SKILL.md": "5.5.7",
291
- "playwright-e2e/references/progressive-01-全自动登录-免验证码-但不免密码-必读.md": "5.5.7",
292
- "playwright-e2e/references/progressive-02-文字对比度与可读性自动化检查-必做.md": "5.5.7",
293
- "playwright-e2e/references/progressive-03-microi-helper-模板.md": "5.5.7",
294
- "playwright-e2e/references/progressive-04-ci-建议.md": "5.5.7",
295
- "print-engine/SKILL.md": "5.5.7",
296
- "production-readonly-audit/SKILL.md": "5.5.7",
297
- "report-engine/SKILL.md": "5.5.7",
298
- "report-engine/agents/openai.yaml": "5.5.7",
299
- "scripts/optimize-progressive-disclosure.mjs": "5.5.7",
300
- "scripts/refresh-progressive-disclosure.mjs": "5.5.7",
301
- "scripts/validate-progressive-disclosure.mjs": "5.5.7",
302
- "search-engine/SKILL.md": "5.5.7",
303
- "search-engine/agents/openai.yaml": "5.5.7",
304
- "spider-engine/SKILL.md": "5.5.7",
305
- "system-observability/SKILL.md": "5.5.7",
306
- "system-observability/references/memory-incident-triage.md": "5.5.7",
307
- "translate-engine/SKILL.md": "5.5.7",
308
- "translate-engine/agents/openai.yaml": "5.5.7",
309
- "ui-design/SKILL.md": "5.5.7",
310
- "ui-design/assets/pattern-showcase/app.js": "5.5.7",
311
- "ui-design/assets/pattern-showcase/index.html": "5.5.7",
312
- "ui-design/assets/pattern-showcase/styles.css": "5.5.7",
313
- "ui-design/assets/templates/MCI-DESIGN.md": "5.5.7",
314
- "ui-design/references/design-pattern-library.md": "5.5.7",
315
- "ui-design/references/mci-design-contract.md": "5.5.7",
316
- "ui-design/references/motion-and-media.md": "5.5.7",
317
- "ui-design/references/product-flow-recipes.md": "5.5.7",
318
- "ui-design/references/progressive-01-颜色体系-css-variables-支持主题切换.md": "5.5.7",
319
- "ui-design/references/progressive-02-字体.md": "5.5.7",
320
- "ui-design/references/progressive-03-动效规范-丰富但不卡.md": "5.5.7",
321
- "ui-design/references/progressive-04-组件风格速查.md": "5.5.7",
322
- "ui-design/references/progressive-05-移动端专用规范.md": "5.5.7",
323
- "ui-design/references/progressive-06-主题切换实现.md": "5.5.7",
324
- "ui-design/references/progressive-07-速查-从头搭建一个移动端页面.md": "5.5.7",
325
- "ui-design/references/progressive-08-表单分组规范-tabs-vs-collapsegroup-强制.md": "5.5.7",
326
- "uniapp-mall-assets/SKILL.md": "5.5.7",
327
- "unity-integration/SKILL.md": "5.5.7",
328
- "unity-integration/agents/openai.yaml": "5.5.7",
329
- "unity-integration/references/ai-app-delivery.md": "5.5.7",
330
- "unity-integration/references/sdk-api.md": "5.5.7",
331
- "unity-integration/references/toolbox-migration.md": "5.5.7",
332
- "unity-integration/references/webgl-hosting.md": "5.5.7",
333
- "v8-api-config/SKILL.md": "5.5.7",
334
- "v8-cache-pattern/SKILL.md": "5.5.7",
335
- "v8-crud-api/SKILL.md": "5.5.7",
336
- "v8-crud-api/references/progressive-01-查询列表-分页.md": "5.5.7",
337
- "v8-crud-api/references/progressive-02-where-条件语法速查.md": "5.5.7",
338
- "v8-debugging/SKILL.md": "5.5.7",
339
- "v8-explorer-tree/SKILL.md": "5.5.7",
340
- "v8-export-import/SKILL.md": "5.5.7",
341
- "v8-export-import/references/progressive-01-excellayout-高级自由布局.md": "5.5.7",
342
- "v8-export-import/references/progressive-02-powerpoint-导出.md": "5.5.7",
343
- "v8-export-import/references/progressive-03-安全-性能注意.md": "5.5.7",
344
- "v8-file-upload/SKILL.md": "5.5.7",
345
- "v8-file-upload/references/progressive-01-公有桶-vs-私有桶.md": "5.5.7",
346
- "v8-file-upload/references/progressive-02-office-文件在线编辑版本号规则.md": "5.5.7",
347
- "v8-formengine-http/SKILL.md": "5.5.7",
348
- "v8-frontend-events/SKILL.md": "5.5.7",
349
- "v8-frontend-events/references/bluetooth-print-api.md": "5.5.7",
350
- "v8-frontend-events/references/bluetooth-print.md": "5.5.7",
351
- "v8-frontend-events/references/progressive-01-列表事件.md": "5.5.7",
352
- "v8-http-integration/SKILL.md": "5.5.7",
353
- "v8-http-integration/references/progressive-01-get-请求.md": "5.5.7",
354
- "v8-http-integration/references/progressive-02-错误处理模式.md": "5.5.7",
355
- "v8-image-processing/SKILL.md": "5.5.7",
356
- "v8-image-processing/agents/openai.yaml": "5.5.7",
357
- "v8-image-processing/references/api-reference.md": "5.5.7",
358
- "v8-menu-buttons/SKILL.md": "5.5.7",
359
- "v8-menu-buttons/references/progressive-01-2-按钮对象-schema.md": "5.5.7",
360
- "v8-menu-buttons/references/progressive-02-8-模式-f-后台任务按钮-长任务.md": "5.5.7",
361
- "v8-menu-buttons/references/progressive-03-10-反模式-避免.md": "5.5.7",
362
- "v8-mongodb/SKILL.md": "5.5.7",
363
- "v8-mq-mqtt/SKILL.md": "5.5.7",
364
- "v8-mq-mqtt/references/mqtt-production.md": "5.5.7",
365
- "v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-物联网.md": "5.5.7",
366
- "v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs": "5.5.7",
367
- "v8-saas-multi-tenant/SKILL.md": "5.5.7",
368
- "v8-security/SKILL.md": "5.5.7",
369
- "v8-security/references/progressive-01-2-权限校验.md": "5.5.7",
370
- "v8-security/references/progressive-02-7-日志记录.md": "5.5.7",
371
- "v8-sql-query/SKILL.md": "5.5.7",
372
- "v8-table-event/SKILL.md": "5.5.7",
373
- "v8-table-event/references/progressive-01-informv8-js-表单打开事件.md": "5.5.7",
374
- "v8-table-event/references/progressive-02-前端事件名-v8-eventname-可能的值.md": "5.5.7",
375
- "v8-tcp-integration/SKILL.md": "5.5.7",
376
- "v8-tcp-integration/agents/openai.yaml": "5.5.7",
377
- "v8-template-engine/SKILL.md": "5.5.7",
378
- "v8-utilities/SKILL.md": "5.5.7",
379
- "v8-utilities/references/client-api-index.md": "5.5.7",
380
- "v8-utilities/references/platform-http-routes.md": "5.5.7",
381
- "v8-utilities/references/server-api-index.md": "5.5.7",
382
- "v8-workflow/SKILL.md": "5.5.7",
383
- "v8-workflow/references/progressive-01-节点开始-v8-事件.md": "5.5.7",
384
- "vision-engine/SKILL.md": "5.5.7",
385
- "vision-engine/agents/openai.yaml": "5.5.7",
386
- "vision-engine/references/architecture-and-acceptance.md": "5.5.7",
387
- "workspace-conventions/SKILL.md": "5.5.7",
388
- "workspace-conventions/references/progressive-01-版本更新日志保护规则-强制.md": "5.5.7",
389
- "workspace-conventions/references/progressive-02-microi-net-api-本地启动约定.md": "5.5.7",
390
- "workspace-conventions/references/progressive-03-cli-与-ide-插件错版共存约定.md": "5.5.7"
207
+ ".microi-skills-version.json": "5.5.8",
208
+ ".progressive-disclosure-manifest.json": "5.5.8",
209
+ "README.md": "5.5.8",
210
+ "ai-engine/SKILL.md": "5.5.8",
211
+ "ai-engine/agents/openai.yaml": "5.5.8",
212
+ "ai-platform-governance/SKILL.md": "5.5.8",
213
+ "ai-platform-governance/references/progressive-01-功能开关.md": "5.5.8",
214
+ "app-store/SKILL.md": "5.5.8",
215
+ "app-store/agents/openai.yaml": "5.5.8",
216
+ "business-blueprint/SKILL.md": "5.5.8",
217
+ "datasource-engine/SKILL.md": "5.5.8",
218
+ "datasource-engine/agents/openai.yaml": "5.5.8",
219
+ "dos-orm/SKILL.md": "5.5.8",
220
+ "dos-orm/references/api-reference.md": "5.5.8",
221
+ "email-engine/SKILL.md": "5.5.8",
222
+ "email-engine/references/v8-email.md": "5.5.8",
223
+ "job-engine/SKILL.md": "5.5.8",
224
+ "job-engine/agents/openai.yaml": "5.5.8",
225
+ "message-notification/SKILL.md": "5.5.8",
226
+ "message-notification/agents/openai.yaml": "5.5.8",
227
+ "message-notification/references/contracts.md": "5.5.8",
228
+ "microi-ai-app-auth.js": "5.5.8",
229
+ "microi-ai-application/SKILL.md": "5.5.8",
230
+ "microi-ai-application/agents/openai.yaml": "5.5.8",
231
+ "microi-ai-application/references/frontend-baseline.md": "5.5.8",
232
+ "microi-client-frontend/SKILL.md": "5.5.8",
233
+ "microi-client-frontend/references/progressive-01-3-动态按钮系统.md": "5.5.8",
234
+ "microi-client-frontend/references/progressive-02-8-运行时高频坑复盘.md": "5.5.8",
235
+ "microi-client-frontend/references/progressive-03-vue3-前端微服务宿主规则.md": "5.5.8",
236
+ "microi-codex-installer/SKILL.md": "5.5.8",
237
+ "microi-codex-installer/agents/openai.yaml": "5.5.8",
238
+ "microi-codex/SKILL.md": "5.5.8",
239
+ "microi-datasource-mapping/SKILL.md": "5.5.8",
240
+ "microi-db-schema/SKILL.md": "5.5.8",
241
+ "microi-db-schema/agents/openai.yaml": "5.5.8",
242
+ "microi-db-schema/references/core-tables.md": "5.5.8",
243
+ "microi-db-schema/references/form-component-options.md": "5.5.8",
244
+ "microi-db-schema/references/schema-overview.md": "5.5.8",
245
+ "microi-db-schema/references/schema.md": "5.5.8",
246
+ "microi-db-schema/references/table-catalog.md": "5.5.8",
247
+ "microi-deployment/SKILL.md": "5.5.8",
248
+ "microi-deployment/references/deployment-matrix.md": "5.5.8",
249
+ "microi-docs-coverage/SKILL.md": "5.5.8",
250
+ "microi-docs-coverage/references/capability-map.md": "5.5.8",
251
+ "microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs": "5.5.8",
252
+ "microi-form-engine/SKILL.md": "5.5.8",
253
+ "microi-form-engine/references/component-catalog.md": "5.5.8",
254
+ "microi-form-engine/references/data-source-events.md": "5.5.8",
255
+ "microi-form-layout/SKILL.md": "5.5.8",
256
+ "microi-form-layout/references/progressive-01-3-三种分组的存储与配置.md": "5.5.8",
257
+ "microi-frontend-sdk/SKILL.md": "5.5.8",
258
+ "microi-frontend-sdk/references/progressive-01-token-当前登录用户与当前终端登录协议.md": "5.5.8",
259
+ "microi-left-right-layout/SKILL.md": "5.5.8",
260
+ "microi-microservice/SKILL.md": "5.5.8",
261
+ "microi-microservice/references/runtime-delivery.md": "5.5.8",
262
+ "microi-mobile-app-quality/SKILL.md": "5.5.8",
263
+ "microi-mobile-app-quality/references/progressive-01-4-重要按钮必须带图标.md": "5.5.8",
264
+ "microi-mobile-app-quality/references/progressive-02-9-主题切换必须真实且全局生效.md": "5.5.8",
265
+ "microi-solution-quotation/SKILL.md": "5.5.8",
266
+ "microi-solution-quotation/agents/openai.yaml": "5.5.8",
267
+ "microi-solution-quotation/scripts/build_solution_quote.py": "5.5.8",
268
+ "microi-sso/SKILL.md": "5.5.8",
269
+ "microi-sso/references/acceptance.md": "5.5.8",
270
+ "microi-sso/references/configuration-and-security.md": "5.5.8",
271
+ "microi-sso/references/inbound.md": "5.5.8",
272
+ "microi-sso/references/outbound.md": "5.5.8",
273
+ "microi-system-delivery/SKILL.md": "5.5.8",
274
+ "microi-system-delivery/references/progressive-01-标准工作流.md": "5.5.8",
275
+ "microi-system-delivery/references/progressive-02-自动化测试必须覆盖的坑.md": "5.5.8",
276
+ "microi-ui/SKILL.md": "5.5.8",
277
+ "microi-ui/references/progressive-01-移动端场景蓝图.md": "5.5.8",
278
+ "microi-uniapp-frontend/SKILL.md": "5.5.8",
279
+ "microi-uniapp-frontend/references/progressive-01-移动端分类-双栏列表独立滚动.md": "5.5.8",
280
+ "microi-uniapp-frontend/references/progressive-02-关键业务资产不得默认选中.md": "5.5.8",
281
+ "microi.v8.js": "5.5.8",
282
+ "module-engine/SKILL.md": "5.5.8",
283
+ "module-engine/references/module-config.md": "5.5.8",
284
+ "ocr-engine/SKILL.md": "5.5.8",
285
+ "ocr-engine/agents/openai.yaml": "5.5.8",
286
+ "page-engine/SKILL.md": "5.5.8",
287
+ "page-engine/references/progressive-01-所有组件类型.md": "5.5.8",
288
+ "page-engine/references/progressive-02-版本历史-并发保存与回滚.md": "5.5.8",
289
+ "performance-testing/SKILL.md": "5.5.8",
290
+ "playwright-e2e/SKILL.md": "5.5.8",
291
+ "playwright-e2e/references/progressive-01-全自动登录-免验证码-但不免密码-必读.md": "5.5.8",
292
+ "playwright-e2e/references/progressive-02-文字对比度与可读性自动化检查-必做.md": "5.5.8",
293
+ "playwright-e2e/references/progressive-03-microi-helper-模板.md": "5.5.8",
294
+ "playwright-e2e/references/progressive-04-ci-建议.md": "5.5.8",
295
+ "print-engine/SKILL.md": "5.5.8",
296
+ "production-readonly-audit/SKILL.md": "5.5.8",
297
+ "report-engine/SKILL.md": "5.5.8",
298
+ "report-engine/agents/openai.yaml": "5.5.8",
299
+ "scripts/optimize-progressive-disclosure.mjs": "5.5.8",
300
+ "scripts/refresh-progressive-disclosure.mjs": "5.5.8",
301
+ "scripts/validate-progressive-disclosure.mjs": "5.5.8",
302
+ "search-engine/SKILL.md": "5.5.8",
303
+ "search-engine/agents/openai.yaml": "5.5.8",
304
+ "spider-engine/SKILL.md": "5.5.8",
305
+ "system-observability/SKILL.md": "5.5.8",
306
+ "system-observability/references/memory-incident-triage.md": "5.5.8",
307
+ "translate-engine/SKILL.md": "5.5.8",
308
+ "translate-engine/agents/openai.yaml": "5.5.8",
309
+ "ui-design/SKILL.md": "5.5.8",
310
+ "ui-design/assets/pattern-showcase/app.js": "5.5.8",
311
+ "ui-design/assets/pattern-showcase/index.html": "5.5.8",
312
+ "ui-design/assets/pattern-showcase/styles.css": "5.5.8",
313
+ "ui-design/assets/templates/MCI-DESIGN.md": "5.5.8",
314
+ "ui-design/references/design-pattern-library.md": "5.5.8",
315
+ "ui-design/references/mci-design-contract.md": "5.5.8",
316
+ "ui-design/references/motion-and-media.md": "5.5.8",
317
+ "ui-design/references/product-flow-recipes.md": "5.5.8",
318
+ "ui-design/references/progressive-01-颜色体系-css-variables-支持主题切换.md": "5.5.8",
319
+ "ui-design/references/progressive-02-字体.md": "5.5.8",
320
+ "ui-design/references/progressive-03-动效规范-丰富但不卡.md": "5.5.8",
321
+ "ui-design/references/progressive-04-组件风格速查.md": "5.5.8",
322
+ "ui-design/references/progressive-05-移动端专用规范.md": "5.5.8",
323
+ "ui-design/references/progressive-06-主题切换实现.md": "5.5.8",
324
+ "ui-design/references/progressive-07-速查-从头搭建一个移动端页面.md": "5.5.8",
325
+ "ui-design/references/progressive-08-表单分组规范-tabs-vs-collapsegroup-强制.md": "5.5.8",
326
+ "uniapp-mall-assets/SKILL.md": "5.5.8",
327
+ "unity-integration/SKILL.md": "5.5.8",
328
+ "unity-integration/agents/openai.yaml": "5.5.8",
329
+ "unity-integration/references/ai-app-delivery.md": "5.5.8",
330
+ "unity-integration/references/sdk-api.md": "5.5.8",
331
+ "unity-integration/references/toolbox-migration.md": "5.5.8",
332
+ "unity-integration/references/webgl-hosting.md": "5.5.8",
333
+ "v8-api-config/SKILL.md": "5.5.8",
334
+ "v8-cache-pattern/SKILL.md": "5.5.8",
335
+ "v8-crud-api/SKILL.md": "5.5.8",
336
+ "v8-crud-api/references/progressive-01-查询列表-分页.md": "5.5.8",
337
+ "v8-crud-api/references/progressive-02-where-条件语法速查.md": "5.5.8",
338
+ "v8-debugging/SKILL.md": "5.5.8",
339
+ "v8-explorer-tree/SKILL.md": "5.5.8",
340
+ "v8-export-import/SKILL.md": "5.5.8",
341
+ "v8-export-import/references/progressive-01-excellayout-高级自由布局.md": "5.5.8",
342
+ "v8-export-import/references/progressive-02-powerpoint-导出.md": "5.5.8",
343
+ "v8-export-import/references/progressive-03-安全-性能注意.md": "5.5.8",
344
+ "v8-file-upload/SKILL.md": "5.5.8",
345
+ "v8-file-upload/references/progressive-01-公有桶-vs-私有桶.md": "5.5.8",
346
+ "v8-file-upload/references/progressive-02-office-文件在线编辑版本号规则.md": "5.5.8",
347
+ "v8-formengine-http/SKILL.md": "5.5.8",
348
+ "v8-frontend-events/SKILL.md": "5.5.8",
349
+ "v8-frontend-events/references/bluetooth-print-api.md": "5.5.8",
350
+ "v8-frontend-events/references/bluetooth-print.md": "5.5.8",
351
+ "v8-frontend-events/references/progressive-01-列表事件.md": "5.5.8",
352
+ "v8-http-integration/SKILL.md": "5.5.8",
353
+ "v8-http-integration/references/progressive-01-get-请求.md": "5.5.8",
354
+ "v8-http-integration/references/progressive-02-错误处理模式.md": "5.5.8",
355
+ "v8-image-processing/SKILL.md": "5.5.8",
356
+ "v8-image-processing/agents/openai.yaml": "5.5.8",
357
+ "v8-image-processing/references/api-reference.md": "5.5.8",
358
+ "v8-menu-buttons/SKILL.md": "5.5.8",
359
+ "v8-menu-buttons/references/progressive-01-2-按钮对象-schema.md": "5.5.8",
360
+ "v8-menu-buttons/references/progressive-02-8-模式-f-后台任务按钮-长任务.md": "5.5.8",
361
+ "v8-menu-buttons/references/progressive-03-10-反模式-避免.md": "5.5.8",
362
+ "v8-mongodb/SKILL.md": "5.5.8",
363
+ "v8-mq-mqtt/SKILL.md": "5.5.8",
364
+ "v8-mq-mqtt/references/mqtt-production.md": "5.5.8",
365
+ "v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-物联网.md": "5.5.8",
366
+ "v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs": "5.5.8",
367
+ "v8-saas-multi-tenant/SKILL.md": "5.5.8",
368
+ "v8-security/SKILL.md": "5.5.8",
369
+ "v8-security/references/progressive-01-2-权限校验.md": "5.5.8",
370
+ "v8-security/references/progressive-02-7-日志记录.md": "5.5.8",
371
+ "v8-sql-query/SKILL.md": "5.5.8",
372
+ "v8-table-event/SKILL.md": "5.5.8",
373
+ "v8-table-event/references/progressive-01-informv8-js-表单打开事件.md": "5.5.8",
374
+ "v8-table-event/references/progressive-02-前端事件名-v8-eventname-可能的值.md": "5.5.8",
375
+ "v8-tcp-integration/SKILL.md": "5.5.8",
376
+ "v8-tcp-integration/agents/openai.yaml": "5.5.8",
377
+ "v8-template-engine/SKILL.md": "5.5.8",
378
+ "v8-utilities/SKILL.md": "5.5.8",
379
+ "v8-utilities/references/client-api-index.md": "5.5.8",
380
+ "v8-utilities/references/platform-http-routes.md": "5.5.8",
381
+ "v8-utilities/references/server-api-index.md": "5.5.8",
382
+ "v8-workflow/SKILL.md": "5.5.8",
383
+ "v8-workflow/references/progressive-01-节点开始-v8-事件.md": "5.5.8",
384
+ "vision-engine/SKILL.md": "5.5.8",
385
+ "vision-engine/agents/openai.yaml": "5.5.8",
386
+ "vision-engine/references/architecture-and-acceptance.md": "5.5.8",
387
+ "workspace-conventions/SKILL.md": "5.5.8",
388
+ "workspace-conventions/references/progressive-01-版本更新日志保护规则-强制.md": "5.5.8",
389
+ "workspace-conventions/references/progressive-02-microi-net-api-本地启动约定.md": "5.5.8",
390
+ "workspace-conventions/references/progressive-03-cli-与-ide-插件错版共存约定.md": "5.5.8"
391
391
  },
392
392
  "files": [
393
393
  ".microi-skills-version.json",
@@ -1,6 +1,6 @@
1
1
  {
2
- "version": "5.5.7",
2
+ "version": "5.5.8",
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-07T15:12:52.375Z"
5
+ "updatedAt": "2026-09-07T19:16:12.977Z"
6
6
  }
@@ -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`,菜单数据已经存在,但系统管理员看不到入口或只能执行部分按钮;再次人工到角色管理中勾选后才恢复。
@@ -97,7 +97,9 @@ UnblockIp:<ip>
97
97
  - 诊断始终独立于 V8 内存/语句保护;不能为了留证默认开启 `V8Limit`,也不能把正常复杂业务报错当成问题已解决。
98
98
  - 先核对包含独立采集器的 API 二进制、可写持久 `logs` 卷和本机 .NET 诊断通道;仅升级商城微服务不代表底层已经上线。
99
99
  - 每 2 秒检查点与周期分配样本覆盖尚未返回的执行;API 被强杀后由独立采集器保存末段证据,再由重启节点恢复。极快崩溃、线程调度停顿、磁盘满/丢失仍有缺口,不承诺零丢失。
100
- - 共享 Mongo 事故保留 14 天,本机历史预算 256 MiB,原始片段另外限制为 4 × 16 MiB。事件 Id 全局唯一,重放幂等且更新版本只前进;不得回退为无界日志/完整对象序列化。
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 历史预算、4 × 16 MiB 原始片段均为有界默认值。极快退出、调度阻塞、卷丢失、磁盘满和早期崩溃可能扩大缺口。整个容器退出后尝试尾段与前段恢复,并保留 `MissingStackSamples/Truncated`。不要删除日志卷来“修复”采集。
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
- - **约 22% 开销**来自 200,000 次纯 JS 累加、各预热 3 次、交替测 10 轮的微基准:24.2282 ms → 29.4760 ms,增加 5.2478 ms(21.66%)。逐语句诊断检查有调用/计数/分支成本,每 2,048 次检查才读时钟、约 200 ms 更新心跳;V8 业务资源限制仍关闭。
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`,随后各自以新幂等键做零安装/零更新复跑。禁止临时改租户网络字段、跨分区借用任务或并发维护可能指向同一物理库的重复租户记录。