@microi.net/cli 5.5.0 → 5.5.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.
- 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 +3 -3
- package/cordis.patch.yml +1 -1
- package/package.json +1 -1
- package/scripts/microi-skills.meta.json +201 -201
- package/skills/.microi-skills-version.json +2 -2
- package/skills/.progressive-disclosure-manifest.json +7 -7
- package/skills/README.md +103 -103
- package/skills/ai-engine/SKILL.md +90 -90
- package/skills/microi-db-schema/references/core-tables.md +1 -1
- package/skills/microi-db-schema/references/table-catalog.md +1 -1
- package/skills/microi-docs-coverage/references/capability-map.md +2 -2
- package/skills/microi-microservice/SKILL.md +292 -290
- package/skills/v8-api-config/SKILL.md +275 -263
- package/skills/v8-cache-pattern/SKILL.md +3 -1
- package/skills/v8-file-upload/SKILL.md +9 -9
- 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 +26 -22
- package/skills/v8-saas-multi-tenant/SKILL.md +113 -97
- package/skills/vision-engine/SKILL.md +152 -148
- package/skills/vision-engine/agents/openai.yaml +4 -4
- package/skills/vision-engine/references/architecture-and-acceptance.md +172 -172
package/skills/README.md
CHANGED
|
@@ -6,9 +6,9 @@
|
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
9
|
-
## 包含的 Skills
|
|
10
|
-
|
|
11
|
-
当前仓库包含 66 个 `SKILL.md`。以下清单按任务类型组织;AI 必须先完整读取与当前任务匹配的 Skill,再执行源码、MCP、文档或交付操作。
|
|
9
|
+
## 包含的 Skills
|
|
10
|
+
|
|
11
|
+
当前仓库包含 66 个 `SKILL.md`。以下清单按任务类型组织;AI 必须先完整读取与当前任务匹配的 Skill,再执行源码、MCP、文档或交付操作。
|
|
12
12
|
|
|
13
13
|
### V8 引擎核心(后端)
|
|
14
14
|
|
|
@@ -17,23 +17,23 @@
|
|
|
17
17
|
| **v8-crud-api** | 接口引擎增删改查 | `v8-crud-api/SKILL.md` |
|
|
18
18
|
| **v8-sql-query** | 安全的 SQL 查询(参数化、_Where 语法、事务) | `v8-sql-query/SKILL.md` |
|
|
19
19
|
| **v8-table-event** | 表单 V8 事件(提交前/后、DataFilter) | `v8-table-event/SKILL.md` |
|
|
20
|
-
| **v8-cache-pattern** | Redis 缓存模式(L1+L2、Key 命名、防穿透) | `v8-cache-pattern/SKILL.md` |
|
|
21
|
-
| **v8-http-integration** | 调用外部 HTTP API(含下载/上传) | `v8-http-integration/SKILL.md` |
|
|
22
|
-
| **v8-tcp-integration** | 后端 TCP 原始字节、小票机与设备收发 | `v8-tcp-integration/SKILL.md` |
|
|
23
|
-
| **v8-mongodb** | MongoDB 增删改查(IoT、审计日志) | `v8-mongodb/SKILL.md` |
|
|
20
|
+
| **v8-cache-pattern** | Redis 缓存模式(L1+L2、Key 命名、防穿透) | `v8-cache-pattern/SKILL.md` |
|
|
21
|
+
| **v8-http-integration** | 调用外部 HTTP API(含下载/上传) | `v8-http-integration/SKILL.md` |
|
|
22
|
+
| **v8-tcp-integration** | 后端 TCP 原始字节、小票机与设备收发 | `v8-tcp-integration/SKILL.md` |
|
|
23
|
+
| **v8-mongodb** | MongoDB 增删改查(IoT、审计日志) | `v8-mongodb/SKILL.md` |
|
|
24
24
|
| **v8-mq-mqtt** | RabbitMQ 消息队列与 MQTT 物联网 | `v8-mq-mqtt/SKILL.md` |
|
|
25
25
|
| **v8-workflow** | 工作流(审批流程)V8 事件 | `v8-workflow/SKILL.md` |
|
|
26
|
-
| **v8-api-config** | 接口引擎配置(匿名/锁/StopHttp/响应文件) | `v8-api-config/SKILL.md` |
|
|
27
|
-
| **v8-saas-multi-tenant** | SaaS 多租户(OsClient/OsClientModel) | `v8-saas-multi-tenant/SKILL.md` |
|
|
28
|
-
| **v8-image-processing** | 服务端图片生成、合并、覆盖、水印、缩放、裁剪、绘制与二维码 | `v8-image-processing/SKILL.md` |
|
|
29
|
-
| **v8-file-upload** | 文件上传/下载/响应(HDFS、私有桶 URL) | `v8-file-upload/SKILL.md` |
|
|
26
|
+
| **v8-api-config** | 接口引擎配置(匿名/锁/StopHttp/响应文件) | `v8-api-config/SKILL.md` |
|
|
27
|
+
| **v8-saas-multi-tenant** | SaaS 多租户(OsClient/OsClientModel) | `v8-saas-multi-tenant/SKILL.md` |
|
|
28
|
+
| **v8-image-processing** | 服务端图片生成、合并、覆盖、水印、缩放、裁剪、绘制与二维码 | `v8-image-processing/SKILL.md` |
|
|
29
|
+
| **v8-file-upload** | 文件上传/下载/响应(HDFS、私有桶 URL) | `v8-file-upload/SKILL.md` |
|
|
30
30
|
| **v8-export-import** | Excel 自定义导入导出(含进度跟踪) | `v8-export-import/SKILL.md` |
|
|
31
|
-
| **v8-debugging** | 调试模式、异常捕获、系统日志 | `v8-debugging/SKILL.md` |
|
|
32
|
-
| **v8-security** | 安全最佳实践(权限/输入验证/防注入) | `v8-security/SKILL.md` |
|
|
33
|
-
| **v8-utilities** | 前后端 V8 上下文、通用函数、扫码、消息、Base64、加密和专项 API 索引 | `v8-utilities/SKILL.md` |
|
|
34
|
-
| **ocr-engine** | 通用 OCR 网关、SaaS 配置、PaddleX 服务与多节点验收 | `ocr-engine/SKILL.md` |
|
|
35
|
-
| **vision-engine** | 通用物体/商品/人员视觉识别、租户样本匹配、异步 AI 回退与生物特征治理 | `vision-engine/SKILL.md` |
|
|
36
|
-
| **spider-engine** | 爬虫/浏览器采集 Worker、会话、目标地址、配额与交付边界 | `spider-engine/SKILL.md` |
|
|
31
|
+
| **v8-debugging** | 调试模式、异常捕获、系统日志 | `v8-debugging/SKILL.md` |
|
|
32
|
+
| **v8-security** | 安全最佳实践(权限/输入验证/防注入) | `v8-security/SKILL.md` |
|
|
33
|
+
| **v8-utilities** | 前后端 V8 上下文、通用函数、扫码、消息、Base64、加密和专项 API 索引 | `v8-utilities/SKILL.md` |
|
|
34
|
+
| **ocr-engine** | 通用 OCR 网关、SaaS 配置、PaddleX 服务与多节点验收 | `ocr-engine/SKILL.md` |
|
|
35
|
+
| **vision-engine** | 通用物体/商品/人员视觉识别、租户样本匹配、异步 AI 回退与生物特征治理 | `vision-engine/SKILL.md` |
|
|
36
|
+
| **spider-engine** | 爬虫/浏览器采集 Worker、会话、目标地址、配额与交付边界 | `spider-engine/SKILL.md` |
|
|
37
37
|
|
|
38
38
|
### V8 引擎核心(前端)
|
|
39
39
|
|
|
@@ -51,48 +51,48 @@
|
|
|
51
51
|
| **page-engine** | 界面引擎页面 JSON 生成 | `page-engine/SKILL.md` |
|
|
52
52
|
| **print-engine** | 打印引擎模板 JSON 生成 | `print-engine/SKILL.md` |
|
|
53
53
|
| **ui-design** | Microi吾码设计规范(阴影/动效/主题/性能) | `ui-design/SKILL.md` |
|
|
54
|
-
| **microi-ui** | 吾码UI(Microi.UI / MCI-UI)组件库、主题 palette、圆角/扁平、Web/UniApp 用法 | `microi-ui/SKILL.md` |
|
|
55
|
-
| **microi-form-engine** | 表单设计器、字段组件、数据源、事件和物理类型 | `microi-form-engine/SKILL.md` |
|
|
56
|
-
| **microi-form-layout** | 表单布局分组规范:Tabs vs CollapseGroup 决策、字段数阈值、回读验收 | `microi-form-layout/SKILL.md` |
|
|
57
|
-
| **microi-db-schema** | 数据库字典、核心表关系、字段归属与 V8 配置存储位置 | `microi-db-schema/SKILL.md` |
|
|
58
|
-
| **module-engine** | sys_menu 菜单模块、查询列、打开方式、ViewSchema 和多表查询 | `module-engine/SKILL.md` |
|
|
59
|
-
| **dos-orm** | Dos.ORM 实体、查询、事务、Provider、批量写入与 CodeFirst | `dos-orm/SKILL.md` |
|
|
60
|
-
| **microi-left-right-layout** | 模块引擎“树形+表格/表单”左右布局与主外键过滤 | `microi-left-right-layout/SKILL.md` |
|
|
61
|
-
| **datasource-engine** | SQL/V8/JSON 数据源设计、租户与权限、字段供数和验收 | `datasource-engine/SKILL.md` |
|
|
62
|
-
| **job-engine** | 定时/后台任务、多节点租约、幂等、恢复和进度 | `job-engine/SKILL.md` |
|
|
63
|
-
| **message-notification** | 公众号/服务号、短信、邮件、平台内部通知、SignalR、幂等与商城交付 | `message-notification/SKILL.md` |
|
|
64
|
-
| **search-engine** | Elasticsearch 索引、同步、查询、租户/数据范围和重建 | `search-engine/SKILL.md` |
|
|
65
|
-
| **report-engine** | Rpt_Report 虚拟报表、数据源、聚合、写接口和导出 | `report-engine/SKILL.md` |
|
|
66
|
-
| **translate-engine** | 多语言词条、翻译供应商、租户隔离、缓存和批量翻译 | `translate-engine/SKILL.md` |
|
|
67
|
-
| **ai-engine** | 模型代理、NL2SQL/NL2V8、Schema/Skill 关键词检索与可选向量融合 | `ai-engine/SKILL.md` |
|
|
68
|
-
| **ai-platform-governance** | 门户/身份/配置/发布、服务韧性、Trace/日志、资产协作与可恢复导入 | `ai-platform-governance/SKILL.md` |
|
|
69
|
-
| **system-observability** | 系统日志、Trace、热点接口、资源监控、网络流量归因、安全事件与 AI 查询/治理 | `system-observability/SKILL.md` |
|
|
70
|
-
| **app-store** | 应用包、Manifest、后台安装、差异升级、回滚和验收 | `app-store/SKILL.md` |
|
|
71
|
-
| **microi-sso** | 双向 OIDC/SAML2/CAS、账号映射、Secret/证书、官方商城发布与伙伴联调 | `microi-sso/SKILL.md` |
|
|
54
|
+
| **microi-ui** | 吾码UI(Microi.UI / MCI-UI)组件库、主题 palette、圆角/扁平、Web/UniApp 用法 | `microi-ui/SKILL.md` |
|
|
55
|
+
| **microi-form-engine** | 表单设计器、字段组件、数据源、事件和物理类型 | `microi-form-engine/SKILL.md` |
|
|
56
|
+
| **microi-form-layout** | 表单布局分组规范:Tabs vs CollapseGroup 决策、字段数阈值、回读验收 | `microi-form-layout/SKILL.md` |
|
|
57
|
+
| **microi-db-schema** | 数据库字典、核心表关系、字段归属与 V8 配置存储位置 | `microi-db-schema/SKILL.md` |
|
|
58
|
+
| **module-engine** | sys_menu 菜单模块、查询列、打开方式、ViewSchema 和多表查询 | `module-engine/SKILL.md` |
|
|
59
|
+
| **dos-orm** | Dos.ORM 实体、查询、事务、Provider、批量写入与 CodeFirst | `dos-orm/SKILL.md` |
|
|
60
|
+
| **microi-left-right-layout** | 模块引擎“树形+表格/表单”左右布局与主外键过滤 | `microi-left-right-layout/SKILL.md` |
|
|
61
|
+
| **datasource-engine** | SQL/V8/JSON 数据源设计、租户与权限、字段供数和验收 | `datasource-engine/SKILL.md` |
|
|
62
|
+
| **job-engine** | 定时/后台任务、多节点租约、幂等、恢复和进度 | `job-engine/SKILL.md` |
|
|
63
|
+
| **message-notification** | 公众号/服务号、短信、邮件、平台内部通知、SignalR、幂等与商城交付 | `message-notification/SKILL.md` |
|
|
64
|
+
| **search-engine** | Elasticsearch 索引、同步、查询、租户/数据范围和重建 | `search-engine/SKILL.md` |
|
|
65
|
+
| **report-engine** | Rpt_Report 虚拟报表、数据源、聚合、写接口和导出 | `report-engine/SKILL.md` |
|
|
66
|
+
| **translate-engine** | 多语言词条、翻译供应商、租户隔离、缓存和批量翻译 | `translate-engine/SKILL.md` |
|
|
67
|
+
| **ai-engine** | 模型代理、NL2SQL/NL2V8、Schema/Skill 关键词检索与可选向量融合 | `ai-engine/SKILL.md` |
|
|
68
|
+
| **ai-platform-governance** | 门户/身份/配置/发布、服务韧性、Trace/日志、资产协作与可恢复导入 | `ai-platform-governance/SKILL.md` |
|
|
69
|
+
| **system-observability** | 系统日志、Trace、热点接口、资源监控、网络流量归因、安全事件与 AI 查询/治理 | `system-observability/SKILL.md` |
|
|
70
|
+
| **app-store** | 应用包、Manifest、后台安装、差异升级、回滚和验收 | `app-store/SKILL.md` |
|
|
71
|
+
| **microi-sso** | 双向 OIDC/SAML2/CAS、账号映射、Secret/证书、官方商城发布与伙伴联调 | `microi-sso/SKILL.md` |
|
|
72
72
|
|
|
73
73
|
### 项目交付、前端与移动端
|
|
74
74
|
|
|
75
75
|
| Skill | 场景 | 文件 |
|
|
76
76
|
|-------|------|------|
|
|
77
|
-
| **business-blueprint** | 从需求生成业务蓝图、模块边界、数据模型与接口清单 | `business-blueprint/SKILL.md` |
|
|
78
|
-
| **microi-system-delivery** | 自然语言到完整系统交付的总控、MCP 编排、验收和复盘 | `microi-system-delivery/SKILL.md` |
|
|
79
|
-
| **microi-deployment** | Docker/Windows/源码部署、配置、升级和多节点运行验收 | `microi-deployment/SKILL.md` |
|
|
80
|
-
| **microi-microservice** | 前端微服务/微应用源码、路由、发布、宿主上下文和运行时交付 | `microi-microservice/SKILL.md` |
|
|
81
|
-
| **microi-ai-application** | Web、MicroService、UniApp、H5 与游戏类 AI 应用的 Vue 3 + Vite + TypeScript 默认架构、迁移和质量门 | `microi-ai-application/SKILL.md` |
|
|
82
|
-
| **unity-integration** | Unity UPM SDK、WebGL/Windows、多人租约、公屏、DiyToken、V8 与 3D AI 应用交付 | `unity-integration/SKILL.md` |
|
|
83
|
-
| **microi-docs-coverage** | 中文官网文档到 Skills 的能力映射、V8 API 漏项审计和同步流程 | `microi-docs-coverage/SKILL.md` |
|
|
84
|
-
| **microi-solution-quotation** | 生成紧凑的一页式 Microi吾码解决方案、市场预估价、优惠报价与开发周期 Word | `microi-solution-quotation/SKILL.md` |
|
|
85
|
-
| **microi-frontend-sdk** | Vue3/UniApp/H5/PC 前端统一 SDK、Token终端会话/续签、上传、资源 URL、ApiEngine/FormEngine | `microi-frontend-sdk/SKILL.md` |
|
|
77
|
+
| **business-blueprint** | 从需求生成业务蓝图、模块边界、数据模型与接口清单 | `business-blueprint/SKILL.md` |
|
|
78
|
+
| **microi-system-delivery** | 自然语言到完整系统交付的总控、MCP 编排、验收和复盘 | `microi-system-delivery/SKILL.md` |
|
|
79
|
+
| **microi-deployment** | Docker/Windows/源码部署、配置、升级和多节点运行验收 | `microi-deployment/SKILL.md` |
|
|
80
|
+
| **microi-microservice** | 前端微服务/微应用源码、路由、发布、宿主上下文和运行时交付 | `microi-microservice/SKILL.md` |
|
|
81
|
+
| **microi-ai-application** | Web、MicroService、UniApp、H5 与游戏类 AI 应用的 Vue 3 + Vite + TypeScript 默认架构、迁移和质量门 | `microi-ai-application/SKILL.md` |
|
|
82
|
+
| **unity-integration** | Unity UPM SDK、WebGL/Windows、多人租约、公屏、DiyToken、V8 与 3D AI 应用交付 | `unity-integration/SKILL.md` |
|
|
83
|
+
| **microi-docs-coverage** | 中文官网文档到 Skills 的能力映射、V8 API 漏项审计和同步流程 | `microi-docs-coverage/SKILL.md` |
|
|
84
|
+
| **microi-solution-quotation** | 生成紧凑的一页式 Microi吾码解决方案、市场预估价、优惠报价与开发周期 Word | `microi-solution-quotation/SKILL.md` |
|
|
85
|
+
| **microi-frontend-sdk** | Vue3/UniApp/H5/PC 前端统一 SDK、Token终端会话/续签、上传、资源 URL、ApiEngine/FormEngine | `microi-frontend-sdk/SKILL.md` |
|
|
86
86
|
| **microi-uniapp-frontend** | Microi UniApp/H5 通用前端规范、安全区、资源解析、骨架屏、主题与页面质量 | `microi-uniapp-frontend/SKILL.md` |
|
|
87
87
|
| **microi-mobile-app-quality** | 移动端质量门禁:登录、验证码、图标、菜单层级、主题、动效、截图验收 | `microi-mobile-app-quality/SKILL.md` |
|
|
88
88
|
| **microi-datasource-mapping** | 数据源 Key/Value 映射、下拉枚举与前后端显示值一致性 | `microi-datasource-mapping/SKILL.md` |
|
|
89
89
|
| **v8-formengine-http** | 移动端/外部系统直接调用 FormEngine HTTP 路由的约定 | `v8-formengine-http/SKILL.md` |
|
|
90
90
|
| **v8-explorer-tree** | VS Code 插件 V8 资源管理器目录规范和本地文件归档 | `v8-explorer-tree/SKILL.md` |
|
|
91
|
-
| **workspace-conventions** | 工作区文件放置、临时产物、项目专属目录和根目录污染防护 | `workspace-conventions/SKILL.md` |
|
|
92
|
-
| **microi-codex-installer** | Codex 插件立即检测、授权安装、旧 marketplace 迁移与验收 | `microi-codex-installer/SKILL.md` |
|
|
93
|
-
| **microi-codex** | Codex 中连接租户、读取实时上下文并完成 Microi 等价工作流 | `microi-codex/SKILL.md` |
|
|
91
|
+
| **workspace-conventions** | 工作区文件放置、临时产物、项目专属目录和根目录污染防护 | `workspace-conventions/SKILL.md` |
|
|
92
|
+
| **microi-codex-installer** | Codex 插件立即检测、授权安装、旧 marketplace 迁移与验收 | `microi-codex-installer/SKILL.md` |
|
|
93
|
+
| **microi-codex** | Codex 中连接租户、读取实时上下文并完成 Microi 等价工作流 | `microi-codex/SKILL.md` |
|
|
94
94
|
| **production-readonly-audit** | 正式环境只读巡检,不改动线上数据的业务核对流程 | `production-readonly-audit/SKILL.md` |
|
|
95
|
-
| **uniapp-mall-assets** | UniApp/H5/商城上传资源、FileServer、私有临时 URL 与富文本安全 | `uniapp-mall-assets/SKILL.md` |
|
|
95
|
+
| **uniapp-mall-assets** | UniApp/H5/商城上传资源、FileServer、私有临时 URL 与富文本安全 | `uniapp-mall-assets/SKILL.md` |
|
|
96
96
|
|
|
97
97
|
### 自动化测试
|
|
98
98
|
|
|
@@ -103,29 +103,29 @@
|
|
|
103
103
|
|
|
104
104
|
---
|
|
105
105
|
|
|
106
|
-
## 快速开始:如何使用 Skills
|
|
107
|
-
|
|
108
|
-
### 推荐:VS Code 插件零配置安装
|
|
109
|
-
|
|
110
|
-
安装 Microi 吾码 VS Code 插件后,在工作区执行初始化/拉取。插件会安装当前版本的完整 `microi.skills`,并为 Codex、GitHub Copilot、Claude Code、Cursor 等生成 `AGENTS.md`、`.github/copilot-instructions.md`、`CLAUDE.md` 和 Cursor rules;不需要手工维护 59 条 Skill 引用。
|
|
111
|
-
|
|
112
|
-
插件升级采用清单和内容哈希做差异更新:未被用户修改的官方 Skill 自动升级,用户已经修改的文件不被整文件覆盖,新增 Skill 自动补齐。发布插件时必须比对源 Skills、插件 `dist`、VSIX 和空工作区初始化产物的相对路径与 SHA-256,不能只检查文件数量。
|
|
113
|
-
|
|
114
|
-
随后按需连接 Microi MCP:MCP 提供实时表结构、接口引擎、菜单和应用源码上下文;Skills 提供设计、安全、编码与验收规则;VS Code 插件提供类型、资源树和上下文生成。三者组合才是推荐的 AI 零代码开发路径。
|
|
115
|
-
|
|
116
|
-
### 备用:手工获取 Skills
|
|
117
|
-
|
|
118
|
-
```bash
|
|
119
|
-
git clone https://gitee.com/ITdos/microi.net.git
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
将源码中的 `microi.skills` 文件夹放到工作区根目录。也可使用 Git sparse-checkout 只获取该目录。
|
|
123
|
-
|
|
124
|
-
### 手工配置 AI 工具加载 Skills
|
|
125
|
-
|
|
126
|
-
根据你使用的 AI 工具,选择对应的配置方式:
|
|
127
|
-
|
|
128
|
-
> 手工配置仅是插件不可用时的备用方案。不要把全部 Skill 内容拼接到单个规则文件;保留独立文件并按任务路由读取,可避免超长上下文、重复规则和版本漂移。
|
|
106
|
+
## 快速开始:如何使用 Skills
|
|
107
|
+
|
|
108
|
+
### 推荐:VS Code 插件零配置安装
|
|
109
|
+
|
|
110
|
+
安装 Microi 吾码 VS Code 插件后,在工作区执行初始化/拉取。插件会安装当前版本的完整 `microi.skills`,并为 Codex、GitHub Copilot、Claude Code、Cursor 等生成 `AGENTS.md`、`.github/copilot-instructions.md`、`CLAUDE.md` 和 Cursor rules;不需要手工维护 59 条 Skill 引用。
|
|
111
|
+
|
|
112
|
+
插件升级采用清单和内容哈希做差异更新:未被用户修改的官方 Skill 自动升级,用户已经修改的文件不被整文件覆盖,新增 Skill 自动补齐。发布插件时必须比对源 Skills、插件 `dist`、VSIX 和空工作区初始化产物的相对路径与 SHA-256,不能只检查文件数量。
|
|
113
|
+
|
|
114
|
+
随后按需连接 Microi MCP:MCP 提供实时表结构、接口引擎、菜单和应用源码上下文;Skills 提供设计、安全、编码与验收规则;VS Code 插件提供类型、资源树和上下文生成。三者组合才是推荐的 AI 零代码开发路径。
|
|
115
|
+
|
|
116
|
+
### 备用:手工获取 Skills
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
git clone https://gitee.com/ITdos/microi.net.git
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
将源码中的 `microi.skills` 文件夹放到工作区根目录。也可使用 Git sparse-checkout 只获取该目录。
|
|
123
|
+
|
|
124
|
+
### 手工配置 AI 工具加载 Skills
|
|
125
|
+
|
|
126
|
+
根据你使用的 AI 工具,选择对应的配置方式:
|
|
127
|
+
|
|
128
|
+
> 手工配置仅是插件不可用时的备用方案。不要把全部 Skill 内容拼接到单个规则文件;保留独立文件并按任务路由读取,可避免超长上下文、重复规则和版本漂移。
|
|
129
129
|
|
|
130
130
|
---
|
|
131
131
|
|
|
@@ -220,28 +220,28 @@ done
|
|
|
220
220
|
**方式 B:批量追加内容到 `CLAUDE.md`**
|
|
221
221
|
|
|
222
222
|
```bash
|
|
223
|
-
for f in microi.skills/*/SKILL.md; do
|
|
224
|
-
echo -e "\n---\n" >> CLAUDE.md
|
|
225
|
-
cat "$f" >> CLAUDE.md
|
|
226
|
-
done
|
|
227
|
-
```
|
|
228
|
-
|
|
229
|
-
---
|
|
230
|
-
|
|
231
|
-
## 安全与兼容底线
|
|
232
|
-
|
|
233
|
-
- 浏览器 FormEngine 请求优先携带真实 `_SysMenuId`;历史无菜单调用由后端从用户真实菜单缓存安全推断,后端可信 V8 不要求 `_SysMenuId`。
|
|
234
|
-
- `_InvokeType: 'Client'` 会触发表单 V8 事件,不是授权标记,也不能用来“避免递归”。
|
|
235
|
-
- 平台表按管理员专用、只读委托、按角色管理分级;控制面 API 与管理员专用表只允许主库复核后的 `Level >= 9999`,普通角色权限不能绕过,全部平台表拒绝匿名。
|
|
236
|
-
- 多租户、文件、Redis、MQ、对象存储和搜索能力必须由服务端绑定当前 `OsClient`。
|
|
237
|
-
- `setTimeout`、`Task.Run` 和进程内静态状态不能承担可靠后台任务或集群锁。
|
|
238
|
-
- 上传上限由平台默认值和 `sys_osclients` 租户配置共同约束;私有文件的浏览器访问必须绑定菜单、记录、字段和附件。
|
|
239
|
-
- CORS 未配置时为兼容历史默认允许 `*`,配置后才按租户域名收紧;SSRF 严格模式默认关闭,启用后按精确主机白名单放行。
|
|
240
|
-
- MCP 写入前先读取实时 schema/manifest,写后回读;超时先回读确认,不得立即重复创建。
|
|
241
|
-
|
|
242
|
-
---
|
|
243
|
-
|
|
244
|
-
## 使用效果示例
|
|
223
|
+
for f in microi.skills/*/SKILL.md; do
|
|
224
|
+
echo -e "\n---\n" >> CLAUDE.md
|
|
225
|
+
cat "$f" >> CLAUDE.md
|
|
226
|
+
done
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 安全与兼容底线
|
|
232
|
+
|
|
233
|
+
- 浏览器 FormEngine 请求优先携带真实 `_SysMenuId`;历史无菜单调用由后端从用户真实菜单缓存安全推断,后端可信 V8 不要求 `_SysMenuId`。
|
|
234
|
+
- `_InvokeType: 'Client'` 会触发表单 V8 事件,不是授权标记,也不能用来“避免递归”。
|
|
235
|
+
- 平台表按管理员专用、只读委托、按角色管理分级;控制面 API 与管理员专用表只允许主库复核后的 `Level >= 9999`,普通角色权限不能绕过,全部平台表拒绝匿名。
|
|
236
|
+
- 多租户、文件、Redis、MQ、对象存储和搜索能力必须由服务端绑定当前 `OsClient`。
|
|
237
|
+
- `setTimeout`、`Task.Run` 和进程内静态状态不能承担可靠后台任务或集群锁。
|
|
238
|
+
- 上传上限由平台默认值和 `sys_osclients` 租户配置共同约束;私有文件的浏览器访问必须绑定菜单、记录、字段和附件。
|
|
239
|
+
- CORS 未配置时为兼容历史默认允许 `*`,配置后才按租户域名收紧;SSRF 严格模式默认关闭,启用后按精确主机白名单放行。
|
|
240
|
+
- MCP 写入前先读取实时 schema/manifest,写后回读;超时先回读确认,不得立即重复创建。
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## 使用效果示例
|
|
245
245
|
|
|
246
246
|
配置 Skills 后,AI 对话中的代码生成质量会显著提升:
|
|
247
247
|
|
|
@@ -273,13 +273,13 @@ AI:参考 v8-crud-api Skill,生成完整代码:
|
|
|
273
273
|
|
|
274
274
|
> 💡 推荐三者搭配使用:插件提供 API 知识和表结构 → MCP 提供实时数据查询 → Skills 提供编码最佳实践。
|
|
275
275
|
|
|
276
|
-
## License
|
|
277
|
-
|
|
278
|
-
MIT
|
|
279
|
-
|
|
280
|
-
## 关键路由提示
|
|
281
|
-
|
|
282
|
-
- 独立 PC/H5/UniApp 前端:先读 `microi-frontend-sdk`,再读对应端的 UI/质量 Skill。
|
|
283
|
-
- 表单字段较多时:先读 `microi-form-layout`。默认优先使用 `diy_table.Tabs + diy_field.Tab` 做业务域分组,局部复杂区域再用 `CollapseGroup` 或字段级 `Tabs`。
|
|
284
|
-
- 树形+表格/表单:使用 `microi-left-right-layout`。
|
|
285
|
-
- 跨模块完整交付:从 `business-blueprint` 进入,由 `microi-system-delivery` 总控,并把 `v8-security`、`microi-db-schema` 和自动化验收作为强制门禁。
|
|
276
|
+
## License
|
|
277
|
+
|
|
278
|
+
MIT
|
|
279
|
+
|
|
280
|
+
## 关键路由提示
|
|
281
|
+
|
|
282
|
+
- 独立 PC/H5/UniApp 前端:先读 `microi-frontend-sdk`,再读对应端的 UI/质量 Skill。
|
|
283
|
+
- 表单字段较多时:先读 `microi-form-layout`。默认优先使用 `diy_table.Tabs + diy_field.Tab` 做业务域分组,局部复杂区域再用 `CollapseGroup` 或字段级 `Tabs`。
|
|
284
|
+
- 树形+表格/表单:使用 `microi-left-right-layout`。
|
|
285
|
+
- 跨模块完整交付:从 `business-blueprint` 进入,由 `microi-system-delivery` 总控,并把 `v8-security`、`microi-db-schema` 和自动化验收作为强制门禁。
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ai-engine
|
|
3
|
-
description: Microi AI 引擎、MiniMax 图片/音乐/视频生成与预览、模型代理、NL2SQL/NL2V8 和知识库规范。用于媒体生成、模型路由、密钥与订阅配额、Schema/Skill 检索、流式响应、租户隔离和验收。
|
|
3
|
+
description: Microi AI 引擎、MiniMax 图片/音乐/视频生成与预览、模型代理、NL2SQL/NL2V8 和知识库规范。用于媒体生成、模型路由、密钥与订阅配额、Schema/Skill 检索、流式响应、租户隔离和验收。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
> **Codex 非阻塞自动更新:** 当前宿主为 Codex 时,吾码 CLI、Codex 插件与工作区 AI/MCP 由后台自动更新;需要诊断时读取 `../microi-codex-installer/SKILL.md`。更新失败、等待空闲或尚未重载均不得阻断当前、正在进行或新建任务。非 Codex 宿主跳过此项。
|
|
7
7
|
|
|
8
|
-
# Microi AI Engine
|
|
9
|
-
|
|
10
|
-
平台媒体生成的受控 HTTP 入口包括 `/api/Ai/GenerateMiniMaxImage`、`/api/Ai/GenerateMiniMaxMusic`、`/api/Ai/CreateMiniMaxVideo`、`/api/Ai/GetMiniMaxVideoTask`、`/api/Ai/GetMiniMaxVideoFile`、`/api/Ai/PersistMiniMaxVideoFile`;AI 工作流统一调用 Managed 接口引擎 `/apiengine/platform-ai-workflow`,通过 `Action` 选择概览、节点详情、生成、列表、读取、保存或删除。调用方只提交业务参数和模型选择,供应商密钥、租户配额、任务归属和文件读取权限由服务端判定。生成结果必须先进入当前租户 HDFS 或受控临时句柄,浏览器不接触供应商密钥、图片 Base64、音频十六进制或原始视频任务 Id。`PersistMiniMaxVideoFile` 只能转存当前登录用户所属且已完成的任务,禁止作为任意 URL 搬运器。
|
|
8
|
+
# Microi AI Engine
|
|
9
|
+
|
|
10
|
+
平台媒体生成的受控 HTTP 入口包括 `/api/Ai/GenerateMiniMaxImage`、`/api/Ai/GenerateMiniMaxMusic`、`/api/Ai/CreateMiniMaxVideo`、`/api/Ai/GetMiniMaxVideoTask`、`/api/Ai/GetMiniMaxVideoFile`、`/api/Ai/PersistMiniMaxVideoFile`;AI 工作流统一调用 Managed 接口引擎 `/apiengine/platform-ai-workflow`,通过 `Action` 选择概览、节点详情、生成、列表、读取、保存或删除。调用方只提交业务参数和模型选择,供应商密钥、租户配额、任务归属和文件读取权限由服务端判定。生成结果必须先进入当前租户 HDFS 或受控临时句柄,浏览器不接触供应商密钥、图片 Base64、音频十六进制或原始视频任务 Id。`PersistMiniMaxVideoFile` 只能转存当前登录用户所属且已完成的任务,禁止作为任意 URL 搬运器。
|
|
11
11
|
|
|
12
12
|
## 能力
|
|
13
13
|
|
|
@@ -15,91 +15,91 @@ description: Microi AI 引擎、MiniMax 图片/音乐/视频生成与预览、
|
|
|
15
15
|
|
|
16
16
|
当前入口并不共用一条检索链路:普通 `Chat/ChatStream` 使用服务端会话上下文和固定核心规范 Prompt;`NL2SQL` 使用当前租户 Schema 双模式检索;`NL2V8` 使用 Skill 镜像与当前租户 Schema 双模式检索。默认模式不依赖 Ollama、`nomic-embed-text` 或 Qdrant;只有显式开启向量数据库时才增加向量通道。`Microi.Server/Microi.AI` 不是 MCP Host,没有注册 MCP Tools,也没有处理 `tool_calls` 的代理循环。MCP Server 目前由 Codex、Copilot、Cursor、Claude Code 等外部宿主调用。禁止仅凭 Prompt 中出现“使用 MCP”就声称在线 AI 已经执行工具。
|
|
17
17
|
|
|
18
|
-
未来若给平台在线 AI 增加工具调用,优先在 `Microi.AI` 内建立受限 Tool Gateway,复用 FormEngine、V8McpLogic 等后端服务的授权入口;不要让后端使用超级管理员 Token 再请求自己的 MCP。每次工具调用必须继承当前用户、`OsClient`、Token/权限快照和审计上下文,模型只能提出调用建议,服务端仍负责参数白名单、写操作确认、幂等、步数/时长/结果大小上限和权威回读。工具返回的数据继续按不可信内容处理,不能反向覆盖系统规则。
|
|
19
|
-
|
|
20
|
-
## 商业授权与调用入口
|
|
21
|
-
|
|
22
|
-
内置在线 AI 有两套不能混淆的授权:
|
|
23
|
-
|
|
24
|
-
- `Chat/ChatStream/NL2SQL/NL2SQLStreaming/NL2V8Engine` 统一读取宿主 `IMicroiFeatureLicense`。未修改的官方发布物只有本机通过官方 RSA 公钥、当前 HID 和有效期验证的 `Personal/Enterprise` License 才能继续推理;客户自建私钥/公钥不能替换内嵌官方信任根。验签在本机完成,`api.itdos.com` 只负责签发和周期性作废查询,不是每次调用的在线依赖。
|
|
25
|
-
- `MicroiAI` 与 `AiProxyService` 会拒绝宿主替换的 `IMicroiFeatureLicense` 实现,统一回到 `Microi.net` 的封闭校验器;签发地址固定为 `https://api.itdos.com`,签发私钥目录不得进入构建、NuGet 或发布包。拥有服务器管理员权限的人仍可能篡改本地二进制或机器指令,纯本地 DRM 无法从理论上阻止这种物理控制;但没有官方私钥就不能生成可被未修改吾码节点接受、并可转发给其它正常节点使用的有效 License。
|
|
26
|
-
- 官方中转站另用 `sk-microi-*` ApiKey 和账号 Token 额度鉴权。服务器 License 不能代替中转 ApiKey,中转 ApiKey 也不能把本地核心 AI 入口变成已授权。
|
|
27
|
-
- `AiProxyService` 的 `ProxyChat/ProxyChatStream`、头像生成与 `/v1/chat/completions` 在领域层读取同一服务器 License,并继续执行登录态或平台 ApiKey/订阅链路。模型清单、套餐、订单和用量属于不触发模型推理的发现/账户接口,可以在未授权时用于配置与购买流程。
|
|
28
|
-
|
|
29
|
-
跨端调用必须按现有事实描述:
|
|
30
|
-
|
|
31
|
-
| 调用方 | 当前入口 | 关键边界 |
|
|
32
|
-
|---|---|---|
|
|
33
|
-
| 前端 V8 | `await V8.AI.Chat(...)` / `V8.AI.ChatGet(...)` | 自动使用当前 ApiBase、登录 Token 与租户;清除客户端身份、Endpoint、ApiKey;普通返回为 `DosResult` |
|
|
34
|
-
| 浏览器流式 UI | `await V8.AI.ChatStream(..., onChunk, {Signal})` | 内置解析 `message/result/error/done` SSE、Token 轮换和取消;`onChunk` 接收真实增量 |
|
|
35
|
-
| 后端 V8 | `await V8.AI.Chat(...)` / `ChatStream(...)` | 对象创建时绑定当前 `OsClient` 与认证用户;匿名上下文拒绝,不需要自请求 HTTP |
|
|
36
|
-
| MCP | `microi_chat` | 使用 MCP 已登录 Token 和绑定租户;只接受对话白名单参数,返回最终 `DosResult`,不冒充逐 token 流 |
|
|
37
|
-
| OpenAI 兼容客户端 | `POST /v1/chat/completions` | 使用 `Bearer sk-microi-*`,请求体 `stream` 控制普通/流式 |
|
|
38
|
-
|
|
39
|
-
`Chat/ChatStream` 虽声明 GET/POST,含问题、附件和会话上下文的业务调用默认使用 POST,避免敏感内容进入 URL 日志。Controller 和 `V8.AI` 必须从可信执行上下文覆盖当前用户和 `OsClient`,并清除客户端提交的 `ApiKey/Endpoint`。所谓打字机效果必须来自真实 SSE 增量块;`microi_chat` 只返回最终结果,不能被描述成逐 token MCP 流。
|
|
40
|
-
|
|
41
|
-
安全数据分析的新客户端调用 `/apiengine/platform-ai-runtime` 并固定 `Action=NL2SQL`;旧 `/api/Ai/NL2SQL` 只保留兼容转发。最终都由租户/用户绑定的 `V8.AI.NL2SQL` 从当前用户权限生成表白名单;任何通用包装接口都不得接受客户端自报的表名作为授权。
|
|
42
|
-
|
|
43
|
-
## 代码分层
|
|
18
|
+
未来若给平台在线 AI 增加工具调用,优先在 `Microi.AI` 内建立受限 Tool Gateway,复用 FormEngine、V8McpLogic 等后端服务的授权入口;不要让后端使用超级管理员 Token 再请求自己的 MCP。每次工具调用必须继承当前用户、`OsClient`、Token/权限快照和审计上下文,模型只能提出调用建议,服务端仍负责参数白名单、写操作确认、幂等、步数/时长/结果大小上限和权威回读。工具返回的数据继续按不可信内容处理,不能反向覆盖系统规则。
|
|
19
|
+
|
|
20
|
+
## 商业授权与调用入口
|
|
21
|
+
|
|
22
|
+
内置在线 AI 有两套不能混淆的授权:
|
|
23
|
+
|
|
24
|
+
- `Chat/ChatStream/NL2SQL/NL2SQLStreaming/NL2V8Engine` 统一读取宿主 `IMicroiFeatureLicense`。未修改的官方发布物只有本机通过官方 RSA 公钥、当前 HID 和有效期验证的 `Personal/Enterprise` License 才能继续推理;客户自建私钥/公钥不能替换内嵌官方信任根。验签在本机完成,`api.itdos.com` 只负责签发和周期性作废查询,不是每次调用的在线依赖。
|
|
25
|
+
- `MicroiAI` 与 `AiProxyService` 会拒绝宿主替换的 `IMicroiFeatureLicense` 实现,统一回到 `Microi.net` 的封闭校验器;签发地址固定为 `https://api.itdos.com`,签发私钥目录不得进入构建、NuGet 或发布包。拥有服务器管理员权限的人仍可能篡改本地二进制或机器指令,纯本地 DRM 无法从理论上阻止这种物理控制;但没有官方私钥就不能生成可被未修改吾码节点接受、并可转发给其它正常节点使用的有效 License。
|
|
26
|
+
- 官方中转站另用 `sk-microi-*` ApiKey 和账号 Token 额度鉴权。服务器 License 不能代替中转 ApiKey,中转 ApiKey 也不能把本地核心 AI 入口变成已授权。
|
|
27
|
+
- `AiProxyService` 的 `ProxyChat/ProxyChatStream`、头像生成与 `/v1/chat/completions` 在领域层读取同一服务器 License,并继续执行登录态或平台 ApiKey/订阅链路。模型清单、套餐、订单和用量属于不触发模型推理的发现/账户接口,可以在未授权时用于配置与购买流程。
|
|
28
|
+
|
|
29
|
+
跨端调用必须按现有事实描述:
|
|
30
|
+
|
|
31
|
+
| 调用方 | 当前入口 | 关键边界 |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| 前端 V8 | `await V8.AI.Chat(...)` / `V8.AI.ChatGet(...)` | 自动使用当前 ApiBase、登录 Token 与租户;清除客户端身份、Endpoint、ApiKey;普通返回为 `DosResult` |
|
|
34
|
+
| 浏览器流式 UI | `await V8.AI.ChatStream(..., onChunk, {Signal})` | 内置解析 `message/result/error/done` SSE、Token 轮换和取消;`onChunk` 接收真实增量 |
|
|
35
|
+
| 后端 V8 | `await V8.AI.Chat(...)` / `ChatStream(...)` | 对象创建时绑定当前 `OsClient` 与认证用户;匿名上下文拒绝,不需要自请求 HTTP |
|
|
36
|
+
| MCP | `microi_chat` | 使用 MCP 已登录 Token 和绑定租户;只接受对话白名单参数,返回最终 `DosResult`,不冒充逐 token 流 |
|
|
37
|
+
| OpenAI 兼容客户端 | `POST /v1/chat/completions` | 使用 `Bearer sk-microi-*`,请求体 `stream` 控制普通/流式 |
|
|
38
|
+
|
|
39
|
+
`Chat/ChatStream` 虽声明 GET/POST,含问题、附件和会话上下文的业务调用默认使用 POST,避免敏感内容进入 URL 日志。Controller 和 `V8.AI` 必须从可信执行上下文覆盖当前用户和 `OsClient`,并清除客户端提交的 `ApiKey/Endpoint`。所谓打字机效果必须来自真实 SSE 增量块;`microi_chat` 只返回最终结果,不能被描述成逐 token MCP 流。
|
|
40
|
+
|
|
41
|
+
安全数据分析的新客户端调用 `/apiengine/platform-ai-runtime` 并固定 `Action=NL2SQL`;旧 `/api/Ai/NL2SQL` 只保留兼容转发。最终都由租户/用户绑定的 `V8.AI.NL2SQL` 从当前用户权限生成表白名单;任何通用包装接口都不得接受客户端自报的表名作为授权。
|
|
42
|
+
|
|
43
|
+
## 代码分层
|
|
44
44
|
|
|
45
45
|
AI 业务统一实现在 `Microi.Server/Microi.AI`。`Microi.Server/Microi.net.Api` 只是 HTTP、SSE 与 SignalR 传输层,可以做路由、请求绑定、读取认证中间件产生的可信用户/租户、传递取消信号和写响应,但不能承载模型选择、Schema/Skill 检索、NL2SQL 授权与执行、提示词编排、代理路由、供应商密钥、额度计量、订阅支付状态或 AI 工作流。
|
|
46
46
|
|
|
47
47
|
- Controller、Hub 只调用 `IMicroiAI`、`AiProxyService`、`SubscriptionService`、`AiWorkflowService` 等 `Microi.AI` 门面,不直接查询 `mic_ai` / `mic_sub_order`,不接触上游密钥和向量基础设施。
|
|
48
48
|
- “授权 + 执行”必须由领域门面原子完成,不能让接口层先生成可伪造的 `AllowedTables` 或遗漏某一步。
|
|
49
|
-
- AI 的 Qdrant/Ollama/Embedding 配置、Schema 初始化和其它生命周期任务由 `AddMicroiAI()` 在模块内自注册;API 的 `Program.cs` 只负责调用模块注册。
|
|
50
|
-
- `Microi.Core` 只承载跨模块契约和模型。新增入口时先扩展 AI 领域服务,再添加薄 Controller/Hub 适配,禁止复制业务流程。
|
|
51
|
-
- AI 账户统一入口是 Managed 接口引擎 `/apiengine/platform-ai-account`;套餐、订阅和订单由 V8 编排。支付宝回调 C# 只做可信租户选择/归一化、该租户配置验签和一次性 Managed 调用;`CompletePayment` 在同一接口引擎事务内完成订单条件认领、金额校验、订阅续期/新建与平台/供应商 API Key 分配。供应商协议、密钥隔离、分布式额度原子、任务句柄和受控媒体落盘仍由绑定原子完成。
|
|
52
|
-
- 非流式 `UpdateConversationTitle / RecognizeIntent / Chat / NL2SQL / NL2V8EngineSync` 与精确图片 `ProcessImage` 统一进入 Managed `/apiengine/platform-ai-runtime`,旧 Controller 同名路由只做兼容转发;SSE/流式、Provider Proxy、生成式媒体、文件和策略元数据保持原生。`platform-ai-runtime` 只调用绑定当前租户和当前用户的 `V8.AI` / `V8.Image` 原子,不接收客户端伪造的租户、用户、Endpoint、ApiKey、表白名单或管理员标记。
|
|
53
|
-
- AI 官方应用只有一个应用级租户扩展点 `platform-ai-custom-hook`,策略为 `CreateIfMissing`。`mci_ai_data_assistant` 与 `platform-ai-runtime` 只传 `Stage`、`SourceApiEngineKey`、`Action`;支付动作最多增加 `EventId`、`Provider`,账户其它动作只增加白名单资源元数据。Hook 禁止接收订单号、交易号、金额、标题、SQL、模型、附件、提示词或问题原文及其摘要、回答、供应商/平台密钥、供应商任务号、文件句柄或媒体内容。匿名发现接口不调用 Hook,`/v1/usage` 继续由 C# 凭据网关直接校验,使 `Authorization` 永不进入 V8。
|
|
54
|
-
- 9 张 `mic_sub_*` 订阅表与 `mci_ai_token_account`、`mci_ai_token_log` 由官方 `app.microi.ai-engine` 应用升级提供,必须同时声明 DDL、PhysicalColumns、DiyTables、DiyFields;`PromptPreview` 属于日志表正式字段。`mci_ai_token_recharge` 当前不在该运行时实体闭包内,禁止根据线上残留自行扩包。运行时发现缺失时失败关闭,禁止在请求路径自动建表、加列或修改业务 Schema。
|
|
55
|
-
- `Sys_User.AiApiKey` 归官方 `app.microi.sys_user`,由系统账号包同时维护建表 DDL、PhysicalColumns 和隐藏只读 DiyField;AI助手包不得重复声明 `Sys_User`。缺列错误必须提示升级系统账号应用,不能误导用户升级 AI助手。
|
|
56
|
-
|
|
57
|
-
## 模型与密钥
|
|
58
|
-
|
|
59
|
-
- 模型 Provider、Endpoint、ApiKey、AuthPrefix 和上游模型 Id 只保存在服务端受保护配置。
|
|
60
|
-
- 普通用户使用平台签发的受限 API Key/订阅身份,不能枚举或读取上游密钥。
|
|
61
|
-
- MiniMax 对话媒体必须区分意图模型与生成模型:`MiniMax-M3` 只负责识别普通对话、绘图或音乐意图;生成式图片固定走 `GenerateMiniMaxImage + image-01`,纯音乐新路由优先走 `GenerateMiniMaxMusic + music-3.0`,并继续兼容已有供应商配置的 `GenerateMiniMaxMusic + music-2.6`。托管音乐只有明确返回 410 退役终态时才允许切到官方开源 `MiniMax-Music3`,不得把超时、5xx、额度不足等不确定状态当作回退条件;目标账号支持的实际模型必须在线校准。不得让文本模型用说明文字冒充媒体生成,也不得声称图片/音乐是 `MiniMax-M3` 原生输出。
|
|
62
|
-
- `GenerateMiniMaxImage` 可接收最多 4 张 JPEG/PNG/WebP 主体参考图;参考图先写当前租户私有 HDFS,只将短时签名 URL 交给供应商,浏览器与响应均不得得到签名地址。图生图、重绘、扩图、消除、去水印、证件照、多图合成、上色、修复等当前属于参考图提示词重绘,不得冒充像素级蒙版工具。黑白、纯色背景抠除、缩放、裁剪、旋转、翻转、格式转换和拼图使用 `platform-ai-runtime/ProcessImage + V8.Image` 精确处理。
|
|
63
|
-
- 图片与音乐都使用稳定 `RequestId` 和共享幂等;相同参数回放、参数冲突拒绝,上游结果不确定时禁止换 Id 盲重试。音乐当前仅向平台管理员开放且固定无人声;托管结果为 MP3,开源回退为 32kHz 立体声 WAV、10~60 秒。成功内容由服务端校验后直接写入当前租户公有 HDFS。
|
|
64
|
-
- 聊天附件的公有媒体 URL 优先按当前运行租户 `FileServer + FilePath` 解析,禁止写死域名或沿用其它租户的前缀。图片使用 Element Plus `el-image` 的 `preview-src-list` 原页放大,不能套 `target="_blank"`;音乐使用 `<audio controls preload="metadata">` 在线播放。媒体是结构化附件,文本才走安全 Markdown 渲染,禁止拼接任意 HTML 绕过 URL/类型校验。
|
|
65
|
-
- MiniMax 自 2026-08-20 起不再向新用户开放付费 Music/Lyrics API,并停止旧免费 Music 模型。既有 `music-3.0` 账号仍可优先直连;官方开源 `MiniMax-Music3` Space 可作为明确 410 后的回退,但公开 ZeroGPU 配额不是生产 SLA。需要专属额度时只在既有服务端 `mic_ai` 模型路由中保存官方 Space Endpoint 与受保护 Hugging Face Token,不新增 API `AppSettings`、环境变量或前端密钥。Provider/中转账号未开通、额度不足或上游停用时必须返回可诊断失败,不生成占位音频、不伪报成功。图片、音乐和视频的真实可用性都需用目标租户登录态调用及媒体 GET/播放回读证明,源码存在或接口 HTTP 200 不能替代生成成功。
|
|
66
|
-
- MiniMax 视频生成属于可复用供应商原子能力,应实现在 `Microi.AI`,Controller 只读取可信用户/`OsClient`、绑定参数并传递取消信号。理由是上游密钥隔离、异步 `task_id → file_id → download_url` 协议、订阅额度和跨节点幂等都不是某个可编辑接口引擎应复制的业务逻辑;具体文章、提示词和分发编排仍可留在 Job/接口引擎/发布 Skill。
|
|
67
|
-
- MiniMax Token Plan Key 与按量 API Key 是相互独立的凭据,必须复用现有服务器端 Provider/ApiKey 受保护配置,不新增 API `AppSettings`、`MICROI_*` 环境变量或浏览器可见 Key。视频创建、查询和下载仅允许官方 HTTPS Host `api.minimaxi.com`。
|
|
68
|
-
- 视频创建必须要求调用方稳定 `RequestId`,先在当前租户共享 Redis 以 `OsClient + 用户 + RequestId` 原子 `NX` 占位;Redis 不可用时失败关闭。相同 RequestId/参数回放返回原任务,不同参数冲突拒绝;上游 POST 超时或结果不确定时禁止自动换 RequestId 重试。查询不再次扣生成额度。
|
|
69
|
-
- 原始 MiniMax `task_id`/`file_id` 不下发。服务端返回由供应商 Key 签名、绑定当前用户和用途的短句柄;查询/下载验签后才还原。Key 轮换会使旧句柄失效,应先完成或重新登记在途任务。
|
|
70
|
-
- 当前官方模型边界必须实时校准:`MiniMax-Hailuo-2.3` 支持文生/图生,`MiniMax-Hailuo-2.3-Fast` 仅图生且必须有首帧,首尾帧使用 `MiniMax-Hailuo-02`。Hailuo 2.3 的画质优先上限与平台默认值是 6 秒 / 1080P,时长优先上限是 10 秒 / 768P,两者不能同时最大;API 不提供 fps 参数,必须用媒体探针记录真实帧率,禁止把插帧/画布规格冒充模型原生能力。当前 Token Plan 使用统一用量条、5 小时固定窗口和周窗口,控制台是剩余额度事实源,不再把固定“每天 N 条”写成官方配额。需要自动生成时,在 `Microi.AI` 增加只读、脱敏、管理员限定的 `https://www.minimaxi.com/v1/token_plan/remains` 安全原子能力;不得由浏览器或可编辑 V8 读取 Provider Key,也不得把客户端今日计数当成供应商权威额度。
|
|
71
|
-
- MiniMax 视频任务返回静音画面。需要人物对白时,男/女语音必须通过 `Microi.AI` 的 `GenerateMiniMaxSpeech` 受保护原子能力生成:固定 `speech-2.8-hd`、固定男女系统音色、稳定 RequestId、共享 Redis 幂等,并直接转存租户 HDFS;再由可靠 Worker 按时间轴混音、加准确字幕。无法证明口型同步时使用画外音或反打镜头。背景音乐使用 `GenerateMiniMaxMusic` 并在人声下压低。运行节点尚未部署 Speech 能力、额度未核实或母版混音/探针证据缺失时失败关闭,禁止静音、仅配乐、浏览器直连供应商或伪称模型原生带声。
|
|
72
|
-
- 管理端【AI视频】应按 `TaskHandle` 轮询任务,成功后优先转存 HDFS,并用 `<video controls preload="metadata">` 原页预览和明确下载按钮消费同一个已校验地址。临时 URL、生成完成、HDFS 转存、媒体可播放和外部平台发布是五个不同事实,必须分别验收。
|
|
73
|
-
- 使用 Microi.AI 中转站时,租户侧 AI Bootstrap 通过官方 `official_ai_relay_models` 发现可用运行模型。该接口是跨租户只读公共契约,必须保持启用、允许匿名 HTTP 调用,并且只返回模型标识、展示名等公开白名单字段,绝不能返回中转密钥或上游 Endpoint。消费者不得把 `NoAuth` 静默伪装为“没有配置模型”;应返回可诊断错误,同时前端显示明确空态。
|
|
74
|
-
- PC、UniApp 和其它客户端通过 `POST /apiengine/{key}` 发送的 JSON Body 必须完整进入 `V8.Param`;兼容入口 `/api/ApiEngine/Run` 的 JSON Body 还必须包含 `ApiEngineKey`。API 层只负责请求绑定和清除客户端伪造的可信字段,模型选择、权限策略与对话逻辑仍全部位于 `Microi.AI` 或受控 AI 接口引擎中。
|
|
75
|
-
- 当前计量记录除问题摘要外还可能持久化完整 `Question`、`Answer`,部分诊断日志也会输出问题或摘要。处理现有版本时必须把这些字段视为敏感业务数据,限制查询权限和留存;不要声称已经全面脱敏。
|
|
49
|
+
- AI 的 Qdrant/Ollama/Embedding 配置、Schema 初始化和其它生命周期任务由 `AddMicroiAI()` 在模块内自注册;API 的 `Program.cs` 只负责调用模块注册。
|
|
50
|
+
- `Microi.Core` 只承载跨模块契约和模型。新增入口时先扩展 AI 领域服务,再添加薄 Controller/Hub 适配,禁止复制业务流程。
|
|
51
|
+
- AI 账户统一入口是 Managed 接口引擎 `/apiengine/platform-ai-account`;套餐、订阅和订单由 V8 编排。支付宝回调 C# 只做可信租户选择/归一化、该租户配置验签和一次性 Managed 调用;`CompletePayment` 在同一接口引擎事务内完成订单条件认领、金额校验、订阅续期/新建与平台/供应商 API Key 分配。供应商协议、密钥隔离、分布式额度原子、任务句柄和受控媒体落盘仍由绑定原子完成。
|
|
52
|
+
- 非流式 `UpdateConversationTitle / RecognizeIntent / Chat / NL2SQL / NL2V8EngineSync` 与精确图片 `ProcessImage` 统一进入 Managed `/apiengine/platform-ai-runtime`,旧 Controller 同名路由只做兼容转发;SSE/流式、Provider Proxy、生成式媒体、文件和策略元数据保持原生。`platform-ai-runtime` 只调用绑定当前租户和当前用户的 `V8.AI` / `V8.Image` 原子,不接收客户端伪造的租户、用户、Endpoint、ApiKey、表白名单或管理员标记。
|
|
53
|
+
- AI 官方应用只有一个应用级租户扩展点 `platform-ai-custom-hook`,策略为 `CreateIfMissing`。`mci_ai_data_assistant` 与 `platform-ai-runtime` 只传 `Stage`、`SourceApiEngineKey`、`Action`;支付动作最多增加 `EventId`、`Provider`,账户其它动作只增加白名单资源元数据。Hook 禁止接收订单号、交易号、金额、标题、SQL、模型、附件、提示词或问题原文及其摘要、回答、供应商/平台密钥、供应商任务号、文件句柄或媒体内容。匿名发现接口不调用 Hook,`/v1/usage` 继续由 C# 凭据网关直接校验,使 `Authorization` 永不进入 V8。
|
|
54
|
+
- 9 张 `mic_sub_*` 订阅表与 `mci_ai_token_account`、`mci_ai_token_log` 由官方 `app.microi.ai-engine` 应用升级提供,必须同时声明 DDL、PhysicalColumns、DiyTables、DiyFields;`PromptPreview` 属于日志表正式字段。`mci_ai_token_recharge` 当前不在该运行时实体闭包内,禁止根据线上残留自行扩包。运行时发现缺失时失败关闭,禁止在请求路径自动建表、加列或修改业务 Schema。
|
|
55
|
+
- `Sys_User.AiApiKey` 归官方 `app.microi.sys_user`,由系统账号包同时维护建表 DDL、PhysicalColumns 和隐藏只读 DiyField;AI助手包不得重复声明 `Sys_User`。缺列错误必须提示升级系统账号应用,不能误导用户升级 AI助手。
|
|
56
|
+
|
|
57
|
+
## 模型与密钥
|
|
58
|
+
|
|
59
|
+
- 模型 Provider、Endpoint、ApiKey、AuthPrefix 和上游模型 Id 只保存在服务端受保护配置。
|
|
60
|
+
- 普通用户使用平台签发的受限 API Key/订阅身份,不能枚举或读取上游密钥。
|
|
61
|
+
- MiniMax 对话媒体必须区分意图模型与生成模型:`MiniMax-M3` 只负责识别普通对话、绘图或音乐意图;生成式图片固定走 `GenerateMiniMaxImage + image-01`,纯音乐新路由优先走 `GenerateMiniMaxMusic + music-3.0`,并继续兼容已有供应商配置的 `GenerateMiniMaxMusic + music-2.6`。托管音乐只有明确返回 410 退役终态时才允许切到官方开源 `MiniMax-Music3`,不得把超时、5xx、额度不足等不确定状态当作回退条件;目标账号支持的实际模型必须在线校准。不得让文本模型用说明文字冒充媒体生成,也不得声称图片/音乐是 `MiniMax-M3` 原生输出。
|
|
62
|
+
- `GenerateMiniMaxImage` 可接收最多 4 张 JPEG/PNG/WebP 主体参考图;参考图先写当前租户私有 HDFS,只将短时签名 URL 交给供应商,浏览器与响应均不得得到签名地址。图生图、重绘、扩图、消除、去水印、证件照、多图合成、上色、修复等当前属于参考图提示词重绘,不得冒充像素级蒙版工具。黑白、纯色背景抠除、缩放、裁剪、旋转、翻转、格式转换和拼图使用 `platform-ai-runtime/ProcessImage + V8.Image` 精确处理。
|
|
63
|
+
- 图片与音乐都使用稳定 `RequestId` 和共享幂等;相同参数回放、参数冲突拒绝,上游结果不确定时禁止换 Id 盲重试。音乐当前仅向平台管理员开放且固定无人声;托管结果为 MP3,开源回退为 32kHz 立体声 WAV、10~60 秒。成功内容由服务端校验后直接写入当前租户公有 HDFS。
|
|
64
|
+
- 聊天附件的公有媒体 URL 优先按当前运行租户 `FileServer + FilePath` 解析,禁止写死域名或沿用其它租户的前缀。图片使用 Element Plus `el-image` 的 `preview-src-list` 原页放大,不能套 `target="_blank"`;音乐使用 `<audio controls preload="metadata">` 在线播放。媒体是结构化附件,文本才走安全 Markdown 渲染,禁止拼接任意 HTML 绕过 URL/类型校验。
|
|
65
|
+
- MiniMax 自 2026-08-20 起不再向新用户开放付费 Music/Lyrics API,并停止旧免费 Music 模型。既有 `music-3.0` 账号仍可优先直连;官方开源 `MiniMax-Music3` Space 可作为明确 410 后的回退,但公开 ZeroGPU 配额不是生产 SLA。需要专属额度时只在既有服务端 `mic_ai` 模型路由中保存官方 Space Endpoint 与受保护 Hugging Face Token,不新增 API `AppSettings`、环境变量或前端密钥。Provider/中转账号未开通、额度不足或上游停用时必须返回可诊断失败,不生成占位音频、不伪报成功。图片、音乐和视频的真实可用性都需用目标租户登录态调用及媒体 GET/播放回读证明,源码存在或接口 HTTP 200 不能替代生成成功。
|
|
66
|
+
- MiniMax 视频生成属于可复用供应商原子能力,应实现在 `Microi.AI`,Controller 只读取可信用户/`OsClient`、绑定参数并传递取消信号。理由是上游密钥隔离、异步 `task_id → file_id → download_url` 协议、订阅额度和跨节点幂等都不是某个可编辑接口引擎应复制的业务逻辑;具体文章、提示词和分发编排仍可留在 Job/接口引擎/发布 Skill。
|
|
67
|
+
- MiniMax Token Plan Key 与按量 API Key 是相互独立的凭据,必须复用现有服务器端 Provider/ApiKey 受保护配置,不新增 API `AppSettings`、`MICROI_*` 环境变量或浏览器可见 Key。视频创建、查询和下载仅允许官方 HTTPS Host `api.minimaxi.com`。
|
|
68
|
+
- 视频创建必须要求调用方稳定 `RequestId`,先在当前租户共享 Redis 以 `OsClient + 用户 + RequestId` 原子 `NX` 占位;Redis 不可用时失败关闭。相同 RequestId/参数回放返回原任务,不同参数冲突拒绝;上游 POST 超时或结果不确定时禁止自动换 RequestId 重试。查询不再次扣生成额度。
|
|
69
|
+
- 原始 MiniMax `task_id`/`file_id` 不下发。服务端返回由供应商 Key 签名、绑定当前用户和用途的短句柄;查询/下载验签后才还原。Key 轮换会使旧句柄失效,应先完成或重新登记在途任务。
|
|
70
|
+
- 当前官方模型边界必须实时校准:`MiniMax-Hailuo-2.3` 支持文生/图生,`MiniMax-Hailuo-2.3-Fast` 仅图生且必须有首帧,首尾帧使用 `MiniMax-Hailuo-02`。Hailuo 2.3 的画质优先上限与平台默认值是 6 秒 / 1080P,时长优先上限是 10 秒 / 768P,两者不能同时最大;API 不提供 fps 参数,必须用媒体探针记录真实帧率,禁止把插帧/画布规格冒充模型原生能力。当前 Token Plan 使用统一用量条、5 小时固定窗口和周窗口,控制台是剩余额度事实源,不再把固定“每天 N 条”写成官方配额。需要自动生成时,在 `Microi.AI` 增加只读、脱敏、管理员限定的 `https://www.minimaxi.com/v1/token_plan/remains` 安全原子能力;不得由浏览器或可编辑 V8 读取 Provider Key,也不得把客户端今日计数当成供应商权威额度。
|
|
71
|
+
- MiniMax 视频任务返回静音画面。需要人物对白时,男/女语音必须通过 `Microi.AI` 的 `GenerateMiniMaxSpeech` 受保护原子能力生成:固定 `speech-2.8-hd`、固定男女系统音色、稳定 RequestId、共享 Redis 幂等,并直接转存租户 HDFS;再由可靠 Worker 按时间轴混音、加准确字幕。无法证明口型同步时使用画外音或反打镜头。背景音乐使用 `GenerateMiniMaxMusic` 并在人声下压低。运行节点尚未部署 Speech 能力、额度未核实或母版混音/探针证据缺失时失败关闭,禁止静音、仅配乐、浏览器直连供应商或伪称模型原生带声。
|
|
72
|
+
- 管理端【AI视频】应按 `TaskHandle` 轮询任务,成功后优先转存 HDFS,并用 `<video controls preload="metadata">` 原页预览和明确下载按钮消费同一个已校验地址。临时 URL、生成完成、HDFS 转存、媒体可播放和外部平台发布是五个不同事实,必须分别验收。
|
|
73
|
+
- 使用 Microi.AI 中转站时,租户侧 AI Bootstrap 通过官方 `official_ai_relay_models` 发现可用运行模型。该接口是跨租户只读公共契约,必须保持启用、允许匿名 HTTP 调用,并且只返回模型标识、展示名等公开白名单字段,绝不能返回中转密钥或上游 Endpoint。消费者不得把 `NoAuth` 静默伪装为“没有配置模型”;应返回可诊断错误,同时前端显示明确空态。
|
|
74
|
+
- PC、UniApp 和其它客户端通过 `POST /apiengine/{key}` 发送的 JSON Body 必须完整进入 `V8.Param`;兼容入口 `/api/ApiEngine/Run` 的 JSON Body 还必须包含 `ApiEngineKey`。API 层只负责请求绑定和清除客户端伪造的可信字段,模型选择、权限策略与对话逻辑仍全部位于 `Microi.AI` 或受控 AI 接口引擎中。
|
|
75
|
+
- 当前计量记录除问题摘要外还可能持久化完整 `Question`、`Answer`,部分诊断日志也会输出问题或摘要。处理现有版本时必须把这些字段视为敏感业务数据,限制查询权限和留存;不要声称已经全面脱敏。
|
|
76
76
|
- 发布目标是日志只记录 trace id、模型、耗时、token 计数和状态,Prompt/Answer 按租户策略脱敏,密码、Token、连接串和完整业务数据不落日志。该目标必须用源码和真实数据回读证明。
|
|
77
|
-
- OpenAI 代理流式接口会传递 HTTP 请求取消信号;普通 `ChatStream` 与 `NL2V8` 当前主要使用内部超时 Token。不要声称浏览器断开一定立即终止上游调用或计费。
|
|
77
|
+
- OpenAI 代理流式接口会传递 HTTP 请求取消信号;普通 `ChatStream` 与 `NL2V8` 当前主要使用内部超时 Token。不要声称浏览器断开一定立即终止上游调用或计费。
|
|
78
78
|
|
|
79
79
|
## 跨端 AI 助手与商城交付
|
|
80
80
|
|
|
81
|
-
- PC 与移动端复用 `mci_ai_data_assistant`。`Bootstrap` 返回的 `Enabled`、`Models`、`AllowedDomains` 和 `Prompts` 是跨端共同事实源;快捷问题来自启用的 `mci_ai_data_domain.PromptExamples`,前端不能维护另一套固定文案。
|
|
82
|
-
- 官方 AI助手应用归 `app.microi.ai-engine`。v6.3.6 的接口引擎必须严格只有 Managed `mci_ai_data_assistant`、Managed `platform-ai-account`、Managed `platform-ai-runtime` 和 CreateIfMissing `platform-ai-custom-hook` 四项,并声明 `V8.Method.ManageAiPlatform`、`V8.Method.RequireManagedProtocolContext` 与所需 `V8.AI` 能力;后端缺少任一能力时安装预检失败关闭。
|
|
83
|
-
- `ai_app_list`、`ai_app_detail`、`ai_app_get_file`、`ai_app_save_file`、`ai_app_create`、`ai_app_build`、`ai_app_preview`、`ai_app_download_source_zip`、`ai_app_download_build_zip`、`ai_app_moveobject_probe`、`ai_app_moveobject_exec_probe`、`ai_app_publish_store` 这 12 个 `ai_app_*` 归 `app.microi.store` 维护。AI助手包移除它们的资源选择和所有权声明,但不会删除目标租户既有运行时接口记录;既有记录继续由应用商城包升级。
|
|
84
|
-
- v6.3.6 还必须保持 AI助手包的 DDL、PhysicalColumns、DiyTables、DiyFields、DataSets 全层不再包含重复的 `mci_ai_app_version`、`mci_ai_app_file`、`sys_microistore`,这些表交回 Store/SaaS 既有平台包维护;当前仅 AI助手包拥有的 `app_mic_aiapp`、`mci_ai_app` 继续保留。
|
|
85
|
-
- 普通角色必须匹配启用的 `mci_ai_role_policy`。只有后端可信的 `V8.CurrentUser.Level >= 9999` 可以在新安装租户缺少角色策略时获得安全兜底:从目标租户动态读取已启用业务域和模型,范围为 `All`,仍保持 `AllowRawSql=false`、敏感字段默认关闭。不得相信客户端提交的 Level、角色名或账号名。
|
|
86
|
-
- 当租户要求“所有角色均可使用 AI 助手”时,必须为 `sys_role` 中每个目标角色建立显式启用策略;受限角色使用 `Self`/`Department` 与最小业务域,管理角色才可使用经确认的 `All`。禁止把“人人可打开助手”实现成普通角色默认全库可读。
|
|
87
|
-
- `Sys_Config.DisableAiAssistant` 是负向开关:缺失、空值或 `0/false` 都显示 AI 助手,只有显式 `1/true` 才关闭图标。商城升级应复用旧 `IsShowAiAssistant` 的字段元数据 Id 就地改名;兼容读取可以保留旧物理列,但旧字段元数据必须在 PC 与移动端隐藏,禁止同时暴露正向、负向两个开关。关闭该开关前后都要做策略覆盖验收:回读 `sys_role` 与 `mci_ai_role_policy`,断言每个目标角色都有唯一启用策略,`AllowedDomains`、`AllowedModels` 均非空且模型仍处于启用状态;再至少用超级管理员、普通员工和客户身份分别调用 `Bootstrap`,确认 `Enabled=true` 且返回范围符合角色。仅看到入口图标不算可用。
|
|
88
|
-
- 角色策略存在但 `AllowedModels` 为空时,客户端最终仍会得到无可用模型;不得把它误判为前端角色拦截。应补齐当前租户启用模型白名单并回读,而不是删除 `mci_ai_role_policy` 校验或在客户端强制把 `Enabled` 改成 `true`。
|
|
89
|
-
- 商城包不能携带发布租户的角色 Id、模型 Id 或密钥;应携带业务域定义和接口引擎,由安装后的目标租户动态发现自己的启用模型。发布后回读 `sys_microistore.AppVersion/AppPakcet`,并真实执行 `Bootstrap` 验证超级管理员可用、模型非空、快捷问题存在。
|
|
90
|
-
|
|
91
|
-
## Schema 检索双模式
|
|
92
|
-
|
|
93
|
-
### 启动、租户与存储边界
|
|
94
|
-
|
|
95
|
-
- SaaS 引擎启动时挂载 `sys_osclients` 中符合节点条件的租户运行配置到 `OsClientExtend.ClientList`;这是配置、数据库访问对象和基础设施运行态,不是 AI Schema 预热。不得根据 `ClientList` 数量声称主租户和全部子租户的表字段均已加载。
|
|
96
|
-
- `AiSchemaInitializationHostedService` 只对 `GetConfigOsClient()` 返回的配置主租户执行启动预热,空值时回退默认租户;`InitializeSchemaCache` 还受在线 AI License 门禁。子租户必须在其首次 NL2SQL/NL2V8 Schema 请求中按可信 `OsClient` 惰性加载,禁止启动时无界遍历所有租户、所有表和字段。
|
|
97
|
-
- 在线 AI Schema 的事实源是当前租户未删除的 `diy_table`、`diy_field` 及绑定表的 `sys_menu`,不是 `INFORMATION_SCHEMA`,也不是开发者本地 `.microi-db-schema.md`。只存在于物理数据库、未登记低代码元数据的表字段不能宣称已被在线 AI 发现。
|
|
98
|
-
- 关键词索引的 Redis L2 Key 为 `Microi:{OsClient}:AiSchemaKeywordIndex:{FormEngineAuthzVersion}`,保存原始 `List<TableSchemaInfo>`,TTL 为 10 分钟;进程内 L1 保存预构建倒排索引,TTL 为 2 分钟。版本来自 `Microi:{OsClient}:FormEngineAuthz:Version`;无法读取 Redis 版本时必须回源租户数据库,不得沿用版本未知的旧索引。
|
|
99
|
-
- 标准 FormEngine 元数据/权限变更必须推进版本或显式刷新。绕过 FormEngine 直接执行 SQL 可能不会立即失效,应明确提示缓存到期、重启或手动刷新边界。
|
|
100
|
-
- Qdrant 只在 `EnableVectorDatabase=1` 时保存租户隔离的 Schema 向量和元数据 Payload,不能保存业务行数据、充当事实源或绕过表权限。NL2SQL 的业务结果始终在完成授权和只读 SQL 校验后实时查询当前租户数据库。
|
|
101
|
-
|
|
102
|
-
### 默认关键词模式
|
|
81
|
+
- PC 与移动端复用 `mci_ai_data_assistant`。`Bootstrap` 返回的 `Enabled`、`Models`、`AllowedDomains` 和 `Prompts` 是跨端共同事实源;快捷问题来自启用的 `mci_ai_data_domain.PromptExamples`,前端不能维护另一套固定文案。
|
|
82
|
+
- 官方 AI助手应用归 `app.microi.ai-engine`。v6.3.6 的接口引擎必须严格只有 Managed `mci_ai_data_assistant`、Managed `platform-ai-account`、Managed `platform-ai-runtime` 和 CreateIfMissing `platform-ai-custom-hook` 四项,并声明 `V8.Method.ManageAiPlatform`、`V8.Method.RequireManagedProtocolContext` 与所需 `V8.AI` 能力;后端缺少任一能力时安装预检失败关闭。
|
|
83
|
+
- `ai_app_list`、`ai_app_detail`、`ai_app_get_file`、`ai_app_save_file`、`ai_app_create`、`ai_app_build`、`ai_app_preview`、`ai_app_download_source_zip`、`ai_app_download_build_zip`、`ai_app_moveobject_probe`、`ai_app_moveobject_exec_probe`、`ai_app_publish_store` 这 12 个 `ai_app_*` 归 `app.microi.store` 维护。AI助手包移除它们的资源选择和所有权声明,但不会删除目标租户既有运行时接口记录;既有记录继续由应用商城包升级。
|
|
84
|
+
- v6.3.6 还必须保持 AI助手包的 DDL、PhysicalColumns、DiyTables、DiyFields、DataSets 全层不再包含重复的 `mci_ai_app_version`、`mci_ai_app_file`、`sys_microistore`,这些表交回 Store/SaaS 既有平台包维护;当前仅 AI助手包拥有的 `app_mic_aiapp`、`mci_ai_app` 继续保留。
|
|
85
|
+
- 普通角色必须匹配启用的 `mci_ai_role_policy`。只有后端可信的 `V8.CurrentUser.Level >= 9999` 可以在新安装租户缺少角色策略时获得安全兜底:从目标租户动态读取已启用业务域和模型,范围为 `All`,仍保持 `AllowRawSql=false`、敏感字段默认关闭。不得相信客户端提交的 Level、角色名或账号名。
|
|
86
|
+
- 当租户要求“所有角色均可使用 AI 助手”时,必须为 `sys_role` 中每个目标角色建立显式启用策略;受限角色使用 `Self`/`Department` 与最小业务域,管理角色才可使用经确认的 `All`。禁止把“人人可打开助手”实现成普通角色默认全库可读。
|
|
87
|
+
- `Sys_Config.DisableAiAssistant` 是负向开关:缺失、空值或 `0/false` 都显示 AI 助手,只有显式 `1/true` 才关闭图标。商城升级应复用旧 `IsShowAiAssistant` 的字段元数据 Id 就地改名;兼容读取可以保留旧物理列,但旧字段元数据必须在 PC 与移动端隐藏,禁止同时暴露正向、负向两个开关。关闭该开关前后都要做策略覆盖验收:回读 `sys_role` 与 `mci_ai_role_policy`,断言每个目标角色都有唯一启用策略,`AllowedDomains`、`AllowedModels` 均非空且模型仍处于启用状态;再至少用超级管理员、普通员工和客户身份分别调用 `Bootstrap`,确认 `Enabled=true` 且返回范围符合角色。仅看到入口图标不算可用。
|
|
88
|
+
- 角色策略存在但 `AllowedModels` 为空时,客户端最终仍会得到无可用模型;不得把它误判为前端角色拦截。应补齐当前租户启用模型白名单并回读,而不是删除 `mci_ai_role_policy` 校验或在客户端强制把 `Enabled` 改成 `true`。
|
|
89
|
+
- 商城包不能携带发布租户的角色 Id、模型 Id 或密钥;应携带业务域定义和接口引擎,由安装后的目标租户动态发现自己的启用模型。发布后回读 `sys_microistore.AppVersion/AppPakcet`,并真实执行 `Bootstrap` 验证超级管理员可用、模型非空、快捷问题存在。
|
|
90
|
+
|
|
91
|
+
## Schema 检索双模式
|
|
92
|
+
|
|
93
|
+
### 启动、租户与存储边界
|
|
94
|
+
|
|
95
|
+
- SaaS 引擎启动时挂载 `sys_osclients` 中符合节点条件的租户运行配置到 `OsClientExtend.ClientList`;这是配置、数据库访问对象和基础设施运行态,不是 AI Schema 预热。不得根据 `ClientList` 数量声称主租户和全部子租户的表字段均已加载。
|
|
96
|
+
- `AiSchemaInitializationHostedService` 只对 `GetConfigOsClient()` 返回的配置主租户执行启动预热,空值时回退默认租户;`InitializeSchemaCache` 还受在线 AI License 门禁。子租户必须在其首次 NL2SQL/NL2V8 Schema 请求中按可信 `OsClient` 惰性加载,禁止启动时无界遍历所有租户、所有表和字段。
|
|
97
|
+
- 在线 AI Schema 的事实源是当前租户未删除的 `diy_table`、`diy_field` 及绑定表的 `sys_menu`,不是 `INFORMATION_SCHEMA`,也不是开发者本地 `.microi-db-schema.md`。只存在于物理数据库、未登记低代码元数据的表字段不能宣称已被在线 AI 发现。
|
|
98
|
+
- 关键词索引的 Redis L2 Key 为 `Microi:{OsClient}:AiSchemaKeywordIndex:{FormEngineAuthzVersion}`,保存原始 `List<TableSchemaInfo>`,TTL 为 10 分钟;进程内 L1 保存预构建倒排索引,TTL 为 2 分钟。版本来自 `Microi:{OsClient}:FormEngineAuthz:Version`;无法读取 Redis 版本时必须回源租户数据库,不得沿用版本未知的旧索引。
|
|
99
|
+
- 标准 FormEngine 元数据/权限变更必须推进版本或显式刷新。绕过 FormEngine 直接执行 SQL 可能不会立即失效,应明确提示缓存到期、重启或手动刷新边界。
|
|
100
|
+
- Qdrant 只在 `EnableVectorDatabase=1` 时保存租户隔离的 Schema 向量和元数据 Payload,不能保存业务行数据、充当事实源或绕过表权限。NL2SQL 的业务结果始终在完成授权和只读 SQL 校验后实时查询当前租户数据库。
|
|
101
|
+
|
|
102
|
+
### 默认关键词模式
|
|
103
103
|
|
|
104
104
|
`mic_ai.EnableVectorDatabase` 缺失、`null`、空值或 `0` 均表示关闭;只有显式启用才进入向量模式。旧数据库没有该字段时必须保持可用,不能因为读取不到开关而尝试连接历史向量配置。
|
|
105
105
|
|
|
@@ -177,15 +177,15 @@ MCP 提供实时事实和受控执行;关键词索引提供低依赖、确定
|
|
|
177
177
|
|
|
178
178
|
配额扣减使用共享数据库/Redis 的原子条件更新,按用户、租户、模型和时间窗隔离。进程内计数只能做本节点优化。请求重试使用稳定 request id,避免上游已成功但本地超时导致重复计费。
|
|
179
179
|
|
|
180
|
-
## 验收清单
|
|
181
|
-
|
|
182
|
-
- [ ] 模型密钥只在服务端,普通用户不可枚举
|
|
183
|
-
- [ ] 官方中转模型清单可在无 Token 下返回非空公开白名单,且不含 ApiKey、Endpoint;Bootstrap 失败不会被静默降级为空列表
|
|
184
|
-
- [ ] 直接动态路由与 `/api/ApiEngine/Run` 兼容入口的 JSON Body 均能到达 `V8.Param`,HTTP 伪造可信字段仍被清除
|
|
185
|
-
- [ ] Schema/向量/对话/配额按 `OsClient` 隔离
|
|
186
|
-
- [ ] 启动期只预热配置主租户 Schema;子租户首次 AI Schema 请求可正确惰性加载,且未把 `ClientList` 挂载误报为全租户结构预热
|
|
187
|
-
- [ ] Redis/Qdrant 中只有 Schema 索引和元数据,没有复制业务行数据;分析 SQL 始终查询当前租户数据库
|
|
188
|
-
- [ ] `EnableVectorDatabase` 缺失、空值或 `0` 时不创建、连接、初始化、同步或搜索 Embedding/Ollama/Qdrant
|
|
180
|
+
## 验收清单
|
|
181
|
+
|
|
182
|
+
- [ ] 模型密钥只在服务端,普通用户不可枚举
|
|
183
|
+
- [ ] 官方中转模型清单可在无 Token 下返回非空公开白名单,且不含 ApiKey、Endpoint;Bootstrap 失败不会被静默降级为空列表
|
|
184
|
+
- [ ] 直接动态路由与 `/api/ApiEngine/Run` 兼容入口的 JSON Body 均能到达 `V8.Param`,HTTP 伪造可信字段仍被清除
|
|
185
|
+
- [ ] Schema/向量/对话/配额按 `OsClient` 隔离
|
|
186
|
+
- [ ] 启动期只预热配置主租户 Schema;子租户首次 AI Schema 请求可正确惰性加载,且未把 `ClientList` 挂载误报为全租户结构预热
|
|
187
|
+
- [ ] Redis/Qdrant 中只有 Schema 索引和元数据,没有复制业务行数据;分析 SQL 始终查询当前租户数据库
|
|
188
|
+
- [ ] `EnableVectorDatabase` 缺失、空值或 `0` 时不创建、连接、初始化、同步或搜索 Embedding/Ollama/Qdrant
|
|
189
189
|
- [ ] 默认链路使用结构化大模型扩词;扩词失败时中文 2/3 字确定性回退仍能召回常见业务实体
|
|
190
190
|
- [ ] 文档明确区分普通 Chat、NL2SQL Schema 双模式检索和 NL2V8 Skill + Schema 双模式检索
|
|
191
191
|
- [ ] NL2SQL 服务端可信标记不可由两套 JSON 序列化输入伪造,空白名单失败关闭
|
|
@@ -199,7 +199,7 @@ MCP 提供实时事实和受控执行;关键词索引提供低依赖、确定
|
|
|
199
199
|
- [ ] 带行级范围或高风险查询失败关闭,并改走审核、参数化和审计的业务 ApiEngine
|
|
200
200
|
- [ ] NL2V8 保存前有确认、语法、版本、回读和执行验证
|
|
201
201
|
- [ ] Prompt injection 不能调用未授权工具
|
|
202
|
-
- [ ] `microi_chat` 只调用对话入口、拒绝身份/密钥/Endpoint 覆盖并返回最终结果;在尚无模型 `tool_calls` Agent Loop 时,不会声称平台在线 AI 已执行其它 MCP 工具
|
|
202
|
+
- [ ] `microi_chat` 只调用对话入口、拒绝身份/密钥/Endpoint 覆盖并返回最终结果;在尚无模型 `tool_calls` Agent Loop 时,不会声称平台在线 AI 已执行其它 MCP 工具
|
|
203
203
|
- [ ] 各流式入口分别验证断开取消或明确仅有超时,不做过度承诺
|
|
204
204
|
- [ ] Prompt/Answer 当前留存范围已披露;全面脱敏只能在真实实现并回读后声明
|
|
205
205
|
- [ ] 新旧节点知识库版本可共存
|
|
@@ -360,7 +360,7 @@ Use this reference when exact field names are needed for core platform configura
|
|
|
360
360
|
|
|
361
361
|
| 字段 | 标签 | 类型 | 控件 | 说明 |
|
|
362
362
|
|---|---|---|---|---|
|
|
363
|
-
| `
|
|
363
|
+
| `DisableFileUpload` | 关闭文件上传 | `int` | `Switch` | 默认关闭且允许上传;只有 `1/true` 才禁止当前租户交互式上传。旧 `FileUploadEnabled` 仅作未升级节点兼容并在新版表单隐藏。 |
|
|
364
364
|
| `FileUploadMaxFileMB` | 单文件上限MB | `int` | `NumberText` | 租户业务值;留空依次使用环境变量、appsettings、代码默认值,最终受独立 Absolute/HTTP 上限保护。 |
|
|
365
365
|
| `FileUploadMaxRequestMB` | 单次总量上限MB | `int` | `NumberText` | 租户一次上传全部文件的业务合计;留空按回退链取值,最终受独立 Absolute/HTTP 上限保护。 |
|
|
366
366
|
| `FileUploadMaxCount` | 单次文件数上限 | `int` | `NumberText` | 租户业务值;必须为正整数,留空按回退链取值,最终受 AbsoluteMaxFileCount 保护。 |
|
|
@@ -1202,7 +1202,7 @@ Generic reference catalog. Load it only to understand common platform tables; ne
|
|
|
1202
1202
|
|
|
1203
1203
|
| 字段 | 标签 | 类型 | 控件 | 说明 |
|
|
1204
1204
|
|---|---|---|---|---|
|
|
1205
|
-
| `
|
|
1205
|
+
| `DisableFileUpload` | 关闭文件上传 | `int` | `Switch` | 默认关闭且允许上传;只有 `1/true` 才禁止当前租户交互式上传。旧 `FileUploadEnabled` 仅作未升级节点兼容并在新版表单隐藏。 |
|
|
1206
1206
|
| `FileUploadMaxFileMB` | 单文件上限MB | `int` | `NumberText` | 租户业务值;留空依次使用环境变量、appsettings、代码默认值,最终受独立 Absolute/HTTP 上限保护。 |
|
|
1207
1207
|
| `FileUploadMaxRequestMB` | 单次总量上限MB | `int` | `NumberText` | 租户一次上传全部文件的业务合计;留空按回退链取值,最终受独立 Absolute/HTTP 上限保护。 |
|
|
1208
1208
|
| `FileUploadMaxCount` | 单次文件数上限 | `int` | `NumberText` | 租户业务值;必须为正整数,留空按回退链取值,最终受 AbsoluteMaxFileCount 保护。 |
|
|
@@ -56,7 +56,7 @@ Markdown。第一列是相对 `microi.doc/docs/doc/` 的路径;第二列 Skill
|
|
|
56
56
|
| `system-engine/print-engine.md` | print-engine, v8-frontend-events | 服务端模板打印与蓝牙直连边界 |
|
|
57
57
|
| `system-engine/bluetooth-printer.md` | v8-frontend-events, print-engine, microi-client-frontend, microi-microservice | GP-M322 与 CC4 双型号、TSPL/CPCL/ESC-POS、BLE/SPP、微服务平台普通打印桥、旧 V8 兼容及实机验收 |
|
|
58
58
|
| `system-engine/report-engine.md` | report-engine | 虚拟报表和导出 |
|
|
59
|
-
| `system-engine/saas-engine.md` | v8-saas-multi-tenant |
|
|
59
|
+
| `system-engine/saas-engine.md` | v8-saas-multi-tenant | 租户识别、SaaS 配置、ZIP 开库进度与长任务租约 |
|
|
60
60
|
| `system-engine/search-engine.md` | search-engine | Elasticsearch 索引和查询 |
|
|
61
61
|
| `system-engine/spider-engine.md` | spider-engine | 浏览器采集和 Worker |
|
|
62
62
|
| `system-engine/ocr-engine.md` | ocr-engine, v8-file-upload, v8-saas-multi-tenant, v8-security | 图片/PDF 文字识别、独立模型服务、租户配置、V8/HTTP/MCP 调用、安全边界与生产验收 |
|
|
@@ -66,7 +66,7 @@ Markdown。第一列是相对 `microi.doc/docs/doc/` 的路径;第二列 Skill
|
|
|
66
66
|
| `system-engine/visualization-engine.md` | page-engine, microi-ui | 3D、CAD、goView 与数据大屏能力边界 |
|
|
67
67
|
| `system-engine/wf-engine.md` | v8-workflow | 工作流设计和事件 |
|
|
68
68
|
| `v8-engine/ai-apiengine.md` | ai-engine, v8-api-config | AI 辅助接口引擎开发 |
|
|
69
|
-
| `v8-engine/api-engine.md` | v8-api-config, v8-utilities |
|
|
69
|
+
| `v8-engine/api-engine.md` | v8-api-config, v8-utilities | 接口上下文、配置、分布式锁续租和调用 |
|
|
70
70
|
| `v8-engine/apiengine-index.md` | v8-crud-api, v8-api-config | 接口引擎实战和规范 |
|
|
71
71
|
| `v8-engine/form-engine.md` | v8-crud-api, v8-formengine-http | FormEngine API 与 HTTP |
|
|
72
72
|
| `v8-engine/mcp-server.md` | microi-system-delivery, microi-codex-installer, v8-security | MCP 工具、确认、审计、文件、日志、备份与访问密钥 |
|