@microi.net/cli 5.7.9 → 5.8.1

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 (106) 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/.workbuddy-plugin/marketplace.json +2 -2
  5. package/.workbuddy-plugin/plugin.json +1 -1
  6. package/assets/build-meta.json +5 -5
  7. package/cordis.patch.yml +1 -1
  8. package/package.json +1 -1
  9. package/scripts/mcp-server.js +106 -106
  10. package/scripts/microi-skills.meta.json +293 -290
  11. package/skills/.microi-skills-version.json +2 -2
  12. package/skills/.progressive-disclosure-manifest.json +441 -441
  13. package/skills/README.md +2 -1
  14. package/skills/ai-engine/SKILL.md +1 -1
  15. package/skills/ai-engine/references/ai-employees.md +4 -0
  16. package/skills/ai-platform-governance/SKILL.md +8 -8
  17. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +9 -9
  18. package/skills/app-store/SKILL.md +58 -4
  19. package/skills/job-engine/SKILL.md +4 -3
  20. package/skills/message-notification/SKILL.md +2 -1
  21. package/skills/microi/SKILL.md +14 -0
  22. package/skills/microi-ai-application/SKILL.md +16 -3
  23. package/skills/microi-client-frontend/SKILL.md +10 -5
  24. package/skills/microi-client-frontend/references/progressive-01-3-/345/212/250/346/200/201/346/214/211/351/222/256/347/263/273/347/273/237.md +3 -3
  25. package/skills/microi-client-frontend/references/progressive-02-8-/350/277/220/350/241/214/346/227/266/351/253/230/351/242/221/345/235/221/345/244/215/347/233/230.md +4 -4
  26. package/skills/microi-client-frontend/references/progressive-03-vue3-/345/211/215/347/253/257/345/276/256/346/234/215/345/212/241/345/256/277/344/270/273/350/247/204/345/210/231.md +3 -3
  27. package/skills/microi-codex/SKILL.md +15 -0
  28. package/skills/microi-datasource-mapping/SKILL.md +4 -0
  29. package/skills/microi-deployment/SKILL.md +7 -0
  30. package/skills/microi-deployment/references/deployment-matrix.md +8 -0
  31. package/skills/microi-docs-coverage/references/capability-map.md +1 -0
  32. package/skills/microi-form-layout/SKILL.md +6 -6
  33. package/skills/microi-form-layout/references/progressive-01-3-/344/270/211/347/247/215/345/210/206/347/273/204/347/232/204/345/255/230/345/202/250/344/270/216/351/205/215/347/275/256.md +3 -3
  34. package/skills/microi-frontend-sdk/SKILL.md +6 -6
  35. package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +7 -7
  36. package/skills/microi-microservice/SKILL.md +1 -0
  37. package/skills/microi-mobile-app-quality/SKILL.md +12 -8
  38. package/skills/microi-mobile-app-quality/references/progressive-01-4-/351/207/215/350/246/201/346/214/211/351/222/256/345/277/205/351/241/273/345/270/246/345/233/276/346/240/207.md +10 -10
  39. package/skills/microi-mobile-app-quality/references/progressive-02-9-/344/270/273/351/242/230/345/210/207/346/215/242/345/277/205/351/241/273/347/234/237/345/256/236/344/270/224/345/205/250/345/261/200/347/224/237/346/225/210.md +4 -4
  40. package/skills/microi-system-delivery/SKILL.md +5 -5
  41. package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +1 -1
  42. package/skills/microi-system-delivery/references/progressive-02-/350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/345/277/205/351/241/273/350/246/206/347/233/226/347/232/204/345/235/221.md +6 -4
  43. package/skills/microi-ui/SKILL.md +6 -6
  44. package/skills/microi-ui/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/234/272/346/231/257/350/223/235/345/233/276.md +5 -5
  45. package/skills/microi-uniapp-frontend/SKILL.md +10 -10
  46. package/skills/microi-uniapp-frontend/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/210/206/347/261/273-/345/217/214/346/240/217/345/210/227/350/241/250/347/213/254/347/253/213/346/273/232/345/212/250.md +7 -7
  47. package/skills/microi-uniapp-frontend/references/progressive-02-/345/205/263/351/224/256/344/270/232/345/212/241/350/265/204/344/272/247/344/270/215/345/276/227/351/273/230/350/256/244/351/200/211/344/270/255.md +10 -10
  48. package/skills/module-engine/SKILL.md +13 -0
  49. package/skills/page-engine/SKILL.md +19 -8
  50. package/skills/page-engine/references/progressive-01-/346/211/200/346/234/211/347/273/204/344/273/266/347/261/273/345/236/213.md +3 -3
  51. package/skills/page-engine/references/progressive-02-/347/211/210/346/234/254/345/216/206/345/217/262-/345/271/266/345/217/221/344/277/235/345/255/230/344/270/216/345/233/236/346/273/232.md +4 -4
  52. package/skills/playwright-e2e/SKILL.md +11 -11
  53. package/skills/playwright-e2e/references/progressive-01-/345/205/250/350/207/252/345/212/250/347/231/273/345/275/225-/345/205/215/351/252/214/350/257/201/347/240/201-/344/275/206/344/270/215/345/205/215/345/257/206/347/240/201-/345/277/205/350/257/273.md +5 -5
  54. package/skills/playwright-e2e/references/progressive-02-/346/226/207/345/255/227/345/257/271/346/257/224/345/272/246/344/270/216/345/217/257/350/257/273/346/200/247/350/207/252/345/212/250/345/214/226/346/243/200/346/237/245-/345/277/205/345/201/232.md +3 -3
  55. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +7 -7
  56. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +4 -4
  57. package/skills/system-observability/SKILL.md +3 -0
  58. package/skills/ui-design/SKILL.md +7 -7
  59. package/skills/ui-design/references/progressive-01-/351/242/234/350/211/262/344/275/223/347/263/273-css-variables-/346/224/257/346/214/201/344/270/273/351/242/230/345/210/207/346/215/242.md +2 -2
  60. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +3 -3
  61. package/skills/ui-design/references/progressive-03-/345/212/250/346/225/210/350/247/204/350/214/203-/344/270/260/345/257/214/344/275/206/344/270/215/345/215/241.md +2 -2
  62. package/skills/ui-design/references/progressive-04-/347/273/204/344/273/266/351/243/216/346/240/274/351/200/237/346/237/245.md +1 -1
  63. package/skills/ui-design/references/progressive-05-/347/247/273/345/212/250/347/253/257/344/270/223/347/224/250/350/247/204/350/214/203.md +3 -3
  64. package/skills/ui-design/references/progressive-06-/344/270/273/351/242/230/345/210/207/346/215/242/345/256/236/347/216/260.md +2 -2
  65. package/skills/ui-design/references/progressive-07-/351/200/237/346/237/245-/344/273/216/345/244/264/346/220/255/345/273/272/344/270/200/344/270/252/347/247/273/345/212/250/347/253/257/351/241/265/351/235/242.md +4 -4
  66. package/skills/ui-design/references/progressive-08-/350/241/250/345/215/225/345/210/206/347/273/204/350/247/204/350/214/203-tabs-vs-collapsegroup-/345/274/272/345/210/266.md +5 -5
  67. package/skills/unity-integration/references/ai-app-delivery.md +16 -0
  68. package/skills/v8-api-config/SKILL.md +6 -0
  69. package/skills/v8-crud-api/SKILL.md +9 -7
  70. package/skills/v8-crud-api/references/progressive-01-/346/237/245/350/257/242/345/210/227/350/241/250-/345/210/206/351/241/265.md +8 -8
  71. package/skills/v8-crud-api/references/progressive-02-where-/346/235/241/344/273/266/350/257/255/346/263/225/351/200/237/346/237/245.md +2 -2
  72. package/skills/v8-explorer-tree/SKILL.md +2 -2
  73. package/skills/v8-export-import/SKILL.md +4 -4
  74. package/skills/v8-export-import/references/progressive-01-excellayout-/351/253/230/347/272/247/350/207/252/347/224/261/345/270/203/345/261/200.md +3 -3
  75. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +4 -4
  76. package/skills/v8-export-import/references/progressive-03-/345/256/211/345/205/250-/346/200/247/350/203/275/346/263/250/346/204/217.md +1 -1
  77. package/skills/v8-file-upload/SKILL.md +32 -4
  78. package/skills/v8-file-upload/references/progressive-01-/345/205/254/346/234/211/346/241/266-vs-/347/247/201/346/234/211/346/241/266.md +3 -3
  79. package/skills/v8-file-upload/references/progressive-02-office-/346/226/207/344/273/266/345/234/250/347/272/277/347/274/226/350/276/221/347/211/210/346/234/254/345/217/267/350/247/204/345/210/231.md +3 -3
  80. package/skills/v8-frontend-events/SKILL.md +6 -6
  81. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +5 -5
  82. package/skills/v8-http-integration/SKILL.md +4 -4
  83. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +7 -7
  84. package/skills/v8-http-integration/references/progressive-02-/351/224/231/350/257/257/345/244/204/347/220/206/346/250/241/345/274/217.md +2 -2
  85. package/skills/v8-image-processing/SKILL.md +1 -1
  86. package/skills/v8-menu-buttons/SKILL.md +4 -4
  87. package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +4 -4
  88. package/skills/v8-menu-buttons/references/progressive-02-8-/346/250/241/345/274/217-f-/345/220/216/345/217/260/344/273/273/345/212/241/346/214/211/351/222/256-/351/225/277/344/273/273/345/212/241.md +5 -5
  89. package/skills/v8-menu-buttons/references/progressive-03-10-/345/217/215/346/250/241/345/274/217-/351/201/277/345/205/215.md +3 -3
  90. package/skills/v8-mq-mqtt/SKILL.md +3 -2
  91. package/skills/v8-mq-mqtt/references/mqtt-production.md +1 -1
  92. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +1 -1
  93. package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +1 -1
  94. package/skills/v8-security/SKILL.md +15 -5
  95. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +3 -3
  96. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +8 -6
  97. package/skills/v8-table-event/SKILL.md +5 -5
  98. package/skills/v8-table-event/references/progressive-01-informv8-js-/350/241/250/345/215/225/346/211/223/345/274/200/344/272/213/344/273/266.md +6 -6
  99. package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +2 -2
  100. package/skills/v8-tcp-integration/SKILL.md +2 -2
  101. package/skills/v8-workflow/SKILL.md +42 -7
  102. package/skills/v8-workflow/references/progressive-01-/350/212/202/347/202/271/345/274/200/345/247/213-v8-/344/272/213/344/273/266.md +7 -7
  103. package/skills/workspace-conventions/SKILL.md +19 -10
  104. 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 +8 -7
  105. 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 +21 -21
  106. package/skills/workspace-conventions/references/progressive-03-cli-/344/270/216-ide-/346/217/222/344/273/266/351/224/231/347/211/210/345/205/261/345/255/230/347/272/246/345/256/232.md +1 -1
