@microi.net/cli 6.0.1 → 6.0.2

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 (41) hide show
  1. package/.codebuddy-plugin/marketplace.json +2 -2
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +43 -43
  4. package/.mcp.json +1 -1
  5. package/.workbuddy-plugin/marketplace.json +2 -2
  6. package/.workbuddy-plugin/plugin.json +1 -1
  7. package/LICENSE +21 -21
  8. package/README.md +71 -71
  9. package/assets/build-meta.json +7 -7
  10. package/assets/feature-matrix.json +138 -138
  11. package/assets/logo.svg +4 -4
  12. package/cordis.patch.yml +1 -1
  13. package/package.json +82 -82
  14. package/scripts/codex-marketplace.json +20 -20
  15. package/scripts/mcp-codex-stdio-adapter.js +189 -189
  16. package/scripts/mcp-server.js +81 -81
  17. package/scripts/mcp-trae-windows-launcher.cmd +21 -21
  18. package/scripts/microi-cli-mcp.js +7 -7
  19. package/scripts/microi-cli.js +60 -59
  20. package/scripts/microi-codex-broker.js +466 -466
  21. package/scripts/microi-codex-router.js +635 -635
  22. package/scripts/microi-skills.meta.json +220 -220
  23. package/skills/.microi-skills-version.json +6 -6
  24. package/skills/.progressive-disclosure-manifest.json +64 -64
  25. package/skills/microi-client-frontend/SKILL.md +266 -258
  26. package/skills/microi-codex/SKILL.md +130 -116
  27. package/skills/microi-codex-installer/SKILL.md +4 -2
  28. package/skills/microi-deployment/SKILL.md +1 -1
  29. package/skills/microi-microservice/SKILL.md +348 -344
  30. package/skills/microi-system-delivery/SKILL.md +100 -98
  31. 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 +2 -2
  32. package/skills/page-engine/SKILL.md +231 -227
  33. package/skills/playwright-e2e/SKILL.md +33 -31
  34. package/skills/v8-cache-pattern/SKILL.md +8 -4
  35. package/skills/v8-export-import/SKILL.md +5 -0
  36. package/skills/v8-file-upload/SKILL.md +4 -0
  37. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +10 -2
  38. package/skills/workspace-conventions/SKILL.md +111 -102
  39. 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 +4 -3
  40. 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 +4 -4
  41. 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 +6 -4
@@ -7,6 +7,8 @@ description: 按 Microi 系统真实业务逻辑进行 Playwright 全自动化
7
7
 
8
8
  # Microi 吾码 Playwright E2E 自动化测试
9
9
 
