@microi.net/cli 5.6.7 → 5.6.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.
- package/.codebuddy-plugin/marketplace.json +2 -2
- package/.codebuddy-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.workbuddy-plugin/marketplace.json +2 -2
- package/.workbuddy-plugin/plugin.json +1 -1
- package/assets/build-meta.json +5 -5
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/mcp-server.js +80 -79
- package/scripts/microi-cli.js +53 -52
- package/scripts/microi-skills.meta.json +203 -203
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +3566 -3566
- package/skills/ai-engine/SKILL.md +7 -3
- package/skills/microi-codex/SKILL.md +19 -11
- package/skills/microi-codex-installer/SKILL.md +2 -2
- package/skills/microi-deployment/SKILL.md +1 -1
- package/skills/microi-microservice/SKILL.md +12 -5
- package/skills/microi-uniapp-frontend/SKILL.md +2 -0
- package/skills/system-observability/SKILL.md +9 -5
- package/skills/ui-design/SKILL.md +10 -3
- package/skills/v8-export-import/SKILL.md +9 -7
- package/skills/v8-http-integration/SKILL.md +3 -3
- package/skills/v8-menu-buttons/SKILL.md +6 -2
|
@@ -27,9 +27,13 @@ description: Microi AI 引擎、MiniMax 图片/音乐/视频生成与预览、
|
|
|
27
27
|
|
|
28
28
|
平台 AI 包含聊天/流式聊天、模型代理、模型路由、订阅配额、NL2SQL、NL2V8、数据库 Schema 关键词检索、可选向量融合和 V8 Skill 文档检索。AI 输出是建议,不是授权;执行 SQL、V8 或 MCP 写入前仍走平台权限与确认。
|
|
29
29
|
|
|
30
|
-
当前入口并不共用一条检索链路:普通 `Chat/ChatStream` 使用服务端会话上下文和固定核心规范 Prompt;`NL2SQL` 使用当前租户 Schema 双模式检索;`NL2V8` 使用 Skill 镜像与当前租户 Schema 双模式检索。默认模式不依赖 Ollama、`nomic-embed-text` 或 Qdrant
|
|
30
|
+
当前入口并不共用一条检索链路:普通 `Chat/ChatStream` 使用服务端会话上下文和固定核心规范 Prompt;`NL2SQL` 使用当前租户 Schema 双模式检索;`NL2V8` 使用 Skill 镜像与当前租户 Schema 双模式检索。默认模式不依赖 Ollama、`nomic-embed-text` 或 Qdrant;只有显式开启向量数据库时才增加向量通道。在线低代码建模在 `Microi.AI` 内建立同版 `microi.mcp` 会话,模型通过 `microi_codex` 执行工具循环。普通对话仍不调用 MCP;不能仅凭 Prompt 声称工具已执行,必须检查工具返回和回读。
|
|
31
|
+
|
|
32
|
+
在线 `/#/mic-ai-engine` 的低代码建模模式使用本地 Microi.Code 同一份 `microi.mcp` 工具目录:先 `list_tools`/`describe_tool`,再执行表、字段、菜单、接口引擎、Manifest 系统编排、删除等原 MCP 工具。用户在对话中明确要求写入时自动执行,不需要网页按钮;明确“只规划、不执行”时只调用只读工具。前端仅向 `Level >= 9999` 开放建模入口;服务端进入模式和每次工具调用前都以当前 DiyToken、主库账号及有效角色复核。工具原有确认值、审计和回读规则继续生效;超时或结果不确定时停止,不自动重试写操作。商城包不替换平台前后端程序。
|
|
33
|
+
|
|
34
|
+
建模对话使用非流式 `/api/Ai/Chat` 获取服务端 MCP 工具循环最终答案和工具名称/状态;普通对话保持流式。完整系统先调用 `microi_get_db_schema`、`microi_get_manifest_schema`、`microi_plan_system`,用 `microi_generate_system(dryRun=true)` 验证,再按用户明确创建请求调用 `dryRun=false` 并用 `microi_validate_system` 回读。模型提交的参数由原 MCP Schema 校验,不能在前端绕过。
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
在线工具网关仅转发当前请求的真实 DiyToken 与租户到同版 MCP,不创建服务账号或提权 Token;不继承宿主其它凭据。每次调用前复核当前管理员权限,模型只能提出调用建议,MCP 继续负责参数 Schema、写操作确认、幂等、审计和权威回读。对浏览器本地文件,先通过受控上传取得服务器可读内容,不能把客户端路径当作 API 节点路径。
|
|
33
37
|
|
|
34
38
|
## 商业授权与调用入口
|
|
35
39
|
|
|
@@ -235,7 +239,7 @@ MCP 提供实时事实和受控执行;关键词索引提供低依赖、确定
|
|
|
235
239
|
- [ ] 带行级范围或高风险查询失败关闭,并改走审核、参数化和审计的业务 ApiEngine
|
|
236
240
|
- [ ] NL2V8 保存前有确认、语法、版本、回读和执行验证
|
|
237
241
|
- [ ] Prompt injection 不能调用未授权工具
|
|
238
|
-
- [ ] `microi_chat` 只调用对话入口、拒绝身份/密钥/Endpoint
|
|
242
|
+
- [ ] `microi_chat` 只调用对话入口、拒绝身份/密钥/Endpoint 覆盖并返回最终结果;在线建模的自动执行必须由独立、受当前登录用户鉴权的 MCP HTTP 动作与写后回读证明,不把 `microi_chat` 的回答当作工具执行回执
|
|
239
243
|
- [ ] 各流式入口分别验证断开取消或明确仅有超时,不做过度承诺
|
|
240
244
|
- [ ] Prompt/Answer 当前留存范围已披露;全面脱敏只能在真实实现并回读后声明
|
|
241
245
|
- [ ] 新旧节点知识库版本可共存
|
|
@@ -5,25 +5,33 @@ description: 在 Microi Code、Codex 或 DeepSeek Harness 中完成 Microi吾码
|
|
|
5
5
|
|
|
6
6
|
# Microi吾码 Codex / DeepSeek Harness Plugin
|
|
7
7
|
|
|
8
|
-
本插件与 `Microi.Code`、`@microi.net/cli` 共用配置、Token、MCP Server 和 Microi Skills。不要另写原生 HTTP、SQL 或第二套认证实现。
|
|
9
|
-
|
|
10
|
-
平台 Api/Web 版本入口可生成独立开发工具连接。收到连接 JSON 时,用 `microi auth import --session-stdin` 从标准输入导入,再运行 `microi ai init` 和 `microi doctor`;禁止将 Token 放入命令行、源码或日志,不再索取账号密码。开发 Token 使用现有终端有效期,可独立撤销;它只授权该业务租户,不能替代 Microi Code 的官方 AI 计费账号登录。访问密钥的最小业务 scope 不能替代完整 MCP 管理身份。第三方 App Secret 默认进入系统设置“安全与服务接入”,优先使用 `microi_manage_server_private_secret`。
|
|
8
|
+
本插件与 `Microi.Code`、`@microi.net/cli` 共用配置、Token、MCP Server 和 Microi Skills。不要另写原生 HTTP、SQL 或第二套认证实现。
|
|
9
|
+
|
|
10
|
+
平台 Api/Web 版本入口可生成独立开发工具连接。收到连接 JSON 时,用 `microi auth import --session-stdin` 从标准输入导入,再运行 `microi ai init` 和 `microi doctor`;禁止将 Token 放入命令行、源码或日志,不再索取账号密码。开发 Token 使用现有终端有效期,可独立撤销;它只授权该业务租户,不能替代 Microi Code 的官方 AI 计费账号登录。访问密钥的最小业务 scope 不能替代完整 MCP 管理身份。第三方 App Secret 默认进入系统设置“安全与服务接入”,优先使用 `microi_manage_server_private_secret`。
|
|
11
11
|
|
|
12
12
|
每次 Microi 对话先完整读取工作区 `microi.skills/workspace-conventions/SKILL.md`;工作区尚未初始化时读取本插件同级 `../workspace-conventions/SKILL.md`。按其中首部完成创始人身份识别及平台功能四项同步检查,再进入专项流程;完整规则只维护该基础入口,不复制到本路由。
|
|
13
13
|
|
|
14
14
|
## Microi Code 桌面宿主
|
|
15
15
|
|
|
16
|
-
- Microi Code 是内部仓库中的独立桌面发行物,直接基于 DataElement/dsh-desktop 与 DeepSeek Harness 二次开发,内置固定版本的 Harness SDK、Node.js、MCP / CLI / Skills;不是需要额外 Agent Token 的 CLI 别名。
|
|
16
|
+
- Microi Code 是内部仓库中的独立桌面发行物,直接基于 DataElement/dsh-desktop 与 DeepSeek Harness 二次开发,内置固定版本的 Harness SDK、Node.js、MCP / CLI / Skills;不是需要额外 Agent Token 的 CLI 别名。
|
|
17
17
|
- 官方 AI 登录只走桌面账号窗口,固定 `https://api.itdos.com`、`OsClient=iTdos`,使用当前用户的中转 Key 和额度。不要让用户把密码或 AI Key 写入对话、命令行、MCP 参数或模型配置。
|
|
18
|
-
- 业务连接在「服务器连接(MCP)」中单独添加、登录;官方 AI 账号不授予业务租户权限。项目初始化和资源同步优先使用桌面「项目资源」;其余业务继续调用同源 MCP 的原工具。
|
|
18
|
+
- 业务连接在「服务器连接(MCP)」中单独添加、登录;官方 AI 账号不授予业务租户权限。项目初始化和资源同步优先使用桌面「项目资源」;其余业务继续调用同源 MCP 的原工具。
|
|
19
19
|
- macOS 登录凭据通过桌面 Keychain/受限 IPC 管理;不要在 macOS 改跑当前只支持 Windows 凭据恢复的 `microi auth login`。不要手改 Token 文件。
|
|
20
20
|
- 桌面安装包中的 Harness、Node 和同源资产随桌面版本升级;不运行 npm 自更新去改写正在使用或已签名的安装目录。外部 Codex / WorkBuddy / CLI 的后台更新规则保持不变。
|
|
21
|
-
- 桌面 UI 沿用 dsh-desktop
|
|
22
|
-
- Microi Code 左侧「功能区」动态读取 dsh 的 `settings.section` 注册表,并在主界面 `main` 面板中渲染原设置组件;第一项「Microi吾码」合并官方账号和吾码 AI,第二项为「服务器连接(MCP)」,之后是 dsh 原生设置。功能区与工作区可拖动调高,默认无滚动条;首页/聊天页不显示虚假选中态。底部入口显示「关于 v版本号」及 `LicenseType` 版本标签,连接手机入口保持同一行。品牌显示 `Microi Code` 与 `HARNESS` 标签,新安装默认深色,用户仍可切换浅色/深色。
|
|
23
|
-
- 桌面安装包版本从 `1.0.0`
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
21
|
+
- 桌面 UI 沿用 dsh-desktop 的设计系统;首页保留 dsh 原生会话区,并在下方用无外层卡片边框、无整块背景的差异层完整展示吾码 AI 大类与 29 项图像工具。工具 Id、名称和分类以 `Microi.Client/src/views/ai-engine/ai-image-tool-directory.js` 为事实源,点击时把 `workspace/tool` 路由参数带入 `/#/mic-ai-engine`;模型来源可选当前对话模型、吾码官方中转站或已登录服务器连接。服务器连接入口和“预览版”不重复放进首页。AI 数据分析明确使用 `microi_run_engine` 调用 `mci_ai_data_assistant`,不能改成绕过 MCP 的直接数据库访问。
|
|
22
|
+
- Microi Code 左侧「功能区」动态读取 dsh 的 `settings.section` 注册表,并在主界面 `main` 面板中渲染原设置组件;第一项「Microi吾码」合并官方账号和吾码 AI,第二项为「服务器连接(MCP)」,之后是 dsh 原生设置。功能区与工作区可拖动调高,默认无滚动条;首页/聊天页不显示虚假选中态。底部入口显示「关于 v版本号」及 `LicenseType` 版本标签,连接手机入口保持同一行。品牌显示 `Microi Code` 与 `HARNESS` 标签,新安装默认深色,用户仍可切换浅色/深色。
|
|
23
|
+
- 桌面安装包版本从 `1.0.0` 开始,使用吾码三段十进制进位规则。正式新版本先在发布源码中执行 `version:bump`,核对并提交三个版本文件;Mac 拉取后使用 `bash ./一键打包Mac.sh` 在临时 Git 工作树中打包当前已提交版本,默认不再升版,失败也不能把生成文件留在原检出目录。`--current` 仅作旧命令兼容;同版本本地重打包不得覆盖已公开的不可变产物。测试、类型检查和普通 Web 构建不升版。
|
|
24
|
+
- Windows 安装包的构建成功、Authenticode 签名、SmartScreen/商店信任、HDFS 上传与 CDN 回读是不同证据;双击 `一键打包Windows.cmd` 时自动探测 Microsoft Artifact Signing 或本机可信证书,没有凭据则继续生成明确标记的未签名包,显式 `-Signing Signed` 才失败关闭。签名必须先覆盖安装器及独立执行文件,再计算发布 SHA256。macOS 默认 `bash ./一键打包Mac.sh` 同样自动探测并在无凭据时生成未签名包;`--signed` 是正式门禁,必须在缺少证书或公证钥匙串时失败,并通过 `codesign`、`spctl`、`stapler validate` 后才标记已签名公证。
|
|
25
|
+
- 当前 Electron 桌面运行时不能直接打包 iOS/Android,也不能把现有 DMG 原样提交 Mac App Store。移动端和 MAS 版应作为受限客户端,复用账号、模型、会话、MCP 与桌面配对协议,把 Node/Harness/Shell/插件执行放到配对桌面或合规远端;分别完成 Apple/Google 签名和商店审核。
|
|
26
|
+
- 官方账号页和关于标签通过 `platform-current-user` 接口引擎读取当前 `sys_user.LicenseType`。桌面相关平台业务逻辑优先通过 `microi_itdos` 接口引擎实现;只有接口引擎缺少必需底层原子能力时才能改后端源码,并说明原因。
|
|
27
|
+
- 正式 Windows/macOS 安装包必须内置固定版本且经过 SHA-256 校验的 cloudflared,运行时优先使用安装包 `resources/bin`,避免首次联网临时下载。检查更新从 `https://api.itdos.com/microi-code/updates/` 的匿名接口引擎读取 YAML/JSON,安装包二进制仍通过 HDFS 流式发布。
|
|
28
|
+
- dsh-desktop 升级必须遵循 `Microi.Code/同步dsh-desktop上游.md` 的三方同步流程和补丁意图清单;`microi/`、`packages/microi-code-*` 与桥接代码是永久保护区,普通上游文件使用三方比较,补丁必须经 `npm ci` 重放。关于页、NOTICE、MIT License、DataElement 版权与两个上游仓库链接不得删除。停止或退出后的任务保留历史,当前 SDK 的跨进程历史仅供查看,需新建任务引用继续。
|
|
29
|
+
|
|
30
|
+
### 默认中文输出
|
|
31
|
+
|
|
32
|
+
- 面向用户的回答、计划、工具说明、错误解释和可见进度默认使用简体中文;代码、协议字段、命令、模型名称和路径保留原文。
|
|
33
|
+
- 这条规则通过 Microi Skills 同步到 Microi Code、Codex、DeepSeek Harness、WorkBuddy、CodeBuddy 和 OpenCode 的工作区指令;宿主或模型支持自定义系统提示时,也应将同一条规则放在最高优先级的用户可见输出约束中。
|
|
34
|
+
- 中文规则只能约束可见回答、计划和工具摘要;模型服务内部隐藏思考的语言由模型决定,客户端不能保证每一个内部 token 都是中文,也不应把内部思考当成可导出内容。
|
|
27
35
|
|
|
28
36
|
## 非阻塞自动更新(强制)
|
|
29
37
|
|
|
@@ -14,7 +14,7 @@ description: 当用户在 Codex、DeepSeek Harness、WorkBuddy、CodeBuddy、Qod
|
|
|
14
14
|
- Microi Code 是同仓独立桌面发行物,内置固定版本的 DeepSeek Harness SDK、Node.js、MCP / CLI / Skills;不是需要额外 Agent Token 的 CLI 别名。
|
|
15
15
|
- 官方 AI 登录只走桌面账号窗口,固定 `https://api.itdos.com`、`OsClient=iTdos`,使用当前用户的中转 Key 和额度。不要让用户把密码或 AI Key 写入对话、命令行、MCP 参数或模型配置。
|
|
16
16
|
- 业务连接在「服务器连接」中单独添加、登录;官方 AI 账号不授予业务租户权限。项目初始化和资源同步优先使用桌面「项目资源」;其余业务继续调用同源 MCP 的原工具。
|
|
17
|
-
- macOS
|
|
17
|
+
- macOS CLI 登录、`auth import --session-stdin` 与 MCP Token 恢复使用系统 Keychain;Windows 使用 DPAPI。只使用包含原生 Keychain 支持的正式 CLI,旧版或用户目录临时兼容补丁不能代替发布包。不要手改 Token 文件;导入后用 `doctor`、MCP `initialize`、`tools/list`、`microi_get_status` 回读。
|
|
18
18
|
- 桌面安装包中的 Harness、Node 和同源资产随桌面版本升级;不运行 npm 自更新去改写正在使用或已签名的安装目录。外部 Codex / WorkBuddy / CLI 的后台更新规则保持不变。
|
|
19
19
|
- 首次为浅色玻璃水纹,支持深色和自选主题色。停止或退出后的任务保留历史,当前 SDK 的跨进程历史仅供查看,需新建任务引用继续。
|
|
20
20
|
|
|
@@ -165,7 +165,7 @@ microi init --workspace <工作区> --pull
|
|
|
165
165
|
|
|
166
166
|
`init` 必须能够在干净空目录中依次添加服务器连接、交互登录、生成 `microi.skills/`、`AGENTS.md`、`CLAUDE.md`、Copilot/Cursor/CodeBuddy 规则、CodeBuddy/Qoder/Comate 项目 Skill、typings、`jsconfig.json`,并配置 Codex、VS Code、Cursor、Trae、Claude Code、WorkBuddy、CodeBuddy、Qoder、Comate MCP。密码只允许隐式输入,禁止放入命令参数、对话记录或明文生成文件。Windows 需要静默恢复时,只能写入当前工作区 `Microi-V8-Engine/.microi-workspace-secrets.dpapi.json` 的 DPAPI CurrentUser 密文保险库;MCP 环境只保存该路径和 Key 名,保险库与同目录 Token 文件必须 Git-ignore。
|
|
167
167
|
|
|
168
|
-
安装/升级后若 `microi doctor` 返回“Token 签名验证失败”,先区分验签密钥变化与 20 天到期。新版 MCP
|
|
168
|
+
安装/升级后若 `microi doctor` 返回“Token 签名验证失败”,先区分验签密钥变化与 20 天到期。新版 MCP 会从 Windows 工作区 DPAPI 保险库或 macOS Keychain 重载精确 Profile 的帐号密码并自动续登、更新 Token/MCP;不得删除全部 Profile、清空 Token 文件或要求用户反复手工输入。同一 `OsClient` 的多条 SaaS 运行记录必须由后端在 JWT 初始化前收敛到同一个 `AuthSecret`,否则更新后仍会反复失效。
|
|
169
169
|
|
|
170
170
|
原生配置对应关系:
|
|
171
171
|
|
|
@@ -75,7 +75,7 @@ Playwright 使用 `browser.newContext()`。人工第二组至少使用无痕窗
|
|
|
75
75
|
- MySQL、Redis、MongoDB、MinIO/HDFS 地址和持久卷;
|
|
76
76
|
- 当前 `OsClient`、数据库备份、对象存储备份和配置备份;
|
|
77
77
|
- JWT/AuthSecret 等集群共享密钥的指纹一致性,绝不输出明文;
|
|
78
|
-
- `/api/Diagnostics/health`
|
|
78
|
+
- `/api/Diagnostics/health`、`/api/Diagnostics/liveness` 与兼容地址 `/apiengine/platform-service-health` 仅证明 API 宿主存活,均不检查 MongoDB、Redis、MySQL 或外部设备接口;依赖可用性另查服务探针与真实业务路径。健康 GET 在动态路由和业务压力控制前响应,禁止把相似路径或 POST 当作免限流入口;
|
|
79
79
|
- 当前运行中的 Node、dotnet、Docker build 等重任务。
|
|
80
80
|
|
|
81
81
|
## 后端配置单一事实源(强制)
|
|
@@ -210,11 +210,18 @@ AI 生成菜单微服务时,应优先封装一个 `callMicroiHost(action, data
|
|
|
210
210
|
- 加载容器必须设置 `aria-busy="true"` 并提供可读状态文本;`prefers-reduced-motion: reduce` 时停用 shimmer。成功、空数据、失败和无权限是四种独立终态,失败不得永久停留在骨架。
|
|
211
211
|
- 骨架必须在 import/fetch 之前进入 DOM,切换期间不销毁宿主导航;真实浏览器验收要用网络节流或可控延迟分别截取首次打开和至少一次内部路由切换的骨架,再确认最终页面、前进/后退与错误重试均正常。
|
|
212
212
|
|
|
213
|
-
复盘:AI 工作流业务蓝图曾在路由切换后先显示空白/转圈,根因是只给异步组件配置了加载逻辑,
|
|
214
|
-
没有把路由加载、页面数据加载和最终几何统一成状态协议。通用规则是“路由 fallback + 页面内骨架 +
|
|
215
|
-
明确终态”三层同时存在,并以真实浏览器慢网截图作为交付门禁。
|
|
216
|
-
|
|
217
|
-
###
|
|
213
|
+
复盘:AI 工作流业务蓝图曾在路由切换后先显示空白/转圈,根因是只给异步组件配置了加载逻辑,
|
|
214
|
+
没有把路由加载、页面数据加载和最终几何统一成状态协议。通用规则是“路由 fallback + 页面内骨架 +
|
|
215
|
+
明确终态”三层同时存在,并以真实浏览器慢网截图作为交付门禁。
|
|
216
|
+
|
|
217
|
+
### 3D 数字孪生动态资产与许可门禁
|
|
218
|
+
|
|
219
|
+
- 道路车辆、人物、设备动画不能只靠静态截图验收。浏览器测试应同时断言对象数量、时间推进后的坐标/骨骼变化、路径末端回绕、切换楼层后的恢复及 `prefers-reduced-motion` 设置下的实际行为;测试探针只暴露非敏感数量和位置,不暴露 Token、人员或设备隐私。若持续运动本身是用户明确要求的核心功能,不得把系统的“减少动态效果”误用为整体动画总开关;只降级装饰性过渡,并提供可见、可键盘操作的暂停/恢复控制。页面隐藏或暂停期间冻结业务动画时钟,恢复时扣除停顿时间,避免物体瞬移。
|
|
220
|
+
- 外部 GLB/GLTF 进入官方运行包前,逐项保存作者、原始地址、许可证、是否允许商用和再分发、署名方式、三角面数、纹理大小及优化记录。“免费下载”、搜索摘要或仓库内没有许可证都不构成可再分发授权;`NC`、`ND` 或用途不明的资产默认不进入商业应用包。
|
|
221
|
+
- 品牌车辆和真实建筑只能在拥有明确资产/商标使用依据时描述为精确复刻。程序化或原创近似模型使用“风格化/演示模型”措辞,不得把车型标签当作厂商认证。视觉签收与功能、运行发布、商城包、目标租户安装是不同证据层。
|
|
222
|
+
- 运动物体优先使用可复用几何/材质、LOD、实例化和离屏回绕;相机近景仍要检查曲面法线、透明车窗、轮胎方向、脚底接地、穿模和阴影。页面隐藏时暂停动画,恢复时避免累积大时间差导致物体瞬移。
|
|
223
|
+
|
|
224
|
+
### 菜单页签缓存与子应用生命周期(强制)
|
|
218
225
|
|
|
219
226
|
- 菜单微服务只有一个缓存所有者:Vue 路由宿主固定 `meta.keepAlive=false`,`<micro-app keep-alive>` 独占子应用状态。禁止把外层 Vue `KeepAlive` 打开,也禁止子应用通过随机实例名规避运行时缓存;双层缓存会产生旧宿主与当前路由竞争、无数据、永久骨架屏和白屏。
|
|
220
227
|
- 每个主框架 `fullPath` 使用稳定且不泄露查询参数/Token 的实例指纹。平台最多保留 5 个菜单运行时,超过后按 LRU 销毁最久未使用的隐藏实例;Tab 仍保留,再次进入允许冷启动。关闭当前/其它/全部 Tab、访问记录淘汰、退出登录、Token 重置、角色变化、同路由版本或入口变化时必须精确 `unmountApp(name,{destroy:true,clearData:true})`。
|
|
@@ -29,6 +29,8 @@ UniApp/H5/小程序必须通过项目统一 `microi.v8.js` 的 `V8.uploadFile` /
|
|
|
29
29
|
<!-- microi-progressive:chunk id=microi-uniapp-frontend-001 sha256=8096a337726080dadd3ce98b935e8fc5f77b62cd68f9fb3418ff737dfef97a4b -->
|
|
30
30
|
## 标准产品、视图协议与租户扩展
|
|
31
31
|
|
|
32
|
+
动态表单的组织/树字段优先复用原生 `mci-native-field` 树形下拉与 `native-tree-options.mjs`,无需为小程序把后台 `Department` 改为普通 Select。读取 `Config.<Component>.Multiple/EmitPath`:组织单选叶值保存 Id,多选叶值保存 Id 数组,路径模式保存完整路径/路径数组,数组统一 JSON 序列化。支持祖先展开、搜索、清空、禁用、重试和只读回显;数据源旧模板不能代替当前授权组织树。业务字段联动放租户扩展,不执行任意前端 V8;验收覆盖保存格式、旧数据回显、失败/迟到响应及最近公司祖先联动。
|
|
33
|
+
|
|
32
34
|
Microi 标准小程序必须采用“平台内核 + 版本化元数据 + Profile + 租户插件”架构,不能把某个交付项目直接写死成平台产品:
|
|
33
35
|
|
|
34
36
|
- `src/platform/`、通用 `mci-*` 组件、动态模块页和动态表单页只实现平台能力,不得出现租户表名、字段名、品牌文案、素材或客户路由。
|
|
@@ -76,10 +76,11 @@ AI 第一次使用时先查询 `action=Capabilities`,再按返回的动作、
|
|
|
76
76
|
|---|---|---|
|
|
77
77
|
| `Capabilities` | 能力目录与真实边界 | 无 |
|
|
78
78
|
| `Snapshot` | 请求、进程、主机、Docker、队列、诊断和实时网络 | `windowMinutes=1..15`、`top`、`includeHost`、`includeDocker` |
|
|
79
|
-
| `Memory` |
|
|
80
|
-
| `MemoryIncidents` |
|
|
81
|
-
| `MemoryIncident` | 执行链、代码哈希、CLR 分配栈和退出证据 | 32 位小写十六进制 `incidentId` |
|
|
82
|
-
|
|
79
|
+
| `Memory` | 当前节点内存压力、线程池及共享请求槽占用/等待、执行分配、对象类型和采集质量 | 无;必须先核对采集器心跳与存储错误 |
|
|
80
|
+
| `MemoryIncidents` | 当前租户共享事故与本机持久记录摘要;持续线程池积压也会触发留证 | 最近最多 50 条 |
|
|
81
|
+
| `MemoryIncident` | 执行链、代码哈希、CLR 分配栈和退出证据 | 32 位小写十六进制 `incidentId` |
|
|
82
|
+
|
|
83
|
+
| `Logs` | 日志列表和完整详情数据 | `keyword/type/category/source/level/searchMonth/pageIndex/pageSize` |
|
|
83
84
|
| `LogTypes` | 日志类型与数量 | `keyword/searchMonth` |
|
|
84
85
|
| `LogStats` | 总数、错误、警告、慢 SQL、慢执行、异常 | `keyword/searchMonth` |
|
|
85
86
|
| `Signal` | 时间窗内的诊断信号 | `windowSeconds=60..86400` 与日志过滤项 |
|
|
@@ -90,7 +91,10 @@ AI 第一次使用时先查询 `action=Capabilities`,再按返回的动作、
|
|
|
90
91
|
| `SecurityData` | 访问、攻击或封锁记录 | `kind=Access|Attack|Block`、分页 |
|
|
91
92
|
| `TrafficHistory` | MySQL 固定时间桶流量趋势 | `rangeKey`;可选 `dimensionType` |
|
|
92
93
|
| `HistoricalDashboard` | 同一时间范围内的热点接口、IP、帐号、租户、内容类型与请求/流量总览 | `rangeKey=live5|today|yesterday|3d|7d|15d|30d|3m|6m|1y`、`top` |
|
|
93
|
-
| `TrafficDetails` | 跨月大文件、上传下载和可疑传输 MongoDB 明细 | `rangeKey`、`pageIndex/pageSize`;可选 `keyword/transferAction/ip/userId/endpoint` |
|
|
94
|
+
| `TrafficDetails` | 跨月大文件、上传下载和可疑传输 MongoDB 明细 | `rangeKey`、`pageIndex/pageSize`;可选 `keyword/transferAction/ip/userId/endpoint` |
|
|
95
|
+
|
|
96
|
+
`Memory` 和事故帧中的 `PressureGlobal*`、`PressureV8Global*` 给出共享槽占用与排队;持续满额排队触发 `SustainedRequestGateWait` 留证。它说明当前节点共享闸门拥堵,需结合租户执行链定位长请求,不能只凭片段数归责某租户。
|
|
97
|
+
请求先取单接口/单租户槽,再取共享 V8/全局槽,避免故障租户在自身槽前排队时占住其它租户的共享容量。不得把 V8.Http 全局默认 600 秒改短来处理单个上游故障;业务需要时按接口明确配置超时。
|
|
94
98
|
|
|
95
99
|
示例:
|
|
96
100
|
|
|
@@ -193,9 +193,16 @@ Microi 项目必须支持用户或项目级形态偏好:`data-mci-shape="round
|
|
|
193
193
|
- [references/progressive-06-主题切换实现.md](references/progressive-06-主题切换实现.md):主题切换实现;命名规范
|
|
194
194
|
- [references/progressive-07-速查-从头搭建一个移动端页面.md](references/progressive-07-速查-从头搭建一个移动端页面.md):速查:从头搭建一个移动端页面;🚨 移动端低代码项目落地踩坑(必读,2026.5);🔗 关联字段:保存真实 Id,界面展示可读标签;表单布局规范(Column)
|
|
195
195
|
- [references/progressive-08-表单分组规范-tabs-vs-collapsegroup-强制.md](references/progressive-08-表单分组规范-tabs-vs-collapsegroup-强制.md):表单分组规范:Tabs vs CollapseGroup(强制);缓存刷新(解决"我改了字段但页面不变"问题);接口引擎匿名访问;MCI-UI 与第三方组件库策略;MCI-UI 源码落地位置;VitePress 中文文档布局规范
|
|
196
|
-
<!-- microi-progressive:end -->
|
|
197
|
-
|
|
198
|
-
##
|
|
196
|
+
<!-- microi-progressive:end -->
|
|
197
|
+
|
|
198
|
+
## 按钮文本可读性与多端验收(强制)
|
|
199
|
+
|
|
200
|
+
- 主按钮、下载按钮、CTA、标签式链接必须在组件自己的命名空间内显式声明默认、hover、focus-visible、active、disabled 的文字色、背景色和边框色;不得依赖父级文字色、全局 `a` 样式、浏览器默认色或透明背景上的偶然对比度。图标的 `color` / `stroke` / `fill` 必须跟随同一语义前景色。
|
|
201
|
+
- 普通文字与背景的对比度至少达到 4.5:1;大号文字至少达到 3:1;有意义的图标、边框和焦点指示至少达到 3:1。渐变、透明、毛玻璃和背景图片上的按钮,要按实际可出现的最差背景位置验收,不能只检查 CSS 变量名或设计稿色值。
|
|
202
|
+
- 每个关键按钮必须在真实渲染页逐一核对“按钮存在、完整文案可见、前景色和背景色可区分、hover/focus 后仍可读、点击区域未被遮挡”。自动化至少读取最终 computed style 并断言颜色不是透明或同色;视觉验收至少覆盖 1440px 桌面与约 390px 手机宽度的浅色、暗色截图。
|
|
203
|
+
- 禁止仅凭桌面截图、DOM 中存在文字或构建成功判定按钮验收通过。手机端折行、响应式覆盖、Markdown/VitePress 全局链接样式、主题切换和浏览器已访问链接状态都必须纳入回归检查;任一关键按钮在任一目标主题或宽度下看不清,即视为未完成。
|
|
204
|
+
|
|
205
|
+
## Microi 低代码工作台默认清爽体验(强制)
|
|
199
206
|
|
|
200
207
|
`diy-form`、`diy-table`、模块卡片、设计器弹窗和框架导航默认采用清爽、紧凑、层次明确的现代视觉;经典样式只能作为显式兼容模式保留,不能继续作为新页面或未配置页面的默认外观。
|
|
201
208
|
|
|
@@ -132,12 +132,14 @@ return {
|
|
|
132
132
|
优先级:列级样式覆盖全局样式;`Width` 覆盖 `DefaultColumnWidth`;开启 `AutoSize` 后以自动宽度为准,再应用 `MinWidth/MaxWidth`。不传这些新参数时保持旧版导出行为。
|
|
133
133
|
|
|
134
134
|
<!-- /microi-progressive:chunk -->
|
|
135
|
-
<!-- microi-progressive:chunk id=v8-export-import-002 sha256=
|
|
136
|
-
## 文件响应与前端调用约定
|
|
137
|
-
|
|
138
|
-
- 接口引擎必须开启【响应文件】,并返回正确的 `FileName`、`ContentType`、`FileByteBase64`。
|
|
139
|
-
-
|
|
140
|
-
-
|
|
135
|
+
<!-- microi-progressive:chunk id=v8-export-import-002 sha256=c18ba2c06baf3e7fb2cea79fe46637d3223d1f6b6454aa46057cfb80addd352a -->
|
|
136
|
+
## 文件响应与前端调用约定
|
|
137
|
+
|
|
138
|
+
- 接口引擎必须开启【响应文件】,并返回正确的 `FileName`、`ContentType`、`FileByteBase64`。
|
|
139
|
+
- 后台菜单的【导出接口替换】默认仍是登录态调用,不要为了消除“请求未携带 Token”而开启【允许匿名调用】。平台会把当前 DiyToken 放入 `Authorization: Bearer ...` 请求头;接口引擎保持【允许匿名调用】关闭即可使用 `V8.CurrentUser` 和既有权限边界。
|
|
140
|
+
- 自定义导出无论收到业务错误、无法解析的文件响应还是网络异常,都必须结束按钮 Loading;前端应 `await` 导出 Promise 并在 `finally` 恢复状态,不能只依赖成功分支回调。
|
|
141
|
+
- `V8.Office.ExportExcel/ExportWord/ExportPowerPoint` 返回的是 `DosResult<byte[]>`;先判断 `Code`,再对 `Data` 调用 `System.Convert.ToBase64String`。
|
|
142
|
+
- 前端调用 Office 导出接口时,新代码优先使用 `V8.Http.GetResponse/PostResponse`;`V8.Post/V8.Get` 仅用于兼容历史代码,不再作为新代码首选。
|
|
141
143
|
|
|
142
144
|
### 表头基础配置项
|
|
143
145
|
|
|
@@ -152,7 +154,7 @@ return {
|
|
|
152
154
|
| `NumberFormat/HeaderStyle/Style` | 数字格式与列级样式 |
|
|
153
155
|
|
|
154
156
|
<!-- /microi-progressive:chunk -->
|
|
155
|
-
<!-- microi-progressive:chunk id=v8-export-import-003 sha256=
|
|
157
|
+
<!-- microi-progressive:chunk id=v8-export-import-003 sha256=5975618ee1d3b9a4828d9f88cf35bc4efe4a8d7f45b94bd40077fa50b1d89c1f -->
|
|
156
158
|
## 解析上传的 Excel / CSV(导入)
|
|
157
159
|
|
|
158
160
|
```javascript
|
|
@@ -5,9 +5,9 @@ description: Microi V8 HTTP 集成指南。用于通过 V8.Http.Get/Post/Patch
|
|
|
5
5
|
|
|
6
6
|
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
|
-
# Microi V8 HTTP 外部接口集成
|
|
9
|
-
|
|
10
|
-
第三方集成一旦需要 App Secret、ClientSecret、API Key(例如畅捷通 T+),先发现现有“系统设置 → 安全与服务接入”,调用 `microi_manage_server_private_secret` 的 List/Save,将 Secret 存为当前租户 `mci_system_setting` 的加密私密项。后端通过 `V8.SysConfig.ServerPrivateSettings['Integration.Changjet.AppSecret']` 使用。不要因为 `V8.OsClientModel` 已脱敏就判断平台无法存储或读取 Secret,也不要要求新增服务器配置/C# 端点。已有用户授权即可执行保存与脱敏回读;缺少工具时先读取 `../v8-security/SKILL.md` 的现有能力与实际连接版本。
|
|
8
|
+
# Microi V8 HTTP 外部接口集成
|
|
9
|
+
|
|
10
|
+
第三方集成一旦需要 App Secret、ClientSecret、API Key(例如畅捷通 T+),先发现现有“系统设置 → 安全与服务接入”,调用 `microi_manage_server_private_secret` 的 List/Save,将 Secret 存为当前租户 `mci_system_setting` 的加密私密项。后端通过 `V8.SysConfig.ServerPrivateSettings['Integration.Changjet.AppSecret']` 使用。不要因为 `V8.OsClientModel` 已脱敏就判断平台无法存储或读取 Secret,也不要要求新增服务器配置/C# 端点。已有用户授权即可执行保存与脱敏回读;缺少工具时先读取 `../v8-security/SKILL.md` 的现有能力与实际连接版本。
|
|
11
11
|
|
|
12
12
|
你正在开发 Microi 吾码平台的 V8 引擎代码,需要调用外部 HTTP API(微信、支付宝、短信、ERP 等第三方系统)。
|
|
13
13
|
|
|
@@ -111,7 +111,9 @@ V8.OpenAppDialog({
|
|
|
111
111
|
| `AppKey` | 是 | - | `sys_microiservice.MsKey`,目标微服务必须已经编译发布。 |
|
|
112
112
|
| `RoutePath` | 否 | `/` | 子应用内部路由;`MicroRoute` 是兼容别名,优先取 `RoutePath`。 |
|
|
113
113
|
| `Version` | 否 | 当前 `BuildVersion` | 固定加载某个发布版本;通常省略以使用当前版本。 |
|
|
114
|
-
| `Title` | 否 | `应用` | Dialog/Drawer 标题。 |
|
|
114
|
+
| `Title` | 否 | `应用` | Dialog/Drawer 标题。 |
|
|
115
|
+
| `Header` | 否 | - | 初始外层标题栏 `{ title, tags, actions }`;仅可序列化文本和动作标识。 |
|
|
116
|
+
| `OnHeaderAction(actionId, V8)` | 否 | - | 可选调用方前端 V8 动作;不设置时由子应用处理按钮点击。 |
|
|
115
117
|
| `TitleIcon` | 否 | `fas fa-window-maximize` | 标题图标 class。 |
|
|
116
118
|
| `Width` | 否 | `min(920px, calc(100vw - 32px))` | CSS 宽度值,推荐带移动端安全边距。 |
|
|
117
119
|
| `OpenType` | 否 | `Dialog` | `Dialog` 或 `Drawer`。 |
|
|
@@ -120,7 +122,9 @@ V8.OpenAppDialog({
|
|
|
120
122
|
| `OnCancel(data)` | 否 | - | 子应用取消回调,回调后自动关闭。 |
|
|
121
123
|
| `OnError(error)` | 否 | - | 加载或执行错误回调,不自动关闭。 |
|
|
122
124
|
|
|
123
|
-
宿主还会自动传入 `apiBase`、`osClient`、`token`、`appKey`、`version`、`microRoute`、`dialog:true`。子应用返回协议:
|
|
125
|
+
宿主还会自动传入 `apiBase`、`osClient`、`token`、`appKey`、`version`、`microRoute`、`dialog:true`。子应用返回协议:
|
|
126
|
+
|
|
127
|
+
宿主支持 `dialogHeaderBridge:true` 时,子应用可隐藏内部工具栏,使用 `window.microApp.forceDispatch({ type:'app-dialog:header', data:{ title:'单据号', tags:[{text:'待审核',tone:'warning'}], actions:[{id:'approve',text:'审核',tone:'success'}] } })` 更新外层标题栏。若未传 `OnHeaderAction`,宿主会把按钮点击作为 `host:dialog-action` 数据消息回传 `actionId/requestId`,子应用仍需向后端重新核验权限;旧宿主继续显示子应用自己的工具栏。
|
|
124
128
|
|
|
125
129
|
```js
|
|
126
130
|
window.microApp.dispatch({ type: 'app-dialog:success', data: { message: '已提交' } });
|