@microi.net/cli 6.1.7 → 6.1.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.
Files changed (58) hide show
  1. package/.codebuddy-plugin/marketplace.json +2 -2
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.mcp.json +1 -1
  5. package/.workbuddy-plugin/marketplace.json +2 -2
  6. package/.workbuddy-plugin/plugin.json +1 -1
  7. package/assets/build-meta.json +4 -4
  8. package/cordis.patch.yml +1 -1
  9. package/package.json +1 -1
  10. package/scripts/codex-marketplace.json +20 -20
  11. package/scripts/mcp-codex-stdio-adapter.js +189 -189
  12. package/scripts/mcp-server.js +101 -96
  13. package/scripts/mcp-trae-windows-launcher.cmd +21 -21
  14. package/scripts/microi-cli-mcp.js +7 -7
  15. package/scripts/microi-skills.meta.json +257 -239
  16. package/skills/.microi-skills-version.json +2 -2
  17. package/skills/.progressive-disclosure-manifest.json +90 -68
  18. package/skills/ai-engine/SKILL.md +303 -293
  19. package/skills/ai-engine/references/ai-employees.md +4 -0
  20. package/skills/app-store/SKILL.md +3 -1
  21. package/skills/job-engine/SKILL.md +12 -0
  22. package/skills/message-notification/SKILL.md +2 -0
  23. package/skills/microi-client-frontend/SKILL.md +260 -252
  24. package/skills/microi-codex/SKILL.md +8 -0
  25. package/skills/microi-datasource-mapping/SKILL.md +4 -0
  26. package/skills/microi-deployment/SKILL.md +85 -5
  27. package/skills/microi-deployment/references/deployment-matrix.md +27 -0
  28. package/skills/microi-deployment/references/offline-installer.md +64 -0
  29. package/skills/microi-docs-coverage/references/capability-map.md +3 -3
  30. package/skills/microi-form-engine/SKILL.md +13 -0
  31. package/skills/microi-form-engine/references/component-catalog.md +1 -1
  32. package/skills/microi-frontend-sdk/SKILL.md +12 -0
  33. package/skills/microi-microservice/SKILL.md +18 -1
  34. package/skills/microi-system-delivery/SKILL.md +8 -6
  35. package/skills/microi-system-delivery/references/delivery-pitfalls.md +50 -0
  36. package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +11 -9
  37. package/skills/microi-uniapp-frontend/SKILL.md +18 -3
  38. package/skills/microi.v8.js +445 -0
  39. package/skills/module-engine/SKILL.md +4 -5
  40. package/skills/page-engine/SKILL.md +233 -215
  41. package/skills/print-engine/SKILL.md +5 -0
  42. package/skills/report-engine/SKILL.md +9 -0
  43. package/skills/report-engine/scripts/check-demo-coverage.mjs +88 -0
  44. package/skills/report-engine/scripts/check-demo-coverage.test.mjs +52 -0
  45. package/skills/scripts/sync-embedded-skills.mjs +4 -1
  46. package/skills/scripts/sync-public-resource-router.mjs +29 -0
  47. package/skills/system-observability/SKILL.md +18 -2
  48. package/skills/ui-design/SKILL.md +1 -1
  49. package/skills/uniapp-mall-assets/SKILL.md +5 -0
  50. package/skills/v8-file-upload/SKILL.md +32 -31
  51. package/skills/v8-file-upload/references/hotspot-offload-operations.md +118 -0
  52. package/skills/v8-saas-multi-tenant/SKILL.md +17 -4
  53. package/skills/v8-security/SKILL.md +20 -5
  54. package/skills/vision-engine/SKILL.md +114 -3
  55. package/skills/vision-engine/references/architecture-and-acceptance.md +8 -0
  56. package/skills/workspace-conventions/SKILL.md +9 -3
  57. package/skills/workspace-conventions/references/progressive-01-/347/211/210/346/234/254/346/233/264/346/226/260/346/227/245/345/277/227/344/277/235/346/212/244/350/247/204/345/210/231-/345/274/272/345/210/266.md +4 -4
  58. package/skills/workspace-conventions/references/progressive-04-/345/267/245/344/275/234/345/214/272/344/270/216/345/271/263/345/217/260/344/270/223/351/241/271/344/277/235/351/232/234.md +22 -1
@@ -36,7 +36,7 @@ Microi.Vision 是可信 .NET 宿主中的最小视觉原子层,只负责:
36
36
 
37
37
  | 组件 | 策略 | 职责 |
38
38
  |---|---|---|
39
- | `platform-vision-runtime` | `Managed` | Recognize/Enroll/Result/Recent/Correct/Bootstrap/Capabilities |
39
+ | `platform-vision-runtime` | `Managed` | Recognize/Enroll/Result/Recent/Correct/Bootstrap/Capabilities;授权视频图库 CaptureFaces/SaveCaptureSettings |
40
40
  | `platform-vision-ai-worker` | `Managed` | 持久任务消费、Microi.AI 视觉调用、回写与敏感图片清理 |
41
41
  | `platform-vision-category-options` | `Managed` | 当前租户启用分类选项 |
42
42
  | `platform-vision-subject-options` | `Managed` | 当前租户启用对象选项 |