@@ -7,6 +7,39 @@ description: Microi V8 工作流事件指南。用于编写审批流条件、节
7
7
 
8
8
  # Microi V8 工作流事件开发
9
9
 
10
+ ## AI / MCP 生成流程的必检契约
11
+
12
+ 这里的流程是 `wf_flowdesign + wf_node + wf_line` 审批引擎,不是 `ai-workflow`。
13
+ 先用 `microi_get_db_schema` 查询 `wf_flowdesign`、`wf_node`、`wf_line`、
14
+ `sys_menu` 与目标业务表,再用 `microi_list_roles` 或管理员只读表查询确认当前租户的
15
+ 真实用户、角色、部门、岗位 Id。人工节点 `Approve/Countersign/End` 必须配置
16
+ `Users/Roles/Depts/BindJobs` 至少一种真实 `[{"Id":"...","Name":"..."}]`
17
+ 绑定,或明确采用上游节点 `AllowSelectUsers=1` 手动选人。
18
+ 应用安装母版可显式设置 `FlowDesign.IsEnable=0`(也接受字符串 `"0"`),
19
+ 此时人工节点允许空绑定并保持禁用;`false/null/空字符串/省略` 不属于该例外。
20
+ 禁用模板仍检查所有节点、连线、坐标及绑定格式,任何非空人员、角色、部门或岗位
21
+ 仍必须通过当前租户真实 Id 回读。不得填入 `UNBOUND_*` 等不存在的占位 Id。
22
+ 目标租户配置真实审批人后,应先重新检查再显式启用,并验收真实业务流转;
23
+ 禁用模板保存成功只证明安装结构完整,不能当作审批已可用或商业交付完成。
24
+ `SameDeptApprove=1` 只筛选候选人,不能单独产生审批人。
25
+ 不能把 `Roles:"Manager"`、字符串 Id 数组或另一个租户的 Id 当作绑定。
26
+
27
+ 节点类型只使用 `Start/Auto/Business/Approve/Countersign/End/AutoEnd`;
28
+ `End` 是人工节点,自动结束用 `AutoEnd`。每个节点应有稳定 Id;
29
+ `PositionLeft/PositionTop` 使用像素(如 `"320px"`)。新版 MCP 对缺失坐标按
30
+ 拓扑层级布局并补 `px`,明确重叠、非法类型、断线、不可达、无人审批会在写入前失败。
31
+ 节点人员绑定在写入时仅保留 `Id/Name`,不能把完整 `sys_user` 记录及密码字段嵌入流程。
32
+ MCP 写入前会回读当前租户的用户、角色、部门和岗位 Id;回读失败或 Id 不存在时停止保存。
33
+
34
+ 模块入口使用 `sys_menu.OpenType="WorkFlow"`、`FlowDesignId=<已启用流程真实 Id>`,
35
+ `DiyTableId` 与 `wf_flowdesign.TableId` 相同。完整 Manifest 内可用模块
36
+ `flowName` 指向同一份 `workflows[].FlowDesign.FlowName`,生成器保存流程后补写并回读
37
+ `FlowDesignId`;引用既有流程时传 `flowDesignId`。上线前从模块打开并发起一条真实
38
+ 业务记录,确认流程图节点、人员待办、审批、历史与模块入口均正确。
39
+
40
+ 全部配置字段、节点类型和运行操作见
41
+ [流程配置清单](references/workflow-configuration.md)。
42
+
10
43
  你正在开发 Microi 吾码平台的工作流(审批流程)V8 事件。流程引擎基于表单引擎,通过 V8 事件控制审批逻辑。
11
44
 
12
45
  ## 后端类库与接口边界
@@ -18,7 +51,7 @@ description: Microi V8 工作流事件指南。用于编写审批流条件、节
18
51
  - 官方发布时 `Microi.WorkFlow` 必须生成 NuGet 包,并与 `Microi.AI` 使用同一 Obfuscar 配置加密后替换包内 DLL;不得推送未加密的 WorkFlow 包。开源安装只消费 NuGet,不要求存在私有源码。
19
52
 
20
53
  <!-- microi-progressive:begin -->
21
- <!-- microi-progressive:chunk id=v8-workflow-000 sha256=9030cd2de9f1febfb9a749c82cf83e97ccb8fb972a3f8f0ff11067488e14cd8e -->
54
+ <!-- microi-progressive:chunk id=v8-workflow-000 sha256=bd13a63ee55b2a01041fc2e080ca06ab2fbfd3146fa130811061c9f9e8b4cf84 -->
22
55
  ## 本地优先与版本头(必做)
23
56
 
24
57
  工作流节点、连线条件、开始/结束节点等 V8 代码如果有本地文件,必须优先修改 `microi-v8-engine/<租户>/<项目>/...` 下的本地文件,再同步到数据库。插件提示本地/远端不一致时,先比对并合并,不得直接覆盖。
@@ -41,7 +74,7 @@ description: Microi V8 工作流事件指南。用于编写审批流条件、节
41
74
  生成工作流 V8 代码时,代码内容本身(文件头、普通注释、`console.log`、返回 `Msg` 等)不要包含 `Microi`、`吾码` 等平台品牌文字,除非业务数据或字段值本身必须如此。生成代码要有可维护注释:每个 `function` 前写清用途、关键参数和返回值;路线选择、审批人计算、状态回写、撤回/驳回处理、跨表联动等复杂代码段前写短注释说明业务原因;避免“给变量赋值”这类无信息量注释。若工作流存储表支持 `Version`/`ChangeHistory`,历史说明也必须最新在前并保留旧记录。
42
75
 
43
76
  <!-- /microi-progressive:chunk -->
44
- <!-- microi-progressive:chunk id=v8-workflow-001 sha256=53550786c531c347cfe9d92247b07d127c348210f07e302a1b68f278136c3e77 -->
77
+ <!-- microi-progressive:chunk id=v8-workflow-001 sha256=d365b3b609c35d28c129f6c31cb453d97e17d0b2ace53eb229d6654d7c5ddbc0 -->
45
78
  ## 工作流物理表
46
79
 
47
80
  | 表名 | 说明 |
@@ -59,6 +92,8 @@ description: Microi V8 工作流事件指南。用于编写审批流条件、节
59
92
  - 自动结束节点的 `NodeType` 使用 `AutoEnd`。它可能继承上一人工节点的 `ApprovalType=Agree`,并生成一条结束历史;核对独立审批人数时只计入明确配置的人工节点,不能把结束节点当成额外审核人。
60
93
  - 原生 `CancelFlow` 可将请求中的 `FormData` 写回 `wf_flow.FormData`;未传时可能保存 `{}`。应用不能把取消后的实例 `FormData` 当成不可变的原始提交快照。需要恢复冻结业务单时,优先核对业务表保存的服务端快照摘要;若使用原生历史,必须限定同一实例、同一业务表/行、唯一原始开始节点及发起人、自动提交历史,并检查版本、金额、配置摘要和零待办。此分支只能恢复草稿或驳回状态,不能据此批准或过账。
61
94
  - 当前 `CancelFlow(WFParam)` 使用独立事务,没有 `StartWork/SendWork` 的共享 `DbTrans` 重载。应用不得在持有实例、工作或业务行锁的接口事务内调用取消,也不能假设给它多传一个参数便会共享事务。微服务可顺序执行“服务端核验并返回真实待办坐标 → 原生取消 → 业务终态复核”,每个请求完成后释放其事务;网络结果未知时先复核终态,不能盲目重发取消或提前恢复业务状态。
