@microi.net/cli 6.3.0 → 6.3.3
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 +5 -5
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server.js +114 -114
- package/scripts/microi-cli.js +74 -67
- package/scripts/microi-skills.meta.json +283 -262
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +37 -37
- package/skills/ai-engine/SKILL.md +32 -2
- package/skills/ai-engine/references/cpu-timeline-export.md +31 -0
- package/skills/ai-engine/references/local-speech-s2v.md +35 -0
- package/skills/app-store/SKILL.md +15 -3
- package/skills/dos-orm/SKILL.md +3 -0
- package/skills/job-engine/SKILL.md +12 -0
- package/skills/microi-client-frontend/SKILL.md +2 -2
- package/skills/microi-codex/SKILL.md +5 -0
- package/skills/microi-codex-installer/SKILL.md +48 -3
- package/skills/microi-deployment/SKILL.md +376 -373
- package/skills/microi-deployment/references/deployment-matrix.md +167 -145
- package/skills/microi-deployment/references/offline-installer.md +66 -64
- package/skills/microi-docs-coverage/SKILL.md +1 -1
- package/skills/microi-docs-coverage/references/capability-map.md +10 -4
- package/skills/microi-form-engine/references/form-generation-quality.md +12 -0
- package/skills/microi-frontend-sdk/SKILL.md +12 -1
- package/skills/microi-left-right-layout/SKILL.md +176 -163
- package/skills/microi-microservice/SKILL.md +5 -0
- package/skills/microi-microservice/references/runtime-delivery.md +6 -0
- package/skills/microi-microservice/references/v3-committed-status-read.md +13 -0
- package/skills/microi-ui/SKILL.md +13 -1
- package/skills/module-engine/SKILL.md +27 -2
- package/skills/ocr-engine/SKILL.md +30 -0
- package/skills/system-observability/SKILL.md +28 -0
- package/skills/system-observability/references/framework-status-widgets.md +63 -0
- package/skills/system-observability/references/memory-incident-triage.md +14 -0
- package/skills/ui-design/SKILL.md +13 -0
- package/skills/ui-design/references/controls-and-motion-research.md +49 -0
- package/skills/ui-design/references/media-geometry-and-pointer.md +42 -0
- package/skills/ui-design/references/mobile-product-language.md +2 -0
- package/skills/ui-design/references/motion-and-media.md +4 -2
- package/skills/ui-design/references/product-flow-recipes.md +3 -0
- package/skills/uniapp-mall-assets/SKILL.md +2 -0
- package/skills/v8-api-config/SKILL.md +2 -2
- package/skills/v8-security/SKILL.md +22 -5
- package/skills/v8-security/references/payment-gateway.md +25 -0
- package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +20 -0
- package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +19 -1
- package/skills/v8-sql-query/SKILL.md +2 -0
- package/skills/v8-table-event/SKILL.md +14 -2
- package/skills/v8-workflow/SKILL.md +8 -0
- package/skills/vision-engine/references/realtime-cpu-profiles.md +7 -0
- package/skills/vision-engine/references/video-timeline.md +13 -0
- 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 +10 -9
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "6.3.
|
|
2
|
+
"version": "6.3.3",
|
|
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.Agent/bump-version.js",
|
|
5
|
-
"updatedAt": "2026-11-
|
|
5
|
+
"updatedAt": "2026-11-14T04:31:18.730Z"
|
|
6
6
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 1,
|
|
3
|
-
"generatedAt": "2026-11-
|
|
3
|
+
"generatedAt": "2026-11-14T04:29:12.141Z",
|
|
4
4
|
"policy": {
|
|
5
5
|
"maxEntryLines": 285,
|
|
6
6
|
"referenceBudgetLines": 245,
|
|
@@ -169,7 +169,7 @@
|
|
|
169
169
|
]
|
|
170
170
|
},
|
|
171
171
|
"microi-client-frontend": {
|
|
172
|
-
"originalSha256": "
|
|
172
|
+
"originalSha256": "72175ffcf1e674e28b92bd70decd3aa1909299378e3d48bd005f696a4d3a129a",
|
|
173
173
|
"originalLines": 775,
|
|
174
174
|
"prefixSha256": "578d60fc1b769bff36396db2c0c6b2affa61ad02e956d8ad574e8238764b4008",
|
|
175
175
|
"prefixBytes": 2231,
|
|
@@ -195,7 +195,7 @@
|
|
|
195
195
|
"id": "microi-client-frontend-002",
|
|
196
196
|
"ordinal": 2,
|
|
197
197
|
"destination": "microi-client-frontend/SKILL.md",
|
|
198
|
-
"sha256": "
|
|
198
|
+
"sha256": "6127b9fd2b04839ea362158a0e51eed44415b6f956ea7109739227bf43f3d693",
|
|
199
199
|
"lines": 151,
|
|
200
200
|
"heading": "2. 表单引擎三层结构"
|
|
201
201
|
},
|
|
@@ -410,11 +410,11 @@
|
|
|
410
410
|
]
|
|
411
411
|
},
|
|
412
412
|
"microi-frontend-sdk": {
|
|
413
|
-
"originalSha256": "
|
|
414
|
-
"originalLines":
|
|
413
|
+
"originalSha256": "185fcfaf257cba12cafd17b530734028b66203a3459cc1cc46d3651d5966aee4",
|
|
414
|
+
"originalLines": 323,
|
|
415
415
|
"prefixSha256": "f64639b7e1c6cd7b2793d3506101cf1b91f77d306daabaae45599ecaefc551bb",
|
|
416
416
|
"prefixBytes": 936,
|
|
417
|
-
"entryLines":
|
|
417
|
+
"entryLines": 218,
|
|
418
418
|
"chunks": [
|
|
419
419
|
{
|
|
420
420
|
"id": "microi-frontend-sdk-000",
|
|
@@ -460,8 +460,8 @@
|
|
|
460
460
|
"id": "microi-frontend-sdk-005",
|
|
461
461
|
"ordinal": 6,
|
|
462
462
|
"destination": "microi-frontend-sdk/SKILL.md",
|
|
463
|
-
"sha256": "
|
|
464
|
-
"lines":
|
|
463
|
+
"sha256": "c1d756f5276ce9089c5ea42939e2d05cf2a06c695785fcdcb8eb9338c4b68ce0",
|
|
464
|
+
"lines": 25,
|
|
465
465
|
"heading": "项目封装规则"
|
|
466
466
|
},
|
|
467
467
|
{
|
|
@@ -880,11 +880,11 @@
|
|
|
880
880
|
]
|
|
881
881
|
},
|
|
882
882
|
"microi-ui": {
|
|
883
|
-
"originalSha256": "
|
|
884
|
-
"originalLines":
|
|
883
|
+
"originalSha256": "df924f40e553905ea65a7f9bc362635eaf6aaace12987dd0cae790e11c3d1948",
|
|
884
|
+
"originalLines": 348,
|
|
885
885
|
"prefixSha256": "3ead290dee4a8e42582aa01a9d5de7ce81612222fbed81674bf9f783c907ed84",
|
|
886
886
|
"prefixBytes": 1538,
|
|
887
|
-
"entryLines":
|
|
887
|
+
"entryLines": 202,
|
|
888
888
|
"chunks": [
|
|
889
889
|
{
|
|
890
890
|
"id": "microi-ui-000",
|
|
@@ -898,8 +898,8 @@
|
|
|
898
898
|
"id": "microi-ui-001",
|
|
899
899
|
"ordinal": 1,
|
|
900
900
|
"destination": "microi-ui/SKILL.md",
|
|
901
|
-
"sha256": "
|
|
902
|
-
"lines":
|
|
901
|
+
"sha256": "881ad77d07f02a6887d3814d3489c88ec313765bc1f2be7beb0877febe18180d",
|
|
902
|
+
"lines": 25,
|
|
903
903
|
"heading": "内置设计模式"
|
|
904
904
|
},
|
|
905
905
|
{
|
|
@@ -1661,7 +1661,7 @@
|
|
|
1661
1661
|
"originalLines": 1667,
|
|
1662
1662
|
"prefixSha256": "d5cdc246fb119fdd479bde9ba1d38b79839b172426ddf85c69cf3d69b24ebf8a",
|
|
1663
1663
|
"prefixBytes": 1945,
|
|
1664
|
-
"entryLines":
|
|
1664
|
+
"entryLines": 255,
|
|
1665
1665
|
"chunks": [
|
|
1666
1666
|
{
|
|
1667
1667
|
"id": "ui-design-000",
|
|
@@ -2856,11 +2856,11 @@
|
|
|
2856
2856
|
]
|
|
2857
2857
|
},
|
|
2858
2858
|
"v8-security": {
|
|
2859
|
-
"originalSha256": "
|
|
2860
|
-
"originalLines":
|
|
2861
|
-
"prefixSha256": "
|
|
2862
|
-
"prefixBytes":
|
|
2863
|
-
"entryLines":
|
|
2859
|
+
"originalSha256": "8414fa0958218790ced1f37e6118e463c87df1340143e229c0ea75fac41ffa1f",
|
|
2860
|
+
"originalLines": 635,
|
|
2861
|
+
"prefixSha256": "9ad6926c7970b94fd3e8acad4cbf19c05cb2953a453223b78e81b462b096aa75",
|
|
2862
|
+
"prefixBytes": 8952,
|
|
2863
|
+
"entryLines": 282,
|
|
2864
2864
|
"chunks": [
|
|
2865
2865
|
{
|
|
2866
2866
|
"id": "v8-security-000",
|
|
@@ -2874,7 +2874,7 @@
|
|
|
2874
2874
|
"id": "v8-security-001",
|
|
2875
2875
|
"ordinal": 1,
|
|
2876
2876
|
"destination": "v8-security/SKILL.md",
|
|
2877
|
-
"sha256": "
|
|
2877
|
+
"sha256": "516232642128c348947bdd7fcaa359d69e75757eba9a03aa991a49815e48cede",
|
|
2878
2878
|
"lines": 24,
|
|
2879
2879
|
"heading": "0.5 接口引擎配置安全"
|
|
2880
2880
|
},
|
|
@@ -2890,8 +2890,8 @@
|
|
|
2890
2890
|
"id": "v8-security-003",
|
|
2891
2891
|
"ordinal": 4,
|
|
2892
2892
|
"destination": "v8-security/SKILL.md",
|
|
2893
|
-
"sha256": "
|
|
2894
|
-
"lines":
|
|
2893
|
+
"sha256": "d927a6a615a65a697606715b2eef74b977d8a5e28c4aeb62eecd9a0228861052",
|
|
2894
|
+
"lines": 55,
|
|
2895
2895
|
"heading": "3. 输入验证"
|
|
2896
2896
|
},
|
|
2897
2897
|
{
|
|
@@ -2930,8 +2930,8 @@
|
|
|
2930
2930
|
"id": "v8-security-008",
|
|
2931
2931
|
"ordinal": 8,
|
|
2932
2932
|
"destination": "v8-security/references/progressive-02-7-日志记录.md",
|
|
2933
|
-
"sha256": "
|
|
2934
|
-
"lines":
|
|
2933
|
+
"sha256": "eccad5f08ca09c3179d0612f9c4d4cc82ff34f7241bbe2592603ce8646344b31",
|
|
2934
|
+
"lines": 58,
|
|
2935
2935
|
"heading": "7. 日志记录"
|
|
2936
2936
|
},
|
|
2937
2937
|
{
|
|
@@ -2998,11 +2998,11 @@
|
|
|
2998
2998
|
]
|
|
2999
2999
|
},
|
|
3000
3000
|
"v8-table-event": {
|
|
3001
|
-
"originalSha256": "
|
|
3002
|
-
"originalLines":
|
|
3001
|
+
"originalSha256": "8d4ea5e1e6e680c5c37d3811236439bd85df1bf64a4a62b21bad99f8ce41fdf8",
|
|
3002
|
+
"originalLines": 461,
|
|
3003
3003
|
"prefixSha256": "e5e476797c36afccdac42a3e05d9ecb50415013274b84f4f89212b0b1a6b7621",
|
|
3004
3004
|
"prefixBytes": 778,
|
|
3005
|
-
"entryLines":
|
|
3005
|
+
"entryLines": 239,
|
|
3006
3006
|
"chunks": [
|
|
3007
3007
|
{
|
|
3008
3008
|
"id": "v8-table-event-000",
|
|
@@ -3024,16 +3024,16 @@
|
|
|
3024
3024
|
"id": "v8-table-event-002",
|
|
3025
3025
|
"ordinal": 2,
|
|
3026
3026
|
"destination": "v8-table-event/SKILL.md",
|
|
3027
|
-
"sha256": "
|
|
3028
|
-
"lines":
|
|
3027
|
+
"sha256": "cbcfbe20d02e4dcf34652bdffa9c0b45d25f83d653ea42426c6467a1640bce14",
|
|
3028
|
+
"lines": 64,
|
|
3029
3029
|
"heading": "事件触发规则"
|
|
3030
3030
|
},
|
|
3031
3031
|
{
|
|
3032
3032
|
"id": "v8-table-event-003",
|
|
3033
3033
|
"ordinal": 3,
|
|
3034
3034
|
"destination": "v8-table-event/SKILL.md",
|
|
3035
|
-
"sha256": "
|
|
3036
|
-
"lines":
|
|
3035
|
+
"sha256": "233cfaa83e2ec99359719ad7bbf9b8c718ceffae466dd6c6303b335324c42221",
|
|
3036
|
+
"lines": 58,
|
|
3037
3037
|
"heading": "⚠️ 关键陷阱(必读)"
|
|
3038
3038
|
},
|
|
3039
3039
|
{
|
|
@@ -3135,7 +3135,7 @@
|
|
|
3135
3135
|
"originalLines": 386,
|
|
3136
3136
|
"prefixSha256": "a3becda94bed70461e634cb7cda1f79100c611f402d080b03b067bf4e518f4af",
|
|
3137
3137
|
"prefixBytes": 4484,
|
|
3138
|
-
"entryLines":
|
|
3138
|
+
"entryLines": 261,
|
|
3139
3139
|
"chunks": [
|
|
3140
3140
|
{
|
|
3141
3141
|
"id": "v8-workflow-000",
|
|
@@ -3266,8 +3266,8 @@
|
|
|
3266
3266
|
]
|
|
3267
3267
|
},
|
|
3268
3268
|
"workspace-conventions": {
|
|
3269
|
-
"originalSha256": "
|
|
3270
|
-
"originalLines":
|
|
3269
|
+
"originalSha256": "a54e422425013b096454647ac82ab225de2aafafec982fceba3c85d16c127ae9",
|
|
3270
|
+
"originalLines": 763,
|
|
3271
3271
|
"prefixSha256": "0904cb050a08222c24f04be8847bba4fc2fde86cf4bc777238afa5c9e9bf117b",
|
|
3272
3272
|
"prefixBytes": 23322,
|
|
3273
3273
|
"entryLines": 202,
|
|
@@ -3524,8 +3524,8 @@
|
|
|
3524
3524
|
"id": "workspace-conventions-031",
|
|
3525
3525
|
"ordinal": 31,
|
|
3526
3526
|
"destination": "workspace-conventions/references/progressive-02-microi-net-api-本地启动约定.md",
|
|
3527
|
-
"sha256": "
|
|
3528
|
-
"lines":
|
|
3527
|
+
"sha256": "c1bfdcc795d7b5db86fc7d631ca72b30bc678acb088e4b58920f056c3a13391a",
|
|
3528
|
+
"lines": 16,
|
|
3529
3529
|
"heading": "MCP 可用性排查约定"
|
|
3530
3530
|
},
|
|
3531
3531
|
{
|
|
@@ -3564,7 +3564,7 @@
|
|
|
3564
3564
|
"id": "workspace-conventions-036",
|
|
3565
3565
|
"ordinal": 36,
|
|
3566
3566
|
"destination": "workspace-conventions/references/progressive-02-microi-net-api-本地启动约定.md",
|
|
3567
|
-
"sha256": "
|
|
3567
|
+
"sha256": "ca024e69cd5385ac137b3324a69dc00e1f31cc16d9745fc3d7938cef4d1a3f3a",
|
|
3568
3568
|
"lines": 13,
|
|
3569
3569
|
"heading": "MCP 可调用性诊断补充"
|
|
3570
3570
|
},
|
|
@@ -7,6 +7,16 @@ description: Microi AI 引擎、MiniMax 图片/音乐/视频生成与预览、
|
|
|
7
7
|
|
|
8
8
|
# Microi AI Engine
|
|
9
9
|
|
|
10
|
+
### 网页影视工作台桥接(9.0.8)
|
|
11
|
+
|
|
12
|
+
完整原子入口:`V8.AI.VideoFlow`、`V8.AI.VideoFlowStream`、`V8.AI.ValidateVideoFlowUpload`、`V8.AI.VideoFlowModel`、`V8.AI.VideoFlowMirror`;实际签名与固定Key边界以中文后端V8文档和当前接口为准。
|
|
13
|
+
|
|
14
|
+
`V8.AI.VideoFlow` 和 `VideoFlowStream` 只向配置的固定内网 `/microi/dispatch` 发送真实租户/本人身份的签名信封;普通JSON、增量SSE/NDJSON、HDFS文件流分别使用现有通道,不用Base64代理媒体。固定creator接口中的管理员仍仅本人,独立admin只读投影通过统一权限原子复核。业务使用Managed引擎,生成/费用仍沿用既有持久GPU队列;不能再建一条争抢相同GPU的Toonflow队列。新增配置按当前项目用户AGENTS固定在 `sys_osclients`,桥配置不从主租户复制或投影到V8。现有MCP的引擎/Manifest/Schema/上传/发布工具覆盖资源交付,不新增任意URL/密钥/Token代理工具;源码或模拟测试不代替真实目标部署、上传和生成验收。
|
|
15
|
+
|
|
16
|
+
管理员本地文件下载仅固定 `nz-videoflow-admin-file→V8.AI.VideoFlowMirror`。公开动作Prepare/Register/Resolve分请求提交;原子Copy/Resolve重验活动会话、主库管理资格、来源项目归属及当前管理员本人目标字段。来源仅项目相对路径、精确SHA/大小,单文件0–100MiB,内部固定file-copy签名流不可变成任意HTTP代理。HDFS写入及流式读回一致后持久完成;未知永久回执禁止自动重下,不使用Redis过期恢复提交。私有.bin目标只能从可信回执恢复原名/MIME,既有原生审计代理强制attachment和nosniff;所有媒体字节仍走HDFS流/Range。AI助手应用声明模型及文件两张内部永久回执表,通用Client CRUD包括管理员均拒绝。
|
|
17
|
+
|
|
18
|
+
六项桥配置用正式 MCP `microi_manage_saas_videoflow`(后端9.0.8+):当前主租户真实平台管理员先Inspect,再以Revision/CAS和`SAVE_VIDEOFLOW:<租户>:<Revision>`确认Save。固定configuration键enabled/serviceUrl/sharedSecret/timeoutSeconds/allowedOrigins/modelId;共享密钥32–256字符只写不读、省略保旧,只回HasSharedSecret,普通FormEngine禁止改这组六字段。服务地址仅HTTP(S)根地址、HTTPS Origin数组精确匹配、超时5–600秒;启用前缺项拒绝。提交后刷新共享/本节点配置;超时或Persisted=true先Inspect,不能用通用表、SQL、临时V8或ServerPrivateSettings旁路/双写,不能把源码工具实现当成已发行CLI或目标运行验收。
|
|
19
|
+
|
|
10
20
|
涉及 AI 员工、多岗位协作或 OpenClaw 执行节点时,读取
|
|
11
21
|
[AI 员工与执行节点](references/ai-employees.md)。先区分职责、持久任务、真实工具权限与人工验收,不能把聊天提示词或设计蓝图当作已经运行的员工系统。
|
|
12
22
|
|
|
@@ -99,7 +109,7 @@ Manifest 原始声明必须在兼容归一化前整体预检:资源集合只
|
|
|
99
109
|
## 代码分层
|
|
100
110
|
|
|
101
111
|
- OpenAI 兼容代理按完整 SSE 事件判断模型终态;只在全部请求候选都有显式已知 `finish_reason`、有文本/工具调用载荷且无错误时,给正常 EOF 补单个 `[DONE]`。已有终止帧即为传输边界,忽略其后数据;纯 EOF、取消、空答案、错误和冲突终态不能变成功。`length/content_filter` 保留原值,传输结束不等于业务答案完整;原有计量来源与记录继续生效。正常及错误 body 读取须传取消信号,并沿用代理总超时。需部署包含该修复的新 AI 后端,不能以商城/MCP 更新冒充上线。
|
|
102
|
-
- 固定 JSON 基准须显式记录思考设置。`microi.benchmarks/ai-quality` 协议 1.1.0 对 MiniMax-M3 的两个条件同样固定 `reasoning_split:true`、`thinking:{type:'disabled'}`;其它模型不发送未经确认的参数。保留 1.0.0 失败结果;不剥离任意回答或取消终止帧验收来制造通过,不把不同思考配置比较成效率收益。供应商能力以官方文档和当前实际回执为准。
|
|
112
|
+
- 固定 JSON 基准须显式记录思考设置。`microi.doc/scripts/benchmarks/ai-quality` 协议 1.1.0 对 MiniMax-M3 的两个条件同样固定 `reasoning_split:true`、`thinking:{type:'disabled'}`;其它模型不发送未经确认的参数。保留 1.0.0 失败结果;不剥离任意回答或取消终止帧验收来制造通过,不把不同思考配置比较成效率收益。供应商能力以官方文档和当前实际回执为准。
|
|
103
113
|
|
|
104
114
|
AI 业务统一实现在 `Microi.Server/Microi.AI`。`Microi.Server/Microi.net.Api` 只是 HTTP、SSE 与 SignalR 传输层,可以做路由、请求绑定、读取认证中间件产生的可信用户/租户、传递取消信号和写响应,但不能承载模型选择、Schema/Skill 检索、NL2SQL 授权与执行、提示词编排、代理路由、供应商密钥、额度计量、订阅支付状态或 AI 工作流。
|
|
105
115
|
|
|
@@ -115,6 +125,26 @@ AI 业务统一实现在 `Microi.Server/Microi.AI`。`Microi.Server/Microi.net.A
|
|
|
115
125
|
|
|
116
126
|
## 模型与密钥
|
|
117
127
|
|
|
128
|
+
### 原生本地配音与声音驱动视频(9.0.3候选)
|
|
129
|
+
|
|
130
|
+
涉及TTS、S2V或原生私有音频接入时完整读取[本地声音合同](references/local-speech-s2v.md)。同一共享GPU槽并发1、唯一审计Qwen TTS节点、独立venv、固定离线权重与预置VoiceId;不能把节点/下载/源码当目标推理通过,不修改既有客户批准档位。
|
|
131
|
+
|
|
132
|
+
### 原生CPU时间线剪辑导出(9.0.3候选)
|
|
133
|
+
|
|
134
|
+
实现、接入或验收剪辑时完整读取[CPU时间线合同](references/cpu-timeline-export.md)。固定24fps、本人私有原生资产引用、独立CPU串行队列及8TB资料盘scratch;逐镜保留原声/受控mix或replace,PCM私有中间件后仅最终一次AAC;字幕尚未接通。四项Managed/V8/SDK/MCP合同、正式AI收据表和SaaS预算字段须随宿主同步,不能把候选源码或本地FFmpeg小样当作客户已部署或100分钟性能通过。
|
|
135
|
+
|
|
136
|
+
### 本机图像与视频的统一排队(最低9.0.2)
|
|
137
|
+
|
|
138
|
+
- 后端 `V8.AI.GetLocalMediaModels()`、`V8.AI.QueueLocalMedia(businessId)`、`V8.AI.GetLocalMediaTask(taskId)` 通过 Managed `platform-ai-runtime` 的同名动作暴露;入队参数仅 `BusinessId`,查询仅 `TaskId`。MCP `microi_ai` 的本机入队要求 `confirmExecution=原BusinessId`,目录与任务查询只读。不能提交客户端 Graph、节点、Endpoint、密钥、用户或租户覆盖;旧节点明确提示升级,不回退直连 ComfyUI。
|
|
139
|
+
- 运行时实现在 `Microi.AI`,由现有 API 宿主注册,复用 `mci_background_task` 与固定原生 Worker `__microi_native_ai_local_media__`;全部用户、图像和视频模型共享一个物理 GPU 持久槽,重推理并发为 1。`mci_ai_gpu_slot` 和 `mci_ai_local_media_receipt` 归 AI助手应用,只有结构、只读字段及真实唯一索引,无用户菜单、GPU种子或执行数据。普通角色的通用 CRUD 被可信平台拒绝;管理员仍有既有运维权限。
|
|
140
|
+
- 主租户 SaaS 的 `sys_osclients.AiLocalMediaRuntime` 是唯一配置源,归 SaaS引擎应用;缺失、空值或 `Enabled=false` 不启用。当前能力只接受配置主租户,不能宣称所有子租户可共享此运行时。不要增加环境变量、appsettings 开关、普通模型目录假条目或将客户业务 Hook 放进官方包。
|
|
141
|
+
- 配置限定物理 GPU、可信私网 ComfyUI、业务准入接口和批准版本化工作流。图按只读目录挂载到 `/app/App_Data/local-media/workflows`,保存精确 SHA-256;只有实测成功的宽高、帧数、参考图数和显存阈值能设为启用。目录的 Ready 是当前配置可选择,不是所有硬件、质量或长片一致性保证。
|
|
142
|
+
- 业务先在同一事务提交任务与积分预占,再由独立请求入队;运行时只读取已提交业务信封。准入接口的 `Load/Claim/Complete/Fail/Unknown` 先调用 `V8.Method.RequireLocalMediaDispatchContext(V8.Param)`,宿主校验不可伪造的原生上下文、精确引擎、动作、租户、负责人、业务编号、摘要、原生任务和栅栏。`StopHttp`、参数标记或当前用户本身都不能代替此证明。
|
|
143
|
+
- `Load`发生在原生任务创建前,没有后台任务Id/fence。9.0.2原生调用同时建立精确引擎/租户的既有Managed协议作用域以通过StopHttp边界,再由独立LocalMedia封套校验业务;其后各回调仍校验原任务fence。不得关闭业务准入接口的StopHttp/匿名限制、伪造后台任务字段或用临时接口绕开。目录Ready、报价成功和Queued业务行均不能代替实际持久任务与GPU生成闭环。
|
|
144
|
+
- 服务端冻结请求、批准 Profile 和运行配置及摘要;提交前持久化 Submitted,丢失响应只查询同一个带连字符 UUID,不再次 POST。ComfyUI 不保证同 UUID 去重,重启会丢失内存历史;查无明确结果保持 Unknown 并人工核对,不能自动重生或自动退费。终态先持久收据,再释放 GPU,恢复不会再次生成。
|
|
145
|
+
- 参考图最多两张,每张不超过 10 MiB,须由画布按批准宽高裁剪或留边后导出静态 PNG;校验完整 PNG 块、CRC 与结尾,拒绝 APNG、多图和尺寸不符,不能拉伸人物。结果保存当前用户私有 HDFS 的永久 `FilePath`;本人查询才签发临时 `FileUrl` 并标记 `UrlIsTemporary=true`,不要把签名 URL 当永久资产。
|
|
146
|
+
- 先部署匹配的 Core/AI/API 9.0.2 或更新版,再安装声明相同最低运行时的AI助手包、SaaS配置字段及后台任务依赖。9.0.1虽修复客户端禁用写入事件的边界,但首次Load尚缺原生协议准入,不应把目录或模拟测试当作真实生成已通过。任务归属、准入与积分预留的服务端事件必须始终执行;回读表、索引、准入接口、关闭/启用目录和真实生成结果。应用包、MCP源码或模拟测试不代表 GPU 已部署;未知结果、跨用户拒绝、崩溃恢复、单槽并发、计费和实际图像/视频质量分别验收。
|
|
147
|
+
|
|
118
148
|
### 媒体目录与图片任务的 Managed 调用
|
|
119
149
|
|
|
120
150
|
- 后端新增 `V8.AI.GetMediaModels()`、`V8.AI.GenerateMiniMaxImage(param)`、`V8.AI.GetMiniMaxImageTask(taskId)`、`V8.AI.RecoverMiniMaxImageTask(taskId)` 四个原子。前端及 Microi Agent 调用 `/apiengine/platform-ai-runtime` 的同名 `Action`,后端 V8 可直接调用原子,不自请求本机 HTTP,不新增第二套媒体编排入口。
|
|
@@ -149,7 +179,7 @@ AI 业务统一实现在 `Microi.Server/Microi.AI`。`Microi.Server/Microi.net.A
|
|
|
149
179
|
- PC、UniApp 和其它客户端通过 `POST /apiengine/{key}` 发送的 JSON Body 必须完整进入 `V8.Param`;兼容入口 `/api/ApiEngine/Run` 的 JSON Body 还必须包含 `ApiEngineKey`。API 层只负责请求绑定和清除客户端伪造的可信字段,模型选择、权限策略与对话逻辑仍全部位于 `Microi.AI` 或受控 AI 接口引擎中。
|
|
150
180
|
- 本轮源码的两条中转计量写入路径将 `PromptPreview/Question/Answer` 绑定为空字符串;用量查询只投影计量与关联字段,不返回旧正文预览。旧物理列保留兼容,不批量删除历史数据,不改变数值计量事务或用户主动保存的会话历史。正式运行以目标版本发布和实际读回为准;部署旧版本时这些字段仍可能保存正文。
|
|
151
181
|
- 普通聊天/NL2V8 诊断仅记录长度、状态、异常类型;NL2V8 异常响应也不回显异常正文。历史日志、旧账本、会话存储、其它 AI 分支及外部供应商留存需单独审计;不能据此声称全平台全面脱敏或统一留存策略已完成。
|
|
152
|
-
- 流式回执 `UsageSource=Provider` 仅用于 SDK 实际返回的用量,缺失为 `Unavailable`;存量中转计量估算保留且另标 `RelayUsageSource=Estimated`,不得当作供应商实际 token 或费用。公开实测可用 `microi.benchmarks/ai-quality` 固定合成任务协议,模拟夹具必须标 `harness-test`,真实供应商回执标 `real-provider`;结构化 JSON 校验不能替代端到端数据库/界面/权限验收。
|
|
182
|
+
- 流式回执 `UsageSource=Provider` 仅用于 SDK 实际返回的用量,缺失为 `Unavailable`;存量中转计量估算保留且另标 `RelayUsageSource=Estimated`,不得当作供应商实际 token 或费用。公开实测可用 `microi.doc/scripts/benchmarks/ai-quality` 固定合成任务协议,模拟夹具必须标 `harness-test`,真实供应商回执标 `real-provider`;结构化 JSON 校验不能替代端到端数据库/界面/权限验收。
|
|
153
183
|
- OpenAI 代理、普通 `/api/Ai/ChatStream` 与 `/api/Ai/NL2V8Engine` 将 HTTP 取消信号传递到对应模型流读取,并与模型超时组合;`IAiCancellableStream` 为普通聊天提供可取消契约。取消/超时/长度截断/上游失败不能标为完整成功。取消不撤销供应商已经发生的用量,也不能承诺网络断开瞬间停止上游计费。
|
|
154
184
|
- 中转无限额度使用 `mci_ai_token_account.IsUnlimited=1` 的独立权益,不能把负数或极大余额当作无限。赠送余额保持有限数值,无限期间按该调用既有的计量来源继续累计 `UsedTokens` 与脱敏用量账本而不减 `RemainingTokens`,供应商用量缺失时仍可能为估算;各余额预检与扣量 SQL 均读取服务端当前权益,撤销后恢复有限余额规则。该权益不代替服务器 License、登录/API Key、付费订阅、供应商配额或并发保护。
|
|
155
185
|
- 管理中转权益复用 Managed `platform-ai-account`:先 `GetRelayTokenAccount({TargetUserId})`,再 `SetRelayTokenLimit({TargetUserId,IsUnlimited,ExpectedUnlimited})`。后两参数必须为布尔值,ExpectedUnlimited 必须来自刚回读状态;仅当前配置主租户、数据库仍有效的平台管理员可调用,访问密钥与子租户均拒绝。无账户的读取不开户;设置可受控初始化默认赠送账户,多条有效账户立即失败。写后回读 `AccountExists/IsUnlimited/GiftTokens/UsedTokens/RemainingTokens/UnlimitedUpdatedBy/UnlimitedUpdatedAt`,不能只看 Code。
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# 原生CPU有声时间线(9.0.3候选)
|
|
2
|
+
|
|
3
|
+
此合同需匹配Core/AI/API、AI助手Managed引擎和SaaS结构正式发布。源码、候选包、目录Ready和本地测试不能代替目标租户任务、私有文件、播放与长片性能验收。
|
|
4
|
+
|
|
5
|
+
- 业务Worker在Microi.AI,复用原生mci_background_task;API只做既有Managed传输。固定CPU Worker __microi_native_ai_timeline_export__ 使用独立共享并发键,当前只开放配置主租户,所有用户CPU并发1。不得调用Comfy POST、free、GPU槽、Docker socket或租户脚本执行FFmpeg。
|
|
6
|
+
- 五项候选动作经platform-ai-runtime,对应后端原子为 `V8.AI.GetTimelineExportCapabilities()`、`V8.AI.InspectTimelineSource(param)`、`V8.AI.InspectPrivateAudioAsset(param)`、`V8.AI.QueueTimelineExport(param)`、`V8.AI.GetTimelineExportTask(taskId)`。前端SDK使用同名方法,身份均绑定可信当前租户/用户;本地MCP候选microi_ai对三个入队动作要求confirmExecution等于原非空RequestId。已发CLI6.3.0无这些新增枚举,不能称已发布;匹配服务器与Managed应用上线后沿已有microi_run_engine调用platform-ai-runtime的Action。Code2只是受理。
|
|
7
|
+
- 素材统一引用NativeTaskId+OutputIndex+ExpectedSha256,不接受裸URL、路径、供应商句柄、文件所有者或客户端工作流。只能从本人Succeeded的原生本机媒体任务取得Private/Permanent/Microi.HDFS视频/FLAC/WAV音频输出。旧结果缺SHA时,先Inspect读取真实字节、SHA及ffprobe,再以该SHA导出;不能凭客户端自报MIME或时长。
|
|
8
|
+
- QueueTimelineExport接收RequestId、Preset和Clips。每镜数值InMs/OutMs,0<OutMs-InMs<=5000;最多1200镜、累计选择<=100分钟且输出<=144000帧。固定24fps,按每镜时间换算整帧,不把16fps来源说成原生24fps。收据保留源探针、OutputFrames、OutputFrameRate和FrameRateConversion;3×5秒应15秒/360帧。三种受控画幅为landscape720、portrait720、square720,等比缩放留边,不拉伸。
|
|
9
|
+
- AudioReferences每镜至多一条本人原生音频强引用,附ClipIndex、数值InMs/OutMs/GainDb与Mode(mix/replace)。每段最多5秒、增益-24..12dB;缺音频、SHA/探针/owner不符失败关闭。空列表默认保留源音轨,无源音轨则定长静音并HasAudio=false。中间件H264+48kHz双声道PCM私有MKV,最终仅一次AAC;24fps每帧2000采样,避免逐镜AAC延迟累积。上传音乐用下述受保护FormField检查收据;不接裸路径、URL或自报owner。字幕未实现。TTS/S2V见local-speech-s2v.md,配置开通与实际口型另验。
|
|
10
|
+
- 上传音频先走标准已保存本人资产记录的FileUpload字段(EnableRolePermission=true、Limit=true),首检InspectPrivateAudioAsset只接受Source{FormEngineKey,FormDataId,FieldId,SysMenuId,AttachmentId,UploadProof}+RequestId+ExpectedSha256。原上传_UploadProof绑定本人/字段/记录/路径,保存时移除,前端内存保留至首次检查;不得持久化proof或发任意URL。服务端重新核真实菜单/行/字段/附件角色权限与记录UserId本人,路径从字段读取,真实下载SHA/大小/容器/codec/时长检查。每对象<=256MiB/100分钟,允许FLAC、PCM WAV、MP3和Ogg。原成功收据回放不需未过期proof,但始终重新核当前权限和引用。收据ReceiptKind=UploadedPrivateAudioInspection、UsesGpu=false,不冒充模型NativeTaskId。
|
|
11
|
+
- AssetAudioTracks最多16条,引用本人Succeeded检查的AssetReceiptTaskId+ExpectedSha256,数值StartMs为整条时间线位置、InMs/OutMs为原音频范围、GainDb=-36..6默认-18,不循环,全部落在成片范围。每个fence下载每个真实音乐对象一次,预算跨恢复去重;逐镜按48kHz采样重叠裁剪/延迟,与原声/原生配音固定混音。3条逐镜旁白加1条15秒BGM为受支持合同;证明实际输出仍需目标服务器运行。人工创作音乐按真实上传素材标注,不称AI音乐生成。
|
|
12
|
+
- 查询/导出/恢复/最终上传都复核已保存附件引用与权限;撤销或更换失败关闭。私有音频原文件不由Worker删除。检查与导出是否收费由产品方案决定,不把源码候选等同客户已开放计费。
|
|
13
|
+
- 唯一运行配置为主租户SaaS正式字段sys_osclients.AiTimelineExportRuntime,缺失/空/Enabled=false关闭。预算仅含Enabled、Threads(1..4,默认2)、SegmentTimeoutSeconds(10..300)、FinalizeTimeoutSeconds(60..3600)、MaxInputBytes、MaxOutputBytes、MinimumFreeDiskBytes;配置不能改程序、目录、URL或GPU。不要新增appsettings或环境变量。新结构mci_ai_timeline_receipt由AI助手应用交付,含DDL/PhysicalColumns/DiyTables/DiyFields和NativeTaskId真实唯一索引;默认无菜单、种子或执行记录,普通CRUD拒绝,运行时不执行DDL。
|
|
14
|
+
- 生成媒体MaxOutputBytes默认8GiB、硬32GiB,MinimumFreeDiskBytes至少4倍成片预算加1GiB;检查实际累计字节与时长。复用正式PrivateFileUpload/1的16MiB分片、签名清单、分片/整体SHA及永久完成收据。Microi.AI内部适配在每次存储操作核验当前CPU原生task/owner/fence与固定session/服务器文件名;不得走管理员MCP包装器或伪造管理员。合并临时流工厂固定资料盘0600,无通用V8或裸路径入口。普通浏览器上传2GiB与用户上传规则保持;生成媒体使用独立SaaS CPU预算,不临时提高全平台硬上限。
|
|
15
|
+
- 正式API镜像须包含/usr/bin/ffmpeg和ffprobe及libx264;固定ArgumentList调用,不经shell、不接受表达式。必须显式挂载8TB资料盘到/app/App_Data/media-export;没有该独立mount拒绝运行,不能创建系统盘fallback。CPU线程、超时、输入/输出真实累计字节和资料盘可用空间分别校验。
|
|
16
|
+
- 稳定RequestId冻结选择/来源/摘要;相同请求回放原任务,参数不同冲突。每个归一化片段与最终成片均写本人私有HDFS并完整流式回读SHA;终态先持久收据,再清理本次fence的自有scratch。活跃、取消、Unknown或其它fence目录不扫描删除。归一化HDFS片段保留作恢复资产,尚无自动保留期清理。
|
|
17
|
+
- 上传前先持久UploadPending及固定Name/SHA/Size。响应或收据丢失时,原生恢复仅查询同一签名session的最终对象,已存在并完整匹配才补完成收据;缺对象、损坏、取消或绑定变化保持Unknown,不再次上传媒体,不宣称回滚或自动退款。没有任意恢复重上传入口。客户端轮询同一TaskId,只有本人状态可签发临时FileUrl,永久资产保存FilePath+Sha256。恢复成功仍不跨fence清理旧scratch。
|
|
18
|
+
- 分层验收:源码编译;真实运行时+Jint/SDK/MCP合同;正式AI/SaaS包及官方字节回读;API镜像依赖和/data挂载;客户实际私有N镜输出与权限;1/10/100分钟负载;PC/手机播放与下载;声音/字幕/口型另验。有限小样通过不承诺100分钟人物或场景一致性。
|
|
19
|
+
|
|
20
|
+
- 9.0.5候选:已严格归一化为24fps的MKV片段在最终MP4使用固定video_track_timescale=24,保持H264码流复制与最终一次AAC。最终探针仍须精确24/1、预期帧数/时长及48kHz音轨;不得为MKV毫秒时基偏差放宽校验。Stage=FinalProbe明确最终校验失败,不改原失败收据、不自动重投。真实本地sample-table/PTS/码流/解码回归不等于客户Linux/长片验收。
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## 整剧项目、镜头复用与默认双字幕
|
|
24
|
+
|
|
25
|
+
一个项目可包含多个镜头、候选和一次最终合成输出;项目制作DAG与每次推理的Comfy节点图分别展示。已验收镜头引用原任务与真实SHA,不为合成再次生成,也不把每段预览登记成独立最终电影。
|
|
26
|
+
|
|
27
|
+
每镜最多5秒以实际帧和音轨为准。原生124帧/24fps约5.17秒的原件保留,选择120帧版本后仍须核实完整句尾与自然结束。12个互异、通过实际裁切验收的120帧镜头才是1440帧/24fps的一分钟;缺镜保持Pending,不用静图、复制片段、循环或拉伸凑时长。
|
|
28
|
+
|
|
29
|
+
默认电影字幕中文在上、英文在下,英文为经审阅的翻译而非英文配音。字幕台词、译文、逐句入出点及布局分别验收;白字深色描边、足够字号和底部安全区,按目标画布排布。ASR仅作辅助,不能自动覆盖客户已确认台词或抹去识别分歧。
|
|
30
|
+
|
|
31
|
+
当前原生导出能力仍声明`SupportsSubtitles=false`,不要向现合同添加未支持字幕字段。可把已完成并核实SHA的原生合并输出作为输入,在同一项目用受控本地CPU工具烧录ASS/SRT,保留输入与派生SHA并经正常资产流程归档;该后处理不冒充原生Worker已实现字幕。正式原生字幕能力需另交Core/Managed/SDK/MCP合同、安全预算、恢复及目标运行验收。
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# 原生本地配音与S2V(9.0.3候选)
|
|
2
|
+
|
|
3
|
+
不得把节点存在、模型元数据、源码编译、本地CPU回归或候选包称为GPU推理成功。只有正式镜像/模型/批准图发布、目标原任务Succeeded、私有输出实测探针/SHA、设备槽归Idle后才可开放。
|
|
4
|
+
|
|
5
|
+
- Worker仍是Microi.AI的AiLocalMediaTaskRuntime;QueueLocalMedia只接已提交BusinessId,由可信准入Hook冻结Request。TTS、S2V、H3、Wan和图像共用一个持久GPU槽、并发1。不得新开独立TTS REST或让用户直接提交Comfy prompt/free。
|
|
6
|
+
- TTS是唯一审计custom_nodes/microi_qwen_tts,在保留--disable-all-custom-nodes同时只加--whitelist-custom-nodes microi_qwen_tts。节点不在导入/启动时加载GPU,执行时固定离线/opt/qwen-tts/bin/python子进程;独立venv覆盖qwen所需transformers4.57.3,主Comfy与原Torch2.11.0+cu130不变。退出/超时/取消必等待子进程退出,释放其GPU占用。
|
|
7
|
+
- 固定CustomVoice模型/models/tts/Qwen3-TTS-12Hz-1.7B-CustomVoice,只允许9个预置VoiceId、10个Language、Prompt≤600、uint32 Seed。音频最长30秒、24kHz单声道、有界codec tokens与180秒超时。无克隆、URL、任意模型/文件路径、反序列化或动态安装参数。
|
|
8
|
+
- audio档位Width/Height/Frames均0,不伪装成图像尺寸;Speech字段仅VoiceId/Language,Prompt作为朗读文本。Stock SaveAudio实际输出FLAC,OutputKey=audio;不得使用不存在的SaveAudioWAV。原生输出按真实FLAC STREAMINFO读取采样/时长,保留探针种类FLAC_STREAMINFO与整体SHA,不宣称完整解码;下游ffprobe及CPU真实解码另验。
|
|
9
|
+
- 视频输入AudioReference/DrivingVideoReference只接受NativeTaskId+OutputIndex+ExpectedSha256。服务端从当前租户本人Succeeded原生媒体结果解析Private/Permanent/HDFS路径,下载实际大小/SHA/探针;入队前核原生SHA/音频探针收据,避免伪造引用先占GPU;执行前再核真实字节/ffprobe。音频上限由冻结profile.AudioDurationLimitMs约束(1..5000),S2V当前候选5000ms;驱动视频最多5000ms,错型/超长拒绝。S2V保持官方原生16fps;旧候选77帧约4.8125秒保留历史,新候选profile.Frames=81为采样latent帧,ImageFromBatch固定index0/length80后输出80帧/5000ms。两者不可混写,批准图SHA须匹配;新图尚需物理实测。CPU最终24fps另行转换并记录。S2V节点存在不代表专项权重安装;wav2vec2音频编码器、S2V权重及UMT5/VAE均需精确文件SHA核对。
|
|
10
|
+
- API桥接必须独立bind /data/ai/runtime/input/native-media→/app/App_Data/local-media/media-inputs(Comfy现有/workspace/input/native-media可见)。下载临时0600、固定服务器文件名、核SHA后0640原子改名。根目录2770/Comfy组10001、禁symlink,未挂载拒绝,无系统盘fallback。提交/Unknown期间不删除来源;归档后清理尚未自动化。
|
|
11
|
+
- 图绑定只新增VoiceId/Language/AudioReference/DrivingVideoReference这四类受控值,输入名必须服务端生成native-media/task-fence-kind.ext。图仍由正式批准档位冻结SHA,不收客户端节点图。API只用正式Managed薄路由。
|
|
12
|
+
- 接入已有声音/口型/剪辑业务表前完整读当前租户元数据和事件,不能凭名字新造替代表。原业务提交/预留/结算须扩展正确能力与audio/flac MIME,并按同一owner/native identity接通;未连接业务和模型时入口保持未配置。
|
|
13
|
+
- CPU逐镜有声导出见cpu-timeline-export.md:同一原生私有引用、固定数值、源音轨默认保留、PCM中间件后最终一次AAC;字幕、音乐模型、声音克隆和人物长期一致性不计已完成。
|
|
14
|
+
|
|
15
|
+
正式四同步:AI助手Managed应用和SaaS结构候选、官网本文对应说明、此Skill及嵌入副本、MCP/SDK精确类型和测试。903统一发布前必须合并母版最新身份,禁止把本地候选当商城已发布。
|
|
16
|
+
|
|
17
|
+
- 状态查询保留SchedulingStatus(后台分片间可能Pending);只有本人任务的冻结runtime/profile/request摘要和受保护槽TaskKey/PromptId/ResourceId/fence匹配时,投影RuntimeStage=Preparing/Submitted/Finalizing。Submitted仅“推理已提交”,不表示已证实物理GPU进度;不返回其它任务或Comfy队列,不伪报百分比。查询使用原冻结配置,后续配置升版不阻断旧任务结果。CLI6.3.0尚无本地新增microi_ai枚举,当前正式可用同源microi_run_engine调用platform-ai-runtime的GetLocalMediaTask;候选SDK/MCP源码测试与npm正式发布分层。
|
|
18
|
+
|
|
19
|
+
## 有界语气预设(9.0.5独立候选,未部署)
|
|
20
|
+
|
|
21
|
+
Speech.StylePreset省略/null/空串沿用自然路径,服务器冻结JSON继续只写VoiceId/Language,旧请求摘要不变。非空只接受SciFiRestrained,首期仅Vivian+Chinese,映射固定中文instruct;不允许自由指令、速度参数或任意模型。自然调用不追加instruct,旧graph v1仍可运行自然请求。
|
|
22
|
+
|
|
23
|
+
新预设必须单独批准qwen-customvoice-style-v2.api.json的真实SHA与StylePreset绑定;Catalog.StylePresets只从当前批准图字节/绑定投影,旧图仅自然,不依据前端常量或包版本臆测。父节点保留隔离子进程和标准库PCM读取,runner只接受旧五字段或新增受限StylePreset;模型/torch/超时/最长30秒不变。
|
|
24
|
+
|
|
25
|
+
业务记录新增StylePreset字段,CreateDraft读取本人真实字段并冻结,Quote/Prepare重新核当前Catalog能力;已绑定TaskId不可改稿或换风格,只能另建take。字段与事件、Managed调用、SDK和共享UI均须同批受审。自然/预设样音需分开真实试听验收;固定instruct不保证时长、节奏或情绪达标。候选没有修改当前镜像/配置或调用模型。
|
|
26
|
+
|
|
27
|
+
## 本地器乐 BGM 与批准图就绪检查(9.0.5独立候选)
|
|
28
|
+
|
|
29
|
+
ACE-Step 1.5 首期仅固定15秒纯器乐:Typed Music={DurationSeconds:15,Instrumental:true},Prompt用于器乐描述,Seed为uint32;Speech为空,画布/帧数/引用均0,不假装TTS。批准图固定batch1、[Instrumental]歌词标记、15秒latent、SaveAudio FLAC;只绑定tags和两处seed,拒绝其它图绑定。仍以真实BusinessId经过原可信准入/信用事务和同一个GPU槽/队列,不能直接提交Comfy图;音乐业务字段/定价/dispatch未接通时不开放入口。
|
|
30
|
+
|
|
31
|
+
正式图由Comfy-Org模板commit ea7faae6999fb31338f43408ff4a575bd3f7d9a0派生,模型参考Comfy-Org/ACE-Step-1.5 commit d84f74778c9389dba94211b51ee4354f7a9e6300 的ace_step_1.5_turbo_aio.safetensors;模型卡Apache-2.0,代码仓库MIT不是模型许可。候选默认关闭;图SHA、官方模型整体SHA/长度、真实加载和目标GPU音频质量分别验收,纯器乐条件也不能保证生成绝无人声。
|
|
32
|
+
|
|
33
|
+
Catalog、入队持久化前以及确定尚未POST的Preparing阶段,对批准图实际使用的固定loader读取object_info,兼容严格V1数组和V3 COMBO/options格式;缺节点/输入、空列表、未知格式或文件名不匹配均Blocked/拒绝。支持CheckpointLoaderSimple/UNETLoader/CLIPLoader/DualCLIPLoader/VAELoader/AudioEncoderLoader,不冒称覆盖所有节点内部校验。ModelBytesVerification=OperatorInventoryRequired明确表示仅核选项注册;Loader列名不能当权重SHA或成功推理。模型长度/完整SHA由主机正式安装inventory独立核验。Submitted/Unknown/Finalizing只按原冻结任务续查,不因新选项变化重投、退款或取消。
|
|
34
|
+
|
|
35
|
+
音频沿原私有HDFS/FLAC输出与真实SHA/STREAMINFO探针链,现有边界支持15秒双声道;它不等于完整解码或试听通过。独立CPU时间线使用本人成功原生输出强引用混音。未实际生成、解码、试听且设备槽归Idle前不得称已交付音乐成片。
|
|
@@ -17,9 +17,19 @@ description: Microi 应用商城开发、打包、安装和升级规范。用于
|
|
|
17
17
|
|
|
18
18
|
## 最低运行版本与只读预检
|
|
19
19
|
|
|
20
|
+
首次改密状态安装要求先更新应用商城 v8.9.15(导入器 v3.1.8)。`ATOMIC_PASSWORD_STATE_COLUMNS_V1` 对 `sys_user.PwdRevision/PwdChangeRequired` 的缺列使用一条 DDL 成对新增并强回读,失败不拆列重试,重装零新增,账号行和鉴权规则保持不变。禁止用逐字段 MCP 建立这两个互相依赖的状态列;半配置会按既有鉴权规则拒绝会话。旧导入器不会识别新增的任意“最低安装器”字段,不能只在包中写一个自创依赖属性就宣称门禁已生效;目标端先回读真实导入器版本/能力,再安装状态责任包。
|
|
21
|
+
|
|
22
|
+
导入器`v3.1.7`在菜单写入前恢复已提交的微服务页面绑定,再按实际服务/页面/路由识别活动原菜单。
|
|
23
|
+
唯一声明旧URL别名的所有者优先于历史稳定URL菜单;不存在旧别名所有者时才选择唯一稳定URL候选。
|
|
24
|
+
旧别名已被另一活动菜单占有时,迁移保留当前稳定URL和双方Id、层级、排序、权限,不重写为同一旧URL。
|
|
25
|
+
无活动所有者或仍为同一菜单时可恢复旧书签,软删除菜单不占活动URL。多个旧别名身份、同一URL多个
|
|
26
|
+
活动所有者、查询失败或读取不全须停止;不自动删菜单、合并权限、恢复软删除菜单或修改旧失败任务。
|
|
27
|
+
安装后仍需回读原菜单身份与成功终态;历史重复入口是否合并属于独立维护意图。
|
|
28
|
+
|
|
20
29
|
- 从安装器 v3.1.1 开始,`PackageInfo.ServerMinVersion/ClientMinVersion` 接受可选 `v` 前缀的三段或四段非负整数版本;不接受范围、预发布后缀、非字符串或不合法数字。省略、空白或 null 保留旧包兼容,返回 `NotDeclared`,不得宣称已经核验。
|
|
21
30
|
- 后端只信任当前节点 `V8.Method.GetBackendVersion()`,低于要求返回 `PACKAGE_RUNTIME_VERSION_TOO_LOW`;有声明但能力缺失、异常或运行版本无法解析返回 `PACKAGE_RUNTIME_VERSION_UNAVAILABLE`。格式错误返回 `PACKAGE_RUNTIME_VERSION_INVALID`。直接包、下载包、Managed 同版本重装和每个后台续跑分片都在任何安装写入前核验,不采信请求参数或历史检查点里的版本。
|
|
22
31
|
- 服务端无法可信获取浏览器实际部署版本,前端声明仅返回 `PendingClientVerification` 和警告;不得从 `V8.Param.ClientVersion` 冒充检查通过,也不能据此宣称前端已部署或验收。
|
|
32
|
+
- 官方资源发布器 v1.4.7 起,发布同一个已校验包的版本/指针时同时投影 `ServerMinVersion/ClientMinVersion` 到商城当前行并强回读。未声明则清空当前行旧值,不沿用旧包最低版本;格式与安装器三/四段约束一致。列表最低版本、包内门禁、浏览器实际版本分别验收;安装器仍以完整包声明和当前可信后端版本判断,不能只信商城行。
|
|
23
33
|
- 使用现有 MCP `microi_run_engine` 调用 `import-microi-store-package`,传 `ValidateOnly:true`(或 `Action:"validate"`)检查结构及 `Data.Compatibility`。只读预检不得运行物理引导 DDL、更新后台进度或写包正文缓存;它不替代正式安装任务和资源回读。无需新增工具或绕过 MCP;升级应用商城交付安装器,目标后端没有可信版本原子时先升级后端。
|
|
24
34
|
|
|
25
35
|
## 平台升级的应用商城边界(强制)
|
|
@@ -32,7 +42,7 @@ description: Microi 应用商城开发、打包、安装和升级规范。用于
|
|
|
32
42
|
- 启动投影只压缩已确认无关的控件配置,保留物理兼容列、值转换、安全属性、共享/未知配置和原有租户值。SaaS 物理配置由可信运行时直接读取,完整编辑字段由 SaaS 应用交付;缩小投影不得生成字段退役、DROP 或卸载操作。容量预算与生成一致性测试应阻止后续可选功能默默进入启动包。
|
|
33
43
|
|
|
34
44
|
- 表、字段、Tab、菜单、权限、接口引擎、事件、数据源、页面、打印、工作流、任务和可幂等种子数据都应通过应用包升级;不得为这些资源在 `Microi.Server/Microi.Upgrade/` 新增租户定制 .NET 代码。
|
|
35
|
-
- 有官方 MCP
|
|
45
|
+
- 有官方 MCP 权限时,固定使用已校验的 `microi_itdos` 官方连接(`https://api.microi.net` 或 `https://api.itdos.com`、`OsClient=iTdos`)更新官方母版、制作并发布对应应用,按内容哈希/包版本回读后,再由目标租户 MCP 安装或更新。无官方权限时只通过当前用户自己的 MCP/Manifest 更新其数据库并回读,不得假借通用升级器越权发布官方应用。
|
|
36
46
|
- `Microi.Upgrade` 只保留应用商城/安装器启动前必需的核心物理兼容或协议迁移,并要求持久化版本门、共享租约、幂等、失败不推进版本。禁止每次启动对每个租户重跑不断增长的历史迁移清单。
|
|
37
47
|
- 新增升级点前必须完成“商城不可表达性”证明:逐项说明为什么 `DiyTables/DiyFields/DDLStatements/PhysicalColumns/DataSets`、菜单、接口引擎、工作流或 AI 应用包无法交付,以及为什么该结构在登录/商城恢复入口可用前就必须存在。不能证明时一律升级对应官方应用包;客户租户缺少某张业务表不得写成全平台 `.NET` 启动迁移。
|
|
38
48
|
- 历史升级点不能因为今天可由商城表达就直接删除:若后续步骤依赖其物理结果,须保留为冻结兼容链,或把必要前置检查显式并入后续步骤。新增步骤必须使用高于当前目标的唯一四段版本并追加到链末尾,不得抬高旧步骤版本造成非单调执行顺序。
|
|
@@ -47,7 +57,7 @@ description: Microi 应用商城开发、打包、安装和升级规范。用于
|
|
|
47
57
|
- 每项平台功能先执行 [工作区基础规范](../workspace-conventions/SKILL.md) 的“平台功能四项同步检查”,不能把商城包发布当成官方文档、Skills、MCP 同步的替代。本节细化其中需要发布应用包时的流程;没有可打包资源变化时记录依据,不为凑检查项空升版。
|
|
48
58
|
- 每次任务先检查工作区根的 `Microi.Server/Microi.net/`。只有目录存在且 `rg --files Microi.Server/Microi.net` 能找到至少一个真实源码文件时,才确认当前是吾码创建人在官方完整源码工作区开发;空目录不算,且不要求本次修改位于该目录。确认后,对任意目录中的平台基础能力执行修改、构建或交付时,官方应用数据包都不是“以后再补”的附加产物,而是本次实现的组成部分。目录缺失或为空时按普通用户工作区处理;纯审查、解释或诊断仍保持只读。
|
|
49
59
|
- 触发资源包括系统设置、表、字段、Tab、菜单、权限、接口引擎、事件、数据源、页面、打印、工作流、任务、平台内置微服务和可幂等种子数据。开始修改时就确定资源归属:租户开通、启动投影与基础空库归 `app.microi.saas-engine`;用户偏好、个人资料及其租户 Hook 归 `app.microi.sys_user`;租户系统设置编排及其 Hook 归 `app.microi.sys-config`;表单引擎归 `app.microi.form-engine`;模块引擎归 `app.microi.module-engine`;应用商城归 `app.microi.store`。同一能力跨多个包时逐包更新,但同一 Managed ApiEngineKey 仍须单一归属。
|
|
50
|
-
-
|
|
60
|
+
- 强制闭环依次包含:①源码和定向测试;②通过绑定上述固定官方HTTPS域名之一与 `OsClient=iTdos` 的 `microi_itdos` 更新并回读官方母版资源;③从母版导出或按受审计发布契约生成本地应用包,单调提升包版本并核对资源数量、版本和 SHA-256;④发布对应官方 Platform 应用;⑤重新读取商城行的小型 HDFS 指针,用公有下载或受权私有下载取得原始 JSON,核对 `Published/IsApprove`、`AppVersion`、`PackageInfo.Version`、UTF-8 字节数、SHA-256 和资源正文;⑥立即做一次同输入幂等重跑,确认无重复升版或漂移。任务还指定目标租户时,再安装/更新并等待后台任务 `Succeeded` 后回读真实资源。
|
|
51
61
|
- 本地包文件、生成器成功、单元测试通过、返回 TaskId 或 HTTP 200 都不能代替官方主数据库与商城回读。`.resource-sync-base` 只能在官网发布后逐项哈希一致时由同步器推进,不得与本地候选一起手工修改。若官方身份、MCP 登录或发布门禁失效,必须保留准确的未发布边界并修复链路;不得把本地 JSON 宣称为“其它吾码用户已经可以安装”。
|
|
52
62
|
- 应用包不得携带真实地图 Key、Token、连接串或其它租户秘密。浏览器供应商 Key 等配置只交付字段/设置模板和安全读取能力,实际值由每个目标租户在安装后自行填写。
|
|
53
63
|
|
|
@@ -416,11 +426,13 @@ staged 行、请求参数、`StableFilePathName` 或外部 CDN URL 推断版本
|
|
|
416
426
|
- 官网当前资源只是三方合并的一侧,允许暂时落后于本地发布候选。下载阶段只校验固定白名单、稳定资源身份、JSON 可解析性及服务端返回 SHA-256;不能用“必须已包含本地最新功能标记”的规则提前拒绝旧官网,否则会形成“官网不够新所以永远无法发布新版”的循环依赖。
|
|
417
427
|
- 本地输入和三方合并后的最终候选必须继续执行最低版本、功能标记、内嵌逻辑副本一致性等严格校验;发布成功并按内容哈希回读一致后才能推进 `.resource-sync-base`,不能把放宽读取门误做成放宽发布门。
|
|
418
428
|
- 应用包版本与平台发布版本分别单调递增。包正文需要写回而本地包版本、平台版本均未高于官网时,应基于官网包版本自动递增补丁号;内容无变化时不得递增,必须用连续两次同步验证第二次为零变更。
|
|
419
|
-
- MCP 配置中的官方 API、`OsClient` 与 Token 文件是鉴权事实源,但编辑器可执行文件、插件版本目录和 `cwd`
|
|
429
|
+
- MCP 配置中的官方 API、`OsClient` 与 Token 文件是鉴权事实源,但编辑器可执行文件、插件版本目录和 `cwd` 都是易漂移的启动信息。发布器保留鉴权配置,固定校验两个官方HTTPS域名与itdos,并支持稳定 `microi-cli-mcp.js` 或标准 `mcp-server.js`;旧扩展配置再从最新已安装插件或当前工作区发现可信入口,统一使用当前Node。默认选择原主域;使用官方别名时,经稳定母版Id和完整包SHA同源验证后,通过发布脚本进程变量 `MICROI_UPGRADE_RESOURCE_MCP_NAME` 显式选择已存在的官方MCP配置名,不能复制Token、关TLS或切到任意主机。
|
|
420
430
|
- Token 文件的新键固定为 `ApiBase|OsClient|OsClientType|OsClientNetwork` 四段身份;Type/Network 为空时仍保留空段。读取和回写必须先用四段精确键,再兼容旧版紧凑键;旧键在多环境配置下可能被有意保留且已经失效,禁止优先读取。自动化测试要覆盖“精确键已刷新、旧键仍过期”以及 type-only/network-only 不碰撞。
|
|
421
431
|
- VS Code 的 SecretStorage 恢复 broker 必须使用确定性激活事件启动;不得只依赖大型工作区可能超时的递归 `workspaceContains`。签名密钥变化时旧 Token 本身不能以旧换新,必须由已激活 broker 使用本机 SecretStorage 静默重登并回写精确身份键。
|
|
422
432
|
- 本地资源同步的官网读取、发布和发布后回读应使用同一个已校验的 `microi_itdos` MCP 链路;CI 无 MCP 时才允许凭显式 Token 使用 HTTP。V8 独立文件与应用包内嵌副本合并时,先把文件头说明和 `Version` 与可执行正文分离:两端独立升版不能算代码冲突,不同正文安全合成后应基于两端最高版本再升一版;只有同一段可执行逻辑出现不同实现才失败关闭。
|
|
423
433
|
- 新增平台共享物理列时,除一次性版本门升级外,还要同步所有会快照该共享表的官方包 `PhysicalColumns`,让新安装和旧租户升级两条路径一致。`.resource-sync-base` 是上次官网回读的共同基线,不能与本地候选一起手工修改;基线可疑时先从官网只读修复,再执行三方合并、自动升包版本、正式发布和 SHA 回读。
|
|
434
|
+
- 全量远端基线修复被其它待合包副本阻断时,只能通过同步器独立模式 `--repair-converged-replica-base=import-package.js` 修复显式指定的已收敛副本:共同Store包须与官网包完全相同,官网包内嵌源码、官网独立源码、本地候选三者须一致;同步器再逐项SHA证明、单文件写后回读。不能与发布/离线/prepare混用,不手工改共同基线,也不顺便推进仍有差异的控制面。平台最低Server/Client三段版本并发提高时合并保留最高要求,非法版本或其它策略冲突仍失败关闭。
|
|
435
|
+
- 独立控制面已发布、复合Store包尚旧,而单项base被提前推进时,固定 `--restore-published-control-common-base` 可恢复旧共同点:官网Store完整正文必须等于Store base,新版local/live控制源必须相同且版本高于旧内嵌,当前单项base只能是该新版或旧共同点。仅修复固定control回执并逐SHA回读,保留新版源码和其它13项base,零远端写入;待合包状态不称收敛。恢复后按真实三方合并、测试、发布及回读推进,不能与发布/prepare/离线混用。
|
|
424
436
|
- 发布验收至少包含:定向合并测试、真实 `PublishBatch`、六项资源逐项 SHA-256 回读,以及立即执行第二次幂等重跑。任何一步失败都不得宣称官网已同步,也不得推进共同基线。
|
|
425
437
|
|
|
426
438
|
## 复盘:官网模板库误报平台应用可更新
|
package/skills/dos-orm/SKILL.md
CHANGED
|
@@ -49,6 +49,7 @@ OceanBase MySQL 兼容模式接入、会话超时及真实空库验收见 [Ocean
|
|
|
49
49
|
- AI 在线恢复使用 `microi_manage_system_observability(action=ResetDatabasePools)` 的预览、确认和回读协议,详细决策见 [系统日志/监控](../system-observability/SKILL.md)。需要升级含 `database-pools/v1` 的后端和 MCP;事故恢复本身不要求重启数据库/API。
|
|
50
50
|
|
|
51
51
|
- 数据值全程参数化;`FromSql` 的动态值用 `AddInParameter`。
|
|
52
|
+
- C#中密文、支付入口或秘密值改用`SqlSection.AddSensitiveInParameter(name,value)`;普通与慢SQL的参数和可执行SQL投影均按`Section.IsSensitiveParameter`脱敏。已加密也不能把完整密文写日志;不能用日志过滤替代参数化。
|
|
52
53
|
- 表名、字段名、排序名不能来自未经白名单验证的用户输入。
|
|
53
54
|
- 保留 `{0}Name{1}` 标识符延迟绑定机制,不能改成字符串替换。
|
|
54
55
|
- `OrderByClip` 的校验不是授权;可排序字段仍需业务白名单。
|
|
@@ -92,6 +93,8 @@ Dispose 幂等,未 Commit 时自动回滚。事务内异步操作串行执行
|
|
|
92
93
|
|
|
93
94
|
## 验收
|
|
94
95
|
|
|
96
|
+
- 强类型读取器在首行迭代前准备映射,零行结果也必须能创建反序列化器。继承非公开属性的解析须使用与首次枚举一致的实例/公开/非公开标志,并保留基类 private setter 的重绑定、Field 别名和只读属性语义;不能把内部保护标记改为 public 来消除空引用。覆盖实际 WFWork/WFFlow 的空/单行 Reader 读取及两种 JSON 绑定器拒绝外部设置原生保护标记。ORM 映射能力不改变 FormEngine 鉴权或外部 JSON 绑定权限。
|
|
97
|
+
|
|
95
98
|
- Oracle 原生 `TO_CHAR(value, format[, nlsparam])` 必须保留参数顺序;Provider 不得用
|
|
96
99
|
字符串扫描交换参数。单参数、嵌套函数、格式串中的逗号、注释与字面量也要原样保留。
|
|
97
100
|
- `ToArray/ToList` 是查询执行与读取边界,堆栈停在这里不能证明对象转换出错。
|
|
@@ -102,6 +102,11 @@ return { Code: 1, Data: { IdempotencyKey: idempotencyKey } };
|
|
|
102
102
|
- 先证明任务真的在执行:读 `Scheduler.IsStarted`、`Scheduler.NumberOfJobsExecuted` 和 `Acquisition.LastAcquisitionError`,参考 `microi.doc/docs/doc/system-engine/job.md` 的“任务不执行”。`diy_schedule_job.Status=正常`、`diy_schedule_job.NextTime` 和“插件启动成功”都不能证明触发成功;列表/详情页的 `LastTime/NextTime` 来自运行时,直接查表看到的是库内快照。
|
|
103
103
|
- 领取错误含 `Key 'IDX_microi_job_T_NFT_ST' doesn't exist` 时,是 Quartz 3.19 MySQL 方言依赖 `USE INDEX (IDX_{tablePrefix}T_NFT_ST)` 与 `IDX_{tablePrefix}T_NFT_ST_MISFIRE`,而触发器表缺少这两个索引(常见于历史租户库仍是旧 `QRTZ_` 前缀索引名)。平台调度器初始化会按前缀幂等补齐;人工抢修可直接执行文档中的两条 `CREATE INDEX`,索引名大小写不敏感,补完后无需重建任务或 Cron。
|
|
104
104
|
- 失败记录错误分类、重试次数和 `NextRetryTime`,采用有上限退避;永久错误进入人工处理。
|
|
105
|
+
- 后端9.0.2把`Code=0`业务回包的有界脱敏详情与重试/最终失败状态一起按原owner/fence保存;
|
|
106
|
+
不再只留`Msg`而丢掉失败资源。通知中心`Detail`仍仅任务所属用户读取,摘要/Redis不带详情。
|
|
107
|
+
`ResultTruncated=true`表示节点数/深度/字符预算截断,不能宣称拿到了完整原回包;密码、密钥、
|
|
108
|
+
签名和临时访问地址隐藏。成功的后续checkpoint清除旧失败详情,成功终态保存实际最终结果。
|
|
109
|
+
已有旧失败记录不会凭空补回详情;先修复根因,再用正式入口明确发起新任务,保留旧审计。
|
|
105
110
|
- 大应用包安装返回 Id 后长期 `Pending/AttemptCount=0`,先回读原任务和 `WorkerClaimFailed` 持久栈。旧版完整 `ParamJson` 共用 2 秒候选扫描时限,数据库慢读可能触发驱动超时处理中的空引用;不得凭异常文案归因业务脚本或重复提交。新版候选仅含领取必需字段,完整参数在已领取的执行槽中以任务 Id、租户、owner/fence 和有效租约约束读取,独立上限 30 秒,读后再验租约;读取失败不执行正文,仅释放本次仍拥有的租约。验收覆盖大参数慢读、读失败、读取期间租约变化和原任务成功终态;需要更新后端,MCP/CLI 升级不能代替。
|
|
106
111
|
- 已领取的后台任务执行失败时,先按原任务 Id 回读真实状态,再查系统日志 `Source=BackgroundTask`、`Action=ExecutionFailed`。脱敏诊断用 `Stage` 区分接口引擎执行(`ApiEngineExecution`,也包括执行前的权威引擎读取)、分片进度写入(`ContinuationProgress`)、分片重新入队(`ContinuationPersist`)和终态写入(`TerminalPersist`);后者表示 `Complete` 本身失败,不能据此认定业务脚本失败。结合 `OwnerOsClient/ExecutionOsClient`、运行环境、`TaskId/Fence` 关联原任务;安全异常链最多 4 个节点,保留类型、`HResult`、可读取的提供商 `Number/SqlState/SocketErrorCode` 及每节点最多 4 个 CLR 方法名,不包含源码路径、行号或实参。
|
|
107
112
|
- 此诊断不记录异常消息正文、SQL、参数或连接串。`MessageSha256` 仅用于关联相同消息前缀:最多取前 65,536 个 UTF-16 字符后编码为 UTF-8 计算摘要,并同时记录 `MessageLength/MessageHashChars/MessageHashTruncated`;不能把截断摘要当作完整消息或根因证据。诊断走既有 `QueueSystemLog`,接受入队不等于已经持久化,必须实际查询到日志才算取得诊断证据;日志拒绝或异常不改变原任务的重试、事务、租约和失败结果,也不能触发重复提交。
|
|
@@ -112,6 +117,13 @@ return { Code: 1, Data: { IdempotencyKey: idempotencyKey } };
|
|
|
112
117
|
|
|
113
118
|
## 后台按钮
|
|
114
119
|
|
|
120
|
+
### 创作任务与长期素材引用
|
|
121
|
+
|
|
122
|
+
- 后端9.0.3起,原生本机媒体 `__microi_native_ai_local_media__` 和 CPU 时间线/私有音频检查 `__microi_native_ai_timeline_export__` 的任务身份与结果作为长期素材引用保留。通知中心 `ClearCompleted` 只清除可归档的普通成功任务;固定两类任务不计入清除数,`Remove` 返回明确拒绝。服务端固定 Worker 身份决定策略,客户端不能传保留/删除开关。
|
|
123
|
+
- 保留条件直接放在数据库清理/软删除的同一条原子 UPDATE 内,仍限定原租户、本人、运行环境和终态;不能只先查再拒绝,以免完成和清理并发时隐藏刚生成的素材。普通任务清理、其它原生 Worker 和取消协议保持原有语义。
|
|
124
|
+
- 状态/结果查询、素材强引用和后续剪辑仍按本人、租户、原生任务/收据及对象完整性校验,不因保留而开放其它用户的数据。创作页面不得提供通用清空/移除这些任务的入口;需要资源生命周期管理时应另做显式授权、引用检查和审计流程。
|
|
125
|
+
- 本变更不恢复历史已删除任务,不补造丢失结果,也不保证底层对象永久可用。回归需实际执行 ORM 清理 SQL,覆盖普通清理、两固定 Worker、租户/用户/运行环境隔离及完成与清理并发;本地数据库引擎回归不能代替客户数据库和长期素材复用验收。
|
|
126
|
+
|
|
115
127
|
满足任一条件即按后台任务设计:预计超过 2 分钟、500 条以上、1000 个以上扇出子操作、100 次以上外部调用、总量未知且可能持续运行,或安装/初始化/批量导入/批量生成/全量同步/迁移/备份。预计超过 10 分钟时,仅设置 `RunBackground=true` 仍不够,必须按 checkpoint 分片,每片独立事务。
|
|
116
128
|
|
|
117
129
|
菜单按钮设置 `RunBackground/BackgroundTask/IsBackgroundTask=true` 和 `ApiEngineKey`,并配置 `BackgroundTaskOptions`:
|
|
@@ -62,7 +62,7 @@ description: Microi.Client 源码架构指南。用于修改 Microi.Client Vue
|
|
|
62
62
|
| 通用 V8/低代码工具 | `src/utils/diy.common.js`、`src/utils/v8-*.js` |
|
|
63
63
|
|
|
64
64
|
<!-- /microi-progressive:chunk -->
|
|
65
|
-
<!-- microi-progressive:chunk id=microi-client-frontend-002 sha256=
|
|
65
|
+
<!-- microi-progressive:chunk id=microi-client-frontend-002 sha256=6127b9fd2b04839ea362158a0e51eed44415b6f956ea7109739227bf43f3d693 -->
|
|
66
66
|
## 2. 表单引擎三层结构
|
|
67
67
|
|
|
68
68
|
### 模块级跨端视图
|
|
@@ -191,7 +191,7 @@ description: Microi.Client 源码架构指南。用于修改 Microi.Client Vue
|
|
|
191
191
|
右上角主题设置的边角风格默认圆角;已安装 `sys_user.CornerStyle` 时从账号偏好恢复,旧租户才使用浏览器本地兼容值。根元素 `data-mci-corner-style` 控制全局角半径,覆盖动态挂载的 Element Plus 弹层。顶栏入口统一使用 40px 触控区域和 20px 图标,AI 入口使用图标组件,不使用图片。模块 `HideTableBanner`、`HideFormBanner` 只在值明确为 `1/true` 时隐藏对应 Banner,并跳过其专属统计请求;未安装开关字段的旧菜单继续显示。
|
|
192
192
|
|
|
193
193
|
- 边角风格先读取当前用户 `CornerStyle`:`round/square` 显式覆盖;空值或 `System` 继承租户 `sys_config.CornerStyle`,租户空值默认为圆角。不得把空个人值提前归一为 `round`,否则会阻断租户直角设置。
|
|
194
|
-
- 桌面经典布局使用 `NavigationLayout=Side/Top/TopSide`,个人空值或 `System` 继承租户,租户空值为 TopSide;`MenuChildExpandMode` 全局空值为 Right。`TopSide`
|
|
194
|
+
- 桌面经典布局使用 `NavigationLayout=Side/Top/TopSide`,个人空值或 `System` 继承租户,租户空值为 TopSide;`MenuChildExpandMode` 全局空值为 Right。`TopSide` 将一级放顶部,当前一级的二级及更深菜单复用原侧栏;仅此模式按已授权路由递归过滤隐藏项,可访问叶子为0或1时整块隐藏侧栏并释放内容宽度,切换到多于1项时恢复;单目录有多个可达叶子仍保留侧栏,自动显隐不改个人折叠偏好。侧栏仍支持收起及 `MenuChildExpandMode=System/Down/Right`,收起后的叶菜单使用既有向右弹出面板显示真实名称,保留多级分支、键盘焦点与Escape,不重复叠加Tooltip。顶部导航复用当前权限路由、角标与外链,空间不足收纳到更多菜单;移动端仍采用底部导航。当前路由与一级归属由 `hybrid-navigation.js` 统一投影,禁止修改共享权限树。
|
|
195
195
|
- 侧栏与角色管理组织树共用 `MciResizablePane`:右边缘拖拽、可访问分隔条、方向键/Shift/Home/End 和收起按钮必须同样可用。`sys_user.SidebarWidth/RoleTreeWidth` 为 nullable 整数像素(160–600),`SidebarCollapsed/RoleTreeCollapsed` 为 nullable 0/1;使用当前账号的 Managed 偏好白名单保存。拖拽中仅预览,松开提交,取消或卸载释放指针。视口夹紧保留主内容宽度,不能把夹紧值覆盖长期偏好;窄屏禁拖,旧租户仅用账号/租户/API 隔离的设备回退。侧栏空宽度沿用 `sys_config.MenuWidth` 后回退240px,角色树默认240px。
|
|
196
196
|
- 顶部主导航与工作区 Tabs 是不同层级:`Top/TopSide` 的当前一级使用独立短底线,hover/focus 前景显式跟随可读主题,禁止继承 Element 的低对比品牌色。长弹出菜单使用独立主题表面、无异色顶边和内部滚动,嵌套层仍 Teleport;顶部菜单标题与品牌不显示 title/alt/Tooltip 类提示浮层,保留完整 aria-label 无障碍名称;顶栏整条背景色带须贴合视口或所属壳层左右边界,不能把内部 padding 当成全宽验收,内容区留白独立处理。窄视口“更多”菜单也遵守同一契约。
|
|
197
197
|
- 顶部导航整行(含功能图标和账号姓名)使用主题运行时的 `--sidebar-*` 可读表面与前景;主题面板和业务弹层保留自身语义表面。主题入口为齿轮,界面密度在同一主题面板调整,已安装 `sys_user.UiDensityScale` 时保存当前账号、个人空值继承 `sys_config.UiDensityScale`,旧租户才使用按租户/账号隔离的设备回退;AI 入口使用圆圈内 AI 字母 SVG,不能回退魔法棒或图片。
|
|
@@ -33,6 +33,7 @@ description: 在 Microi Agent、Codex 或 DeepSeek Harness 中完成 Microi吾
|
|
|
33
33
|
|
|
34
34
|
## Microi Agent 桌面宿主
|
|
35
35
|
|
|
36
|
+
- macOS 单架构发行必须隔离更新频道:正式运行时按自身 `process.arch`,打包元数据按目标架构选择 `/microi-code/updates/latest/x64/` 或 `/arm64/`;Windows 继续原频道。旧共用 Mac 清单可能服务 Universal 用户,不能用仅 x64 的新版覆盖它,也不能依靠浏览器 UA 推断 Apple Silicon。官网下载应明确列出架构;缺少对应架构清单时显示不可用,不跨架构降级。签名、公证、最终包原生验收和 CDN 字节回读分别记录,另一架构通过不能替代本机结果。
|
|
36
37
|
- 完整版在所有平台用物理 `node_modules/node/bin/node[.exe]` 启动 Harness、Worker 和插件命令,不能换成 Electron Helper/utilityProcess;后者会在特定 Electron 指纹下被原生加载器拒绝。每次发布最终安装包先运行 `test:packaged-desktop`,设置真实产物与独立证据目录,验收生产 main 两次正常启动、Worker IPC、员工引导及 Harness 重启,并核对日志 `electron=none`。直接启动 Harness、签名公证成功或跳过完整应用用例均不足以证明用户能正常启动;不同系统和架构覆盖分别记录。同步上游必须保留该选择器、门禁脚本与回归用例。
|
|
37
38
|
- 桌面包内置技能目录;干净工作区输入 `/microi` 可发现吾码入口,再读取基础规范与专项技能。查不到时先核对当前桌面版本及内置技能资源,不要求用户复制开发机目录,也不要把 MCP 工具名当成斜杠技能名。
|
|
38
39
|
- 对话输入框上下键回填成功提交的提示词,向下可恢复未发送草稿。菜单、输入法候选、选区和多行正常光标移动优先;不要在用户编辑文本时强行覆盖草稿。
|
|
@@ -98,6 +99,10 @@ Codex Router 启动后会异步调用 bundled CLI 的 `microi update --backgroun
|
|
|
98
99
|
|
|
99
100
|
## 先确认工作区连接
|
|
100
101
|
|
|
102
|
+
原始 `microi_*` 未展开时先查找 `microi_codex` 单入口。当前对话确实未注册入口时,按 [安装与诊断的官方 CLI 通道](../microi-codex-installer/SKILL.md#当前对话没有吾码工具时继续工作) 使用 `microi mcp tools` / `microi mcp call <microi_tool> --params-stdin`,不手写 stdio 桥接或先要求新开对话;CLI 调用成功与宿主原生工具注册分别验收。
|
|
103
|
+
|
|
104
|
+
WorkBuddy 中先按 [原生注册与验收](../microi-codex-installer/SKILL.md#workbuddy-原生注册与验收) 执行 `microi ai init --host workbuddy --profile <mcpName>` 和 `microi doctor --host workbuddy --profile <mcpName>`,两者均绑定当前 `--workspace`。项目配置生成、CLI stdio 连通、原生服务可用(含信任/禁用)和当前对话注入分别记录;工具名称缓存不作为注册证据,CLI 不改宿主审批。
|
|
105
|
+
|
|
101
106
|
1. 调用 `microi_codex`,传 `{ "action": "profiles" }`。
|
|
102
107
|
2. 只有一个已登录连接时,后续可以省略 `profile`;存在多个连接时,始终传 `profiles` 返回的稳定 `name`。
|
|
103
108
|
3. 尚未初始化时,插件根目录是本文件向上两级;使用其中的 `scripts/microi-cli.js`:
|