@microi.net/cli 5.9.8 → 5.9.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 1,
3
- "generatedAt": "2026-10-16T10:07:03.043Z",
3
+ "generatedAt": "2026-10-16T11:53:52.951Z",
4
4
  "policy": {
5
5
  "maxEntryLines": 285,
6
6
  "referenceBudgetLines": 245,
@@ -763,11 +763,11 @@
763
763
  ]
764
764
  },
765
765
  "microi-system-delivery": {
766
- "originalSha256": "5c70d405c7be421715eb2dd260b272733fc4426591528814e67b7a2e5e32ff83",
767
- "originalLines": 646,
768
- "prefixSha256": "be8886df24f891da364663ea8c4bfc010fba5505094347e4a97166c6e45fe2eb",
769
- "prefixBytes": 4329,
770
- "entryLines": 169,
766
+ "originalSha256": "e04b4ac9fc32d5b502b8dbaeb5fa1a3a799bb7181b20cd4e7e95e3d06757af3f",
767
+ "originalLines": 701,
768
+ "prefixSha256": "c6846a619a5b9291649fc44a36de5a0676ec2b1dfa94a57ad38f9620573cf4ff",
769
+ "prefixBytes": 4786,
770
+ "entryLines": 106,
771
771
  "chunks": [
772
772
  {
773
773
  "id": "microi-system-delivery-000",
@@ -788,7 +788,7 @@
788
788
  {
789
789
  "id": "microi-system-delivery-002",
790
790
  "ordinal": 3,
791
- "destination": "microi-system-delivery/SKILL.md",
791
+ "destination": "microi-system-delivery/references/progressive-03-安全与跨端验收.md",
792
792
  "sha256": "adeb9e4ec4beadf3b7ba33325e860b378b81f6d7e95b25879b64ca4ee1c91987",
793
793
  "lines": 52,
794
794
  "heading": "平台安全与存量兼容验收(强制)"
@@ -796,7 +796,7 @@
796
796
  {
797
797
  "id": "microi-system-delivery-003",
798
798
  "ordinal": 5,
799
- "destination": "microi-system-delivery/SKILL.md",
799
+ "destination": "microi-system-delivery/references/progressive-03-安全与跨端验收.md",
800
800
  "sha256": "8e2891f2a149d6828b653b9f0735ea39a4df5ba60178c79f0e5b0065ce72ee84",
801
801
  "lines": 13,
802
802
  "heading": "前端交付检查清单"
@@ -832,6 +832,14 @@
832
832
  "sha256": "67fa060b6520a80e41818ac0974c0b38ff3171c97a1c558a01667b854865fa7a",
833
833
  "lines": 82,
834
834
  "heading": "复盘记录格式"
835
+ },
836
+ {
837
+ "id": "microi-system-delivery-008",
838
+ "ordinal": 8,
839
+ "destination": "microi-system-delivery/references/context-quality.md",
840
+ "sha256": "0e9e14b98ac7ab7ca0bf1c4ef97bad2bf061d0c01b170325ddbaf961a02a0de4",
841
+ "lines": 54,
842
+ "heading": "质量优先的上下文与增量开发"
835
843
  }
836
844
  ],
837
845
  "references": [
@@ -847,6 +855,18 @@
847
855
  "自动化测试必须覆盖的坑",
848
856
  "复盘记录格式"
849
857
  ]
858
+ },
859
+ {
860
+ "path": "references/progressive-03-安全与跨端验收.md",
861
+ "headings": [
862
+ "安全与跨端验收"
863
+ ]
864
+ },
865
+ {
866
+ "path": "references/context-quality.md",
867
+ "headings": [
868
+ "质量优先的上下文与增量开发"
869
+ ]
850
870
  }
851
871
  ]
852
872
  },
@@ -3221,17 +3241,17 @@
3221
3241
  ]
3222
3242
  },