95
+ - 业务接口与原生节点共同读取配置、公共引用和业务行时,先画出宿主与脚本合并的锁图。原生审批进入节点前可能已持有流程实例锁;既存流程的业务复核应先通过当前主库有界只读发现真实实例,再在同一共享事务锁定该实例,随后获取固定配置/引用锁及业务行锁,重读验证归属未变。待办发现扫描只读不能提前锁工作行后再等流程;公共引用围栏只协调锁序,不能读取配置值来继承授权。必须逐入口审查包括定义、身份与配置的相反锁序,不以一条 SQL 或单次模拟成功宣称全系统无死锁。
96
+ - 已由可信原生历史证明取消或驳回的终态恢复只校验原提交归属、当前授权和可恢复状态,不应要求审批期间未发生正常库存、成本或其他业务余额变化;此恢复不产生过账副作用。批准与过账仍必须严格比较冻结快照、当前期间及业务版本,并覆盖撤权、并发和响应未知时使用原请求键恢复。
62
97
  - 验收至少覆盖真实取消时不传 `FormData`、伪造取消载荷、退回后直接重提被拒绝、取消后新实例重提、自动结束继承 `Agree`,以及普通角色不能修改取证用的流程历史。模拟正确 JSON 不替代原生 HTTP 验收。
63
98
 
64
99
  直接 SQL 查询常用场景:
@@ -85,7 +120,7 @@ var history = V8.Db.FromSql(
85
120
  ```
86
121
 
87
122
  <!-- /microi-progressive:chunk -->
88
- <!-- microi-progressive:chunk id=v8-workflow-002 sha256=377698ecb64266fb74399ea664010e0a46156d13c3e047de1b2cbae3dbba15c7 -->
123
+ <!-- microi-progressive:chunk id=v8-workflow-002 sha256=38a77bbee9ea30f036a9d9ef7150e2a738f4533dc9f05c23a3d00ff86aefc60d -->
89
124
  ## 流程 V8 事件执行顺序
90
125
 
91
126
  工作流合并提交请求的 `_FormSubmitAction` 可使用 `Add/Edit`;表单后端事件中的
@@ -112,7 +147,7 @@ var history = V8.Db.FromSql(
112
147
  13. **节点结束 V8 事件(前端 WFNodeEnd)**
113
148
 
114
149
  <!-- /microi-progressive:chunk -->
115
- <!-- microi-progressive:chunk id=v8-workflow-003 sha256=f5776a5b8fe4e460f79e20e9806b3a80bcadf6f1e09408880bd5ca911cb79533 -->
150
+ <!-- microi-progressive:chunk id=v8-workflow-003 sha256=2cef523c79040139ffdfba070930ce94db18d5b3486fa35a2a694dafa2c8a186 -->
116
151
  ## V8.WF 上下文属性
117
152
 
118
153
  ### 所有流程事件可访问
@@ -147,7 +182,7 @@ var history = V8.Db.FromSql(
147
182
  | `V8.WF.WorkResult` | 流程执行结果(发送到了哪个节点、哪些审批人) |
148
183
 
149
184
  <!-- /microi-progressive:chunk -->
150
- <!-- microi-progressive:chunk id=v8-workflow-004 sha256=d8445c1d473579fde063179d6330eefaa2373f1166e837656b780058295de3a3 -->
185
+ <!-- microi-progressive:chunk id=v8-workflow-004 sha256=99db9f8361d90ce1659922ee2497b7d2f235da009219b8b6a8f22d603b818eff -->
151
186
  ## ApprovalType 审批类型
152
187
 
153
188
  | 值 | 说明 |
@@ -158,7 +193,7 @@ var history = V8.Db.FromSql(
158
193
  | `Auto` | 发起流程(开始节点) / 业务节点 / 自动结束节点 |
159
194
 
160
195
  <!-- /microi-progressive:chunk -->
161
- <!-- microi-progressive:chunk id=v8-workflow-005 sha256=96e49e15fcb4b9da83f46b6818e198f338cb77ce76d11c56dfddebc2cc24f881 -->
196
+ <!-- microi-progressive:chunk id=v8-workflow-005 sha256=28ada7e06b18590b20935fcaaa2006c868532db89838dfe3799ce2ca0f97c918 -->
162
197
  ## 条件判断 V8 事件(后端 WFNodeLine)
163
198
 
164
199
  根据业务规则决定流程走向。优先推荐设置 `V8.NextNodeId` 直接指定下一节点;如仍使用条件线的条件值,也可以设置 `V8.LineValue`。
@@ -177,7 +212,7 @@ if (V8.Form.Money <= 100) {
177
212
  ```
178
213
 
179
214
  <!-- /microi-progressive:chunk -->
180
- <!-- microi-progressive:chunk id=v8-workflow-006 sha256=8e2a82330c7f49c3a03920123531d310ea329fd310179918d835e3c05d49771a -->
215
+ <!-- microi-progressive:chunk id=v8-workflow-006 sha256=d3a984b0e45aed19da942e0fa6c4183751d6057b7360e6eb11068e538d598cf9 -->
181
216
  ## 前端发起流程
182
217
 
183
218
  ```javascript
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=v8-workflow-007 sha256=9c40c62b67065c7e9f6821ef748d75595f004f069909258d9867490b74e115b7 -->
5
+ <!-- microi-progressive:chunk id=v8-workflow-007 sha256=953f9a9405bc929adab9365997f917e10df0fa16bbb2cf1448806d07fdcc945a -->
6
6
  ## 节点开始 V8 事件
7
7
 
8
8
  ### 前端 — 指定审批人
@@ -26,7 +26,7 @@ if (!V8.Form.ApprovalFiles) {
26
26
  ```
27
27
 
28
28
  <!-- /microi-progressive:chunk -->
29
- <!-- microi-progressive:chunk id=v8-workflow-008 sha256=f023312e7d95c518428c2e6d1df99b43cc36d41659aa75768b13ff83cf52b3b0 -->
29
+ <!-- microi-progressive:chunk id=v8-workflow-008 sha256=5849ffaac5c7ffdf3dcfbf4fe8e18951415e1843bd7e233f6a50e36673767f14 -->
30
30
  ## 节点结束 V8 事件
31
31
 
32
32
  ### 后端 — 流程结束后业务处理
@@ -88,7 +88,7 @@ if (V8.WF.WorkResult) {
88
88
  ```
89
89
 
90
90
  <!-- /microi-progressive:chunk -->
91
- <!-- microi-progressive:chunk id=v8-workflow-009 sha256=a927ce0325e130608823800c83c85d9e83d54fea61dbcfed32208d49f4012118 -->
91
+ <!-- microi-progressive:chunk id=v8-workflow-009 sha256=301ee4a5554069c509c559377fa57340af41b5c014cfdf95be834150ab8c8899 -->
92
92
  ## 前端打开流程表单
93
93
 
94
94
  ```javascript
@@ -106,7 +106,7 @@ V8.OpenFormWF(V8.Form, 'View', {
106
106
  ```
107
107
 
108
108
  <!-- /microi-progressive:chunk -->
109
- <!-- microi-progressive:chunk id=v8-workflow-010 sha256=ea15dea212f044a16bdccbf75ebe3a28ce3eb3ff27c989e8c6b4ec567e170032 -->
109
+ <!-- microi-progressive:chunk id=v8-workflow-010 sha256=99dde7c6359317e8b4eb72bddfc568520506550c8381e53d3d238e716c92272c -->
110
110
  ## MCP 创建/检查/测试工作流
111
111
 
112
112
  从自然语言需求创建审批流时,优先整理成完整 Manifest 的 `workflows` 配置,再走 MCP 干跑和验收流程。
@@ -149,13 +149,13 @@ MCP 操作顺序:
149
149
  - 图形条件生成的 V8 会带 `MICROI_WF_LINE_CONDITION_JSON` 标记,MCP 测试工具只解析该标记,不执行任意手写 V8。
150
150
 
151
151
  <!-- /microi-progressive:chunk -->
152
- <!-- microi-progressive:chunk id=v8-workflow-011 sha256=ab8c37da582f7463663ab9a609cf31e95c94e38181bc37b7c880a27f19f01a0e -->
152
+ <!-- microi-progressive:chunk id=v8-workflow-011 sha256=70703905fd4bdbde1d645e8d1dbb77569a352da8c2014b2acd2e997464b7397a -->
153
153
  ## 发起流程与表单保存
154
154
 
155
155
  新建业务数据并发起流程时,应先保存表单,再启动流程,或使用平台的合并接口 `StartWorkWithForm` 在同一事务里完成。首次发起建议以 `Add` 模式打开流程表单;如果前端提前生成了 `Id` 但业务表还没有该行,后端会使用 `_NoLineForAdd` 兜底,避免 `UptFormData` 报“数据显示不存在”。
156
156
 
157
157
  <!-- /microi-progressive:chunk -->
158
- <!-- microi-progressive:chunk id=v8-workflow-012 sha256=39a371dc5106862955945741a65c2fd08423cfedbc028e6aba0ba6aadde9cc34 -->
158
+ <!-- microi-progressive:chunk id=v8-workflow-012 sha256=4f7575ce99688366c05f2267d8271c12215d05c89e5664f7564d5cf04a94f281 -->
159
159
  ## 流程相关表
160
160
 
161
161
  | 表 | 说明 |
@@ -168,7 +168,7 @@ MCP 操作顺序:
168
168
  | `WF_History` | 流程轨迹表 |
169
169
 
170
170
  <!-- /microi-progressive:chunk -->
171
- <!-- microi-progressive:chunk id=v8-workflow-013 sha256=1e0afbf91035c773357ab43dbc3658a62e368ce65ca329d1047d543558ea2e90 -->
171
+ <!-- microi-progressive:chunk id=v8-workflow-013 sha256=d6b942d331b8504cb0e59e48ecb370e88ce572d50b1e50bf367dcbc6796fed23 -->
172
172
  ## 注意事项
173
173
 
174
174
  - 条件判断 V8 事件可以设置 `V8.NextNodeId` 直接指定下一节点;未设置时才按 `V8.LineValue` 匹配条件线的**条件值**
@@ -6,7 +6,7 @@ description: 每次 Microi 任务开始前必读的基础规范。用于识别
6
6
  # Microi 工作区全局约定
7
7
 
8
8
  <!-- microi-progressive:begin -->
9
- <!-- microi-progressive:chunk id=workspace-conventions-000 sha256=0343e85fedcdf44a2dbf11c73b697b39a713d9b00054f979e40b9a085aae2353 -->
9
+ <!-- microi-progressive:chunk id=workspace-conventions-000 sha256=d64145e9e39c0796f680659543d7504871749ea93858938aa31c9884a15a1e79 -->
10
10
  ## 任务启动前 Skill 读取规则(强制)
11
11
 
12
12
  AI 处理任何 Microi 低代码、V8、MCP、OpenClaw、采集引擎、前端、后端、UniApp、文档、测试或交付任务前,必须先按任务类型读取相关 `microi.skills/**/SKILL.md`。不能等到写代码或出问题后才补读。
@@ -36,10 +36,11 @@ AI 处理任何 Microi 低代码、V8、MCP、OpenClaw、采集引擎、前端
36
36
  - 任务若只要求分析、评审或制定规范,仍保持只读或仅修改指定规范;身份标记不授权无关线上写入。客户部署、容器更新和应用自动安装与官方发布是独立动作,服从用户指定的手动/自动边界;用户明确手动更新时不得擅自部署。
37
37
  - 收尾必须区分“源码/文档已修改、测试通过、应用已发布回读、Skills/插件已打包或已分发、镜像已推送、客户已安装或已部署”。只有实际渠道验收成功才能说其它用户已可获取;不得把文档本地构建或插件本地副本同步称为已上线。
38
38
 
39
- ### 每个新增与修复必须进入统一回归门禁(强制)
39
+ ### 平台回归与独立应用测试归属(强制)
40
40
 
41
- - 创始人源码工作区的每个功能新增、缺陷修复和兼容性调整都必须同时交付可重复执行的回归测试;先证明旧行为失败,再验证修复成功,覆盖正常、边界、失败、安全与存量兼容路径。不得只改源码或用手工截图代替自动回归。
42
- - C# 单元/组件/集成测试归入 `Microi.Server/Microi.Tests`。前端、应用包与 V8 的 Node 行为测试可留在责任源码旁,但必须由 `Microi.Tests/run-tests.ps1` 的自动发现入口执行;真实浏览器、数据库及第三方集成必须明确归入 Full 或专项验收,不得冒充离线单测。新增公共后端能力同时补相应 HTTP 闭环。
41
+ - 创始人源码工作区中的每个平台功能新增、缺陷修复和兼容性调整都必须同时交付可重复执行的回归测试;先证明旧行为失败,再验证修复成功,覆盖正常、边界、失败、安全与存量兼容路径。不得只改源码或用手工截图代替自动回归。
42
+ - 平台 C# 单元/组件/集成测试归入 `Microi.Server/Microi.Tests`。平台前端、平台内置应用包与平台 V8 的 Node 行为测试可留在责任源码旁,由 `Microi.Tests/run-tests.ps1` 自动发现执行;平台真实浏览器、数据库及第三方集成归入 Full 或平台专项验收,不得冒充离线单测。新增公共后端能力同时补相应 HTTP 闭环。
43
+ - 官方或社区独立业务应用、游戏及客户项目的测试归应用自身源码根的 `tests/` 或独立测试工程,由该应用自己的测试和发布入口执行;不得放入 `Microi.Tests`、创建转调包装或接入平台 Quick/Full。官方发布身份不改变测试归属。应用开发中涉及平台通用缺陷时,仅把通用最小回归夹具加入平台门禁,应用业务断言仍在应用项目维护。
43
44
  - `Microi一键编译发布.sh` 的所有 PC/API 镜像路径(包括仅推送、热修复)都必须先通过 Full;缺少环境、零用例、失败、取消、跳过、待办或无法解析测试结果一律停止。禁止关闭断言、删测试、排除失败项目或修改门禁阈值来发布。
44
45
  - 测试成功必须绑定本次候选源码和实际构建上下文的内容哈希,构建后、每次推送前复核。旧产物没有可验证回执或源码/产物漂移时必须重建重测,禁止“当前源码通过测试 + 推送另一份旧 DLL/前端 dist”。
45
46
  - 交付记录逐项列明修复与测试映射、执行数量、未覆盖边界和镜像摘要。覆盖率与 Full 都不能证明所有租户业务、任意生产数据和第三方系统绝对无误;真实客户路径仍需只读验收。详细矩阵见 `microi-system-delivery/references/progressive-02-自动化测试必须覆盖的坑.md`。
@@ -106,7 +107,7 @@ AI 在用户本机启动 Node.js、Vite、Webpack、dotnet build、Java、Docker
106
107
  - 本规则只约束 `Microi.Client/` 吾码框架前端源码。独立 MicroService、Web、UniApp 等应用源码仍按其交付 Skill 在发布前执行自身必要的构建;不得因为本规则跳过微服务正式产物生成。
107
108
 
108
109
  <!-- /microi-progressive:chunk -->
109
- <!-- microi-progressive:chunk id=workspace-conventions-004 sha256=533d4a6d674f5980fdf6e9ae376b240af20e3191126a20eae3d6235897f45a88 -->
110
+ <!-- microi-progressive:chunk id=workspace-conventions-004 sha256=a12a204339ee40367f4c09d085d818515b0d94c7c0d748d0d455fede6b98a2e4 -->
110
111
  ## 临时文件与 AI 产物放置规则(强制)
111
112
 
112
113
  AI 在工作区任意任务中生成的**一次性临时脚本、诊断文件、测试截图、临时报告**,**严禁放在工作区根目录(`<workspace-root>/`)**,必须放在指定位置:
@@ -115,7 +116,7 @@ AI 在工作区任意任务中生成的**一次性临时脚本、诊断文件、
115
116
  |------|---------|
116
117
  | 一次性脚本(.py / .mjs / .ps1 / .sh) | `.tmp/` |
117
118
  | 诊断截图、调试图片 | `.tmp/screenshots/` |
118
- | E2E 测试产物(Microi.Code 插件生成) | `.microi-e2e/` |
119
+ | E2E 测试产物(Microi.Agent 插件生成) | `.microi-e2e/` |
119
120
  | AI 一次性 E2E 脚本、截图、日志、报告 | `.tmp/`、`.tmp/screenshots/`、`.tmp/reports/` |
120
121
  | 性能测试 HTML 报告 | `.microi-performance/` |
121
122
  | 项目专属临时文件 | `<对应子项目目录>/` 内,不要写到根目录 |
@@ -129,10 +130,10 @@ AI 在工作区任意任务中生成的**一次性临时脚本、诊断文件、
129
130
 
130
131
  `.tmp/` 已在 `.gitignore` 中排除,可以随意创建临时文件。任务完成后如无保留价值可以不清理。
131
132
 
132
- **2026-06 强制补充**:AI 不得在任何子项目目录下放置一次性日志、自动化截图、接口回收文件或调试脚本。像 `Microi.Server/Microi.net.Api/.tmp-*.log`、`Microi.Client/*.png` 这类文件一律视为规范失败,必须移到 `<workspace-root>/.tmp/` 或 `<workspace-root>/.tmp/screenshots/`。正式 Playwright 工程由 Microi.Code 插件生成时可以继续使用 `.microi-e2e/`,但 AI 为某个任务手写的一次性 Playwright 脚本、报告和截图仍然必须放在 `.tmp/`。
133
+ **2026-06 强制补充**:AI 不得在任何子项目目录下放置一次性日志、自动化截图、接口回收文件或调试脚本。像 `Microi.Server/Microi.net.Api/.tmp-*.log`、`Microi.Client/*.png` 这类文件一律视为规范失败,必须移到 `<workspace-root>/.tmp/` 或 `<workspace-root>/.tmp/screenshots/`。正式 Playwright 工程由 Microi.Agent 插件生成时可以继续使用 `.microi-e2e/`,但 AI 为某个任务手写的一次性 Playwright 脚本、报告和截图仍然必须放在 `.tmp/`。
133
134
 
134
135
  <!-- /microi-progressive:chunk -->
135
- <!-- microi-progressive:chunk id=workspace-conventions-005 sha256=c48d857c8e3086b29f99ab14d362f99c60d7dd00f9617709ea4f4dcad370611e -->
136
+ <!-- microi-progressive:chunk id=workspace-conventions-005 sha256=f627ee155b40014af76926b3a432601aa3f6bec5a7eb98ca0540c83fa41f1e5a -->
136
137
  ## Microi 源码路径速查(工作区根相对路径)
137
138
 
138
139
  当用户提到“吾码后端源码”“吾码前端源码”“表单引擎源码”“官网源码”等简称时,默认按下列路径定位;如果当前工作区缺少对应目录,再用 `rg --files` 或目录搜索确认实际位置。
@@ -142,7 +143,7 @@ AI 在工作区任意任务中生成的**一次性临时脚本、诊断文件、
142
143
  | 吾码 MCP 前端源码 | `microi.mcp/` |
143
144
  | 吾码 MCP 后端源码 | `Microi.Server/Microi.MCP/`;HTTP 接口声明保留在 `Microi.Server/Microi.net.Api/Controllers/V8EngineController.cs` |
144
145
  | 吾码 skills / 知识库 | `microi.skills/` |
145
- | 吾码 VS Code 插件项目 | `Microi.Code/` |
146
+ | 吾码 VS Code 插件项目 | `Microi.Agent/` |
146
147
  | 吾码低代码平台后台系统前端源码 | `Microi.Client/` |
147
148
  | 吾码后台系统前端移动端自适应源码 | `Microi.Client/src/views/mobile/` |
148
149
  | 吾码低代码后端源码 | `Microi.Server/` |
@@ -222,9 +223,17 @@ AI 在工作区任意任务中生成的**一次性临时脚本、诊断文件、
222
223
  - `Microi.net.Api/Controllers` 除五个兼容内核 Controller 与统一旧客户端兼容 Controller 外,只能保留已证明接口引擎无法承担的薄协议 Controller;每个保留项必须同步登记 `api-ownership-catalog.json` 并由结构测试锁定。已完整迁入接口引擎的旧 Controller 必须继续物理删除。
223
224
  - `Program.cs` 只保留有说明的插件注册和最薄宿主入口;ASP.NET 组合代码可留在同项目 `Hosting`,可复用业务/运行时逻辑进入 `Microi.Core`、`Microi.net`、`Microi.Upgrade` 或对应插件,禁止通过新建“中转层”掩盖归属问题。
224
225
 
225
- <!-- microi-progressive:chunk id=workspace-conventions-009 sha256=dc7dbe2d2f60466a7170fff65a5df8769bc795b4ab23151a24b665380d7c6e37 -->
226
+ <!-- microi-progressive:chunk id=workspace-conventions-009 sha256=cb0a9b2286d51e41dfd3c4249f28d4ac57b6736112be3c1f57f8eb405d0631b1 -->
226
227
  ## 多对话共享工作区变更归属保护(强制)
227
228
 
229
+ ### 功能验收后的源码提交与推送(强制)
230
+
231
+ - 每个已完成并通过相应验收的功能、修复或独立里程碑,必须把本任务源码、测试和必要文档按实际 Git 仓库分别提交并推送;不能仅保存在工作区、stash、临时目录或已发布产物中。用户明确要求不提交/不推送、只读任务和未完成的实验除外,不为无改动仓库制造空提交。
232
+ - 提交前回读工作树、暂存区、上游和远端;按可核验的本任务 hunk 暂存,保留其它对话的改动与既有暂存项。公开根仓只提交公开代码;闭源目录只从各自独立仓库根提交并推送到其已有内部远端,严格执行公开仓闭源路径门禁,不能用 gitlink 或强制添加绕过隔离。
233
+ - 推送前先获取上游的新提交并安全整合;共享工作区有并行改动时优先在隔离候选中合并,不用整树 stash/reset 覆盖他人成果,不强推共享分支,不绕过仓库 Hook。需要精确回滚时保留独立、说明清楚的功能提交;回滚已推送功能通常使用新的反向提交,不改写共享历史。
234
+ - 正式发布前,候选必须包含此前已交付功能的提交,并完成本任务提交、推送及远端提交号回读,再从该冻结候选构建与发布。仅更新某个说明页面时也要核对整个站点的候选;隔离工作树不能因为没有未提交变更就被当成最新线上功能。发布锁只防并发,不能代替源码完整性检查。
235
+ - 收尾逐仓记录本地提交号、远端分支和回读结果,并区分源码推送、构建发布与真实线上验收。网络、权限、冲突或门禁阻止推送时,保留本地提交、准确报告未推送项并继续完成可独立推进的工作;不得宣称完整交付,也不得为赶进度先发布未交付源码。
236
+
228
237
  同一工作区可能同时被用户、其它 Codex 对话、IDE、自动化任务或外部 Git 操作修改。任务启动前已经存在、或无法用本对话证据严格证明归属的差异,一律视为他人资产并保留;“工作区是脏的”不是清理授权。
229
238
 
230
239
  - 开始修改前先保存只读基线,至少包括 `git status --short`、目标文件的 `git diff -- <file>`,必要时记录文件 SHA-256。VS Code 重启、上下文压缩或接续中断任务后,必须重新建立基线,不能沿用对差异归属的猜测。
@@ -100,7 +100,7 @@ AI 为 Microi 平台新增或修改任何业务逻辑、后台工具、数据维
100
100
  - 平台级强制安全校验不能为了“全部低代码化”放进租户可编辑脚本而被绕过;可以留在 C#,但必须是通用、失败关闭的安全边界,不得夹带某个项目的业务文案、字段组合或状态机。
101
101
 
102
102
  <!-- /microi-progressive:chunk -->
103
- <!-- microi-progressive:chunk id=workspace-conventions-018 sha256=9364579ba944874dcdcc71c44066e285e2a3e88140255531e03deb2ec2cab598 -->
103
+ <!-- microi-progressive:chunk id=workspace-conventions-018 sha256=e33b8387bbe8dbc400249ca9d16f91656149492f5f7ce253cbfa67b80f4ca8ef -->
104
104
  ## 应用商城优先于 Microi.Upgrade(强制)
105
105
 
106
106
  能由应用包声明、差异安装和回读验收完成的升级,不得在 `Microi.Server/Microi.Upgrade/` 新增定制 .NET 升级类。表、字段、Tab、菜单、角色权限、接口引擎、表单事件、数据源、页面、打印、工作流、任务及可幂等安装的种子数据,默认都属于应用商城资源。
@@ -109,6 +109,7 @@ AI 为 Microi 平台新增或修改任何业务逻辑、后台工具、数据维
109
109
  - 吾码官方开发者若可调用绑定 `https://api.itdos.com`、`OsClient=iTdos` 的 `microi_itdos`,必须先在官方主租户通过 MCP 更新资源,重新制作并发布对应官方应用,发布后按字段/菜单/引擎/包版本回读;再用目标租户 MCP 安装/更新并轮询后台任务到 `Succeeded`。
110
110
  - 当前用户没有 `microi_itdos` 权限时,通过其自己的 MCP/Manifest 幂等升级自己的数据库并回读;不得为了单个租户把定制迁移塞进通用后端。确需让更多用户复用时,应生成其有权维护的社区/私有应用包。
111
111
  - 只有应用商城运行前就必须存在的物理兼容基础、跨版本核心协议迁移、存储格式变化,或安装器自身无法安全表达的不可逆平台迁移,才允许进入 `Microi.Upgrade`。每个例外必须写明“为什么应用包不能完成”、影响范围、回滚/前后兼容、分布式幂等和验收依据。
112
+ - 自动恢复只保证启动、普通登录、菜单导航和应用商城安装/更新,SSO、AI、通知、备份、OCR、翻译等应用不能成为自动升级或启动门禁。完整官方资源放在 `Microi.Server/OfficialApplications/Resource/`,按显式清单生成 `Microi.Upgrade/Resource/` 的两项恢复资源;完整官方包的增长不得自动扩大启动闭包。更高版本且就绪的手动商城更新和既有租户 Hook 保留,失败不推进版本。
112
113
  - 允许的 .NET 迁移只能按持久化版本/迁移账本执行待办步骤,使用共享租约且业务幂等;禁止把新迁移同时加入版本链和“每次启动无条件全租户对账”列表。启动成本必须与待执行迁移数相关,不能随历史升级文件总数对每个租户线性增长。
113
114
  - 评审 `Microi.Upgrade` PR 时先做资源分类:若只是补字段、Tab 或低代码元数据,移出升级器并发布应用包;若保留 C#,必须提供双节点、重复启动、租约丢失、失败不推进版本以及旧新节点共存测试。
114
115
 
@@ -139,10 +140,10 @@ AI 开始处理定制页面、弹窗、Web、UniApp、微服务或应用商城
139
140
  如果 MCP 返回登录过期,必须先修复或刷新目标 MCP 身份,再继续把 MCP 读取结果当作当前事实;不能因为读取失败就假设在线应用不存在并重复创建。
140
141
 
141
142
  <!-- /microi-progressive:chunk -->
142
- <!-- microi-progressive:chunk id=workspace-conventions-020 sha256=64ab3dbde08488e8cf9f320bf74d97c938507170723022efeb6ab4f96380f9ca -->
143
+ <!-- microi-progressive:chunk id=workspace-conventions-020 sha256=60e6dac03e25861d4e0507c30ab28d28e26ada4cbe3231c3b029eb2367dc7224 -->
143
144
  ## VS Code 插件空目录生成规则
144
145
 
145
- Microi.Code 面向普通用户时,用户本地可能只是一个空工作区。插件生成 AI 指令文件时不能假设用户已经有 `microi.skills/`、`Microi-V8-Engine/`、`AI-Project/` 或某个固定前端项目目录。
146
+ Microi.Agent 面向普通用户时,用户本地可能只是一个空工作区。插件生成 AI 指令文件时不能假设用户已经有 `microi.skills/`、`Microi-V8-Engine/`、`AI-Project/` 或某个固定前端项目目录。
146
147
 
147
148
  强制要求:
148
149
  - 插件的“初始化AI配置”必须能在空目录生成 `microi.skills/`、`.github/copilot-instructions.md`、`AGENTS.md`、`CLAUDE.md`、`.cursorrules`、`.cursor/rules/microi-skills.mdc`、类型提示、`jsconfig.json` 和 MCP 配置。
@@ -151,14 +152,14 @@ Microi.Code 面向普通用户时,用户本地可能只是一个空工作区
151
152
  - 插件升级时应继续保护用户本地修改过的 skill 文件,只覆盖插件曾生成且用户未改过的文件。
152
153
 
153
154
  <!-- /microi-progressive:chunk -->
154
- <!-- microi-progressive:chunk id=workspace-conventions-021 sha256=cee19f2fffffce3b4bcd9347a50ecf27add4be0c919e1cf5d00df98d487d29b8 -->
155
+ <!-- microi-progressive:chunk id=workspace-conventions-021 sha256=963e489e2bdda4614c8b3089830b8bb855603dbd4338ddcc7ae29519d560766f -->
155
156
  ## Microi 版本号规则
156
157
 
157
158
  Microi 通用版本号采用 `主版本.次版本.修订版本` 三段数字格式,从 `1.0.0` 开始。每次发布时最后一位加 1;当某一位超过 `9` 时向前一位进位并将当前位归 `0`,例如 `1.0.9 -> 1.1.0`、`1.9.9 -> 2.0.0`、`9.9.9 -> 10.0.0`。
158
159
 
159
160
  接口引擎代码头、表单/工作流 V8 事件代码头、前端微服务 `sys_microiservice.BuildVersion` 与 `sys_microiservice_page.BuildVersion` 这类业务发布版本统一使用带 `v` 前缀的格式:`v1.0.0 -> v1.0.1 -> v1.0.9 -> v1.1.0 -> v1.9.9 -> v2.0.0 -> v9.9.9 -> v10.0.0`。禁止使用时间戳、随机串或日期作为 BuildVersion;前端微服务上传到分布式存储的目录也必须使用同一个 BuildVersion 分段,便于回溯与 CDN 缓存隔离。
160
161
 
161
- `Microi.Code` 发布时会通过 `bump-version.js` 自动自增插件版本,并把 `microi.skills/.microi-skills-version.json` 中的 skills 发布版本写成同一个插件版本号;skills 不再独立自增。`.microi-skills-version.json` 只用于记录 skills 包版本和提示用户当前来源,不能单独作为覆盖依据。
162
+ `Microi.Agent` 发布时会通过 `bump-version.js` 自动自增插件版本,并把 `microi.skills/.microi-skills-version.json` 中的 skills 发布版本写成同一个插件版本号;skills 不再独立自增。`.microi-skills-version.json` 只用于记录 skills 包版本和提示用户当前来源,不能单独作为覆盖依据。
162
163
 
163
164
  插件初始化或升级同步 `microi.skills/` 时,必须以 `.microi-skills-manifest.json` 的逐文件 hash 判断是否可覆盖:本地文件不存在则写入;本地文件与旧 manifest hash 一致说明用户未改,可自动升级;本地文件已被用户修改、或本地版本比插件捆绑版本更新时,必须保留用户版本并提示差异。不能因为插件版本号更高或更低,就粗暴覆盖本地 skills。创始人本地随时修改 skills 的工作区尤其要保护;普通用户未修改过的旧 skills 才应该被最新插件覆盖升级。
164
165
 
@@ -185,7 +186,7 @@ if (string.IsNullOrWhiteSpace(tableName)) { return; }
185
186
  如果方法内部只通过 `DynamicHelper` 读取对象字段,方法参数优先声明为 `object`,不要声明为 `dynamic`。这样可以减少 C# 运行时动态绑定进入普通字符串工具链的机会。
186
187
 
187
188
  <!-- /microi-progressive:chunk -->
188
- <!-- microi-progressive:chunk id=workspace-conventions-023 sha256=1dfe4286cfee04571a3d24a32af15365b9da6abffe9acfd92a75539e6160f2bd -->
189
+ <!-- microi-progressive:chunk id=workspace-conventions-023 sha256=4ef009cbfca343640e69ccdb6be47f3cb13ad8a67f9ff770debce20c919f1bb3 -->
189
190
  ## 根目录保留文件说明
190
191
 
191
192
  根目录只允许存在以下类型的文件和目录:
@@ -202,7 +203,7 @@ if (string.IsNullOrWhiteSpace(tableName)) { return; }
202
203
  | `AI-Project/` | 各租户/项目 | 否 |
203
204
  | `switch-env.ps1` | 本地环境切换工具 | 否(有用) |
204
205
  | `.tmp/` | AI 临时文件(gitignored) | 可删整个目录 |
205
- | `.microi-e2e/` | Microi.Code 插件 E2E 产物 | 可定期清理 |
206
+ | `.microi-e2e/` | Microi.Agent 插件 E2E 产物 | 可定期清理 |
206
207
  | `.microi-performance/` | 性能测试报告 | 可定期清理 |
207
208
 
208
209
  <!-- /microi-progressive:chunk -->
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=workspace-conventions-024 sha256=be9b3561d67f0b5489ce4b9f8c8775b563707adb9b75214807bd9c4d4fe226d4 -->
5
+ <!-- microi-progressive:chunk id=workspace-conventions-024 sha256=4e97c278d0a813e23c2c56b11aec8b157b2b100ed6f46ea07d45dbe9954ca5aa -->
6
6
  ## Microi.net.Api 本地启动约定
7
7
 
8
8
  默认本地后端项目是 `Microi.Server/Microi.net.Api/Microi.net.Api.csproj`。AI 需要启动后端、验证接口、跑 Playwright、回读接口引擎或排查前后端联调问题时,优先使用下面的 PowerShell 命令:
@@ -20,7 +20,7 @@ Pop-Location
20
20
  **本地后端自动重启要求(强制)**:本地联调需要启动或重启 `Microi.net.Api` 时,先检查 `.tmp/microi-process-state/release.lock`;发布锁存在时禁止启动或重启。无发布时先回读标准端口和 `/api/Diagnostics/liveness`,健康服务默认复用;只有本任务修改了需重载的后端代码、服务不健康或用户明确要求重启时,才可精确停止当前工作区的后端进程,然后在 `Microi.Server/Microi.net.Api` 目录执行 `dotnet run --launch-profile Microi.net.Api`。优先使用用户能在 VS Code 中看到和停止的终端(包含 VS Code 集成终端、VS Code 任务终端、用户明确允许的 VS Code 可追踪隐藏终端);如果当前工具没有 VS Code 终端能力,允许使用本机可见的 `cmd`/PowerShell 窗口启动,禁止使用脱离用户可见窗口的后台服务或守护进程。不要误杀数据库、Redis、Node 前端或其它业务进程。
21
21
 
22
22
  <!-- /microi-progressive:chunk -->
23
- <!-- microi-progressive:chunk id=workspace-conventions-025 sha256=f9b654a451871b2759c42dc0cfe532f41d71f1e57a7ebe566abe4b0eafec50a9 -->
23
+ <!-- microi-progressive:chunk id=workspace-conventions-025 sha256=07c3d729c8f1e9a2bf93ff00937e5d6eae4602d346e4f9254b03a33211ac4848 -->
24
24
  ## 多 AI 对话共享本地服务与发布互斥(强制)
25
25
 
26
26
  同一工作区的 4、5 个 AI 对话共用同一份源码和固定端口时,`61500/61501` 是工作区级单例共享服务,不属于某个对话。端口相同意味着无法让每个对话拥有一套独立进程;正确模型是“复用健康服务 + 需要重载时串行重启 + 发布时独占”,不能让每个对话都无条件先杀再启动。
@@ -52,7 +52,7 @@ OsClient 等状态;同一 Profile/Context 内切换租户会污染其它窗口
52
52
  分层报告。
53
53
 
54
54
  <!-- /microi-progressive:chunk -->
55
- <!-- microi-progressive:chunk id=workspace-conventions-026 sha256=7886b082424673965ce27622424be52d392a3868ebedff8c949b5d8d5e6c4caa -->
55
+ <!-- microi-progressive:chunk id=workspace-conventions-026 sha256=73207c0cfcc442a177c47c36503dd6145fc826e23e79df3913861f65d8d16df3 -->
56
56
  ## 本地租户与测试凭据读取约定
57
57
 
58
58
  AI 在本地启动后端、跑 Playwright、做登录态页面截图或调用需要登录的接口前,必须先尝试从本地配置判断租户和测试账号,不要直接以“未登录无法测试”结束:
@@ -64,13 +64,13 @@ AI 在本地启动后端、跑 Playwright、做登录态页面截图或调用需
64
64
  5. `.microi-local`、Token、数据库连接串、Redis 密码和测试凭据都视为本地敏感配置。最终回复、日志摘要和测试报告中不得输出真实值,只能写 `<redacted>`、`本地配置账号` 或 `本地配置凭据`。
65
65
 
66
66
  <!-- /microi-progressive:chunk -->
67
- <!-- microi-progressive:chunk id=workspace-conventions-027 sha256=5ab58f345dcff9caea31d07d7598792ddaa8a301f3527d4121a7548d32107df3 -->
67
+ <!-- microi-progressive:chunk id=workspace-conventions-027 sha256=84988eac9cf7543a192b3e829b879afb7b35ef92798dc9ea69243f173a8ab674 -->
68
68
  ## 自动化登录约定
69
69
 
70
70
  本地和远端 E2E 统一传真实 `Account` / `Pwd`。需要跳过图形验证码时,只能在目标租户 `sys_config.AutoTestSkipCaptcha=true` 后传 `_AutomationTestLogin=true`;它只跳过验证码,绝不能绕过密码校验。禁止恢复 `DevLoginBypass`、`X-Microi-Dev-Key`、`_DEV_BYPASS_` 或让脚本自动改写后端 `appsettings`。测试完成后不持久化账号密码。
71
71
 
72
72
  <!-- /microi-progressive:chunk -->
73
- <!-- microi-progressive:chunk id=workspace-conventions-028 sha256=5b3ff231c7fd6266c7cff45b48707bf9053da596eaf574fc0490fe6a6fe1fca6 -->
73
+ <!-- microi-progressive:chunk id=workspace-conventions-028 sha256=6ff58ce80aab2bd47c5af022382159e98e4c4ca5eb955281e61918079d4175a5 -->
74
74
  ## V8 远端/本地同步收尾约定
75
75
 
76
76
  AI 通过 MCP、接口引擎、数据库脚本或平台 API 修改任何远端 V8 代码后,任务结束前必须把远端当前生效代码同步回本地 `Microi-V8-Engine/<server>/<osClient>/` 目录,并做一次同步状态复核。
@@ -86,22 +86,22 @@ AI 通过 MCP、接口引擎、数据库脚本或平台 API 修改任何远端 V
86
86
  收尾流程:
87
87
  - 若远端是通过 MCP 写入的,以远端当前生效代码为准回写本地文件。
88
88
  - 若本地文件是先手工修改的,先推送到远端,再重新拉取/复核,确保本地与远端一致。
89
- - 优先使用 Microi.Code 插件的同步/查看同步状态能力;没有可调用插件时,可在 `.tmp/` 写一次性同步脚本,但脚本必须先 dry-run 输出差异摘要,再 apply。
89
+ - 优先使用 Microi.Agent 插件的同步/查看同步状态能力;没有可调用插件时,可在 `.tmp/` 写一次性同步脚本,但脚本必须先 dry-run 输出差异摘要,再 apply。
90
90
  - 复核结果应确认 touched 范围内 `Changed=0`、`Created=0`、`LocalOnly=0` 或说明剩余差异原因。
91
91
  - 空 V8 代码不生成本地 `.js` 文件;若已有空 `.js` 文件,收尾同步时应删除,避免被误判为本地未推送。
92
- - AI 收尾不能只看自写脚本的 dry-run;只要工作区安装了 Microi.Code 插件,就必须按插件“查看同步状态”的口径再复核一次。最终回复中要明确说明插件口径是否为 0;若仍有本地未推送/远端差异,必须列出具体资源类型、Key 和本地文件路径,不能只报数量。
92
+ - AI 收尾不能只看自写脚本的 dry-run;只要工作区安装了 Microi.Agent 插件,就必须按插件“查看同步状态”的口径再复核一次。最终回复中要明确说明插件口径是否为 0;若仍有本地未推送/远端差异,必须列出具体资源类型、Key 和本地文件路径,不能只报数量。
93
93
  - 当远端代码与本地代码完全一致但插件仍提示“本地未推送”时,优先校准 `.microi-meta.json` 的 `updateTime/filePath` 与本地文件 `mtime`,并再次执行插件口径同步检查;不要让时间戳误差遗留给用户。
94
94
  - AI 通过 MCP/API 直接写远端 V8 后,必须立即回读远端当前生效代码到本地并校准 `.microi-meta.json` 与文件 `mtime`。这不是可选清理动作,而是交付完成条件;否则 VS Code 插件会按时间戳继续提示“本地未推送”。
95
95
  - 若同步状态非 0,必须先列出具体文件并分类处理:正文一致仅校准 meta/mtime,远端较新则拉回,本地较新则推送,双方都改过则人工合并。生产资金/资产系统不能为清状态盲目覆盖远端。
96
96
 
97
97
  <!-- /microi-progressive:chunk -->
98
- <!-- microi-progressive:chunk id=workspace-conventions-029 sha256=d18db7dd385b3e691a2fdfce5cc7c32ea09f30beb6ebe19ea2193d2e98b8f7ac -->
98
+ <!-- microi-progressive:chunk id=workspace-conventions-029 sha256=e90e532f9448b67f98f28a68fd4ea45b79868cf25fc14c5283b9074e91559f27 -->
99
99
  ## V8 缓存刷新约定
100
100
 
101
101
  如果 AI 绕过平台表单提交事件,直接通过 MCP、数据库脚本或自写同步工具更新 `sys_apiengine`、`diy_table`、`diy_field`、`sys_menu`、`wf_node` 等远端 V8 代码,收尾时除了同步本地文件,还必须刷新运行中服务的缓存。至少清理当前 `<OsClient>` 下对应资源的 `Microi:<OsClient>:FormData:<table>:<key>`、`Id` 和地址形式缓存;若可用,优先调用平台缓存接口或插件内置同步流程。清缓存后要重新调用受影响接口做一次真实验证,避免本地/远端代码已一致但 API 仍执行旧缓存代码。
102
102
 
103
103
  <!-- /microi-progressive:chunk -->
104
- <!-- microi-progressive:chunk id=workspace-conventions-030 sha256=cb93afa9d5cddef627d561b4b46c56715486ebad8be78dc13b72e1065ff89bb5 -->
104
+ <!-- microi-progressive:chunk id=workspace-conventions-030 sha256=c25d0aaffec64d8a66cda36acd9ec337eda99a4411fddb0e966e45247ba574de -->
105
105
  ## MCP 元数据更新验收约定
106
106
 
107
107
  AI 通过 MCP 修改 `diy_field`、`diy_table`、`sys_menu`、`sys_osclients`、`sys_config` 等平台元数据后,不能只看写入返回成功,必须按前端真实消费方式回读验证:
@@ -111,7 +111,7 @@ AI 通过 MCP 修改 `diy_field`、`diy_table`、`sys_menu`、`sys_osclients`、
111
111
  3. 最终交付说明必须写清楚:改了哪个表/字段,回读值是什么,刷新了哪些缓存,验证入口是什么。若某个缓存刷新接口失败或只能部分成功,需要把失败消息原样摘要出来,不能把“写入成功”当作“页面一定生效”。
112
112
 
113
113
  <!-- /microi-progressive:chunk -->
114
- <!-- microi-progressive:chunk id=workspace-conventions-031 sha256=51e7e4c9e28a6547613068b7758411b934c30c8d19ebfdf64569c079d05346ed -->
114
+ <!-- microi-progressive:chunk id=workspace-conventions-031 sha256=cea2d1c912ffc31136a859fd10f282c488b5b8d1bf3f2ced7c39084b23e5ccf5 -->
115
115
  ## MCP 可用性排查约定
116
116
 
117
117
  VS Code、Cursor 或 Codex 设置界面显示某个 MCP 服务器“已启用”,不代表当前 AI 会话一定已经成功加载了对应工具。AI 在声称“可以通过 MCP 操作”之前,必须完成一次真实可调用性验证:
@@ -124,10 +124,10 @@ VS Code、Cursor 或 Codex 设置界面显示某个 MCP 服务器“已启用”
124
124
  - MCP 的初始化说明必须使用真实 `MICROI_OS_CLIENT` 作为租户边界。中文显示名通过 ASCII 的 `MICROI_LABEL_BASE64` 传输并在 MCP 内解码,旧版 `MICROI_LABEL` 只作兼容;显示名不能当成租户 Key 写入“只能管理某租户”的安全提示。
125
125
  - 遇到 `ByteString`、`greater than 255` 或“第 N 个字符无法写入 Header”时,必须先检查实际异常索引和所有 HTTP Header 来源。Microi MCP 的设备标识来自 `did` / `MICROI_MCP_DID`;默认值若直接拼接中文 Windows 主机名,会在 `MCP:` 后第 4 个字符报错。`MICROI_LABEL_BASE64` 只用于显示,不会作为业务 HTTP Header 发送,禁止在未核对调用链前把错误归因于中文 Label。插件和 MCP 必须把 DID 规范化为稳定的可打印 ASCII。
126
126
  - MCP 连接失败时,AI 在完成配置、进程、Header、`initialize`、`tools/list` 和只读状态调用的证据链之前,不得修改 Token、租户、服务器地址或执行远端写入。连接恢复后先完成只读基线盘点,再按用户授权开始写入。
127
- - 修复 Microi.Code 插件的 MCP 生成逻辑后,必须重新生成配置、重启对应 MCP server,并在当前 AI 会话中再次验证工具发现与一次只读工具调用。
127
+ - 修复 Microi.Agent 插件的 MCP 生成逻辑后,必须重新生成配置、重启对应 MCP server,并在当前 AI 会话中再次验证工具发现与一次只读工具调用。
128
128
 
129
129
  <!-- /microi-progressive:chunk -->
130
- <!-- microi-progressive:chunk id=workspace-conventions-032 sha256=147cbc7a3870a1bc41c6e0b5ec317cf27e0e99e51eb71a1c540ebffde9507f10 -->
130
+ <!-- microi-progressive:chunk id=workspace-conventions-032 sha256=230c8683389d2b1ee4f5ba88dc4e51cb4dc4eb6a89b76a142b07f479ff5be1c8 -->
131
131
  ## MCP 写入超时与降级约定
132
132
 
133
133
  - 写请求超时后的远端回读必须使用独立的短超时,不能继续沿用普通查询的长超时。否则一次 60 秒写超时后,每次回读还可能等待 120 秒,AI 会长期停留在“等待远端回读”,用户误以为菜单按钮或接口引擎完全写不进去。
@@ -143,7 +143,7 @@ VS Code、Cursor 或 Codex 设置界面显示某个 MCP 服务器“已启用”
143
143
  - 发生连续写入超时时,要先停止并发写入,记录具体工具、资源 Key、耗时和回读结果;禁止用“服务器整体不可用”“缓存锁死”等没有日志证据的结论代替诊断。
144
144
 
145
145
  <!-- /microi-progressive:chunk -->
146
- <!-- microi-progressive:chunk id=workspace-conventions-033 sha256=dfa4fbba6af537dfc5b4128f15652474dbbd492cdf8be1b4397cc293953b71f1 -->
146
+ <!-- microi-progressive:chunk id=workspace-conventions-033 sha256=b642bb516a42b50e8b459e5237588e85d71c9715970779e155b88d7c0e8c6536 -->
147
147
  ## Codex MCP 单入口约定
148
148
 
149
149
  - Codex 对普通 MCP 大工具集可能无法稳定注入时,使用插件生成的 `microi_codex` 单入口,不要据此判断服务器或帐号不可用。
@@ -154,7 +154,7 @@ VS Code、Cursor 或 Codex 设置界面显示某个 MCP 服务器“已启用”
154
154
  - VS Code/Copilot、Cursor、Claude Code 仍使用完整 MCP 工具集;不要把 Codex 的 `enabled_tools = ["microi_codex"]` 复制到其他客户端配置。
155
155
 
156
156
  <!-- /microi-progressive:chunk -->
157
- <!-- microi-progressive:chunk id=workspace-conventions-034 sha256=c47c938ab74b167fbaa6947adf58ac17d538b6736224132933328cd53b1283cc -->
157
+ <!-- microi-progressive:chunk id=workspace-conventions-034 sha256=073253c786f85fb23b8b09c71418eaaa00f6a36262bf32e9da857340faa3e75f -->
158
158
  ## .venv Python 环境说明
159
159
 
160
160
  工作区根目录的 `.venv/` 是 Python 虚拟环境,**保留,不要删除**。已安装:
@@ -165,7 +165,7 @@ VS Code、Cursor 或 Codex 设置界面显示某个 MCP 服务器“已启用”
165
165
 
166
166
  AI 执行 Python 脚本时应使用 `.venv\Scripts\python.exe`(Windows)而非系统 Python。
167
167
  <!-- /microi-progressive:chunk -->
168
- <!-- microi-progressive:chunk id=workspace-conventions-035 sha256=811550d457030f1571c957b9d38ed706610467752d03cc1498f52bb9a8656c17 -->
168
+ <!-- microi-progressive:chunk id=workspace-conventions-035 sha256=c114dffea6978f289601a8f71aa83a0466f3d934e96e45bb871af179d319a1e3 -->
169
169
  ## 后端代码改动后的重启验收
170
170
 
171
171
  AI 只要修改了 `Microi.Server/**` 下会影响 `Microi.net.Api` 运行结果的后端源码、配置、控制器、服务、依赖项目或接口行为,任务收尾前必须完成一次“编译 + 重启本地后端 + 健康验证”,不要只用隔离输出目录 build 后结束。
@@ -185,24 +185,24 @@ AI 只要修改了 `Microi.Server/**` 下会影响 `Microi.net.Api` 运行结果
185
185
  这条规则优先于“避免打断正在运行服务”的默认谨慎策略;本地开发联调场景下,用户通常需要 launch profile 当前端口上的后端加载最新代码。
186
186
 
187
187
  <!-- /microi-progressive:chunk -->
188
- <!-- microi-progressive:chunk id=workspace-conventions-036 sha256=90694dd1a4df791de2965274c56791d4d06d131a91b472e8765dfc8a2f8f263a -->
188
+ <!-- microi-progressive:chunk id=workspace-conventions-036 sha256=b91c431950e4c5d268d40c6372e5780b2c7e8b4ca4339871085cda91b7d932bc -->
189
189
  ## MCP 可调用性诊断补充
190
190
 
191
191
  当用户反馈“Codex/VS Code 设置中能看到 MCP,但当前 AI 会话不能调用对应工具”时,不能只回答“当前会话没有注入”。必须按层排查:
192
192
 
193
193
  1. 先确认 `.vscode/mcp.json`、`.cursor/mcp.json`、工作区根 `.mcp.json` 和 `~/.codex/config.toml` 都能解析,且目标 server key 为稳定 ASCII 格式,例如 `microi_itdos`,不要使用中文名或横杠。
194
- 2. 再用 Microi.Code 插件的“诊断 MCP 可调用性”命令,或等价脚本直接启动对应 `mcp-server.js` / `mcp-codex-stdio-adapter.js`,执行 `initialize` 和 `tools/list`,确认 `microi_get_db_schema`、`microi_get_field_list`、`microi_add_field`、`microi_update_field`、`microi_refresh_schema_cache` 等核心工具真实返回。
195
- 3. 如果当前 AI 客户端支持工具发现或延迟加载,AI 必须先主动执行工具发现/热加载流程,例如 `tool_search`、客户端 MCP refresh、Microi.Code 的启动/诊断命令;不要先让用户手动重启、重载或重新生成 MCP。
194
+ 2. 再用 Microi.Agent 插件的“诊断 MCP 可调用性”命令,或等价脚本直接启动对应 `mcp-server.js` / `mcp-codex-stdio-adapter.js`,执行 `initialize` 和 `tools/list`,确认 `microi_get_db_schema`、`microi_get_field_list`、`microi_add_field`、`microi_update_field`、`microi_refresh_schema_cache` 等核心工具真实返回。
195
+ 3. 如果当前 AI 客户端支持工具发现或延迟加载,AI 必须先主动执行工具发现/热加载流程,例如 `tool_search`、客户端 MCP refresh、Microi.Agent 的启动/诊断命令;不要先让用户手动重启、重载或重新生成 MCP。
196
196
  4. 如果真实握手成功但 Codex 当前对话仍没有注入 `mcp__...` 工具,AI 仍应优先使用等价的 MCP stdio JSON-RPC 直连 fallback 完成当前任务:读取对应 MCP 配置、启动 adapter/server、执行 `initialize`、`tools/list`、`tools/call`,并严格遵守该 MCP 绑定的 API Server 和 OsClient 边界。直连脚本必须放在 `.tmp/` 或使用一次性 stdin,不得散落到项目目录。
197
197
  5. 只有在客户端不支持热加载、直连 fallback 也无法完成任务,或写操作边界无法确认时,才告知用户需要新开对话、重载 Codex 或检查 MCP 配置。说明必须写清楚:MCP 配置和进程是否可用、当前会话为什么没有注入工具、已经尝试过哪些自动恢复动作。
198
198
  6. 如果握手失败,要把失败层级说清楚:配置文件解析失败、路径不存在、token 文件缺失、MCP 进程启动失败、`initialize` 失败、`tools/list` 缺核心工具,不能把这些问题混成“用户没启用 MCP”。
199
- 7. Microi.Code 生成 MCP 配置时应清理旧的中文/横杠 Microi MCP key,只保留 `microi_<osClient>` 或 `microi_<osClient>_<host>` 形式,避免不同 AI 客户端因 namespace 不稳定而无法注入工具。
199
+ 7. Microi.Agent 生成 MCP 配置时应清理旧的中文/横杠 Microi MCP key,只保留 `microi_<osClient>` 或 `microi_<osClient>_<host>` 形式,避免不同 AI 客户端因 namespace 不稳定而无法注入工具。
200
200
 
201
201
  <!-- /microi-progressive:chunk -->
202
- <!-- microi-progressive:chunk id=workspace-conventions-037 sha256=8906aca9ab0a621ffc8f50c4909e6a858543acd803e427880dbdf5932a52ec8f -->
202
+ <!-- microi-progressive:chunk id=workspace-conventions-037 sha256=287a898ffb90322af12deea949c4bcf43b9ac9a355419561898cde8de2b99ac8 -->
203
203
  ## Windows MCP 控制台闪窗复盘
204
204
 
205
- 当用户反馈“打开 Microi.Code、添加服务器或初始化 MCP 后连续弹出并立即关闭多个 cmd 窗口”时,应按进程风暴排查,不能只给已有 `spawn` 补 `windowsHide`:
205
+ 当用户反馈“打开 Microi.Agent、添加服务器或初始化 MCP 后连续弹出并立即关闭多个 cmd 窗口”时,应按进程风暴排查,不能只给已有 `spawn` 补 `windowsHide`:
206
206
 
207
207
  1. MCP 配置文件是各客户端的事实源。内容未变化时必须使用 write-if-changed,禁止仅为“同步”而反复改写文件并触发监听器重启。
208
208
  2. 生成 `~/.codex/config.toml` 后,禁止再隐式循环执行 `codex mcp list/remove/add`;服务器数量越多,这类逐项 CLI 同步越会放大成几十个瞬时控制台进程。
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=workspace-conventions-038 sha256=0f36b907aab83c32be0403ce9152d1cf6ce3da23c31d6ec337643236212e77fb -->
5
+ <!-- microi-progressive:chunk id=workspace-conventions-038 sha256=57098466d31d0636bf330fde545daff8cb8e4116ac6ea2efff8abc729fdcef77 -->
6
6
  ## CLI 与 IDE 插件错版共存约定
7
7
 
8
8
  - CLI 与 IDE 插件共用配置、Token、MCP、Skills 或生成文件时,所有持久化协议必须按“新字段可选、旧字段保留、未知字段不删除”设计。不得将 JSON 解析到旧类型后只序列化已知字段。