10
+ 桌面人工补充或新建浏览器验收默认只选一个常规 CSS 视口:优先复现用户实际浏览器尺寸,未知时用 1920×1080。截图文件像素还受设备缩放影响,不能据此强制 4K;仅用户明确要求或问题涉及超宽屏时追加 4K,移动端或响应式改动按需补充相关窄屏。沿用已有有效验收,不为截图分辨率重复整套用例;正式脚本既有 Full 不在运行中删减。核心发布已冻结后,新增规范文案独立交付,不因此重启合格候选的构建、测试或上传。
11
+
10
12
  每轮测试成功、失败、取消或中断退出时,在 `finally` / teardown 中关闭本任务 browser/context 和临时写入进程,再按 [测试临时文件随任务清理](../workspace-conventions/SKILL.md#测试临时文件必须随任务清理强制) 删除本任务 `.tmp` 下的一次性脚本、夹具及无用途的截图、trace、video、日志和编译副本。交付必需证据先最小归档并回读,失败排查只暂留有明确归属和清理时机的最小集合;报告和截图路径规则不构成永久保留许可,结束后必须单独验收清理结果。
11
13
 
12
14
  > **2026-05 更新(重要)**:Microi.Agent 插件生成的E2E 配置、用例和帮助器保留在 `<projectRoot>/.microi-e2e/`;运行产物统一输出到 `<gitRoot>/.tmp/microi-e2e/<项目相对路径>/`,**不再**写入 `tests/e2e/`、根目录 `playwright.config.js` 或 `.env.e2e.example`。
@@ -19,8 +21,8 @@ description: 按 Microi 系统真实业务逻辑进行 Playwright 全自动化
19
21
 
20
22
  真实依赖与发布范围沿用 `../workspace-conventions/SKILL.md` 的“平台回归与独立应用测试归属”:常规验证指定 MCP 实际使用的 MySQL、MongoDB、Redis 和 MinIO 或 OSS/HDFS,不要求额外 SQL Server 环境;仅用户明确指定 SQL Server 问题时才做其专项。按 [发布测试矩阵](../microi-system-delivery/references/progressive-02-自动化测试必须覆盖的坑.md#按指定-mcp-选择发布测试矩阵) 记录实际覆盖,保留正常登录、业务闭环与资源收尾,不以连接成功代替真实读写验收。
21
23
 
22
- <!-- microi-progressive:begin -->
23
- <!-- microi-progressive:chunk id=playwright-e2e-000 sha256=f04614f276c139cfa50b9e46e89857675c6dc5e7cf0cfbfde76d6e6dbe9746c9 -->
24
+ <!-- microi-progressive:begin -->
25
+ <!-- microi-progressive:chunk id=playwright-e2e-000 sha256=f04614f276c139cfa50b9e46e89857675c6dc5e7cf0cfbfde76d6e6dbe9746c9 -->
24
26
  ## 是否需要 `-e2e` 后缀
25
27
 
26
28
  建议保留 `playwright-e2e` 这个 skill 名称。
@@ -29,8 +31,8 @@ description: 按 Microi 系统真实业务逻辑进行 Playwright 全自动化
29
31
  - `-e2e` 能让 AI 明确区分它和 `v8-debugging`、`v8-crud-api`、`playwright-ct` 等其他能力。
30
32
  - 如果未来要补更细的能力,可以新增 `playwright-api` 或 `visual-regression`,不要把当前 skill 改成泛泛的 `playwright`。
31
33
 
32
- <!-- /microi-progressive:chunk -->
33
- <!-- microi-progressive:chunk id=playwright-e2e-001 sha256=703786ae7a5a52cb39664f1c82de7fb7aa7dfece511046d3757da64918c23063 -->
34
+ <!-- /microi-progressive:chunk -->
35
+ <!-- microi-progressive:chunk id=playwright-e2e-001 sha256=703786ae7a5a52cb39664f1c82de7fb7aa7dfece511046d3757da64918c23063 -->
34
36
  ## 适用范围
35
37
 
36
38
  - PC 管理端:`Microi.Client`、租户后台、运营后台。
@@ -41,8 +43,8 @@ description: 按 Microi 系统真实业务逻辑进行 Playwright 全自动化
41
43
 
42
44
  不适合把 Playwright 用来替代 V8 单函数调试。单个接口引擎的入参输出优先用 VS Code 插件远程执行、MCP `microi_run_engine` 或后端单元测试。
43
45
 
44
- <!-- /microi-progressive:chunk -->
45
- <!-- microi-progressive:chunk id=playwright-e2e-002 sha256=acef3e589cf11f3c197ee0b0ccf56d96b3f286263d54161b3c260e07c2090ed0 -->
46
+ <!-- /microi-progressive:chunk -->
47
+ <!-- microi-progressive:chunk id=playwright-e2e-002 sha256=acef3e589cf11f3c197ee0b0ccf56d96b3f286263d54161b3c260e07c2090ed0 -->
46
48
  ## 临时文件与产物放置规则(必须遵守)
47
49
 
48
50
  AI 在工作区内生成的**一次性临时脚本、诊断文件、截图、测试报告**等,**绝对不能放在工作区根目录**,必须放在以下指定位置:
@@ -62,8 +64,8 @@ AI 在工作区内生成的**一次性临时脚本、诊断文件、截图、测
62
64
 
63
65
  **2026-06 强制补充**:AI 手写的一次性 Playwright 验证脚本、运行日志、截图和报告只能写到工作区根目录 `.tmp/`。不要写到 `Microi.Client/`、`Microi.Server/`、`microi.doc/` 或其它子项目目录,即使这些目录已有 `tests/` 目录也不例外。只有 Microi.Agent 插件正式初始化的可复用 E2E 工程,才使用 `.microi-e2e/`。
64
66
 
65
- <!-- /microi-progressive:chunk -->
66
- <!-- microi-progressive:chunk id=playwright-e2e-003 sha256=69b8842a221a0de60f8605c5059deee391be0f16f0b6cbc5ddfb3cfd210268db -->
67
+ <!-- /microi-progressive:chunk -->
68
+ <!-- microi-progressive:chunk id=playwright-e2e-003 sha256=69b8842a221a0de60f8605c5059deee391be0f16f0b6cbc5ddfb3cfd210268db -->
67
69
  ## 标准目录
68
70
 
69
71
  前端项目中推荐使用 `tests/e2e`,而不是根目录 `e2e`,这样能和单元测试、组件测试并列。
@@ -83,8 +85,8 @@ AI 在工作区内生成的**一次性临时脚本、诊断文件、截图、测
83
85
  report/
84
86
  ```
85
87
 
86
- <!-- /microi-progressive:chunk -->
87
- <!-- microi-progressive:chunk id=playwright-e2e-004 sha256=4f5e11baf4651c11b5f9819a0b4f33ce2590db1733d4db72814bd1a25daf56ff -->
88
+ <!-- /microi-progressive:chunk -->
89
+ <!-- microi-progressive:chunk id=playwright-e2e-004 sha256=4f5e11baf4651c11b5f9819a0b4f33ce2590db1733d4db72814bd1a25daf56ff -->
88
90
  ## 必备环境变量
89
91
 
90
92
  ```bash
@@ -105,8 +107,8 @@ PW_TEST_PASSWORD=<从本地配置读取或用环境变量覆盖>
105
107
  PW_HOME_PATH=/#/pages/index/index
106
108
  ```
107
109
 
108
- <!-- /microi-progressive:chunk -->
109
- <!-- microi-progressive:chunk id=playwright-e2e-005 sha256=51567cea5fca434f9b031fef0871454100cf4715dfb65695dc1722bd275399be -->
110
+ <!-- /microi-progressive:chunk -->
111
+ <!-- microi-progressive:chunk id=playwright-e2e-005 sha256=51567cea5fca434f9b031fef0871454100cf4715dfb65695dc1722bd275399be -->
110
112
  ## 本地测试账号自动发现
111
113
 
112
114
  当没有显式传入 `PW_TEST_ACCOUNT` / `PW_TEST_PASSWORD` / `MICROI_OSCLIENT` 时,AI 不要把账号密码写入后端配置来制造旁路:
@@ -130,8 +132,8 @@ PW_HOME_PATH=/#/pages/index/index
130
132
  5. 人工第二租户至少使用无痕窗口;多个无痕窗口可能共享同一临时会话,更多并行目标使用独立
131
133
  Profile/`--user-data-dir`。自动化收尾只关闭自己创建的 context/browser。
132
134
 
133
- <!-- /microi-progressive:chunk -->
134
- <!-- microi-progressive:chunk id=playwright-e2e-006 sha256=88e1002cae934acd2de5af2f77f371a9ea152a525eecf11b49fe182b16a56044 -->
135
+ <!-- /microi-progressive:chunk -->
136
+ <!-- microi-progressive:chunk id=playwright-e2e-006 sha256=88e1002cae934acd2de5af2f77f371a9ea152a525eecf11b49fe182b16a56044 -->
135
137
  ## 后端改动后的 E2E 前置动作
136
138
 
137
139
  如果本轮任务修改过 `Microi.Server/**` 后端源码、配置、控制器、服务、依赖项目或接口行为,跑 Playwright、页面截图、接口验收或前后端联调前,必须先按 `workspace-conventions` 的“后端代码改动后的重启验收”完成:
@@ -143,15 +145,15 @@ PW_HOME_PATH=/#/pages/index/index
143
145
 
144
146
  不要只说“代码已编译”或“需要用户自己重启后端”;除非用户明确要求不要中断当前服务,否则 AI 要主动完成重启。
145
147
 
146
- <!-- /microi-progressive:chunk -->
147
- <!-- microi-progressive:chunk id=playwright-e2e-007 sha256=5efaf4a0ce03afc3cfc7863e0b7adadbcfcbb031bc64a1c543d611b9a489bccf -->
148
+ <!-- /microi-progressive:chunk -->
149
+ <!-- microi-progressive:chunk id=playwright-e2e-007 sha256=948194cce3a29cfec216546acab77314ccaa1c0afad3cbcfd6b426a94f36d4ac -->
148
150
  ## 服务自启动纪律(必做)
149
151
 
150
152
  执行自动化测试、截图巡检、接口引擎回读、`/apiengine/{key}` 验收时,如果本地后端或前端不可达,不能把 `fetch failed`、`ECONNREFUSED`、`000 Failed to connect`、端口无人监听当作任务终点。必须先自动启动所需服务,再继续完整验证。
151
153
 
152
154
  同一工作区有多个 AI 对话时,服务自启动还必须遵守共享生命周期:
153
155
 
154
- - 先执行 `../workspace-conventions/SKILL.md` 的“本地测试程序与依赖生命周期”统一规则:优先复用健康的本地源码程序、隔离目录中的编译产物和同组既有依赖,不按测试任务重复创建 Docker/Compose。需要双节点时启动两个本机程序进程连接同组依赖,不等于建立两套 Docker 环境。
156
+ - 先执行 `../workspace-conventions/SKILL.md` 的“本地测试程序与依赖生命周期”统一规则:默认复用当前 MCP 对应的 MySQL、Redis、MongoDB、MinIO/OSS,以及健康本地源码程序或隔离目录的编译产物;不按测试任务重复创建 Docker/Compose,不例行询问临时容器许可。需要双节点时启动两个本机程序进程连接同组依赖,不等于建立两套 Docker 环境。不得已创建的临时容器和纯测试资源每轮必须精确删除并回读。
155
157
  - API 服务启动前执行 `node Microi.Server/tools/release-lock.mjs assert api <工作区根>`,PC 服务使用 `assert pc`。Playwright `webServer`、自愈脚本或 AI 只在对应范围发布时等待;官网/Agent 发布不阻塞 `61500/61501`。同时启动前后端时分别检查两项。旧锁仅在真实进程证明所属范围后缩小阻塞范围,未知锁继续保护,不得删除活跃锁。
156
158
  - 端口健康且 PID/命令行属于当前工作区时直接复用,不得每个对话都无条件“先杀再启动”。
157
159
  必须重载源码时才串行重启,并在状态播报中说明旧/新 PID。
@@ -186,17 +188,17 @@ uni-app H5 或移动端前端按项目自身命令启动,例如 `npm run dev:h
186
188
 
187
189
  执行顺序:先检查端口/健康接口是否可达;不可达则用后台终端启动;等待服务输出监听地址;再重试接口同步、页面打开、Playwright 截图和断言。只有启动命令失败、缺少依赖、数据库连接失败、端口冲突无法自动换端口且无替代配置时,才算真正阻塞,并且要报告具体失败命令和错误。
188
190
 
189
- <!-- /microi-progressive:chunk -->
190
- ## 详细参考路由(渐进披露)
191
-
192
- ### 菜单微服务生命周期验收(强制)
193
-
194
- 菜单型 MicroService 使用 `runtime-keep-alive` 单一缓存所有者。E2E 必须覆盖至少 3 条子路由连续切换 8 轮,确认返回后状态仍在、页面无永久骨架屏或空白;继续打开第 6 个实例,确认 LRU 只淘汰最久未使用的隐藏实例。还要观察 `appstate-change`:`afterhidden` 后后台任务应暂停,`aftershow` 后应幂等恢复;关闭 Tab、关闭其它/全部以及退出登录后,对应运行时必须被销毁。
195
-
196
- 仅在当前任务涉及对应主题时读取;下列文件合计保留了原 SKILL.md 的全部详细知识。
197
-
198
- - [references/progressive-01-全自动登录-免验证码-但不免密码-必读.md](references/progressive-01-全自动登录-免验证码-但不免密码-必读.md):全自动登录(免验证码,但不免密码)——必读;表单引擎卡死/递归更新全自动化诊断;移动端视觉与资源验收;测试证据必须绑定需求编号;移动端/H5 回归纪律
199
- - [references/progressive-02-文字对比度与可读性自动化检查-必做.md](references/progressive-02-文字对比度与可读性自动化检查-必做.md):文字对比度与可读性自动化检查(必做);安装;playwright.config.js 模板
200
- - [references/progressive-03-microi-helper-模板.md](references/progressive-03-microi-helper-模板.md):Microi helper 模板;典型用例;Microi 专属测试策略;最少冒烟集;完整业务验收门槛;与 MCP 的配合;与 VS Code 插件的配合
201
- - [references/progressive-04-ci-建议.md](references/progressive-04-ci-建议.md):CI 建议;常见问题;前端微服务 E2E 必测点;动态模块按钮验收
202
- <!-- microi-progressive:end -->
191
+ <!-- /microi-progressive:chunk -->
192
+ ## 详细参考路由(渐进披露)
193
+
194
+ ### 菜单微服务生命周期验收(强制)
195
+
196
+ 菜单型 MicroService 使用 `runtime-keep-alive` 单一缓存所有者。E2E 必须覆盖至少 3 条子路由连续切换 8 轮,确认返回后状态仍在、页面无永久骨架屏或空白;继续打开第 6 个实例,确认 LRU 只淘汰最久未使用的隐藏实例。还要观察 `appstate-change`:`afterhidden` 后后台任务应暂停,`aftershow` 后应幂等恢复;关闭 Tab、关闭其它/全部以及退出登录后,对应运行时必须被销毁。
197
+
198
+ 仅在当前任务涉及对应主题时读取;下列文件合计保留了原 SKILL.md 的全部详细知识。
199
+
200
+ - [references/progressive-01-全自动登录-免验证码-但不免密码-必读.md](references/progressive-01-全自动登录-免验证码-但不免密码-必读.md):全自动登录(免验证码,但不免密码)——必读;表单引擎卡死/递归更新全自动化诊断;移动端视觉与资源验收;测试证据必须绑定需求编号;移动端/H5 回归纪律
201
+ - [references/progressive-02-文字对比度与可读性自动化检查-必做.md](references/progressive-02-文字对比度与可读性自动化检查-必做.md):文字对比度与可读性自动化检查(必做);安装;playwright.config.js 模板
202
+ - [references/progressive-03-microi-helper-模板.md](references/progressive-03-microi-helper-模板.md):Microi helper 模板;典型用例;Microi 专属测试策略;最少冒烟集;完整业务验收门槛;与 MCP 的配合;与 VS Code 插件的配合
203
+ - [references/progressive-04-ci-建议.md](references/progressive-04-ci-建议.md):CI 建议;常见问题;前端微服务 E2E 必测点;动态模块按钮验收
204
+ <!-- microi-progressive:end -->
@@ -55,20 +55,20 @@ V8.Cache.HashDelete(hashKey, 'Reserved');
55
55
  平台 Redis 管理器固定路由为 `#/mci-redis-manager`:
56
56
 
57
57
  - Redis 管理器接口要求已登录且当前用户 `Level >= 9999`。它只接受 `tenant`(当前租户默认 Redis)和 `saved`(主租户 `mci_redis_connection` 中保存的额外连接)两种模式;当前源码明确拒绝 `temporary`,也没有匿名临时连接模式。
58
+ - 从 v8.5.12 起,Redis 管理器由 `Microi.Cache` 强制实施租户边界:主租户身份以 API 宿主的 `OsClient` 配置为准,主租户超级管理员可管理当前受控连接中的全部 Key;子租户超级管理员只能扫描、读取和维护完整的 `Microi:{当前OsClient}:` 前缀,不能靠 `Level=9999`、请求参数或切换数据库取得主租户权限。精确读取、删除、覆盖、重命名的两端、TTL、批量删除和缓存失效均执行同一检查,批量请求中出现越权 Key 时整批拒绝。普通业务 `V8.Cache` 仍只允许当前租户。
59
+ - 子租户只能选择当前连接配置的数据库;MCP 省略 `database` 时使用后端配置,不默认传 `0`。页面以 `CanSelectDatabase` / `AllowedKeyPrefix` 为事实,不能从前端账号等级推断。`*` 与普通搜索词自动限定当前租户,显式其它租户前缀直接拒绝。子租户统计不返回共享实例 INFO、DBSIZE 或节点全局 L1 统计;扫描样本数量通过 `KeyCountIsEstimate` 标识。
58
60
  - 保存连接记录必须按 `TenantOsClient` 隔离,密码只在后端保护并且不回传前端;调用方只传保存后的 `connectionId`。
59
61
  - Key 列表必须使用 `SCAN` 游标分页,禁止在生产 Redis 上使用阻塞式 `KEYS *`。内容查看支持 String、Hash、List、Set、Sorted Set、Stream;集合内容要分页并限制单次条数。
60
62
  - 写入 Hash/List/Set/Sorted Set 时先完整解析 JSON,再覆盖旧 Key;删除、覆盖、重命名和 TTL 变更属于破坏性操作,必须先展示目标连接、数据库与 Key 并要求明确确认。
61
63
  - 管理接口不开放任意 Redis 命令、Lua、`FLUSHALL` 或 `FLUSHDB`;批量删除最多 500 个 Key,重命名不覆盖既有目标。
62
64
 
63
- 对应后端管理入口包括只读统计 `/api/cache/statistics`、节点 L1 精确失效
64
- `/api/cache/invalidate`、模式失效 `/api/cache/invalidate-pattern`,以及 Redis 管理器
65
- 路由前缀 `/api/cache/redis/`。它们都属于受权管理能力,不是匿名业务 API。
65
+ 当前统一入口为 Managed 接口引擎 `platform-cache-manager`,通过 `V8.Method.ManageCache` 调用可信后端;旧 `/api/cache/*` 路由由兼容入口处理。节点全局 `Statistics` 只开放主租户,子租户使用受限 `RedisStatistics`。这些都是受权管理能力,不是匿名业务 API。
66
66
 
67
67
  MCP 默认操作当前 MCP `OsClient` 的租户 Redis;额外连接只传管理页保存后的 `connectionId`,禁止在 MCP 参数、日志或回答中传递 Redis 密码。
68
68
 
69
69
  | MCP 工具 | 用途 | 确认规则 |
70
70
  |------|------|------|
71
- | `microi_redis_statistics` | 服务器、内存、客户端、命中率与 Key 类型统计 | 只读 |
71
+ | `microi_redis_statistics` | 主租户服务器统计 / 子租户命名空间 Key 样本统计 | 只读 |
72
72
  | `microi_redis_list_keys` | SCAN 分页检索 Key、类型、TTL、内存估算 | 只读 |
73
73
  | `microi_redis_get_key` | 分页查看单个 Key 内容 | 只读 |
74
74
  | `microi_redis_delete_keys` | 单个或批量删除,最多 500 个 | `confirmExecution="DELETE"` |
@@ -310,3 +310,7 @@ fire-and-forget;否则数千个 `SCAN/DEL/PUBLISH` 会同时进入同一个
310
310
  - 每个租户可能使用不同 Redis,订阅初始化状态不得用一个全局 `static bool` 共享;
311
311
  - 缓存实例必须保存创建时的准确 `OsClient`,按模式 `SCAN/DEL` 时直接使用该租户连接;禁止根据 Redis DB 编号反推连接,因为不同租户可能在不同服务器上使用相同 DB 编号;
312
312
  - 等待发布只解决回压,业务写入和缓存失效仍需保持 `OsClient` 隔离及可重试幂等。
313
+
314
+ ## Redis 管理隔离验收
315
+
316
+ 使用已登记的隔离主/子租户,在同一 Redis 数据库创建有短 TTL 的唯一测试 Key,逐个验证两台 API:子租户正常维护自身 String/Hash/List/Set/Sorted Set;扫描不返回主租户或相似前缀;读取、混合批删、跨前缀重命名、TTL、覆盖和失效越权全部拒绝,拒绝后由主租户回读原值未变。验收后只清理登记的测试 Key。禁止用官方业务租户做可写 Full,也不能用物理分库替代 Key 授权测试。
@@ -217,3 +217,8 @@ return { Code: 1, Data: dataList, DataCount: dataList.length };
217
217
  - 父子表边界:固定父记录外键优先于 Excel 同名列;接口引擎仍须核对目标表、项目/主记录存在性、业务状态和额度。需要整批钩子的模块禁止 `ContinueOnError`。
218
218
  - 重复提交:客户端每次重新选择文件生成新的 `_ImportIdempotencyKey`,同一 HTTP 重试沿用该键;服务端按租户、表、菜单、用户和请求键保存状态,`Pending/Running/Succeeded` 均不得重复创建写入任务。该机制不等同于“相同文件作为新请求再次上传”的内容判重。
219
219
  - 自动化检查:至少覆盖同批汇总超量、稳定行锁先于累计回查、整批回滚、父外键不可被 Excel 覆盖、同一请求重试只写一次,以及错误中包含行号和业务上限明细。
220
+
221
+ ## 替换导入接口的上传与重试验收
222
+
223
+ - `ImportApi` 相对地址必须按当前 `ApiBase`(含路径前缀)解析,并携带当前登录与租户上下文;完整地址和 `$ApiBase$` 继续兼容。nginx HTTP 405 可能源于前端误向静态站点上传,先核对实际请求 URL,不能据错误页排除代码问题。
224
+ - 同步替换接口返回 `Code=1`,未配置 `ImportProgressApi` 且没有运行中状态时,直接展示最终结果与行数;不得查询它从未写入的标准导入进度。异步替换接口须配置进度协议。明确失败后重试必须把保留的原文件重新放入上传队列,同时保留映射与操作标识;HTTP 200 的 `Code=0` 也属于失败。超过 90 秒的未完成请求只提示等待并阻止重复提交,不能把等待时间当成失败、自动重放或宣称服务端已取消。自定义接口幂等仍需由业务实现。验收覆盖真实 multipart、同步成功、HTTP 405、同文件重试、迟到回调与标准异步兼容。
@@ -7,6 +7,10 @@ description: Microi V8 与 MCP 文件上传下载指南。用于处理流式 AI
7
7
 
8
8
  # Microi V8 文件上传下载
9
9
 
10
+ ## 源码仓库资源隔离(默认强制)
11
+
12
+ 截图、配图、PDF/PPT、音视频、压缩包、模型、安装包和其它大体积交付资源统一通过 MCP 上传 CDN,禁止提交到 Gitee/GitHub 源码历史,即使压缩到小于 1 MB 也不能把截图或附件改放源码仓库。官方资源使用已校验的 `microi_itdos`(`https://api.itdos.com + OsClient=iTdos`)公有桶与 `https://file.microi.net` 前缀;私有资料按租户实际权限保持私有。源码只存 URL、字节数、SHA-256、MIME 等轻量清单。上传后独立回读实际字节和类型,PDF 验证 Range;超过 Base64 协议容量使用流式/分片工具。暂存区及每个待推送提交都须排除资源本体,详细门禁遵循 [工作区默认 CDN 规范](../workspace-conventions/SKILL.md#截图与大体积资源必须走-cdn默认强制)。
13
+
10
14
  你正在为 Microi 吾码平台编写文件上传/下载/返回相关代码。平台分布式存储(HDFS)支持阿里云OSS、MinIO、亚马逊S3,存储方案由 SaaS 引擎按租户配置。上传对象的 `Content-Type` 由框架按实际对象路径统一确定,覆盖 HTML、JS/MJS、CSS、JSON/MAP、SVG、字体与 WASM,未知后缀保留 `application/octet-stream`。MinIO、S3、OSS 普通与分片上传使用同一映射;该映射不替代上传权限、内容和配额校验。旧对象不会因后端升级自动改变元数据:先核对字节数和 SHA-256,再修正类型或按正式应用发布流程产生新版本。不要把源码与公有编译产物混在一起,也不要关闭 `nosniff` 掩盖类型错误。
11
15
 
12
16
  文件与发布测试默认使用当前 MCP 连接下、当前租户实际生效的 HDFS Provider;先只读核实提供商与对象范围,沿已授权隔离前缀执行公私权限、原始字节、哈希、MIME 与写后回读断言。已确定当前环境后,不再为其它 OSS/MinIO/S3 反复询问或新建存储;仅明确的提供商缺陷、迁移或兼容任务才扩展矩阵,并逐项报告真实执行与未覆盖范围。提供商不可用或断言失败必须保留真实错误,不能换提供商或省略回读来冒充通过。
@@ -2,7 +2,7 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=v8-security-005 sha256=09f88aaf8da914fdbec8bc8668cef588a02217354a210515230471fbfdddd27f -->
5
+ <!-- microi-progressive:chunk id=v8-security-005 sha256=657db8189d96c594073735e9182af9d3e9a91f4f7dd111ecf2c7fe1eec6d7ede -->
6
6
  ## 2. 权限校验
7
7
 
8
8
  ### DiyToken 是平台会话与权限入口,不替换为 ASP.NET Identity
@@ -16,6 +16,14 @@ DiyToken 与 `sys_user`、`OsClient`、终端 `did`、共享 Redis 登录态、
16
16
 
17
17
  开发新登录入口时只实现“验证身份 -> 获取仍启用的 `sys_user` -> 签发 DiyToken”,禁止并行创建第二套用户、角色、权限 Token 或会话有效期规则。
18
18
 
19
+ ### MCP 角色开发授权
20
+
21
+ `Level >= 9999` 保留完整 MCP 权限及授权管理入口。其他账号须由超级管理员在开发工具连接窗口或角色编辑中明确授予 `McpDevelopment`,两处使用同一 `sys_rolelimit` 记录和并发版本;没有记录、损坏或重复配置一律拒绝。
22
+
23
+ 每次请求从当前租户主库复核活动用户、有效角色、模块/表及操作开关。访问范围与创建/修改、删除必须由同一角色同时满足;Full 只读与 Role 写入不得合成 Full 写入。Role 范围只支持明确白名单的安全元数据编辑及保留行/字段授权的业务操作,不开放可执行脚本、SQL、数据源或权限配置。已验签的 MCP/VSCode 会话也不能改走普通 FormEngine/接口引擎 HTTP 绕过限制。
24
+
25
+ 仅对获准的 MCP 调用,完整范围且同时具有创建/修改、删除的角色可作为可信开发者执行服务端开发;这类权限能够间接访问或修改数据,不得宣传为隔离的纯界面编辑。它不改变账号 Level,不放宽普通后台管理入口,不允许普通账号改写 MCP 授权。撤销须即时生效;受限角色、完整只读、写但不可删、多角色组合、普通 HTTP 绕过、跨租户、旧 Token 与并发授权保存必须纳入验收。
26
+
19
27
  ### 平台 FormEngine 授权边界
20
28
 
21
29
  **Token 只完成身份认证,不是任意表的访问凭证。** 来自浏览器、UniApp、SDK 或其它外部客户端的通用 FormEngine 请求,必须由服务端完成以下授权,V8 或前端代码不得自行模拟、放宽:
@@ -39,7 +47,7 @@ DiyToken 与 `sys_user`、`OsClient`、终端 `did`、共享 Redis 登录态、
39
47
 
40
48
  跨租户公共发现接口可以匿名,但返回值必须采用严格字段白名单,只返回公开标识和展示信息,禁止返回 `ApiKey`、上游 Endpoint、连接串或内部配置。例如官方 AI 中转模型清单应保持 `IsEnable=1`、`StopHttp=0`、`AllowAnonymous=1`,且只返回模型 Id、展示名等公开字段;将这类被其它租户服务器调用的发现接口误改为非匿名,会让所有消费者得到空模型列表或 `NoAuth`,属于破坏性配置变更。发布和升级后必须用无 Token 的真实 HTTP 请求验证返回字段与匿名状态。
41
49
 
42
- > 后端接口引擎、后端表单 V8 和平台内部调用由服务端在构造参数时设置不可由 HTTP JSON 注入的 `_TrustedServerInvocation`,因此调用 `V8.FormEngine` 不要求 `_SysMenuId`。`_InvokeType:'Server'` 只是事件调用语义,不是外部客户端可用的授权开关;普通用户即使在请求中伪造这两个字段也不能成为可信调用。任何能让普通用户写 V8、接口引擎、任务或数据源配置的管理入口本身都必须限制为 `Level >= 9999`,否则会重新获得任意数据执行能力。
50
+ > 后端接口引擎、后端表单 V8 和平台内部调用由服务端在构造参数时设置不可由 HTTP JSON 注入的 `_TrustedServerInvocation`,因此调用 `V8.FormEngine` 不要求 `_SysMenuId`。`_InvokeType:'Server'` 只是事件调用语义,不是外部客户端可用的授权开关;普通用户即使在请求中伪造这两个字段也不能成为可信调用。能写 V8、接口引擎、任务或数据源的普通管理入口仍限制为 `Level >= 9999`。MCP 唯一例外是上节明确授权的 Full 范围且同时具有创建/修改、删除权限的可信开发角色,并须通过 MCP 专用逐请求鉴权;不能由菜单授权或请求参数推导此例外。
43
51
 
44
52
  > 外层 `AddFormData` 的客户端菜单/`Add` 权限校验与事件内部执行权是两件事:前者防止无新增权限的用户进入事件,后者允许已经进入的 `SubmitBeforeServerV8` / `SubmitAfterServerV8` 像接口引擎一样在当前租户内执行复杂 SQL、跨表事务和其它表 CRUD。不要把客户端菜单范围再次套到服务器 V8 的嵌套调用。
45
53
 
@@ -1,106 +1,115 @@
1
- ---
2
- name: workspace-conventions
3
- description: 每次 Microi 任务开始前必读的基础规范。用于识别创始人源码工作区,检查平台功能的应用商城、官方文档、Skills 与 MCP 交付,并遵守共享工作区、进程、资源和发布边界。
4
- ---
5
-
6
- # Microi 工作区全局约定
7
-
8
- ## 测试临时文件必须随任务清理(强制)
9
-
10
- 本节适用于开发、测试、诊断和发布产生的全部自有临时资产,包括工作区根 `.tmp/`、宿主临时目录(如 `$CODEX_HOME/tmp`)和隔离 Git worktree,并替代历史“任务完成后可以不清理”的约定。目录位置和 `.gitignore` 不改变收尾责任。
11
-
12
- - 创建前使用独立的 `.tmp/<任务标识>/`,登记本任务创建的目录、文件、进程及用途;不得混用其它任务目录。每轮测试成功、失败、取消或中断退出时都执行 `finally` / teardown,先关闭本任务的写入者、浏览器和临时服务,再删除本轮已无用途的临时文件;不能等用户再次要求清理磁盘。
13
- - 默认删除本任务的一次性脚本、下载/解压副本、编译输出、隔离依赖、测试夹具和冗余截图/trace/video/日志。交付必需的少量报告、关键截图、发布哈希/回执先脱敏并归档到对应项目的长期交付目录,回读归档完整后再删临时副本;不得把完整构建树、源码副本或依赖目录当作验收证据长期留存。
14
- - 失败仍需排查或下一阶段确实依赖的文件,只保留可解释的最小集合,记录路径、体积、原因、归属和清理时机;排查/依赖结束后立即删除。崩溃来不及执行 teardown 时,下次接续先核对自有清单并补清;不能以“测试失败”“以后可能有用”为由无限保留。
15
- - 隔离副本只为实际并发冲突或构建输入冻结创建,优先复用合适的工作树、稀疏检出和最小夹具;禁止每次重试复制整套源码、Git 历史、依赖、SDK 和运行目录。创建前盘点源盘与目标盘可用空间及已有同类副本,按本轮实际需求估算新增体积;测试结束先回收旧运行/编译目录,再创建下一轮。不要把临时目录移到另一块盘当作清理。
16
- - 工作树不是永久保留项:任务结束逐仓检查未提交、未跟踪、忽略文件和未推送提交,已合入/已归档且无活动引用的副本按 Git/宿主支持的方式移除并回读注册表;必要差异先最小归档并校验可恢复性,不复制完整构建树。嵌套独立 Git 仓库逐个核对;禁止因存在 `.git` 就跳过整个任务目录,也禁止把主工作区存在当成差异已安全保存的证明。
17
- - **规则必须落到执行入口**:新增或维护测试、构建、发布脚本时,将自有临时资产回收写入实际的 `finally`、测试框架 teardown/after hook 或宿主归档流程,并验证成功与失败退出均回收。`Microi.Tests/run-tests.ps1` 的 Full 隔离 `.net-artifacts` 由入口自动回收,保留结果报告与 `artifact-cleanup.json`;已有共享目录不取得删除权。仅修改 Skill、模型读过规则或工具显示最新版,都不能声称自动清理已生效;须检查已安装正文及实际执行结果。硬崩溃/强杀可能跳过收尾,恢复时按归属清单补清,不能承诺任意中断都即时删除。
18
- - 删除前核验解析后的绝对路径位于本任务 `.tmp` 子目录,检查重解析点/符号链接、当前进程 CWD/文件锁、Git worktree 与未提交源码、发布锁以及虚拟机/容器引用。保留用户文件、唯一源码/未提交改动、正式交付物、共享资源和其它任务资产;独占 Git 工作树先按 Git/宿主支持的移除方式完成检查,不能直接递归删除。
19
- - 历史垃圾清理先做体积与引用盘点,只删已核验无引用、无跟踪源码且可再生成的产物;文件名含 `.tmp`、目录名为 `bin/obj` 或时间较旧都不能单独证明可删。禁止整体清空共享 `.tmp/`,禁止为了清理结束其它任务或重启 Docker/WSL。
20
- - 清理后独立回读已删路径不存在、保护对象仍在和磁盘可用空间;收尾报告删除体积、剩余保留项和原因。遇到文件锁、权限或自动审批拒绝时保留目标并准确报告,禁止换工具绕过。测试通过与临时文件清理完成是两个验收项,不能互相代替。
21
-
22
- ## 质量优先与适用范围
23
-
24
- 准确性、业务完整性、安全和真实验收优先于 token 与回复长度。先确定完整系统、局部修改或只读分析;新建系统意图按完整交付,不能因短提示词或预算缩小八项清单及菜单/报表增补。局部修改定位真实目标和依赖,信息不足、动态关系或影响不明时扩大读取,不凭摘要猜测或写入。
25
-
26
- 必须读取总控的 [质量与增量开发规范](../microi-system-delivery/references/context-quality.md),按任务映射实际读取与验收记录。同一会话只复用内容哈希未变且已完整读取的规范;首次、版本变化和读取记录不明时补读。权限、写入前检查和执行后回读不复用旧成功结论。
27
-
28
- 工作区保护始终有效:保留他人差异与共享进程,临时产物只放根 `.tmp/`,闭源源码只从独立内部仓提交。修改/提交前读取 [共享工作区与 Git 保障](references/progressive-04-工作区与平台专项保障.md#多对话共享工作区变更归属保护强制);启动构建、测试服务或浏览器前读取同文件资源/OOM规则并检查现有资源。后端/任务/权限变更读取分布式与安全章节;平台源码定位、文档和 Skills 修改读取对应章节。平台能力四项检查仍固定保留在本入口。
29
-
1
+ ---
2
+ name: workspace-conventions
3
+ description: 每次 Microi 任务开始前必读的基础规范。用于识别创始人源码工作区,检查平台功能的应用商城、官方文档、Skills 与 MCP 交付,并遵守共享工作区、进程、资源和发布边界。
4
+ ---
5
+
6
+ # Microi 工作区全局约定
7
+
8
+ ## 截图与大体积资源必须走 CDN(默认强制)
9
+
10
+ - 截图、宣传配图、PDF、PPT/PPTX、视频、音频、模型、压缩包、安装包、导出报告及其它大体积资源不得提交或推送到 Gitee、GitHub 等源码仓库。截图和交付附件无论压缩后是否低于大小阈值都走 CDN;禁止通过 Base64、Git LFS、分卷、改后缀、强制暂存或中间提交绕过。一般“提交并推送”的授权不能解除此规则,也不再走“先上传大文件到 Git 再处理”的路径。
11
+ - 吾码官方公开资源必须通过已核验 `https://api.itdos.com + OsClient=iTdos` 的 `microi_itdos` MCP 上传公有桶,并使用 `https://file.microi.net` 前缀访问。普通客户资源使用已授权租户 MCP 与实际 CDN/FileServer,敏感、私有资料保持私有权限,不能为了公开链接改为公有桶。大文件使用已有流式/分片上传能力,不绕过 MCP 直接使用存储密钥。
12
+ - 源码只保存必要代码、轻量可编辑模板、CDN URL、文件名、字节数、SHA-256、MIME 和必要生成说明;原图、压缩件、PDF、下载校验缓存放任务专属临时目录,交付后按清理规则回收。上传成功后必须独立下载核对字节数、哈希和真实 MIME;PDF 同时检查 Range 分段读取。未知上传结果先回读,不能盲重传。
13
+ - 提交前检查暂存区,推送前以刚核验的远端引用检查全部待推送提交的新增 Blob;既查资源类型,也查单个 10 MiB / 合计 50 MiB 的体积门槛。发现禁止入库资源就停止受影响的提交/推送,迁移 CDN 并从本次候选索引/提交中排除;中间提交加入后又删除也不合格。不得改写共享历史、删除用户本地原图或清空既有仓库。必要运行依赖另按真实用途审查,但不能借此提交截图和交付附件。
14
+
15
+ 完整上传与回读流程见 [文件上传下载规范](../v8-file-upload/SKILL.md),Git 对象检查与历史边界见 [Git 大文件推送检查](references/progressive-03-cli-与-ide-插件错版共存约定.md#git-大文件推送检查强制)。
16
+
17
+ ## 测试临时文件必须随任务清理(强制)
18
+
19
+ 本节适用于开发、测试、诊断和发布产生的全部自有临时资产,包括工作区根 `.tmp/`、宿主临时目录(如 `$CODEX_HOME/tmp`)和隔离 Git worktree,并替代历史“任务完成后可以不清理”的约定。目录位置和 `.gitignore` 不改变收尾责任。
20
+
21
+ - 创建前使用独立的 `.tmp/<任务标识>/`,登记本任务创建的目录、文件、进程及用途;不得混用其它任务目录。每轮测试成功、失败、取消或中断退出时都执行 `finally` / teardown,先关闭本任务的写入者、浏览器和临时服务,再删除本轮已无用途的临时文件;不能等用户再次要求清理磁盘。
22
+ - 默认删除本任务的一次性脚本、下载/解压副本、编译输出、隔离依赖、测试夹具和冗余截图/trace/video/日志。交付必需的少量报告、关键截图、发布哈希/回执先脱敏并归档到对应项目的长期交付目录,回读归档完整后再删临时副本;不得把完整构建树、源码副本或依赖目录当作验收证据长期留存。
23
+ - 失败仍需排查或下一阶段确实依赖的文件,只保留可解释的最小集合,记录路径、体积、原因、归属和清理时机;排查/依赖结束后立即删除。崩溃来不及执行 teardown 时,下次接续先核对自有清单并补清;不能以“测试失败”“以后可能有用”为由无限保留。
24
+ - 隔离副本只为实际并发冲突或构建输入冻结创建,优先复用合适的工作树、稀疏检出和最小夹具;禁止每次重试复制整套源码、Git 历史、依赖、SDK 和运行目录。创建前盘点源盘与目标盘可用空间及已有同类副本,按本轮实际需求估算新增体积;测试结束先回收旧运行/编译目录,再创建下一轮。不要把临时目录移到另一块盘当作清理。
25
+ - 工作树不是永久保留项:任务结束逐仓检查未提交、未跟踪、忽略文件和未推送提交,已合入/已归档且无活动引用的副本按 Git/宿主支持的方式移除并回读注册表;必要差异先最小归档并校验可恢复性,不复制完整构建树。嵌套独立 Git 仓库逐个核对;禁止因存在 `.git` 就跳过整个任务目录,也禁止把主工作区存在当成差异已安全保存的证明。
26
+ - **规则必须落到执行入口**:新增或维护测试、构建、发布脚本时,将自有临时资产回收写入实际的 `finally`、测试框架 teardown/after hook 或宿主归档流程,并验证成功与失败退出均回收。`Microi.Tests/run-tests.ps1` 的 Full 隔离 `.net-artifacts` 由入口自动回收,保留结果报告与 `artifact-cleanup.json`;已有共享目录不取得删除权。仅修改 Skill、模型读过规则或工具显示最新版,都不能声称自动清理已生效;须检查已安装正文及实际执行结果。硬崩溃/强杀可能跳过收尾,恢复时按归属清单补清,不能承诺任意中断都即时删除。
27
+ - 删除前核验解析后的绝对路径位于本任务 `.tmp` 子目录,检查重解析点/符号链接、当前进程 CWD/文件锁、Git worktree 与未提交源码、发布锁以及虚拟机/容器引用。保留用户文件、唯一源码/未提交改动、正式交付物、共享资源和其它任务资产;独占 Git 工作树先按 Git/宿主支持的移除方式完成检查,不能直接递归删除。
28
+ - 历史垃圾清理先做体积与引用盘点,只删已核验无引用、无跟踪源码且可再生成的产物;文件名含 `.tmp`、目录名为 `bin/obj` 或时间较旧都不能单独证明可删。禁止整体清空共享 `.tmp/`,禁止为了清理结束其它任务或重启 Docker/WSL。
29
+ - 清理后独立回读已删路径不存在、保护对象仍在和磁盘可用空间;收尾报告删除体积、剩余保留项和原因。遇到文件锁、权限或自动审批拒绝时保留目标并准确报告,禁止换工具绕过。测试通过与临时文件清理完成是两个验收项,不能互相代替。
30
+
31
+ ## 质量优先与适用范围
32
+
33
+ 准确性、业务完整性、安全和真实验收优先于 token 与回复长度。先确定完整系统、局部修改或只读分析;新建系统意图按完整交付,不能因短提示词或预算缩小八项清单及菜单/报表增补。局部修改定位真实目标和依赖,信息不足、动态关系或影响不明时扩大读取,不凭摘要猜测或写入。
34
+
35
+ 必须读取总控的 [质量与增量开发规范](../microi-system-delivery/references/context-quality.md),按任务映射实际读取与验收记录。同一会话只复用内容哈希未变且已完整读取的规范;首次、版本变化和读取记录不明时补读。权限、写入前检查和执行后回读不复用旧成功结论。
36
+
37
+ 工作区保护始终有效:保留他人差异与共享进程,临时产物只放根 `.tmp/`,闭源源码只从独立内部仓提交。修改/提交前读取 [共享工作区与 Git 保障](references/progressive-04-工作区与平台专项保障.md#多对话共享工作区变更归属保护强制);启动构建、测试服务或浏览器前读取同文件资源/OOM规则并检查现有资源。后端/任务/权限变更读取分布式与安全章节;平台源码定位、文档和 Skills 修改读取对应章节。平台能力四项检查仍固定保留在本入口。
38
+
30
39
  <!-- microi-progressive:begin -->
31
- <!-- microi-progressive:chunk id=workspace-conventions-000 sha256=9e8585f04ec448154431f3f0c441697b57f16db77cee365788feb8e4bbf62e62 -->
32
- ## 任务启动前 Skill 读取规则(强制)
33
-
34
- AI 处理任何 Microi 低代码、V8、MCP、OpenClaw、采集引擎、前端、后端、UniApp、文档、测试或交付任务前,必须先按任务类型读取相关 `microi.skills/**/SKILL.md`。不能等到写代码或出问题后才补读。
35
-
36
- - 任何吾码任务先读取本文件和 `microi-system-delivery/SKILL.md`,再按总控路由读取相关专项 Skill;无需用户指定 Skill 名称。
37
- - 涉及采集引擎、浏览器 Worker、验证码、站点规则、导出产物时,同时读取 `spider-engine`。
38
- - 涉及 V8 CRUD、SQL、上传下载、导入导出、菜单按钮、表单事件、前端页面或自动化测试时,继续读取对应专项 Skill。
39
- - 最终交付说明必须能逐条对应用户编号需求;不得遗漏、合并或把仍可执行的需求写成“下一步继续”。
40
-
41
- ### 吾码 AI 开发默认路由(强制)
42
-
43
- - 在已通过吾码插件或 CLI 初始化的工作区中,用户直接描述业务需求即可。即使用户未写“吾码”、`Microi`、`microi-system-delivery` 或任何 Skill 名称,AI 仍须根据当前项目和已配置连接识别吾码任务,自动读取本基础入口及 `microi-system-delivery/SKILL.md`,不能等用户提醒。
44
- - 完整系统开发必须完整读取总控中的[完整系统开发默认交付清单(原推荐提示词 1–8)](../microi-system-delivery/references/progressive-01-标准工作流.md#完整系统开发默认交付清单原推荐提示词-18),并按总控的相关 Skill 表继续读取表单、模块、数据源、V8、页面、报表及验收等实际涉及的专项规范。不得仅凭 Skill 名称、摘要或聊天记忆执行,也不把全部 Skills 全文拼进一个提示词。
45
- - 按用户意图确定执行范围:完整系统开发逐项执行八项清单;局部修改只执行相关条目,保留已有业务资源和无关配置;只读分析只读取规范和事实,不创建资源、验收数据或执行发布。需求明确表示新建完整系统时,不因省略“完整”二字就降为方案或样例。
46
- - 默认读取规则不额外授权生产数据写入、客户部署或全库重建。连接可由当前项目和唯一已登录 Profile 自动确定;多个目标无法唯一匹配时只澄清必要的连接信息,不要求用户选择或记住 Skill。明显属于其它平台或与吾码无关的任务按实际项目规范执行。
47
- - 生成的 `AGENTS.md`、`CLAUDE.md`、Copilot/Cursor 指令及可移植吾码 Skill 只保留默认入口指针和读取顺序;详细八项清单仍由总控参考文件唯一维护。工作区未初始化或必要 Skill 缺失时先按现有安装/初始化规范恢复,并准确说明实际可读取状态,不能声称 AI 已自动加载不存在的规则。默认路由不代表任意模型 100% 遵循;开工说明须列出实际读取的基础入口、总控、完整清单参考及本次专项 Skills,并映射到交付计划,不能只凭路径存在、MCP 连通或文件摘要声称已读。原八项及报表、菜单先行增补的详细要求统一读取总控参考文件。
48
-
49
- ### 吾码创建人身份识别(强制)
50
-
51
- - 每次新对话或接续 Microi 任务时,先检查工作区根的 `Microi.Server/Microi.net/`:目录必须存在,并且 `rg --files Microi.Server/Microi.net -g '*.cs'` 至少返回一个真实源码文件,空目录不成立。满足条件即按“吾码创始人(创建人)的官方完整源码工作区”处理;不要求本次代码恰好修改在该目录内。此标记决定开发交付规范,不代替真实 MCP 登录、官方发布权限或用户授权;目录缺失、为空或只有编译产物时按普通用户工作区处理。
52
- - 对平台级新增、增强或修复,无论改动位于前端、后端、MCP、插件还是内置应用,都必须在计划和收尾中执行下列四项检查。规则留在本入口,不得移入仅按需读取的参考文件、单个专项 Skill、项目说明或聊天记忆。
53
-
54
- ### 平台功能四项同步检查(强制)
55
-
56
- 确认创始人源码工作区后,平台能力变更必须同时读取 `app-store` 与 `microi-docs-coverage`;客户业务、局部修改及只读任务先作四项适用性判断,涉及商城或文档时再读对应专项,不因身份标记加载无关发布正文;对每个功能逐项记录“需要/无需修改 + 依据 + 完成证据”,不能因只改 C# 或只修一个客户问题而跳过平台能力的检查。
57
-
58
- | 检查项 | 何时必须完善 | 交付证据 |
59
- |---|---|---|
60
- | 官方应用商城 | 涉及系统设置、表/字段/Tab、菜单/权限、接口引擎/事件、数据源、页面、工作流、任务、内置应用或种子数据 | 通过已校验 `https://api.itdos.com + OsClient=iTdos` 的 `microi_itdos` 更新官方母版并发布归属应用,回读版本、状态、包正文与哈希;基础空库包和存量增量应用都相关时同时更新 |
61
- | 官方中文文档 | 新能力、配置入口、参数、兼容条件、权限、使用方式或可感知行为发生变化 | 原位补充 `microi.doc/docs/doc/` 对应页面,给出最小示例与升级要求,并完成相应文档检查;不手工维护英文副本 |
62
- | 吾码 Skills | AI 需要知道新的使用决策、配置方法、工具签名、限制、排错方式或验收条件 | 更新责任 Skill 及必要参考、能力映射,并验证基础入口、插件/CLI 分发与后端内嵌知识链路;不能只记在当前对话或本地 memory |
63
- | 吾码 MCP | AI 尚不能安全发现、配置、调用、发布或回读该能力,或现有工具的 Schema/说明缺失、过时 | 优先扩展现有通用工具及其 Schema、说明、测试;既有工具完整覆盖时无需新增工具,但必须列明可复用工具及验证依据 |
64
-
65
- - “无需修改”必须逐项有具体理由,例如纯内部优化无元数据变化可不升应用版本,现有 MCP 已支持该配置可不新增工具;不得默认四项都做,也不得默认四项都省略。需要修改的项目应在本次授权范围内完成并验证,受权限、网络或发布渠道阻挡时明确未完成项,不能用本地修改代替线上发布。
66
- - 任务若只要求分析、评审或制定规范,仍保持只读或仅修改指定规范;身份标记不授权无关线上写入。客户部署、容器更新和应用自动安装与官方发布是独立动作,服从用户指定的手动/自动边界;用户明确手动更新时不得擅自部署。
67
- - 收尾必须区分“源码/文档已修改、测试通过、应用已发布回读、Skills/插件已打包或已分发、镜像已推送、客户已安装或已部署”。只有实际渠道验收成功才能说其它用户已可获取;不得把文档本地构建或插件本地副本同步称为已上线。
68
-
69
- ### 平台回归与独立应用测试归属(强制)
70
-
71
- - 创始人源码工作区中的每个平台功能新增、缺陷修复和兼容性调整都必须同时交付可重复执行的回归测试;先证明旧行为失败,再验证修复成功,覆盖正常、边界、失败、安全与存量兼容路径。不得只改源码或用手工截图代替自动回归。
72
- - 平台 C# 单元/组件/集成测试归入 `Microi.Server/Microi.Tests`。平台前端、平台内置应用包与平台 V8 的 Node 行为测试可留在责任源码旁,由 `Microi.Tests/run-tests.ps1` 自动发现执行;平台真实浏览器、数据库及第三方集成归入 Full 或平台专项验收,不得冒充离线单测。新增公共后端能力同时补相应 HTTP 闭环。
73
- - 官方或社区独立业务应用、游戏及客户项目的测试归应用自身源码根的 `tests/` 或独立测试工程,由该应用自己的测试和发布入口执行;不得放入 `Microi.Tests`、创建转调包装或接入平台 Quick/Full。官方发布身份不改变测试归属。应用开发中涉及平台通用缺陷时,仅把通用最小回归夹具加入平台门禁,应用业务断言仍在应用项目维护。
74
- - `Microi一键编译发布.sh` 的所有 PC/API 镜像路径(包括仅推送、热修复)都必须先通过按指定 MCP 实际依赖选定的 Full 发布矩阵;选中范围内缺少环境、零用例、失败、取消、跳过、待办或无法解析测试结果一律停止。未纳入本次矩阵的提供商标为“不适用(未执行)”,不冒充通过,也不单独阻塞常规发布。禁止关闭断言、删测试、排除已选失败项目或修改门禁阈值来发布。
75
- - 测试成功必须绑定本次候选源码和实际构建上下文的内容哈希,构建后、每次推送前复核。旧产物没有可验证回执或源码/产物漂移时必须重建重测,禁止“当前源码通过测试 + 推送另一份旧 DLL/前端 dist”。
76
- - 常规发布只验证用户指定 MCP 对应的实际依赖:MySQL、MongoDB 实际版本、Redis,以及租户实际生效的 MinIO 或 OSS/HDFS 等存储;不默认同时验证所有数据库版本或所有存储提供商。先核实 Profile、ApiBase、OsClient 和依赖类型,在已授权隔离范围执行;依赖发现不扩大生产写入或新建 Docker 测试依赖的授权。
77
- - SQL Server 的真实连接、提供商兼容与专项验收默认不纳入常规发布矩阵;只有用户明确指定排查、修复或验收 SQL Server 问题时才执行。检测到 SQL Server 连接/驱动、旧 Full 清单或通用数据库代码变更都不能自行触发该专项,也不需要每次申请 SQL Server 免测。既有不连接 SQL Server 的离线单元断言照常保留,但不能据此声称 SQL Server 已实测。
78
- - 交付记录逐项列明修复与测试映射、执行数量、未覆盖边界和镜像摘要。覆盖率与 Full 都不能证明所有租户业务、任意生产数据和第三方系统绝对无误;真实客户路径仍需只读验收。详细矩阵见 `microi-system-delivery/references/progressive-02-自动化测试必须覆盖的坑.md`。
79
-
80
- ### Microi吾码非阻塞自动更新(强制)
81
-
82
- - 本规范与“Microi吾码工作进度播报规范”同属无条件基础规则,适用于任何 AI 模型与宿主,不限 Codex,也不要求用户提到安装、版本或更新。每次新建或接续 Microi 对话,AI 必须读取本节并检查版本;已有 CLI 时必须投递 `microi update --background --workspace "<工作区绝对路径>" --json`,由更新器去重、节流和重试,不得改写为“可选”“建议更新”或等用户提醒。后台任务与业务工作并行,不得等待更新完成才开始业务分析、MCP 调用、源码修改、构建或发布。
83
- - `@microi.net/cli` 必须自动升级到 npm 官方 `latest`,并使用新版包重新同步吾码 Skills、AI 宿主规则、插件与 MCP。不能只执行 `npx @latest`、只查询版本或只更新全局 CLI 后就声称完整升级;旧 CLI 缺少 `update` 时按 `microi-codex-installer` 的官方安装恢复路径更新。完全未安装且本次未授权初始化时准确记录缺失,不擅自创建服务器连接。
84
- - 首次工作过程说明必须包含一次版本播报,以“Microi吾码开发工具版本”开头,报告当前实际 CLI 版本、npm 官方最新版本(含查询时间)、自动更新是否启用及状态、Skills/MCP 是否已同步。读取 `microi version --json` 与后台状态文件,或 MCP `profiles.toolchain`;后者的 `loadedVersion` 只代表当前 MCP 提供者,`latestObservedVersion` 是带时间的历史查询结果,不能冒充全局 CLI 版本或刚刚在线查询的最新版。尚未确认的项必须写“检测中/未知/待回读”,后续回读补齐;禁止猜测、硬编码当前发布号或把 `expectedVersion` 当 npm 最新版。
85
- - CLI 最新版只从 npm 官方 registry 查询:`npm view '@microi.net/cli' version --json --prefer-online --registry=https://registry.npmjs.org/`;VS Code 扩展只使用官方扩展宿主的自动更新/安装命令。不得使用第三方 registry 或不明镜像冒充官方更新。
86
- - 后台更新完整闭环包含全局 CLI、已安装宿主的 `microi@microi-net` / DSH bundle,以及已配置连接工作区的 `microi ai init`、`microi doctor`、`microi codex status` / `microi dsh status`。回读全局版本、工作区 Skills bundle/file 版本及 MCP provider 版本,确认不低于本次官方查询版本;较新提供者保留。未安装的宿主安静跳过,未配置连接的目录不生成 AI/MCP 文件。完成后重新读取已更新的基础规范与本任务专项 Skill,并在收尾说明升级或延后结果。`codex install --yes` 的 `--yes` 只兼容旧脚本,不是用户继续工作的授权开关。
87
- - 当前运行中的 VS Code Extension Host、CLI、Codex Router、MCP 和对话继续使用已加载版本。禁止为了更新终止进程、强制重载、要求立即新建任务或拒绝新工作;新版只在后续新进程或宿主自然重启时接管。
88
- - npm 官方 registry 无法访问、权限不足、文件被运行中进程占用、安装失败或宿主不能热更新时,必须写入可诊断状态并延后重试。可以非模态提示“立即重试/查看日志”,但用户忽略、关闭或暂不处理时,当前、正在进行和新建的 Microi 工作仍必须继续。
89
- - 用户明确关闭自动更新或宿主不允许终端执行时,尊重该限制,报告具体未完成项和恢复命令;不能静默宣称已是最新版。自动更新只覆盖开发工具、Skills 和本机 MCP 入口,不授权升级客户 API/数据库、部署容器或安装业务应用;已签名 Microi Agent 安装目录仍通过桌面官方更新渠道升级。
90
- - 只有任务明确依赖旧版本不存在的具体能力时,才准确说明该能力边界与可用降级方案;不得用“最新版未通过”“尚未授权升级”作为整项任务的失败理由。
40
+ <!-- microi-progressive:chunk id=workspace-conventions-000 sha256=aca51a9aec956dd31d4865eeb25b3d33452106b363659970773b40b48d22e346 -->
41
+ ## 任务启动前 Skill 读取规则(强制)
42
+
43
+ AI 处理任何 Microi 低代码、V8、MCP、OpenClaw、采集引擎、前端、后端、UniApp、文档、测试或交付任务前,必须先按任务类型读取相关 `microi.skills/**/SKILL.md`。不能等到写代码或出问题后才补读。
44
+
45
+ - 任何吾码任务先读取本文件和 `microi-system-delivery/SKILL.md`,再按总控路由读取相关专项 Skill;无需用户指定 Skill 名称。
46
+ - 涉及采集引擎、浏览器 Worker、验证码、站点规则、导出产物时,同时读取 `spider-engine`。
47
+ - 涉及 V8 CRUD、SQL、上传下载、导入导出、菜单按钮、表单事件、前端页面或自动化测试时,继续读取对应专项 Skill。
48
+ - 最终交付说明必须能逐条对应用户编号需求;不得遗漏、合并或把仍可执行的需求写成“下一步继续”。
49
+
50
+ ### 吾码 AI 开发默认路由(强制)
51
+
52
+ - 在已通过吾码插件或 CLI 初始化的工作区中,用户直接描述业务需求即可。即使用户未写“吾码”、`Microi`、`microi-system-delivery` 或任何 Skill 名称,AI 仍须根据当前项目和已配置连接识别吾码任务,自动读取本基础入口及 `microi-system-delivery/SKILL.md`,不能等用户提醒。
53
+ - 完整系统开发必须完整读取总控中的[完整系统开发默认交付清单(原推荐提示词 1–8)](../microi-system-delivery/references/progressive-01-标准工作流.md#完整系统开发默认交付清单原推荐提示词-18),并按总控的相关 Skill 表继续读取表单、模块、数据源、V8、页面、报表及验收等实际涉及的专项规范。不得仅凭 Skill 名称、摘要或聊天记忆执行,也不把全部 Skills 全文拼进一个提示词。
54
+ - 按用户意图确定执行范围:完整系统开发逐项执行八项清单;局部修改只执行相关条目,保留已有业务资源和无关配置;只读分析只读取规范和事实,不创建资源、验收数据或执行发布。需求明确表示新建完整系统时,不因省略“完整”二字就降为方案或样例。
55
+ - 默认读取规则不额外授权生产数据写入、客户部署或全库重建。连接可由当前项目和唯一已登录 Profile 自动确定;多个目标无法唯一匹配时只澄清必要的连接信息,不要求用户选择或记住 Skill。明显属于其它平台或与吾码无关的任务按实际项目规范执行。
56
+ - 生成的 `AGENTS.md`、`CLAUDE.md`、Copilot/Cursor 指令及可移植吾码 Skill 只保留默认入口指针和读取顺序;详细八项清单仍由总控参考文件唯一维护。工作区未初始化或必要 Skill 缺失时先按现有安装/初始化规范恢复,并准确说明实际可读取状态,不能声称 AI 已自动加载不存在的规则。默认路由不代表任意模型 100% 遵循;开工说明须列出实际读取的基础入口、总控、完整清单参考及本次专项 Skills,并映射到交付计划,不能只凭路径存在、MCP 连通或文件摘要声称已读。原八项及报表、菜单先行增补的详细要求统一读取总控参考文件。
57
+
58
+ ### 吾码创建人身份识别(强制)
59
+
60
+ - 每次新对话或接续 Microi 任务时,先检查工作区根的 `Microi.Server/Microi.net/`:目录必须存在,并且 `rg --files Microi.Server/Microi.net -g '*.cs'` 至少返回一个真实源码文件,空目录不成立。满足条件即按“吾码创始人(创建人)的官方完整源码工作区”处理;不要求本次代码恰好修改在该目录内。此标记决定开发交付规范,不代替真实 MCP 登录、官方发布权限或用户授权;目录缺失、为空或只有编译产物时按普通用户工作区处理。
61
+ - 对平台级新增、增强或修复,无论改动位于前端、后端、MCP、插件还是内置应用,都必须在计划和收尾中执行下列四项检查。规则留在本入口,不得移入仅按需读取的参考文件、单个专项 Skill、项目说明或聊天记忆。
62
+
63
+ ### 平台功能四项同步检查(强制)
64
+
65
+ 确认创始人源码工作区后,平台能力变更必须同时读取 `app-store` 与 `microi-docs-coverage`;客户业务、局部修改及只读任务先作四项适用性判断,涉及商城或文档时再读对应专项,不因身份标记加载无关发布正文;对每个功能逐项记录“需要/无需修改 + 依据 + 完成证据”,不能因只改 C# 或只修一个客户问题而跳过平台能力的检查。
66
+
67
+ | 检查项 | 何时必须完善 | 交付证据 |
68
+ |---|---|---|
69
+ | 官方应用商城 | 涉及系统设置、表/字段/Tab、菜单/权限、接口引擎/事件、数据源、页面、工作流、任务、内置应用或种子数据 | 通过已校验 `https://api.itdos.com + OsClient=iTdos` 的 `microi_itdos` 更新官方母版并发布归属应用,回读版本、状态、包正文与哈希;基础空库包和存量增量应用都相关时同时更新 |
70
+ | 官方中文文档 | 新能力、配置入口、参数、兼容条件、权限、使用方式或可感知行为发生变化 | 原位补充 `microi.doc/docs/doc/` 对应页面,给出最小示例与升级要求,并完成相应文档检查;不手工维护英文副本 |
71
+ | 吾码 Skills | AI 需要知道新的使用决策、配置方法、工具签名、限制、排错方式或验收条件 | 更新责任 Skill 及必要参考、能力映射,并验证基础入口、插件/CLI 分发与后端内嵌知识链路;不能只记在当前对话或本地 memory |
72
+ | 吾码 MCP | AI 尚不能安全发现、配置、调用、发布或回读该能力,或现有工具的 Schema/说明缺失、过时 | 优先扩展现有通用工具及其 Schema、说明、测试;既有工具完整覆盖时无需新增工具,但必须列明可复用工具及验证依据 |
73
+
74
+ - “无需修改”必须逐项有具体理由,例如纯内部优化无元数据变化可不升应用版本,现有 MCP 已支持该配置可不新增工具;不得默认四项都做,也不得默认四项都省略。需要修改的项目应在本次授权范围内完成并验证,受权限、网络或发布渠道阻挡时明确未完成项,不能用本地修改代替线上发布。
75
+ - 任务若只要求分析、评审或制定规范,仍保持只读或仅修改指定规范;身份标记不授权无关线上写入。客户部署、容器更新和应用自动安装与官方发布是独立动作,服从用户指定的手动/自动边界;用户明确手动更新时不得擅自部署。
76
+ - 收尾必须区分“源码/文档已修改、测试通过、应用已发布回读、Skills/插件已打包或已分发、镜像已推送、客户已安装或已部署”。只有实际渠道验收成功才能说其它用户已可获取;不得把文档本地构建或插件本地副本同步称为已上线。
77
+
78
+ ### 平台回归与独立应用测试归属(强制)
79
+
80
+ - 创始人源码工作区中的每个平台功能新增、缺陷修复和兼容性调整都必须同时交付可重复执行的回归测试;先证明旧行为失败,再验证修复成功,覆盖正常、边界、失败、安全与存量兼容路径。不得只改源码或用手工截图代替自动回归。
81
+ - 平台 C# 单元/组件/集成测试归入 `Microi.Server/Microi.Tests`。平台前端、平台内置应用包与平台 V8 的 Node 行为测试可留在责任源码旁,由 `Microi.Tests/run-tests.ps1` 自动发现执行;平台真实浏览器、数据库及第三方集成归入 Full 或平台专项验收,不得冒充离线单测。新增公共后端能力同时补相应 HTTP 闭环。
82
+ - 官方或社区独立业务应用、游戏及客户项目的测试归应用自身源码根的 `tests/` 或独立测试工程,由该应用自己的测试和发布入口执行;不得放入 `Microi.Tests`、创建转调包装或接入平台 Quick/Full。官方发布身份不改变测试归属。应用开发中涉及平台通用缺陷时,仅把通用最小回归夹具加入平台门禁,应用业务断言仍在应用项目维护。
83
+ - `Microi一键编译发布.sh` 的所有 PC/API 镜像路径(包括仅推送、热修复)都必须先通过按指定 MCP 实际依赖选定的 Full 发布矩阵;选中范围内缺少环境、零用例、失败、取消、跳过、待办或无法解析测试结果一律停止。未纳入本次矩阵的提供商标为“不适用(未执行)”,不冒充通过,也不单独阻塞常规发布。禁止关闭断言、删测试、排除已选失败项目或修改门禁阈值来发布。
84
+ - 测试成功必须绑定本次候选源码和实际构建上下文的内容哈希,构建后、每次推送前复核。旧产物没有可验证回执或源码/产物漂移时必须重建重测,禁止“当前源码通过测试 + 推送另一份旧 DLL/前端 dist”。 所有测试默认使用当前 MCP 经同源只读发现的 MongoDB 实际版本与当前租户实际生效的 HDFS 提供商;目标唯一时直接沿已授权隔离范围执行,不为旧 MongoDB 或其它 OSS/MinIO/S3 反复询问、新建服务或替换当前提供商。只有明确的兼容、迁移或提供商缺陷任务才扩展真实矩阵;未执行项如实记未覆盖,不以同一端点冒充多版本,也不因环境发现获得生产业务写入授权。
85
+ - 常规发布只验证用户指定 MCP 对应的实际依赖:MySQL、MongoDB 实际版本、Redis,以及租户实际生效的 MinIO 或 OSS/HDFS 等存储;不默认同时验证所有数据库版本或所有存储提供商。先核实 Profile、ApiBase、OsClient 和依赖类型,在已授权隔离范围执行;默认复用已配置依赖,不因本地无容器另建服务;依赖发现不扩大生产业务写入、付费资源或用户明确禁止的操作范围。
86
+ - SQL Server 的真实连接、提供商兼容与专项验收默认不纳入常规发布矩阵;只有用户明确指定排查、修复或验收 SQL Server 问题时才执行。检测到 SQL Server 连接/驱动、旧 Full 清单或通用数据库代码变更都不能自行触发该专项,也不需要每次申请 SQL Server 免测。既有不连接 SQL Server 的离线单元断言照常保留,但不能据此声称 SQL Server 已实测。
87
+ - 交付记录逐项列明修复与测试映射、执行数量、未覆盖边界和镜像摘要。覆盖率与 Full 都不能证明所有租户业务、任意生产数据和第三方系统绝对无误;真实客户路径仍需只读验收。详细矩阵见 `microi-system-delivery/references/progressive-02-自动化测试必须覆盖的坑.md`。
88
+
89
+ ### Microi吾码非阻塞自动更新(强制)
90
+
91
+ - 本规范与“Microi吾码工作进度播报规范”同属无条件基础规则,适用于任何 AI 模型与宿主,不限 Codex,也不要求用户提到安装、版本或更新。每次新建或接续 Microi 对话,AI 必须读取本节并检查版本;已有 CLI 时必须投递 `microi update --background --workspace "<工作区绝对路径>" --json`,由更新器去重、节流和重试,不得改写为“可选”“建议更新”或等用户提醒。后台任务与业务工作并行,不得等待更新完成才开始业务分析、MCP 调用、源码修改、构建或发布。
92
+ - `@microi.net/cli` 必须自动升级到 npm 官方 `latest`,并使用新版包重新同步吾码 Skills、AI 宿主规则、插件与 MCP。不能只执行 `npx @latest`、只查询版本或只更新全局 CLI 后就声称完整升级;旧 CLI 缺少 `update` 时按 `microi-codex-installer` 的官方安装恢复路径更新。完全未安装且本次未授权初始化时准确记录缺失,不擅自创建服务器连接。
93
+ - 首次工作过程说明必须包含一次版本播报,以“Microi吾码开发工具版本”开头,报告当前实际 CLI 版本、npm 官方最新版本(含查询时间)、自动更新是否启用及状态、Skills/MCP 是否已同步。读取 `microi version --json` 与后台状态文件,或 MCP `profiles.toolchain`;后者的 `loadedVersion` 只代表当前 MCP 提供者,`latestObservedVersion` 是带时间的历史查询结果,不能冒充全局 CLI 版本或刚刚在线查询的最新版。尚未确认的项必须写“检测中/未知/待回读”,后续回读补齐;禁止猜测、硬编码当前发布号或把 `expectedVersion` 当 npm 最新版。
94
+ - CLI 最新版只从 npm 官方 registry 查询:`npm view '@microi.net/cli' version --json --prefer-online --registry=https://registry.npmjs.org/`;VS Code 扩展只使用官方扩展宿主的自动更新/安装命令。不得使用第三方 registry 或不明镜像冒充官方更新。
95
+ - 后台更新完整闭环包含全局 CLI、已安装宿主的 `microi@microi-net` / DSH bundle,以及已配置连接工作区的 `microi ai init`、`microi doctor`、`microi codex status` / `microi dsh status`。回读全局版本、工作区 Skills bundle/file 版本及 MCP provider 版本,确认不低于本次官方查询版本;较新提供者保留。未安装的宿主安静跳过,未配置连接的目录不生成 AI/MCP 文件。完成后重新读取已更新的基础规范与本任务专项 Skill,并在收尾说明升级或延后结果。`codex install --yes` 的 `--yes` 只兼容旧脚本,不是用户继续工作的授权开关。
96
+ - 当前运行中的 VS Code Extension Host、CLI、Codex Router、MCP 和对话继续使用已加载版本。禁止为了更新终止进程、强制重载、要求立即新建任务或拒绝新工作;新版只在后续新进程或宿主自然重启时接管。
97
+ - npm 官方 registry 无法访问、权限不足、文件被运行中进程占用、安装失败或宿主不能热更新时,必须写入可诊断状态并延后重试。可以非模态提示“立即重试/查看日志”,但用户忽略、关闭或暂不处理时,当前、正在进行和新建的 Microi 工作仍必须继续。
98
+ - 用户明确关闭自动更新或宿主不允许终端执行时,尊重该限制,报告具体未完成项和恢复命令;不能静默宣称已是最新版。自动更新只覆盖开发工具、Skills 和本机 MCP 入口,不授权升级客户 API/数据库、部署容器或安装业务应用;已签名 Microi Agent 安装目录仍通过桌面官方更新渠道升级。
99
+ - 只有任务明确依赖旧版本不存在的具体能力时,才准确说明该能力边界与可用降级方案;不得用“最新版未通过”“尚未授权升级”作为整项任务的失败理由。
91
100
  <!-- /microi-progressive:chunk -->
92
- <!-- microi-progressive:chunk id=workspace-conventions-001 sha256=8d8dfff420c0cc768bbeb13d94e9f77f52d5002fc61d93dc82d71b3a17f2eaa0 -->
93
- ## Microi吾码工作进度播报规范(强制)
94
-
95
- AI 在任何新建或已有对话中处理 Microi吾码任务并向用户输出工作过程记录时,必须默认执行本规范,无需用户再次提醒:
96
-
97
- - 每累计输出 3-5 次面向用户的工作过程记录,根据任务复杂度和实际阶段选择合适时机,追加一次进度播报;首次播报不得晚于第 5 次工作过程记录。工具调用结果、系统消息和最终答复不计入次数。
98
- - 播报必须以“Microi吾码本次工作进度”开头,让用户明确知道这是【Microi吾码】规范;不得改成含义模糊的“当前进度”,也不得描述为 AI 自带功能。
99
- - 每次播报必须同时包含四项快速估算:已完成进度百分比、预计还需要多长时间结束、目前大概已消耗多少 token、预计总共需要消耗多少 token。
100
- - 预计剩余时间不足 60 分钟时使用分钟;达到 60 分钟后换算为“X小时Y分钟”;达到 24 小时后换算为“X天Y小时Z分钟”。为 0 的低位单位可以省略,禁止继续只显示累计分钟数。
101
- - 进度、时间和 token 只需快速估算,不得为了提高估算精度中断主要工作,也不得声称这些数据来自平台精确计量。token 较多时可用 `k` 简写。
102
- - 推荐使用紧凑格式:`Microi吾码本次工作进度:约 55%;预计还需 12 分钟;目前已消耗约 8k tokens;预计总计约 15k tokens。以上为快速估算。`
103
- - 短任务若在不足 3 次工作过程记录时已经完成,不得为了凑次数拆分无意义消息;可直接在最终交付中简要汇总。
101
+ <!-- microi-progressive:chunk id=workspace-conventions-001 sha256=c3db79fb5f6f00a6ea619f7129f1e81259efe899256a5100f9c84a5b5dca58f4 -->
102
+ ## Microi吾码工作进度播报规范(强制)
103
+
104
+ AI 在任何新建或已有对话中处理 Microi吾码任务并向用户输出工作过程记录时,必须默认执行本规范,无需用户再次提醒:
105
+
106
+ - 每累计输出 3-5 次面向用户的工作过程记录,根据任务复杂度和实际阶段选择合适时机,追加一次进度播报;首次播报不得晚于第 5 次工作过程记录。工具调用结果、系统消息和最终答复不计入次数。
107
+ - 播报必须以“Microi吾码本次工作进度”开头,让用户明确知道这是【Microi吾码】规范;不得改成含义模糊的“当前进度”,也不得描述为 AI 自带功能。
108
+ - 每次播报必须同时包含四项快速估算:已完成进度百分比、预计还需要多长时间结束、目前大概已消耗多少 token、预计总共需要消耗多少 token。
109
+ - 预计剩余时间不足 60 分钟时使用分钟;达到 60 分钟后换算为“X小时Y分钟”;达到 24 小时后换算为“X天Y小时Z分钟”。为 0 的低位单位可以省略,禁止继续只显示累计分钟数。
110
+ - 进度、时间和 token 只需快速估算,不得为了提高估算精度中断主要工作,也不得声称这些数据来自平台精确计量。token 较多时可用 `k` 简写。
111
+ - 推荐使用紧凑格式:`Microi吾码本次工作进度:约 55%;预计还需 12 分钟;目前已消耗约 8k tokens;预计总计约 15k tokens。以上为快速估算。`
112
+ - 短任务若在不足 3 次工作过程记录时已经完成,不得为了凑次数拆分无意义消息;可直接在最终交付中简要汇总。
104
113
  <!-- /microi-progressive:chunk -->
105
114
 
106
115
  ## AI 编写代码的意图注释规范(强制)
@@ -128,6 +137,6 @@ AI 在任何新建或已有对话中处理 Microi吾码任务并向用户输出
128
137
 
129
138
  - [references/progressive-01-版本更新日志保护规则-强制.md](references/progressive-01-版本更新日志保护规则-强制.md):版本更新日志保护规则(强制);配置文件说明中文优先规则;后端 API 配置白名单与 SaaS 单一事实源(强制);身份、可逆业务秘密与敏感操作统一规范(强制);多语言优先约定;后台菜单层级默认规则;后台任务与安全防护约定;业务逻辑优先接口引擎约定;应用商城优先于 Microi.Upgrade(强制);在线 AI 应用上下文默认发现规则(强制);VS Code 插件空目录生成规则;Microi 版本号规则;C# dynamic 强类型落地规则;根目录保留文件说明
130
139
  - [references/progressive-02-microi-net-api-本地启动约定.md](references/progressive-02-microi-net-api-本地启动约定.md):Microi.net.Api 本地启动约定;多 AI 对话共享本地服务与发布互斥(强制);本地租户与测试凭据读取约定;自动化登录约定;V8 远端/本地同步收尾约定;V8 缓存刷新约定;MCP 元数据更新验收约定;MCP 可用性排查约定;MCP 写入超时与降级约定;Codex MCP 单入口约定;.venv Python 环境说明;后端代码改动后的重启验收;MCP 可调用性诊断补充;Windows MCP 控制台闪窗复盘
131
- - [references/progressive-03-cli-与-ide-插件错版共存约定.md](references/progressive-03-cli-与-ide-插件错版共存约定.md):CLI 与 IDE 插件错版共存约定;Git 大文件推送确认
140
+ - [references/progressive-03-cli-与-ide-插件错版共存约定.md](references/progressive-03-cli-与-ide-插件错版共存约定.md):CLI 与 IDE 插件错版共存约定;Git 大文件推送检查
132
141
  - [references/progressive-04-工作区与平台专项保障.md](references/progressive-04-工作区与平台专项保障.md):工作区与平台专项保障
133
142
  <!-- microi-progressive:end -->
@@ -2,16 +2,17 @@
2
2
 
3
3
  > 按需读取;本文件由 SKILL.md 的原章节无损拆分。
4
4
 
5
- <!-- microi-progressive:chunk id=workspace-conventions-039 sha256=8cfc7d1e2a6a0a766845c79775efe8c7fb15ef805a47e8bc1965128e348f3062 -->
5
+ <!-- microi-progressive:chunk id=workspace-conventions-039 sha256=6a24718aa7e8b1b34cc6ff212d5a8331976d338bb60d99401c256c469e522a67 -->
6
6
  ## 本地测试程序与依赖生命周期(强制)
7
7
 
8
8
  - 启动前盘点当前源码/Vite/API、数据库、Redis、MongoDB、MinIO、端口及其归属。健康且适用的开发/测试服务优先复用;已有服务不满足时,优先直接启动本地源码,或把本轮编译产物复制到任务隔离目录启动,避免锁住共享构建输出。登记实际源码、配置来源、PID、创建时间、工作目录和监听端口;不能启动另一份旧 DLL 冒充当前候选。
9
9
  - 多节点 HTTP、并发和租户隔离测试优先使用多个本机吾码程序进程,连接同组已授权依赖;库、租户、Schema、Redis DB/Key 前缀和存储命名空间负责测试隔离。`fixture`、独立候选目录和 Full 不等于每个 AI 对话或节点都要创建一整套 Docker。复用仅限已授权开发/测试资源,不向生产业务库注入测试数据,也不对共享服务进行破坏性故障测试。
10
- - 普通联调、登录、表单、V8 和浏览器验收不默认创建本地 Docker/Compose。确实只能通过指定引擎/版本、容器安装或镜像行为验证时,先说明既有依赖为何不能满足、最少容器清单、资源上限和收尾方式,并取得对该动作的明确授权;已授权同一清单不重复询问。一般开发、Full 和镜像发布授权不自动授权新增数据库等测试服务。已授权镜像的构建、推送和不启动容器的镜像字节检查按各自制品流程执行,不能扩张为启动整套测试基础设施。
10
+ - 普通联调、登录、表单、V8、Full 和镜像发布默认复用当前 MCP 对应的 MySQL、Redis、MongoDB、MinIO/OSS 等实际依赖,包括已配置的远端依赖;本机没有容器不等于缺少测试环境。先核实连接归属、实际版本、可用性和安全隔离范围,通过独立测试库、租户、Redis Key 前缀或专用 DB、对象前缀隔离,不能向生产业务库写测试数据,也不能清空共享 Redis、Bucket 或其它任务的数据。
11
+ - 不要把“是否允许临时创建测试容器”作为常规确认步骤,也不要因为旧夹具已删除就改为新建一套服务。只有已经验证现有 MCP 依赖、既有测试服务及本地程序均无法满足本次具体协议/版本验收时,才记录不能复用的证据,采用最小必要替代方案;确需临时容器时限定资源、仅监听回环地址、登记归属和清理器,按本次用户明确边界执行。一般可逆测试实施细节不重复索取许可;涉及真实数据处置、额外费用或用户禁止的操作时仍遵守相应边界。
11
12
  - 创建或借用前建立资源台账,区分既有、借用和本轮新建;容器登记完整 Id、任务标签、数据挂载及消费者,进程登记 PID、创建时间、命令入口、工作目录和后代。共享依赖有唯一协调者,消费者退出不删除其它任务仍在使用的服务,也不能把他人资源仅凭名称认领为本任务资源。既有共享开发服务必要重启后的替换进程继承共享身份,收尾时保持健康;任务专用实例仍须结束,不能改称“共享服务”来免除清理。
12
13
  - 每轮验证成功、失败、超时、取消、异常或资源门限不足退出时,都立即执行收尾,不等整个功能交付完成。脚本用 `finally` 并处理可捕获的中断;启动到一半失败也回收已创建资源,外层监督程序退出时由已登记归属的清理器兜底。停止本轮自建 API/Vite/测试程序、watcher、浏览器及其子进程,以及获准新建的临时容器;不因“待续”长期保留运行资源。确需继续后台运行时,记录用户要求、负责人和有效期限。
13
14
  - 清理前重验精确身份,正常停止后独立回读进程及后代已退出、监听/连接已消失、容器已停止或移除;只输出白名单状态,不回显口令、Env 或连接串。既有或借用的共享实例保持原状态,不按进程名全杀,不执行全局 Docker prune、WSL/Docker 重启或删全部编排。
14
- - 数据保留与运行资源分开处理:移除临时容器前核对实际持久卷;没有数据卷时,先归档唯一数据或只停止保留容器。Redis 等关闭持久化时,保留空卷不能代替保存内存状态,应先通过现有安全连接显式保存并校验落盘。资源紧张时避免默认使用 fork 式后台保存;保存失败或超时不得无限重试或删除唯一数据,应先停止写入消费者、保留容器与卷、列明失败,并采用有界恢复方案或请求数据处置决定。默认不删除数据卷、绑定目录、镜像及测试证据,不使用 `rm -v` 或 `down -v`;删除这些数据需要对应的明确授权。
15
+ - 数据保留与运行资源分开处理:自建且只含可重建测试数据的临时容器、专用测试卷、任务目录和测试命名空间,用完即按登记归属精确删除并独立回读,不能只停止容器或以“下次可能用到”为由积累。共享依赖、既有卷、缓存镜像、用户数据和其它任务资源不在清理范围。若临时资源含唯一业务数据或归属不明,先归档最小必要数据并验证,不能以清理名义删除;需要数据处置决定时明确指出具体对象。Redis 关闭持久化时,保留空卷不能代替保存唯一数据;避免资源紧张时默认 fork 保存。禁止全局 `prune`、通配删除或对共享编排使用 `down -v`。
15
16
  - 资源不足时先盘点并收回本任务闲置/遗留的进程和临时容器,再重新测量,不能留下自建数据库占用后要求用户关闭应用。测试结果、清理结果、数据保留和渠道发布分别记录;清理失败必须列出精确资源及原因,不能声称“已全部退出”或用减少用例、关闭断言、放宽发布门禁代替恢复环境。
16
17
 
17
18
  <!-- /microi-progressive:chunk -->