3223
3243
  "workspace-conventions": {
3224
- "originalSha256": "347085aeef939e8e91e9d0aedfe1208c5a147d234c16887c2af3ac026d73a9f5",
3225
- "originalLines": 640,
3226
- "prefixSha256": "b2c13c455cf052093f78881170151d3fb56c25cda2f837c9f6abc0c29e67fd30",
3227
- "prefixBytes": 310,
3228
- "entryLines": 285,
3244
+ "originalSha256": "41a0ea967ef35e75b8873868319a36c30825f2b6878e447ba27213542e18499f",
3245
+ "originalLines": 648,
3246
+ "prefixSha256": "45acfafcda30d35e7cabefaa67f8b73697d0f93724733d2469386a54e3910b76",
3247
+ "prefixBytes": 1658,
3248
+ "entryLines": 120,
3229
3249
  "chunks": [
3230
3250
  {
3231
3251
  "id": "workspace-conventions-000",
3232
3252
  "ordinal": 0,
3233
3253
  "destination": "workspace-conventions/SKILL.md",
3234
- "sha256": "105657a606c31b5c06e3834c1d29d613d9456f04225e729ba92e69049053c074",
3254
+ "sha256": "0b8322a967e67a45f195860314357a7b974555b6f3d0b642fe910dc769bd7e23",
3235
3255
  "lines": 60,
3236
3256
  "heading": "任务启动前 Skill 读取规则(强制)"
3237
3257
  },
@@ -3246,7 +3266,7 @@
3246
3266
  {
3247
3267
  "id": "workspace-conventions-002",
3248
3268
  "ordinal": 2,
3249
- "destination": "workspace-conventions/SKILL.md",
3269
+ "destination": "workspace-conventions/references/progressive-04-工作区与平台专项保障.md",
3250
3270
  "sha256": "795821e68c0c347c68f8cdcb6e2f81defa9a172650216288c10d313075e3247d",
3251
3271
  "lines": 16,
3252
3272
  "heading": "分布式部署与重启安全规范(强制)"
@@ -3254,15 +3274,15 @@
3254
3274
  {
3255
3275
  "id": "workspace-conventions-003",
3256
3276
  "ordinal": 3,
3257
- "destination": "workspace-conventions/SKILL.md",
3258
- "sha256": "7e7a88134f51f7e5712e9a41cfe516bae45ea8e9cb418a93cc39adeff3f3cbb4",
3277
+ "destination": "workspace-conventions/references/progressive-04-工作区与平台专项保障.md",
3278
+ "sha256": "478664d863219c724b8d19d25e7ac17420add6229c9efab5b75823d815aede53",
3259
3279
  "lines": 19,
3260
3280
  "heading": "本地资源与 OOM 保护规范(强制)"
3261
3281
  },
3262
3282
  {
3263
3283
  "id": "workspace-conventions-004",
3264
3284
  "ordinal": 4,
3265
- "destination": "workspace-conventions/SKILL.md",
3285
+ "destination": "workspace-conventions/references/progressive-04-工作区与平台专项保障.md",
3266
3286
  "sha256": "093ef306e8f2f873b76524ce69ce7fd5194cfa0b361bd564f0c767f88439a817",
3267
3287
  "lines": 29,
3268
3288
  "heading": "临时文件与 AI 产物放置规则(强制)"
@@ -3270,7 +3290,7 @@
3270
3290
  {
3271
3291
  "id": "workspace-conventions-005",
3272
3292
  "ordinal": 5,
3273
- "destination": "workspace-conventions/SKILL.md",
3293
+ "destination": "workspace-conventions/references/progressive-04-工作区与平台专项保障.md",
3274
3294
  "sha256": "f627ee155b40014af76926b3a432601aa3f6bec5a7eb98ca0540c83fa41f1e5a",
3275
3295
  "lines": 32,
3276
3296
  "heading": "Microi 源码路径速查(工作区根相对路径)"
@@ -3278,7 +3298,7 @@
3278
3298
  {
3279
3299
  "id": "workspace-conventions-006",
3280
3300
  "ordinal": 6,
3281
- "destination": "workspace-conventions/SKILL.md",
3301
+ "destination": "workspace-conventions/references/progressive-04-工作区与平台专项保障.md",
3282
3302
  "sha256": "fb29cd39fe580e3e38df4c0483e5530f876697418f38b391aa421606c8fc6fe5",
3283
3303
  "lines": 12,
3284
3304
  "heading": "Skills 通用化原则"
@@ -3286,7 +3306,7 @@
3286
3306
  {
3287
3307
  "id": "workspace-conventions-007",
3288
3308
  "ordinal": 7,
3289
- "destination": "workspace-conventions/SKILL.md",
3309
+ "destination": "workspace-conventions/references/progressive-04-工作区与平台专项保障.md",
3290
3310
  "sha256": "c23d7942a3b6176b464fe267546c09dcadf990c2c243576c267c644b4502795d",
3291
3311
  "lines": 11,
3292
3312
  "heading": "Skills 中文优先规则"
@@ -3294,7 +3314,7 @@
3294
3314
  {
3295
3315
  "id": "workspace-conventions-008",
3296
3316
  "ordinal": 8,
3297
- "destination": "workspace-conventions/SKILL.md",
3317
+ "destination": "workspace-conventions/references/progressive-04-工作区与平台专项保障.md",
3298
3318
  "sha256": "cd38647f4ae3c186e247c06ce44b45e42ce7e664d58fbed82c93595547638a7c",
3299
3319
  "lines": 11,
3300
3320
  "heading": "官方文档原位增补与中文单源规则(强制)"
@@ -3302,8 +3322,8 @@
3302
3322
  {
3303
3323
  "id": "workspace-conventions-009",
3304
3324
  "ordinal": 9,
3305
- "destination": "workspace-conventions/SKILL.md",
3306
- "sha256": "43bdb1476a7751fbc251c933ccfbd1710c9269dec3e7e4b541cdaeea37d200f1",
3325
+ "destination": "workspace-conventions/references/progressive-04-工作区与平台专项保障.md",
3326
+ "sha256": "bec8162387c470c0cad1252645dbb4ecdafb0abb5f9b042525b6df8671e77ab0",
3307
3327
  "lines": 38,
3308
3328
  "heading": "多对话共享工作区变更归属保护(强制)"
3309
3329
  },
@@ -3593,6 +3613,12 @@
3593
3613
  "headings": [
3594
3614
  "CLI 与 IDE 插件错版共存约定"
3595
3615
  ]
3616
+ },
3617
+ {
3618
+ "path": "references/progressive-04-工作区与平台专项保障.md",
3619
+ "headings": [
3620
+ "工作区与平台专项保障"
3621
+ ]
3596
3622
  }
3597
3623
  ]
3598
3624
  }
@@ -91,6 +91,9 @@ Codex Router 启动后会异步调用 bundled CLI 的 `microi update --backgroun
91
91
 
92
92
  ## 功能路由
93
93
 
94
+ - 质量优先的上下文策略读取 `microi-system-delivery/references/context-quality.md`。完整系统读全原八项及增补;局部修改读取目标与依赖,歧义扩大。`microi_get_db_schema` 默认目录摘要,字段写入前使用 `detail:"fields"` 并遍历 `Paging.nextCursor`;应用清单和文件片段同样检查完整性,不能把摘要作为覆盖正文。
95
+ - 较大 Manifest 在 `microi_plan_system` 首次提交正文并传 `detail:"summary"` 获取 `manifestRef/manifestHash` 复用,执行与验收仍校验当前身份;引用过期、重启或凭据变化时重新提交正文,写入未知先回读。`microi_get_context_metrics` 只报告当前 MCP 工具载荷字节、调用和错误,不能冒充供应商 token/费用。外部宿主的历史摘要和缓存由宿主管理。
96
+
94
97
  - 连接、登录、拉取、推送、差异和 AI 初始化:使用 bundled CLI 的 `profile`、`auth`、`pull`、`push`、`sync status`、`ai init`、`mcp init`、`doctor`。
95
98
  - 接口引擎、表单事件、模块、字段、工作流和数据库结构:先用 `action="list_tools"` / `describe_tool`,再调用对应原始 `microi_*` 工具。写工具必须保留确认口令、审计与回读。
96
99
  - 远程执行与调试:读取 `v8-debugging/SKILL.md`。Codex 用“获取源码 → 远程执行 → 定位堆栈/日志 → 最小补丁 → 再执行”的结构化循环代替 VS Code DAP 的可视化逐行面板;不得把未执行的源码检查称为真机调试成功。
@@ -11,13 +11,15 @@ description: 已初始化吾码工作区的默认 AI 开发总控入口,用户
11
11
 
12
12
  本 Skill 是已初始化吾码工作区的默认开发总控入口。用户直接描述需求即可,无需指定 Skill 名称;
13
13
  目标 MCP 连接可沿用当前项目或唯一已登录连接,需求文件/验收地址按需提供。
14
- 任何吾码开发任务先读本入口、八项清单及其增补要求,再按下表读取相关专项 Skill。
14
+ 任何吾码开发任务先读本入口和质量规范;完整系统必须完整读取八项清单及其增补要求,局部修改按目标与依赖读取对应专项 Skill。
15
15
  收到“完整开发/交付系统”请求时,必须先读取
16
16
  [完整系统开发默认交付清单(原推荐提示词 1–8)](references/progressive-01-标准工作流.md#完整系统开发默认交付清单原推荐提示词-18),
17
17
  并完整读取同一参考文件的[菜单先行与经营报表增补要求](references/progressive-01-标准工作流.md#菜单先行与经营报表增补要求强制),
18
18
  逐项执行并记录覆盖结果;不能只交方案、示例或待办。局部修改、只读分析按用户实际范围执行,
19
19
  这份默认清单不额外授权生产写入或客户部署。
20
20
 
21
+ 先读取 [质量优先的上下文与增量开发](references/context-quality.md)。完整系统在写入前必须读取 [安全与跨端验收](references/progressive-03-安全与跨端验收.md);局部涉及 FormEngine、菜单、权限、文件、登录或前端交互时读取对应安全/跨端章节。未知影响必须扩大检索,不能用少读资料换取不准确的修改。
22
+
21
23
  按本次实际能力读取相关 Skill,不能只读总控入口后凭记忆实现:
22
24
 
23
25
  | 工作内容 | 相关 Skill |
@@ -74,73 +76,6 @@ Manifest 使用 `tables[].formBanner`;未显式配置时仍按字段类型选
74
76
 
75
77
  最终回复必须按原始编号逐项汇总:哪些已实现、哪些未实现、是否通过全自动化测试、是否通过截图验证。不能只给总括性“都完成了”。如果某项没有测试或没有截图,必须明说“未覆盖/未截图”,并说明原因。
76
78
 
77
- <!-- /microi-progressive:chunk -->
78
- <!-- microi-progressive:chunk id=microi-system-delivery-002 sha256=adeb9e4ec4beadf3b7ba33325e860b378b81f6d7e95b25879b64ca4ee1c91987 -->
79
- ## 平台安全与存量兼容验收(强制)
80
-
81
- AI 零代码交付不能只验证管理员帐号和页面能打开。任何涉及 FormEngine、菜单、角色、子表、文件、SaaS 或登录协议的交付,都必须按以下服务端边界设计和验收:
82
-
83
- ### FormEngine 混合授权
84
-
85
- - Token 只完成身份认证,不是任意表的访问凭证。浏览器、UniApp、SDK 等外部请求必须继续校验表、菜单、角色、操作权限和数据范围。
86
- - 显式 `_SysMenuId` / `ModuleEngineKey` 进入精确菜单校验;伪造、传错或借用其它表菜单时失败关闭,不能退回兼容推断。
87
- - 为兼容存量前端 V8,无菜单请求由后端从当前用户真正拥有的菜单授权快照中推断目标表权限。没有候选菜单、范围无法安全合并或解析失败时失败关闭;不要要求所有历史项目一次性补 `_SysMenuId`。
88
- - 标准 PC facade 只给当前菜单绑定的当前表注入菜单 Id,跨表调用不借用主表菜单。没有菜单入口的 SDK/定制页才使用最小【高级表权限】。
89
- - 后端接口引擎、后端表单 V8 和平台内部调用由服务端建立可信上下文,不要求 `_SysMenuId`;客户端伪造 `_TrustedServerInvocation` 或 `_InvokeType:'Server'` 不能获得信任。
90
- - `TableChild` 使用父记录范围内委托:验证父菜单、父表字段配置、子菜单、父记录数据范围和外键,并由服务端强制注入外键。隐藏子菜单不要求存量角色逐个补权限。
91
- - 菜单 `SqlWhere` / `SqlJoin` 只约束列表、计数、导出等集合查询;单行详情只校验同表菜单访问权。主表写入由 `Add` / `Edit` / `Del` / `Import` 专项权限控制,不把查询范围追加到写入 SQL,也不因查询 Join 拒绝。行级写业务限制放在后端表单 V8 或专用接口引擎。
92
-
93
- ### 保护表、控制面与缓存
94
-
95
- - SaaS、接口引擎、表/字段、菜单角色、用户、任务、数据源、MQ/MQTT、页面、打印、工作流、数据库、应用商城、AI 与安全审计等保护表,普通客户端 `Level < 9999` 硬拒绝;菜单或表权限不能覆盖。
96
- - 创建 V8、接口引擎、任务、数据源和 Redis 管理等控制面 API 继续要求 `Level >= 9999`。不能只靠前端隐藏菜单。
97
- - 权限缓存使用按 `OsClient` 隔离的共享 Redis `epoch`、用户快照、短 TTL L1/L2。用户/角色/菜单/权限变化后提升 `epoch`;验收至少使用两个节点确认无需清 Redis或重启即可生效。
98
- - Upgrade15 只清理普通角色的保护表直接授权,不能删除正常业务菜单权限。
99
-
100
- ### 上传、私有文件与 SaaS
101
-
102
- - 上传业务默认值为 100 MB/文件、200 MB/次、10 文件、2 GB/帐号/日、20 GB/租户/日。有效值只按当前租户 `sys_osclients` → 代码安全默认值解析,租户可以提高或降低业务默认值;不得为上传开关、额度或硬上限新增 API 环境变量或 `appsettings` 节点。最终仍受代码内不可突破的灾难保护、HTTP/Multipart/Form 和反向代理上限约束。共享 Redis 原子预留,Redis 故障失败关闭。
103
- - 无字段上下文的普通交互式上传默认私有桶,一级安全目录为 `file`、`img`、`avatar`、`editor`;可由管理员在普通 `sys_config.HdfsUploadRules` 按真实角色授权业务目录与公有权限。通配符必须有界并先校验实际路径,保留目录与跨租户不能放行。标准表单仍按权威字段配置执行。可信后端 V8 仍受全局文件大小硬上限。
104
- - 普通客户端私有文件签名必须提交 `FormEngineKey`、`FormDataId`、`FieldId`、`SysMenuId` 并验证记录字段真实引用;不能把后端 `V8.Method.GetPrivateFileUrl({FilePathName})` 的可信调用方式照搬到浏览器。
105
- - Upgrade16 六个上传字段全部可空,空值保持老租户兼容;升级后回读字段元数据、租户值并刷新 SaaS 缓存。
106
- - `V8.OsClientModel` / `V8.SysConfig` 只使用脱敏副本,不返回整个对象。新租户不能复制主租户整条 `sys_osclients`;数据库、认证、Redis、存储、MQ/MQTT、搜索凭据必须独立创建或由服务端托管。
107
- - Redis 管理器只允许超级管理员使用当前租户或已保存连接;匿名/temporary 任意 Host 连接必须拒绝,MCP 写操作必须 `confirmExecution`,禁止传递 Redis 密码。
108
-
109
- ### 网络、登录和发布兼容
110
-
111
- - `CorsAllowOrigins` 和全局 CORS 来源都为空时默认允许任意来源;配置后才按精确来源/通配符收紧。CORS 不是鉴权边界。
112
- - 严格 SSRF 默认关闭,未配置时不得拒绝存量非 HTTP(S)、URL 凭据、私网、云元数据和重定向调用;显式启用后才执行严格拦截与精确主机白名单。
113
- - 登录 RSA 仅避免密码在请求体直接显示,HTTPS 才是安全边界。必须保留历史 RSA fallback,专属公私钥成对切换,不能因删除旧常量造成所有客户无法登录。
114
- - 登录传 `_ClientType`,请求携带稳定 `did`,每次响应接收 `authorization`。多标签续签 single-flight;`TokenReplaced` 先检查新 Token,旧响应不能清掉新登录态。
115
- - 安全升级不得删除私有子 Git 的 `Microi.Server/Microi.net/License/keys/`。授权签名资产与登录 RSA 用途不同,禁止以安全清理为由混删。
116
- - 不得修改默认 CORS/SSRF/RSA 行为后只用新装环境验收;必须覆盖旧前端、历史 V8、滚动升级和至少两个节点。
117
-
118
- ### 安全自动化最低断言
119
-
120
- 1. 普通角色保护表读写、伪造菜单、伪造可信标记均失败。
121
- 2. 真实菜单、历史无菜单推断和父记录范围内 TableChild 均成功,跨父记录失败。
122
- 3. 查询范围在列表、计数、导出中生效;详情按同表菜单访问权成功;有写权限的单表/Join 模块写入成功,无写权限失败,后端 V8 行级业务校验可回滚。
123
- 4. 节点 A 改权限后节点 B 无需重启生效。
124
- 5. 上传大小/数量/双日额度、多节点并发和 Redis 故障行为正确。
125
- 6. 私有文件跨菜单/记录/字段失败,授权访问成功,匿名失败。
126
- 7. CORS 空配置兼容、配置后收紧;SSRF 默认兼容、严格模式拦截。
127
- 8. 历史 RSA fallback 和专属匹配密钥均可登录;并发续签不反复退出。
128
- 9. SaaS 脱敏投影不包含基础设施密钥,Redis anonymous/temporary/非管理员管理失败。
129
-
130
- <!-- /microi-progressive:chunk -->
131
- <!-- microi-progressive:chunk id=microi-system-delivery-003 sha256=8e2891f2a149d6828b653b9f0735ea39a4df5ba60178c79f0e5b0065ce72ee84 -->
132
- ## 前端交付检查清单
133
-
134
- - 底部 tabBar 图标不 404。
135
- - 首页、分类、详情、Banner、头像、订单凭证图全部真实加载。
136
- - 主题切换是全局生效,不是只对一个页面生效。
137
- - 列表页和详情页显示同一主体名称、头像、状态,不能列表对、详情错。
138
- - 关联人名不得退化成“卖家BMB9”“匿名卖家”等可推断 Id 的兜底,除非确实无数据。
139
- - 关键业务资产不得默认选中第一条,必须用户手动选择。
140
- - 自己不能抢自己的单,不能约自己的单,必须给明确提示。
141
- - 消息/待办/约单/审核类提醒必须有未读角标,已读后消失。
142
- - 订单状态角标只给需要处理的状态,不给“全部/已完成/已取消”等静态分类堆数字。
143
-
144
79
  <!-- /microi-progressive:chunk -->
145
80
  <!-- microi-progressive:chunk id=microi-system-delivery-004 sha256=cc8ef54619f2f7a1dc3ba4268d02cbe678c855ba17e2d9e9ed3251ac0dc35e18 -->
146
81
  ## 交付完成定义
@@ -165,4 +100,6 @@ AI 零代码交付不能只验证管理员帐号和页面能打开。任何涉
165
100
 
166
101
  - [references/progressive-01-标准工作流.md](references/progressive-01-标准工作流.md):标准工作流
167
102
  - [references/progressive-02-自动化测试必须覆盖的坑.md](references/progressive-02-自动化测试必须覆盖的坑.md):自动化测试必须覆盖的坑;复盘记录格式
103
+ - [references/progressive-03-安全与跨端验收.md](references/progressive-03-安全与跨端验收.md):安全与跨端验收
104
+ - [references/context-quality.md](references/context-quality.md):质量优先、精确检索、引用、局部变更及定制应用验收
168
105
  <!-- microi-progressive:end -->
@@ -0,0 +1,56 @@
1
+ # 质量优先的上下文与增量开发
2
+ <!-- microi-progressive:chunk id=microi-system-delivery-008 sha256=0e9e14b98ac7ab7ca0bf1c4ef97bad2bf061d0c01b170325ddbaf961a02a0de4 -->
3
+
4
+ 本规范用于降低重复读取和重复传输,不降低软件质量。准确性、权限、业务完整性和验收优先于 token、耗时和回复长度。摘要只用于发现目标,不能成为未经核实的写入依据。
5
+
6
+ ## 按任务确定必需知识
7
+
8
+ | 范围 | 必须读取与执行 | 扩大范围的条件 |
9
+ |---|---|---|
10
+ | 新建完整系统 | 基础入口、总控、标准工作流全文(原八项及菜单先行、经营报表增补)、相关专项 Skills、安全与交付检查 | 任何需求、角色、关系、端或外部服务未覆盖时补齐,不得以预算不足交付缩水系统 |
11
+ | 已有系统局部修改 | 基础入口、总控路由、本次领域 Skill、目标当前内容及直接依赖、相关安全规则、影响范围内的回读与回归 | 目标不唯一、关系不清、动态调用、跨表状态、权限、公共组件影响不明时继续检索;不能靠名称相似猜测 |
12
+ | 只读解释或诊断 | 基础入口、总控路由、支持结论的相关事实 | 证据不足先补读,不能把文档、缓存、旧会话或摘要冒充当前运行状态 |
13
+
14
+ 完整系统不因未出现“完整”二字就降级。对“开发一套系统”等新系统意图,默认按完整系统执行。任务范围判定与帐号身份分开:创始人身份不等于每项客户需求都在修改平台内核,但平台基础能力变更仍执行四项同步和平台回归。
15
+
16
+ 每次开工列明实际读取的基础入口、总控、适用参考和专项 Skills;只声称已经读取的内容。首次读取、版本变化或目标不明时扩大读取。同一会话中可复用已完整读取且内容哈希未变化的知识;新会话、压缩后无法确认读取记录或哈希变化时重新读取。
17
+
18
+ ## 先发现,再精确读取,再修改
19
+
20
+ 1. 确认实际服务器、完整租户坐标、当前身份和业务目标;不得为了减少读取切换到其它连接。
21
+ 2. 先获取目录或搜索结果,确认目标 Id、路径、版本与关系。目录摘要、行片段和字段投影不能表示全库、完整文件或完整业务模型。
22
+ 3. 修改前读取目标完整语义单元及必要依赖;金额、库存、权限、审批、关联字段和公共组件扩大到后端规则、调用方和跨端回显。仅改文案仍需确认实际按钮、角色条件与运行入口。
23
+ 4. 返回 `hasMore`、截断、未知完整性、错误或缺失依赖时继续分页或扩大查询。查无结果不证明资源不存在,必须检查过滤范围与权限。
24
+ 5. 按本次精确差异修改,保留其它正确配置;执行前检查当前版本和授权,执行后独立回读,再验证受影响业务和界面。
25
+
26
+ 完整新系统先完成可遍历的现有资源盘点与关系审查,避免重复建模;不能只看一页摘要就开始创建。局部修改不重复生成全库示例数据,也不跳过该改动的失败、边界、权限和兼容回归。
27
+
28
+ ## 不可变引用与结果证据
29
+
30
+ Manifest 正文可以一次提交,后续以同一内容哈希和会话引用执行 plan、dry-run、apply、validate。引用只是传输优化,不是授权票据、全局锁或幂等保证。
31
+
32
+ - 引用必须绑定当前服务器、完整租户坐标和身份,设容量与有效期;凭据变化、过期、重启或跨会话引用失败时重传已核对正文。
33
+ - 写入仍使用当前真实权限、确认参数、结构与引用校验;不得复用旧验收结论代替当前检查。
34
+ - 写入超时、断线或结果未知时先回读,不得换引用或幂等键盲目重试。
35
+ - 摘要保留状态、错误、警告、资源标识、版本/哈希、验证结果和完整证据引用;完整回执可按需取回。不能截断 JSON 后把片段作为可执行正文。
36
+ - 对权限变化、冲突、部分成功、回滚和未知状态明确区分;失败不能被压缩成成功数量。
37
+
38
+ ## 定制应用的最小充分接入
39
+
40
+ | 场景 | 读取范围与复用方式 | 必须保留的验收 |
41
+ |---|---|---|
42
+ | Vue / UniApp 定制前端 | 对应前端、SDK、资源与 UI Skills;现有微服务脚手架、登录、上传和 API 封装 | 真实登录、租户隔离、失败状态、跨端回显、构建和浏览器 |
43
+ | 游戏 / Unity / WebGL | 对应应用或 Unity Skill;仅按实际需要接入帐号、存档、排行、房间和支付 | 状态一致性、重连、并发、服务端防伪、设备/GPU 验收边界 |
44
+ | 算法工程 | 算法源码、数据契约和可重复样例;平台仅提供需要的数据、权限与任务能力 | 正确性、边界、性能和真实数据分布;不能只验示例 |
45
+ | 硬件 / IoT | 实际协议及对应 TCP、HTTP、MQTT Skill,受信配置和模拟器 | 幂等、超时、结果未知、真实设备执行;网络写入成功不等于设备已执行 |
46
+
47
+ 平台没有覆盖的能力必须明确实现和验收,不能用通用模板掩盖缺口。脚手架和模拟器减少重复建设,不能替代真实服务或硬件证据。
48
+
49
+ ## 计量与验收标准
50
+
51
+ 以同模型、同需求、同初始数据和同验收标准比较小修改、定制页面、完整系统。记录真实输入、缓存输入、输出、供应商报告的推理用量(如有)、工具轮数、重复读取、错误重试、耗时和完成率。多 Agent 的用量也计入总量。
52
+
53
+ MCP 可以准确统计传输字节和调用次数,不能据此声称供应商 token 或费用。缺少供应商 Usage 时标记未知;字符估算单独标记。缓存命中降低费用或延迟,不等于逻辑 token 消失。外部 Codex/IDE 的历史摘要与供应商缓存由宿主管理,吾码不得宣称已强制控制。
54
+
55
+ 评测必须同时检验资源完整、权限/事务/关系正确、局部差异精确和必要回归通过。任何质量退步都不接受;不通过删测试、减少验收或隐瞒失败来展示节省比例。
56
+ <!-- /microi-progressive:chunk -->
@@ -0,0 +1,71 @@
1
+ # 安全与跨端验收
2
+
3
+ > 原规则按适用范围无损迁移;触发对应工作时必须完整读取相关章节。
4
+
5
+ <!-- microi-progressive:chunk id=microi-system-delivery-002 sha256=adeb9e4ec4beadf3b7ba33325e860b378b81f6d7e95b25879b64ca4ee1c91987 -->
6
+ ## 平台安全与存量兼容验收(强制)
7
+
8
+ AI 零代码交付不能只验证管理员帐号和页面能打开。任何涉及 FormEngine、菜单、角色、子表、文件、SaaS 或登录协议的交付,都必须按以下服务端边界设计和验收:
9
+
10
+ ### FormEngine 混合授权
11
+
12
+ - Token 只完成身份认证,不是任意表的访问凭证。浏览器、UniApp、SDK 等外部请求必须继续校验表、菜单、角色、操作权限和数据范围。
13
+ - 显式 `_SysMenuId` / `ModuleEngineKey` 进入精确菜单校验;伪造、传错或借用其它表菜单时失败关闭,不能退回兼容推断。
14
+ - 为兼容存量前端 V8,无菜单请求由后端从当前用户真正拥有的菜单授权快照中推断目标表权限。没有候选菜单、范围无法安全合并或解析失败时失败关闭;不要要求所有历史项目一次性补 `_SysMenuId`。
15
+ - 标准 PC facade 只给当前菜单绑定的当前表注入菜单 Id,跨表调用不借用主表菜单。没有菜单入口的 SDK/定制页才使用最小【高级表权限】。
16
+ - 后端接口引擎、后端表单 V8 和平台内部调用由服务端建立可信上下文,不要求 `_SysMenuId`;客户端伪造 `_TrustedServerInvocation` 或 `_InvokeType:'Server'` 不能获得信任。
17
+ - `TableChild` 使用父记录范围内委托:验证父菜单、父表字段配置、子菜单、父记录数据范围和外键,并由服务端强制注入外键。隐藏子菜单不要求存量角色逐个补权限。
18
+ - 菜单 `SqlWhere` / `SqlJoin` 只约束列表、计数、导出等集合查询;单行详情只校验同表菜单访问权。主表写入由 `Add` / `Edit` / `Del` / `Import` 专项权限控制,不把查询范围追加到写入 SQL,也不因查询 Join 拒绝。行级写业务限制放在后端表单 V8 或专用接口引擎。
19
+
20
+ ### 保护表、控制面与缓存
21
+
22
+ - SaaS、接口引擎、表/字段、菜单角色、用户、任务、数据源、MQ/MQTT、页面、打印、工作流、数据库、应用商城、AI 与安全审计等保护表,普通客户端 `Level < 9999` 硬拒绝;菜单或表权限不能覆盖。
23
+ - 创建 V8、接口引擎、任务、数据源和 Redis 管理等控制面 API 继续要求 `Level >= 9999`。不能只靠前端隐藏菜单。
24
+ - 权限缓存使用按 `OsClient` 隔离的共享 Redis `epoch`、用户快照、短 TTL L1/L2。用户/角色/菜单/权限变化后提升 `epoch`;验收至少使用两个节点确认无需清 Redis或重启即可生效。
25
+ - Upgrade15 只清理普通角色的保护表直接授权,不能删除正常业务菜单权限。
26
+
27
+ ### 上传、私有文件与 SaaS
28
+
29
+ - 上传业务默认值为 100 MB/文件、200 MB/次、10 文件、2 GB/帐号/日、20 GB/租户/日。有效值只按当前租户 `sys_osclients` → 代码安全默认值解析,租户可以提高或降低业务默认值;不得为上传开关、额度或硬上限新增 API 环境变量或 `appsettings` 节点。最终仍受代码内不可突破的灾难保护、HTTP/Multipart/Form 和反向代理上限约束。共享 Redis 原子预留,Redis 故障失败关闭。
30
+ - 无字段上下文的普通交互式上传默认私有桶,一级安全目录为 `file`、`img`、`avatar`、`editor`;可由管理员在普通 `sys_config.HdfsUploadRules` 按真实角色授权业务目录与公有权限。通配符必须有界并先校验实际路径,保留目录与跨租户不能放行。标准表单仍按权威字段配置执行。可信后端 V8 仍受全局文件大小硬上限。
31
+ - 普通客户端私有文件签名必须提交 `FormEngineKey`、`FormDataId`、`FieldId`、`SysMenuId` 并验证记录字段真实引用;不能把后端 `V8.Method.GetPrivateFileUrl({FilePathName})` 的可信调用方式照搬到浏览器。
32
+ - Upgrade16 六个上传字段全部可空,空值保持老租户兼容;升级后回读字段元数据、租户值并刷新 SaaS 缓存。
33
+ - `V8.OsClientModel` / `V8.SysConfig` 只使用脱敏副本,不返回整个对象。新租户不能复制主租户整条 `sys_osclients`;数据库、认证、Redis、存储、MQ/MQTT、搜索凭据必须独立创建或由服务端托管。
34
+ - Redis 管理器只允许超级管理员使用当前租户或已保存连接;匿名/temporary 任意 Host 连接必须拒绝,MCP 写操作必须 `confirmExecution`,禁止传递 Redis 密码。
35
+
36
+ ### 网络、登录和发布兼容
37
+
38
+ - `CorsAllowOrigins` 和全局 CORS 来源都为空时默认允许任意来源;配置后才按精确来源/通配符收紧。CORS 不是鉴权边界。
39
+ - 严格 SSRF 默认关闭,未配置时不得拒绝存量非 HTTP(S)、URL 凭据、私网、云元数据和重定向调用;显式启用后才执行严格拦截与精确主机白名单。
40
+ - 登录 RSA 仅避免密码在请求体直接显示,HTTPS 才是安全边界。必须保留历史 RSA fallback,专属公私钥成对切换,不能因删除旧常量造成所有客户无法登录。
41
+ - 登录传 `_ClientType`,请求携带稳定 `did`,每次响应接收 `authorization`。多标签续签 single-flight;`TokenReplaced` 先检查新 Token,旧响应不能清掉新登录态。
42
+ - 安全升级不得删除私有子 Git 的 `Microi.Server/Microi.net/License/keys/`。授权签名资产与登录 RSA 用途不同,禁止以安全清理为由混删。
43
+ - 不得修改默认 CORS/SSRF/RSA 行为后只用新装环境验收;必须覆盖旧前端、历史 V8、滚动升级和至少两个节点。
44
+
45
+ ### 安全自动化最低断言
46
+
47
+ 1. 普通角色保护表读写、伪造菜单、伪造可信标记均失败。
48
+ 2. 真实菜单、历史无菜单推断和父记录范围内 TableChild 均成功,跨父记录失败。
49
+ 3. 查询范围在列表、计数、导出中生效;详情按同表菜单访问权成功;有写权限的单表/Join 模块写入成功,无写权限失败,后端 V8 行级业务校验可回滚。
50
+ 4. 节点 A 改权限后节点 B 无需重启生效。
51
+ 5. 上传大小/数量/双日额度、多节点并发和 Redis 故障行为正确。
52
+ 6. 私有文件跨菜单/记录/字段失败,授权访问成功,匿名失败。
53
+ 7. CORS 空配置兼容、配置后收紧;SSRF 默认兼容、严格模式拦截。
54
+ 8. 历史 RSA fallback 和专属匹配密钥均可登录;并发续签不反复退出。
55
+ 9. SaaS 脱敏投影不包含基础设施密钥,Redis anonymous/temporary/非管理员管理失败。
56
+
57
+ <!-- /microi-progressive:chunk -->
58
+ <!-- microi-progressive:chunk id=microi-system-delivery-003 sha256=8e2891f2a149d6828b653b9f0735ea39a4df5ba60178c79f0e5b0065ce72ee84 -->
59
+ ## 前端交付检查清单
60
+
61
+ - 底部 tabBar 图标不 404。
62
+ - 首页、分类、详情、Banner、头像、订单凭证图全部真实加载。
63
+ - 主题切换是全局生效,不是只对一个页面生效。
64
+ - 列表页和详情页显示同一主体名称、头像、状态,不能列表对、详情错。
65
+ - 关联人名不得退化成“卖家BMB9”“匿名卖家”等可推断 Id 的兜底,除非确实无数据。
66
+ - 关键业务资产不得默认选中第一条,必须用户手动选择。
67
+ - 自己不能抢自己的单,不能约自己的单,必须给明确提示。
68
+ - 消息/待办/约单/审核类提醒必须有未读角标,已读后消失。
69
+ - 订单状态角标只给需要处理的状态,不给“全部/已完成/已取消”等静态分类堆数字。
70
+
71
+ <!-- /microi-progressive:chunk -->