@@ -109,7 +109,7 @@ var voted = await V8.Vision.Stabilize({
109
109
  ## 人脸与关注人员强制边界
110
110
 
111
111
  - 录入、识别、留存和共享生物特征前必须有合法依据、告知/同意、用途限制、访问控制和删除流程。
112
- - 工作台 Face 模式必须要求本次明确同意;前端门禁不能替代后端校验。
112
+ - 手工图片 Face 模式必须要求本次明确同意;视频自动图库使用管理员明确授权的租户配置,缺省关闭,不能把前端默认开关当授权。两条入口都须后端校验。
113
113
  - 人脸模板和请求按当前租户隔离;向量使用绑定租户和接口引擎的保护能力保存,列表/Hook/普通日志不返回正文。
114
114
  - 默认 `RetainFaceInput=0`;AI Worker 无论成功失败都清理临时图片。
115
115
  - 数据库未命中时,大模型只能描述中性可见事实,不得猜姓名、罪犯身份、族群、健康、政治等敏感属性。
@@ -118,6 +118,105 @@ var voted = await V8.Vision.Stabilize({
118
118
 
119
119
  ## 视频入口
120
120
 
121
+ ### 默认全画面与服务端识别
122
+
123
+ 视频巡检必须默认全画面,无需画区或填写录像发生日期即可开启;手机摄像头打开后自动识别。
124
+ 工位绘制采用矩形拖动或两个对角点,画面内明确提供“应用工位/重画/取消”;规则与人员核验
125
+ 收进可选设置。历史录像未填写发生时间时,邀请时段准入保持Unknown,不使用观看时间兜底。
126
+ 主屏必须展示工位状态、占用率/绑定员工在岗率、手机、安全帽、离岗次数/总时长/逐次区间,
127
+ 异步行为结果标注原媒体时间,未知不能冒充正常。
128
+
129
+ v1.9.0 起禁止在巡检浏览器持续执行人员模型;手机仅采集、播放、显示节点签名结果,
130
+ 不能再用 MediaPipe/EfficientDet 的本地框独立宣布有人。运行产物不包含推理模型/WASM。
131
+ 手机默认后置摄像头并支持前后切换,限制720p/15fps;发送帧长边不超过1280像素,
132
+ 检测请求串行、完成后间隔至少500ms,失败退避至10秒,画布复用。后台/卸载释放镜头,
133
+ 暂停或切源中止检测与复核,忽略迟到结果。断流、过期帧、局部肢体和画面无效不能当无人。
134
+ 手机大幅移动时工位统计标记中断/未知。60秒模拟负载测试不能冒充物理手机温控验收。
135
+ RF-DETR Large候选、YuNet/SFace和Qwen3-VL本地复核须分别锁定权重来源与许可;
136
+ 预训练可直接推理不等于场景准确率达标,行为无正例或人脸无身份真值时不得声明90%。
137
+ 通用节点Compose完整定义vision/behavior/media,默认启动vision+media,behavior为可选profile;API/PC继续复用,必须报告实际容器与复用原生服务的区别。
138
+ 服务器准备入口为 `Microi.Server/tools/vision-deployment/deploy.py`,官网原位文档
139
+ `/doc/getting-started/docker-run.html#vision-engine-compose`。它生成一个三服务Compose,
140
+ 要求Linux root、空目标目录、已发布镜像摘要和当前租户受限节点密钥;现有租户增设节点
141
+ 使用 `--signing-key-file` 复用签名,不能覆盖当前租户密钥使原节点失效。模型固定下载地址、
142
+ 大小和SHA,保留原配置及媒体,运行模型只读挂载。Ollama必须设置 `OLLAMA_NOPRUNE=true`,
143
+ 避免启动清理未注册的已下载权重;导入阶段暂时可写且无论成功失败恢复只读。
144
+ 官方Instruct GGUF导入明确指定 `renderer=qwen3-vl-instruct`、视觉projector和stop token,
145
+ 使用独立模型别名,记录实际manifest digest;备份整个模型目录(包含manifests-v2)。
146
+ 通用安装默认行为关闭;候选评估必须明确Candidate/Unvalidated,不能变正式告警。正式行为启用须有绑定摘要的独立留出集回执,不能把导入成功、JSON有效或少量样图
147
+ 当成90%验收。服务器部署包通过官方MCP公有CDN发布并独立校验,应用私有源码与部署包分开。
148
+ 官网必须保留完整、可复制的视觉 Compose 与服务器安装步骤;服务标题独立进入当前页大纲。
149
+ 用户要求折叠时,代码置于默认关闭的 details/summary,标题、能力边界与配置入口仍可见;不得以折叠为由删减旧资料。群晖无宿主Python时使用
150
+ `microi.doc/docs/public/downloads/vision/prepare-nas.sh` 与 `import-nas.sh`,仅准备容器使用
151
+ CHOWN/FOWNER,不挂Docker socket;复用固定部署包、镜像与模型摘要。既有目录拒绝覆盖,
152
+ 模型续传先校验安装标识;导入核对编排归属并恢复模型只读。DS1821+无GPU,48GB内存不能
153
+ 作为CPU吞吐或准确率证明;Linux隔离验证、真实NAS、手机温控与独立准确率验收分别记录。
154
+ FP16/量化候选必须与原精度逐图比较人数、框坐标和输出有效性,出现明显漏检不得发布。
155
+ 异步行为模型需限制图片、上下文、输出与GPU占用;超时/格式错误保持未知,不能把复核链路可调用当作动作识别达标。
156
+
157
+ 录像分析优先保证采样帧与标记一致:公网中继延迟超过叠加新鲜度时,应在分析期间保留当前播放帧,收到签名结果后再继续;暂停、拖动、换源和卸载必须阻止迟到请求恢复播放。摄像头与直播不能沿用旧框制造实时识别,延迟和未知须如实呈现。验证同时检查节点推理、中继、业务保存和最终显示的总耗时,不能只报告模型 elapsedMs。
158
+
159
+ ### v1.9.5 人脸定位与有界跟随
160
+
161
+ - 节点默认 YuNet 定位只产生 `faceBox/faceScore`,不因定位自动提身份模板。`evidenceKind=body/body-face/face` 区分证据:保留原人体 `box`,仅脸时 `box` 也必须是真实脸框,不补全身体。绘制优先合格脸框、否则人体;全帧 `valid=false` 保持未知清框。
162
+ - 摄像头显示层允许低负载灰度纹理跟随,不重新加载手机神经网络。迟到签名锚点必须按请求 FrameId/sequence 绑定原图,从原帧初始化并有界重放;禁止把旧框先套当前图再匹配。当前实现灰度长边256、8Hz、缓冲/锚点最多6秒,正反校验、纹理分数、几何与耗时预算全部通过才绘制;断流、遮挡、离开、低纹理、过期、暂停及换源及时清除。
163
+ - 跟随只服务显示,不生成新人数/身份/考勤证据。仅脸可证明默认全画面有人,指定工位须人体脚点;脸下缘不能当脚点。历史有效片段占用率100%与当前待判断可以并存,但UI必须显示有效观测/覆盖范围,避免被理解为当前或全片100%。
164
+ - 回归必须覆盖3秒以上迟到锚点重放、真实像素移动/遮挡/离开、相机媒体时钟、暂停换源晚结果、face优先/body回退、320宽和短横屏明暗布局。模拟设备与桌面纹理耗时不能冒充物理手机温控。
165
+
166
+ ### 授权视频图库、示例与候选行为
167
+
168
+ - `SaveCaptureSettings` 仅当前租户管理员可用;未配置默认关闭。真正空表首次显式保存才CreateIfMissing默认策略,已有禁用/删除/非默认或歧义策略拒绝而不重置。MySQL下先锁固定sys_config行再当前读,配合ProfileKey唯一索引;不能只用进程锁或RepeatableRead旧快照宣称并发安全。
169
+ - `CaptureFaces` 仅接受可信节点私有签名包,绑定tenant/owner/session/sequence/time/frameId/imageSha256,且主观测valid。签名、质量、数量、私有JPEG与128维模板均有界;relay必须剥离所有私有payload。图库采用独立 `opencv-sface-2021dec-gallery-v1`,不混员工准入person Id、identityQuality或subjectId。
170
+ - 对象/样本通过runtime保护模板和私有存储入库;未知建未命名人员,模糊区不乱合并也不反复建对象,后续名称取权威subject.Name。每帧最多新增1张、公平轮转,每人最多3张且间隔至少30秒;256帧有界ledger记录零新增与成功回执,同帧改包拒绝。当前读与真实双并发验收须在实际提供商执行;当前自动归档仅MySQL验证,其它提供商在上传前失败关闭。
171
+ - Capture使用独立事务;失败仅回captureError,不能阻断已验签人员观测。失败上传只能补偿本次自有私有路径;数据库事务不等于对象存储原子回滚。普通结果仅gallerySubjectId/gallerySubjectName/samplesAdded,不返回图片、模板或私有路径;runtime/monitor/relay关闭请求正文日志。
172
+ - Bootstrap的CanCaptureFaces来自当前租户授权与管理员权限,前端开关仅在true时有效。ExampleVideos只返回管理员明确配置、可播放的本租户私有列表;桌面显著提供示例入口,手机初始仍camera。官方包DataSelections只保留非空分类种子,不导出profile/AutoCaptureFaces/ExampleVideosJson/CaptureReceiptsJson及任何客户样本或录像。
173
+ - 行为使用POST `/behavior-jobs`、GET/DELETE `/behavior-jobs/{32位小写hex}`,单并发、2秒轮询、有界600秒生命周期;暂停/切源/卸载取消所属旧节点任务。Queued/Running/Completed/Failed/Cancelled/Expired分别呈现。Completed必须核对原session/sequence/time与签名,来源错配拒绝。
174
+ - 安全帽/手机使用/拍摄当前进入candidateEvents,标Candidate/Unvalidated/需复核、原帧时间和模型摘要,formalBehaviorCount保持0;不能靠节点自报validated升级正式违规。完成无候选也不构成90%通过;模型未配不发无效任务。正式门禁、候选演示与专用模型研究分开报告。
175
+ - UI以视频、紧凑工具栏与六指标为核心,历史/候选明细用抽屉或内部滚动,不堆叠长页。明暗/安全区/320宽/手机前后切换继续验收;不为科幻效果牺牲未知提示或添加高耗持续动画。
176
+
177
+ 工作台提供可见的服务设置入口,通过 capabilities 区分节点未连接、模型未配置、复核失败与画面未知;缺少行为模型时不发送无效 review,也不显示一直“复核中”。NAS 平台中继无需浏览器填写 NAS 内网地址;直连的公开地址由管理员在普通系统设置的 sys_config.VisionEdgePublicBase 维护,签名密钥 Vision.Edge.SigningKey 才属于安全与服务接入,不得暴露或被页面覆盖。公开地址仍须经过租户与可信来源校验。专用 CPU 模型诊断、目标 NAS 吞吐和独立场景准确率分别验收。
178
+
179
+ 用户指定DSM反向代理时按实际规则核查HTTPS域名/证书、目标节点环回端口和空闲监听端口;指定1000–1999范围也不能猜端口或覆盖既有规则。配置成功后将公开HTTPS地址经同源MCP保存普通VisionEdgePublicBase并回读,再验收直连与允许来源;秘密仍仅在安全配置。反代、应用发布、节点运行及物理手机分别留证,不以中继可用替代用户指定的直连交付。
180
+
181
+ `OfficialApplications/Vision` 是应用工程,`src`为Vue微服务、`engines`为V8业务,
182
+ `edge`为额外部署的Python视频节点;`Microi.Vision`仍是独立闭源.NET内核。
183
+ 应用源码发布不能冒充.NET内核更新或节点部署;不能因目录都包含Vision而声称后端完全统一。
184
+
185
+ ### 视频巡检模式(v1.5)
186
+
187
+ `microi-vision/workbench` 保留图片模式,增加录像/手机摄像头/登记监控源巡检。
188
+ 责任源码为 `Microi.Server/OfficialApplications/Vision`,规范由
189
+ `OfficialApplications/Resource/vision-release.json` 锁定;旧 AI-Project 镜像不作为新版本发布源。
190
+
191
+ - 两张新增表 `mci_vision_monitor_session`、`mci_vision_person` 与 Managed
192
+ `platform-vision-monitor` 通过 MCP Manifest 升级;不新增 .NET 定制迁移或业务 Controller。
193
+ - `Create/Read/Close/Bootstrap/Process/Review` 管理本人会话;
194
+ `People/SavePerson/ClearFace/EnrollFace/MatchFaces` 管理准入与受保护模板。
195
+ - 受信边缘节点只解码/转码/推理,DiyToken 向当前租户核验身份;媒体票据短期有效。
196
+ RTSP 只来自节点登记的 MediaMTX 路径,摄像头凭据不进入浏览器、普通 V8 或日志。
197
+ - 检测帧 HMAC 绑定 owner、tenant、session、sequence、媒体时刻和新鲜度;
198
+ `Process` 以数据库 Revision CAS 保存,重复/乱序不重复积分。
199
+ 签名使用真实原子 `V8.Method.HmacSha256Sign(observation, key)`,返回 Base64。
200
+ 节点密钥在 `V8.SysConfig.ServerPrivateSettings['Vision.Edge.SigningKey']`,通过
201
+ `microi_manage_server_private_secret` 配置,禁止进入源码。
202
+ - `Review` 只追加原视频时刻的候选行为事件,不重放考勤积分、不替换当前检测框,也不计正式违规。
203
+ 一个节点同时最多一项行为复核;人员检测保持独立,不等待大模型完成。
204
+ - 工位不绑定人员时叫“工位占用率”;绑定后才叫“员工在岗率”。
205
+ 身份不明不能替指定员工算在岗,跳播/断流/无效帧前后间隔为未知。
206
+ 录像覆盖率用全片时长作分母,观测区间取并集;倒退识别必须新开会话,不能重复累计同一段离岗。
207
+ - 历史录像的 `rules.recordedAt` 与媒体时间决定邀请核验时刻;签名新鲜度仍由 wallTimeMs 决定。
208
+ - YuNet/SFace 等实际人脸检测和五点对齐后才生成模板;宽高不足80像素、模糊、
209
+ 多人录入不合格。合格未匹配人脸只能产生未登记复核线索,不直接驱动门禁或处罚。
210
+ - 人员/手机/安全帽/拍摄分别标注评估;无正例、未知和模拟视频不能证明90%识别率。
211
+ 具体边缘协议与验收见责任源码 `edge/README.md` 和
212
+ [架构与验收](references/architecture-and-acceptance.md)。
213
+
214
+ 已有通用 MCP 的 `microi_get_db_schema`、`microi_plan_system`、
215
+ `microi_generate_system`、`microi_validate_system`、`microi_save_engine_code`、
216
+ `microi_run_engine`、私有源码同步和 V3 发布工具已覆盖这条链路;无需增加绕过权限的摄像头工具。
217
+ `platform-vision-ai-worker` 延迟重试用 `await System.Threading.Tasks.Task.Delay(ms)`,
218
+ 不能调用不存在的 `V8.Action.Sleep`。
219
+
121
220
  前端使用 `getUserMedia` 并按 `FrameIntervalMs` 取帧,必须提供开启、暂停、继续、立即识别当前帧和关闭操作;每次打开摄像头生成新的 `StreamSessionId`,每帧递增 `FrameSequence`。自动连续模式允许跳过相同画面,人工主按钮必须显式绕过前端去重以提交当前帧。可信边缘宿主将 RTSP/WebRTC 解码为 `IAsyncEnumerable<MicroiVisionExtractParam>` 后调用 `RecognizeFramesAsync`。Microi.Vision 不直接连接调用方提交的 RTSP URL,不保存摄像头账号,不承担流媒体服务器职责。
122
221
 
123
222
  打开摄像头、`getUserMedia`、`video.play()`、关闭和组件卸载之间必须使用递增操作令牌或等价取消机制。关闭时先同步写入关闭态并使旧操作失效,再停止轨道和清空 `srcObject`;不能等待媒体清理完成后才改 UI,否则快速关闭会被较早的异步打开流程反向覆盖。移动控件或条件渲染按钮可在 `pointerdown` 立即执行停止语义,并对随后 `click` 做短时去重,防止 DOM 重排吞掉关闭操作。
@@ -132,10 +231,18 @@ var voted = await V8.Vision.Stabilize({
132
231
 
133
232
  ## 交付顺序
134
233
 
234
+ ### 视频巡检的手机连接与准确率门禁
235
+
236
+ 手机默认选择平台HTTPS中继(`edge=platform`),避免手机把电脑的环回节点当作自身访问。复用 `platform-vision-edge-relay` / `platform-vision-edge-media` 与16个固定共享技术槽位,节点仅出站连接;受限访问密钥兑换DiyToken,Windows凭据用CurrentUser DPAPI保护。原始图片/特征仅进入短期加密缓存或节点有界内存,不记录在槽位表、浏览器结果或普通日志;官方包不包含节点凭据、运行槽位数据和客户录像。仍支持已登记HTTPS节点直连。
237
+
238
+ 手机视频使用页面内控制和大画面保留跟随标注;不要调用iOS原生video全屏来承载SVG。画区时收起规则面板、定位取景区,控件至少44px,处理自动播放拒绝、横竖屏、相机关闭竞态。录像从节点原分辨率提帧,私有HLS只承担播放;分片上传每段SHA-256,不将整个长视频Base64放入V8。
239
+
240
+ 90%以上必须由真实独立留出集分能力证明。应用准确率门禁要求各项准确率/精确率/召回率/特异度/覆盖率>90%,未知保留在分母;缺少正例或身份真值时不能声明达标。离岗区间另做时间线对账。完整边界与MCP/浏览器验收见 [architecture-and-acceptance.md](references/architecture-and-acceptance.md)。
241
+
135
242
  1. 更新并测试 Microi.Vision、V8 注入与 API DI;
136
243
  2. 用 MCP `microi_plan_system` 做 dry run,再生成并 `microi_validate_system`;
137
244
  3. 同步私有微服务源码,构建后按 V3 stage/finalize 发布公开产物并回读;
138
- 4. 写入默认分类/策略,按业务 Key 先查后写;
245
+ 4. 只发布默认分类种子;策略由管理员显式保存时安全初始化,禁止导出或覆盖租户授权、示例与回执;
139
246
  5. 发布框架 NuGet/Docker,使目标运行时实际包含 `V8.Vision`;
140
247
  6. 通过官方应用发布引擎生成商城包,明确 `Managed/CreateIfMissing`,回读包 SHA 和不可变版本;
141
248
  7. 在目标租户安装/更新后做真实浏览器、接口、后台任务和模型测试;
@@ -157,4 +264,8 @@ var voted = await V8.Vision.Stabilize({
157
264
 
158
265
  ## 验收输出
159
266
 
267
+ 视频工作台保持画面优先:紧凑模式栏和来源/识别操作,六项核心指标可见,说明与明细按需展开。
268
+ 覆盖暂停、切源、卸载与自动播放受限的异步播放竞态;正常 AbortError 不冒充故障,真实媒体错误不能静默吞掉。
269
+ Python 节点迁入 .NET 时必须分别列明媒体网关、FFmpeg、模型/GPU、行为模型资源及差分验证;未实际迁移不得声称已无额外运行依赖。
270
+
160
271
  最终报告至少分开列出:源码测试、5 表/字段/索引、7 菜单、5 引擎/4 事件、微服务源码与构建哈希、商城包与版本、框架制品、目标节点版本、真实浏览器、PC/手机横竖屏布局、历史图片与纠错、真实图片素材来源、数据库命中、AI 回退、生鲜属性/价格来源、人脸同意、模型准确率和未执行的物理设备测试。
@@ -175,6 +175,14 @@ Face 模式必须 `ConsentConfirmed=true`;服务端不能只信任前端 check
175
175
 
176
176
  ### 准确率
177
177
 
178
+ 视频巡检使用应用自身 `src/accuracy-gate.js` 与 `scripts/evaluate-accuracy.mjs`:各能力独立留出集至少30正例/30反例/3场景,准确率、精确率、召回率、特异度、覆盖率均须>90%;未知不得排除,缺一类不能整体通过。该下限不保证统计充分,必须保留样本来源、真实独立标注证明、模型摘要及失败案例。离岗次数/时长/在岗率另以连续真值时间线计算误差。产品要求的90%不能用置信度0.9或协议模拟替代。
179
+
180
+ 手机中继验收须走真实HTTPS API与本地节点出站轮询,覆盖512KiB上传校验/重复片/缺片/所有权、私有HLS票据/分段/到期、原分辨率取帧、内存复核、并发Control/Media通道和失效领取。普通请求不得注入ASGI身份,媒体票据不得跳读Detect作业而绕过生物特征清理。固定16槽以数据库Revision作CAS围栏,禁止将普通Redis SetIfNotExists当完整租约。旧FormEngine的_Cache为整数,传0;bigint毫秒期限在固定槽集合内比较,避免旧提供商筛选时转Int32。
181
+
182
+ 另覆盖分片上传断网→取消→名额释放→重新上传,以及合并后取消不删除转码输入。未知结果或浏览器消失时须有已授权录像库取消与闲置回收;不能让Receiving永久占住名额。临时复核帧到期须主动扫除,不能仅在下一次识别时惰性清理。
183
+
184
+ 移动浏览器分别覆盖Chromium与WebKit、320宽、横屏、44px触控、规则/人员管理、相机授权/取消/释放,以及页面内大画面保留SVG叠加。浏览器设备模拟不等于真实iPhone/Android/海康实机;物理验收缺失时必须明确记录。
185
+
178
186
  至少分离 train/reference 与 test,测试集不能复用完全相同文件充当准确率。商品需覆盖角度、包装、遮挡、数量、背景、秤盘和光照;鱼类需覆盖鲤鱼/鲫鱼等相近类;人脸需覆盖姿态、光照、遮挡并按同意范围采样。
179
187
 
180
188
  报告:样本数、类别数、Top-1、Top-K、混淆矩阵、阈值、FAR、FRR、P50/P95/P99、硬件、模型/权重版本与失败样本。完全相同图片命中只能算协议/回归测试,不计为泛化准确率。
@@ -7,10 +7,12 @@ description: 每次 Microi 任务开始前必读的基础规范。用于识别
7
7
 
8
8
  ## 浏览器不可用时继续交付(强制入口)
9
9
 
10
- - 用户指定 Edge、Chrome 等浏览器时先使用该浏览器。遇到扩展未连接、控制能力缺失或读取超时,按工具文档做有界诊断;仍不可用时,使用宿主支持的内置浏览器打开用户给定的准确链接。Codex 使用其内置浏览器;用户已允许备用浏览器时直接执行,不重复询问许可,不因一个浏览器不可用而结束整个任务。
11
- - 内置浏览器需要登录时,展示页面并请用户直接在页面完成登录、验证码或其它必须接管的步骤;不索要聊天中的密码、Token 或 Cookie。保留交接标签页,收到完成回复后读取当前页面,核对域名、账号及租户,再继续依赖登录的操作。打开页面或收到“已登录”本身不等于业务操作已完成。
10
+ - 用户明确选择或已在 Codex 内置浏览器打开、登录目标网站时,直接复用内置浏览器的现有目标标签页。先读取标签列表和当前页面,核对实际 URL、域名及账号/租户;不要再反复尝试 Edge/Chrome,不新建空白会话要求用户重复登录,也不把已到达的后台首页重新导航回登录入口。
11
+ - 用户指定 Edge、Chrome 等外部浏览器时先使用该浏览器。扩展未连接、`Debugger unattached`、无法可靠识别 Windows 浏览器 URL、控制能力缺失或读取超时,属于需要诊断的具体故障;按工具文档完成有界诊断后仍不可用,**必须转入 Codex 内置浏览器继续原任务**。复用已有目标标签;没有时才打开用户给定的准确链接。用户已允许备用浏览器时直接执行,不重复询问许可;不得只报告外部浏览器故障、改要 SSH 或结束工作,而没有实际检查内置浏览器。
12
+ - 切换必须落到真实操作和回读:按当前工具文档选择内置浏览器、列出标签、绑定目标并读取页面,再继续原先的点击、盘点、测试或验收。绑定与读取合并调用超时时,可拆开这些步骤做有界恢复;一次超时、已打开 URL 或用户说“已登录”,都不能单独当作连接失败或业务验收完成的结论。此流程不授权改用原生 HTTP/CDP 绕过访问限制。
13
+ - 内置浏览器确实需要登录时,展示页面并请用户直接在页面完成登录、验证码或其它必须接管的步骤;不索要聊天中的密码、Token 或 Cookie。保留交接标签页,收到完成回复后重新读取当前页面,核对目标和身份,再继续依赖登录的操作;已有有效会话则直接接续。
12
14
  - 等待人工操作期间,只暂停依赖该页面的步骤,继续已授权且不依赖浏览器的 MCP、只读盘点、源码、Skills、文档与本地验证;保存待办、已完成证据及恢复入口。不得把登录等待或单一工具故障描述为整项任务无法继续。
13
- - 浏览器能力故障与安全拒绝分开处理。遇到明确策略拒绝、权限不足、证书警告或必须由用户接管的操作,遵循该工具的限制;不能借换浏览器、原生 HTTP、CDP、关闭证书校验等方式执行被禁止的同一动作。只继续不受该限制影响的已授权步骤,并准确说明受阻动作及原因。
15
+ - 浏览器能力故障与安全拒绝分开处理。遇到明确策略拒绝、权限不足、证书警告或必须由用户接管的操作,遵循该工具的限制;不能借换浏览器、原生 HTTP、CDP、关闭证书校验等方式执行被禁止的同一动作。工具明确要求结束当前轮次时必须遵守并保存恢复入口;后续用户已接管完成、明确在内置浏览器打开并登录后,从内置浏览器重新核验,不把上一轮外部浏览器的停止状态当作内置浏览器永久不可用。只继续不受该限制影响的已授权步骤,并准确说明受阻动作及原因。
14
16
  - 指定浏览器与内置浏览器都无法完成必要步骤时,说明各自已核实的故障、仍待完成的具体操作,并向用户提出最小可执行的接管要求;同时交付独立工作成果。恢复后从最近证据继续,结果未知的写入先回读,不盲重做;用户仍需操作的标签页不作为临时垃圾关闭。
15
17
 
16
18
  ## 普通吾码发布固定入口(强制)
@@ -50,6 +52,10 @@ description: 每次 Microi 任务开始前必读的基础规范。用于识别
50
52
 
51
53
  本节适用于开发、测试、诊断和发布产生的全部自有临时资产,包括工作区根 `.tmp/`、宿主临时目录(如 `$CODEX_HOME/tmp`)和隔离 Git worktree,并替代历史“任务完成后可以不清理”的约定。目录位置和 `.gitignore` 不改变收尾责任。
52
54
 
55
+ **磁盘容量须提前检查并主动处置**:下载、解压、构建、镜像拉取、数据库初始化或备份前,按[磁盘容量预检、主动清理与 I/O 故障恢复](references/progressive-04-工作区与平台专项保障.md#磁盘容量预检主动清理与-io-故障恢复强制)核对实际写入盘及峰值预算;Docker/WSL 同时核对 VHD 所在宿主盘,不能只看容器 `df`。空间不足时先盘点并普通删除已核验可重建、无引用的自有产物或用户授权范围内的闲置缓存,不等用户再次催促,也不只回复“请自行清理”。源码、用户数据、数据库、VHD、必要证据及未知归属项保留;强制删除、结束共享进程、重启 Docker/WSL 和全局 prune 均不属于自动清理。
56
+
57
+ 出现真实 `I/O error`、文件系统日志中止或只读挂载时,空间恢复与存储健康必须分别验收;保留失败证据,在存储与服务重新验证前不继续重任务,不把磁盘腾空或 Docker API 能响应当成故障已恢复。
58
+
53
59
  - 创建前使用独立的 `.tmp/<任务标识>/`,登记本任务创建的目录、文件、进程及用途;不得混用其它任务目录,既有文件或共享依赖不因本轮使用而取得删除权。每轮测试及任务成功、失败、取消或中断退出时都执行 `finally` / teardown,先核验并关闭本任务的写入者、浏览器和临时服务,再删除本轮已无用途的临时文件;不能等用户再次要求清理磁盘。
54
60
  - 默认删除本任务的一次性脚本、下载/解压副本、编译输出、隔离依赖、测试夹具和冗余截图/trace/video/日志。交付必需的少量报告、关键截图、发布哈希/回执先脱敏并归档到对应项目的长期交付目录,回读归档完整后再删临时副本;不得把完整构建树、源码副本或依赖目录当作验收证据长期留存。
55
61
  - 失败仍需排查或下一阶段确实依赖的文件,只保留可解释的最小集合,记录路径、体积、原因、归属和清理时机;排查/依赖结束后立即删除。崩溃来不及执行 teardown 时,下次接续先核对自有清单并补清;不能以“测试失败”“以后可能有用”为由无限保留。
@@ -24,16 +24,16 @@ AI 新增或修改 Microi 配置文件时,凡是面向开发者、部署人员
24
24
  - 修改配置说明后,必须确认 JSON/YAML 仍可解析,不能因为中文标点或注释方式导致配置文件失效。
25
25
 
26
26
  <!-- /microi-progressive:chunk -->
27
- <!-- microi-progressive:chunk id=workspace-conventions-012 sha256=f54d1c6d9ce2a86496dbc89d49158fb5efa7501817be350493247bd6bde37f63 -->
27
+ <!-- microi-progressive:chunk id=workspace-conventions-012 sha256=b33b89e347862377ad6531c9331915cd2299b6c2690ace9cfb1754087326db12 -->
28
28
  ## 后端 API 配置白名单与 SaaS 单一事实源(强制)
29
29
 
30
30
  - `Microi.net.Api` 的 `AppSettings` 与同名容器环境变量只允许:`OsClient`、`OsClientType`、`OsClientNetwork`、`OsClientDbType`、`OsClientDbConn`、`OsClientRedisHost`、`OsClientRedisPort`、`OsClientRedisPwd`、`OsClientRedisDataBase`、`OsClientDbMongoConn`。
31
- - 除上述十项外,不得新增 API 业务环境变量或 `AppSettings` 节点。影响整个部署/节点或决定租户基础设施路由的开关、超时、限额、安全策略和密钥进入主控 `sys_osclients`;允许每个子租户自行维护的 OAuth、业务集成和展示设置进入该租户数据库的 `mci_system_setting`。两者都必须提供幂等升级、默认值、缓存刷新、敏感字段脱敏和租户隔离。官方 License 信任链是固定例外:恢复重试次数/间隔使用代码常量,签发私钥固定只读挂载 `/app/microi_private.pem`。禁止新增 `MICROI_*`、`DOS_ORM_*`、额外 `AppSettings` 节点或通用动态环境变量读取。
31
+ - 除上述十项外,不得新增 API 业务环境变量或 `AppSettings` 节点。影响整个部署/节点或决定租户基础设施路由的既有配置进入主控 `sys_osclients`;允许每个租户维护的业务配置按内容敏感性归属:公开开关、服务 HTTP(S) 地址、公开 ClientId/回调及展示设置进入当前租户 `sys_config` 实体字段与普通系统设置,Secret/Token/密码/私钥、含认证信息的 URL 及确需隐藏的内部拓扑进入 `mci_system_setting`。不能仅因第三方或后端使用就判为私密;公开配置仍受管理权限、租户、字段/地址白名单和既有 SSRF 校验约束。配置改动须配套幂等升级、默认值、缓存刷新与脱敏,不因本规则自动迁移所有旧配置。官方 License 信任链是固定例外:恢复重试次数/间隔使用代码常量,签发私钥固定只读挂载 `/app/microi_private.pem`。禁止新增 `MICROI_*`、`DOS_ORM_*`、额外 `AppSettings` 节点或通用动态环境变量读取。
32
32
  - `ASPNETCORE_*`、`DOTNET_*` 是框架宿主配置;`PW_*`、MCP、构建、安装器和发布脚本变量只服务各自工具进程。它们不能成为生产 API 的业务配置入口。
33
33
  - 修改后必须用源码测试扫描生产 `.cs`、API `appsettings.json` 及在线/离线 Compose,精确断言十项白名单。不能用注释约定代替自动化守卫。
34
34
 
35
35
  <!-- /microi-progressive:chunk -->
36
- <!-- microi-progressive:chunk id=workspace-conventions-013 sha256=dbf22caaf1673270e6abf2277704505481f632c68c1da61df992c81a577e24df -->
36
+ <!-- microi-progressive:chunk id=workspace-conventions-013 sha256=9dbb0a2e7547c1e45970895f5fdc9843a8a1028533729679874acfa18931e335 -->
37
37
  ## 身份、可逆业务秘密与敏感操作统一规范(强制)
38
38
 
39
39
  - DiyToken 是吾码多租户、多终端、V8 和低代码权限体系的唯一会话入口。新增密码、SSO、OAuth、Passkey、人脸或其它登录方式时,验证成功后必须继续签发 DiyToken,并复用现有角色、部门、菜单、表权限、数据范围、终端吊销和 Token 轮换;禁止整体替换为 ASP.NET Identity 或并行建立第二套用户/权限 Token。
@@ -42,7 +42,7 @@ AI 新增或修改 Microi 配置文件时,凡是面向开发者、部署人员
42
42
  - DES 是现有兼容格式,不得宣称能抵抗服务器所有者或代码执行者。新高价值秘密优先使用带版本的现代认证加密与集中密钥管理;基础设施密钥仍不得进入可编辑 V8。
43
43
  - 登录后的敏感操作优先用 `V8.Identity.Verify` 申请 Passkey、Authenticator TOTP 或严格人脸一次性票据,接口引擎从权威数据重算 `ActionHash` 后调用 `V8.Method.ConsumeIdentityVerificationTicket` 原子消费。票据不能代替菜单/表/行权限、状态机、幂等、事务或审计。
44
44
  - Windows Hello、Touch ID、Face ID 和 Android 设备验证优先采用 WebAuthn/Passkey;Microsoft/Google Authenticator 采用标准 TOTP,两者都不增加模型服务。只有服务端严格人脸与活体检测才接入独立 `Microi Face Gateway v1` 云服务或 Docker/集群。完整规范读取 `microi.skills/v8-security/SKILL.md` 与 `microi.doc/docs/doc/more/identity-verification.md`。
45
- - 外部登录统一在登录页【登录方式】中展示;Gitee、微信、GitHub 等 Provider 只登录个人中心已绑定的吾码用户,最终签发 DiyToken。Provider 固定协议端点,租户自己的 ClientId/ClientSecret 放 `mci_system_setting`;Secret 不进入浏览器/前端 `V8.SysConfig`,后端接口引擎和后端 V8 事件只能从当前租户 `V8.SysConfig.ServerPrivateSettings[ConfigKey]` 使用,禁止回传或记录原文。
45
+ - 外部登录统一在登录页【登录方式】中展示;Gitee、微信、GitHub 等 Provider 只登录个人中心已绑定的吾码用户,最终签发 DiyToken。Provider 固定协议端点;公开 ClientId 与回调按普通 `sys_config` 配置管理,ClientSecret 等认证材料放 `mci_system_setting`。已有登录入口的旧 Key 保留兼容,只有明确实施对应迁移才调整存放位置,不自动批量搬迁。Secret 不进入浏览器/前端 `V8.SysConfig`,后端接口引擎和后端 V8 事件只能从当前租户 `V8.SysConfig.ServerPrivateSettings[ConfigKey]` 使用,禁止回传或记录原文;完整分类见 `microi.skills/v8-security/SKILL.md`。
46
46
  - 一键安装恢复客户旧库时只允许定位精确主租户三元组;缺失则幂等创建,重复则停止,不能批量重写其它子租户。新主租户行不得持久化数据库、MongoDB 或 Redis 连接,安装器对 MinIO/OCR 等业务配置的后续更新也必须带同一三元组、活动状态条件并做唯一回读。
47
47
 
48
48
  <!-- /microi-progressive:chunk -->
@@ -19,7 +19,7 @@ Microi 平台后端功能必须默认按多节点部署设计:多个 API/Worke
19
19
  - 若要求宿主机掉电或 `kill -9` 窗口内也绝对零丢失,必须在返回业务成功前取得外部持久消息队列、共享 outbox 或同步 WAL 的持久化确认;“内存队列随后异步落盘”不能宣称覆盖尚未持久化的强杀窗口。
20
20
 
21
21
  <!-- /microi-progressive:chunk -->
22
- <!-- microi-progressive:chunk id=workspace-conventions-003 sha256=e2b353a4b8b4c11b4c22d7fa6d60056002f9efc94605f1732079c7940b13a464 -->
22
+ <!-- microi-progressive:chunk id=workspace-conventions-003 sha256=78007da33e1716b810c9667425ecfb1ff6321f273080408c1ab234f54f42b974 -->
23
23
  ## 本地资源与 OOM 保护规范(强制)
24
24
 
25
25
  AI 在用户本机启动 Node.js、Vite、Webpack、dotnet build、Java、Docker build、浏览器自动化、压力测试或其他可能长时间占用 CPU/内存的进程前,必须先评估资源,不得为了“让构建跑过”无限抬高堆内存或 Worker 数。
@@ -34,6 +34,27 @@ AI 在用户本机启动 Node.js、Vite、Webpack、dotnet build、Java、Docker
34
34
 
35
35
  固定测试库名、端口或归属标记冲突,应按上述生命周期规则改用本任务唯一命名并保留精确归属保护,不能以“隔离 Full”为由创建新的本地依赖容器。
36
36
 
37
+ ### 磁盘容量预检、主动清理与 I/O 故障恢复(强制)
38
+
39
+ 本节用于本机开发、测试和发布的资源保障,以及用户授权的磁盘垃圾清理;不授权清空客户服务器、业务数据或共享服务。完整的归属、路径、普通删除及策略拒绝处理仍以[临时文件清理规则](../SKILL.md#测试临时文件必须随任务清理强制)为准。
40
+
41
+ **先找真实写入盘,再启动任务。** 下载、解压、安装依赖、编译、镜像拉取/构建、数据库初始化、备份/恢复和创建隔离副本前,核对系统临时目录、包缓存、工作区输出、备份目标及容器数据的实际落盘位置,记录各物理盘可用字节、预计同时新增的峰值体积和安全余量。压缩包与解包目录、镜像压缩层与展开层、旧卷与恢复新卷可能同时存在,不能只预算最终产物大小。复用现有可验证缓存和候选,避免每轮重复下载/复制。预算未知时先补充测量或小批串行验证,不把未知视为空间充足。
42
+
43
+ - Docker Desktop/WSL 必须从当前配置或已核验路径找出数据 VHD/VHDX 所在宿主盘,同时读取该盘剩余空间与 Linux 文件系统的空间、inode;不能假设 VHD 总在 C 盘,也不能用容器 `df` 的虚拟上限或内存余量代替宿主可用空间。远程 Docker Engine 则核对真实远端数据盘;本机磁盘数据不能证明远端有容量。
44
+ - 每个实际写入盘均需满足“预计并行写入峰值 + 明确记录的系统/服务安全余量”;有项目阈值时沿用,不为通过而调低。长时间写入按现有资源监视每 15–30 秒复核,阶段切换再检查。低于预算或发生 ENOSPC 时先暂停启动下一批写入,保留已有任务的可恢复状态,不能靠持续重试或复制到另一盘掩盖积压。
45
+
46
+ **容量不足先执行安全清理。** 优先处理本任务已结束、无后续引用的下载/解压副本、编译输出、一次性脚本、冗余日志与截图;必要证据先最小归档并回读。用户已授权磁盘垃圾清理时,可继续盘点授权盘内用途明确、可重新获取且无活动引用的下载缓存、过期安装包缓存和临时残留,按精确清单普通删除。包缓存目录名、文件年龄、体积或“进程目前未运行”都不是单独删除依据;核对缓存所属工具、原始内容可重建性、活动安装/构建/发布锁及当前任务依赖,不整体清空包管理器存储或用户临时目录。
47
+
48
+ - 清理前登记每项绝对路径、归属/用途、体积、可重建依据、引用检查与保护项;检查目标和祖先链接、重解析点、文件占用、Git/worktree 差异及容器/虚拟机挂载。只有范围、恢复来源与闲置状态均明确才执行;不能把“纳入清理清单”当作取得他人资产所有权。
49
+ - 禁止自动删除源码、未提交差异、用户文档/下载原件、凭据、浏览器用户配置、唯一交付物、仍需诊断的最小证据、数据库/容器持久卷和 VHD/VHDX。即使容器已停止或虚拟盘可重建,也不把其持久状态当普通缓存。禁止整体清空共享 `.tmp`、递归跟随链接、全局 `docker system/volume/image/builder prune` 或删除 Docker 内部存储文件。
50
+ - Windows 使用已核验单个路径的 `Remove-Item -LiteralPath` 普通删除,独占目录才加 `-Recurse`;不加 `-Force`、不改属性/ACL,不为腾空间 kill 进程或重启 Docker/WSL/主机。活动资源等正常退出;占用、权限或策略拒绝保留并记录,不换 shell、语言、编码或 API 重试被拒的同一动作。
51
+ - 每批后独立回读删除结果、保护对象和宿主盘净空间变化;逻辑删除字节与实际释放空间分开记录。删除容器内文件未必缩小宿主稀疏 VHD,不能据此宣称 C 盘已释放,也不自动 compact、迁移或修复虚拟盘。够用后停止扩大清理,再复核下一阶段预算。
52
+ - 安全候选仍不足时,报告已完成的清理、剩余容量/缺口、必须保留的对象及具体阻塞,继续不依赖该盘的已授权工作;再提交最小需用户决定的迁移或存储维护方案。不能在尚有可核验的安全清理项时只把整项工作退给用户,也不能为避免询问而扩大删除范围。
53
+
54
+ **容量恢复不等于 I/O 故障恢复。** 出现 `input/output error`、EXT4/JBD2 journal aborted、只读挂载、容器状态相互矛盾等实际故障后,先停止新增重任务,保留带时间的原始错误、受影响磁盘、任务/容器身份与退出状态。只读核对宿主空间、Linux 空间/inode、文件系统/内核错误和 Engine 状态,避免继续在受损卷写诊断文件。空间增加、`docker info` 成功或旧健康状态均不足以宣称恢复;文件系统修复、离线检查、服务重启或虚拟盘迁移按其明确授权独立执行,不能混入垃圾清理。
55
+
56
+ 维护完成后,必须取得新的存储与服务回读;在原有测试授权内,用最小自有探针验证实际读写、容器新状态及必要就绪,再恢复原任务。若尚无维护完成证据或探针仍有 I/O 错误,保持该路径未恢复,原失败回执不改写、不计通过。最终分别报告空间清理、存储健康和业务/测试恢复三项结果;只改 Skill 不代表自动执行入口、已安装副本或运行环境已具备这些检查。
57
+
37
58
  ### `Microi.Client` 框架前端构建频率(强制)
38
59
 
39
60
  - 修改吾码低代码平台框架前端 `Microi.Client/` 时,开发阶段必须优先复用已运行的 Vite 开发服务,通过热模块更新(HMR)、定向静态测试和浏览器回归验证改动。禁止把 `npm run build` 当作每轮修改后的常规检查,禁止因切换需求、修改单个组件或上下文压缩而重复执行全量构建。