Title: AI 引擎与 Microi.AI 中转站 Canonical: https://microi.net/doc/system-engine/ai-engine.html Page-Modified: 2026-10-25T20:05:03.000Z Source: published HTML document body; page revision is not a capability verification date. # AI 引擎与 Microi.AI 中转站 AI 引擎把对话、数据分析和内容创作接入吾码的用户权限与业务数据。先配置可用模型,再从 AI 助手选择任务;本页说明部署、会话与后端集成方式。 ## 会话历史按需加载 首页嵌入 AI 助手时不预取历史正文。打开历史列表后,由 platform-ai-runtime 的 ListConversationSummaries 按页返回标题、时间及归档状态;选择会话后,才用 GetConversationRecords 分页获取该会话的问答、思考过程和附件。两项动作始终绑定当前登录用户及会话来源,不接受请求指定其他用户。需同时更新 PC 框架和“AI助手”应用 v7.7.5 或更高版本。 推荐部署方式:默认不安装向量组件 Microi 吾码在线 AI 引擎已内置“大模型关键词扩展 → 当前用户权限范围内的 Schema 关键词检索 → 精确表/字段回读 → SQL 安全校验与执行”。对常见的 500~1200 张表、1 万~1.5 万个字段,无需部署 Ollama + nomic-embed-text + Qdrant 也能完成 AI 数据分析,启动更快、资源占用更低、实时 Schema 更准确。 Ollama + nomic-embed-text + Qdrant 继续作为可选的模糊语义召回增强。只有确实需要处理大量别名、行业术语或描述非常模糊的问题时才建议启用。未启用时平台绝不连接、初始化、同步或搜索向量库;显式启用但连接失败时,平台会安全回退到关键词 Schema 检索。 AI 能力专题 - AI 数据分析 (https://microi.net/doc/system-engine/ai-data-analysis.html):自然语言提问、权限感知 Schema、NL2SQL、经营结论与真实移动端预览。 - AI 创作中心 (https://microi.net/doc/system-engine/ai-creative-studio.html):AI 图片、视频、声音与音乐创作,以及完整 29 项图像工具。 - 自建数字人直播 (https://microi.net/doc/system-engine/digital-human-live.html):本机模型、话术和问答知识、OBS 接入与 4K 功能截图。 - AI 员工中心与吾码小龙虾 (https://microi.net/doc/system-engine/ai-employee-center.html):十岗团队、任务依赖、持久执行、成果验收和 OpenClaw 节点。 ## 📸 预览图 [Microi吾码 AI 创作中心,展示智能助手、视觉创作、声音创作及完整图像工具目录: https://file.microi.net/itdos/official-docs/images/5c936f0ef9f2166a2ef26d37b31fc65f2b943117959c2cc0d6b6845eeec8461d/202610/ai-engine-creation-center.jpg] AI 创作中心:从自然语言想法出发,统一进入对话、图像、视频、声音与模型能力。 ## 后端代码分层 AI 相关业务实现统一归属 Microi.Server/Microi.AI,Microi.Server/Microi.net.Api 只是 ASP.NET Core 的 HTTP、SSE 与 SignalR 接口层: - API 层可以完成路由、请求绑定、认证中间件结果读取、可信 OsClient / 当前用户上下文传入、取消信号传递、响应头和流式分块输出。 - 模型配置和默认模型选择、会话上下文、Schema/Skill 检索、NL2SQL 授权与执行、提示词安全、模型代理路由、供应商密钥、额度和计量、订阅支付状态、AI 工作流以及 AI 自身启动初始化,必须由 Microi.AI 的服务或门面完成。 - API 层不能直接查询 mic_ai、mic_sub_order 等 AI 表,不能读取供应商密钥,不能自行拼接服务端 AllowedTables,也不能把“授权”和“执行”拆成可被其它入口漏调的两个步骤。 - Microi.Core 只保存跨模块接口与请求/响应模型。Microi.AI 通过 AddMicroiAI() 自注册领域服务和生命周期任务;API 宿主不应感知 Ollama、Qdrant、Embedding 或 Schema 索引实现。 这一边界同时适用于 Controller、SignalR Hub、后台初始化和未来 Tool Gateway。新增 AI 入口时应先扩展 IMicroiAI 或 Microi.AI 内的专用服务,再由接口层做薄委托,不能把业务逻辑复制到 Controller。 ## 自建数字人直播:本机免费推理 通过应用商城的 自建数字人直播(digital-human-live),吾码管理话术与知识,中文语音、文字问答、口型画面和照片驱动头像由用户自己的电脑生成。独立专题包含多张 4K 功能截图、神经网络头像、手机摄像头局域网链路、本机部署及 OBS 验收边界:查看自建数字人直播 (https://microi.net/doc/system-engine/digital-human-live.html)。 ## 授权边界:服务器 License 与中转 ApiKey 是两套机制 在未修改的吾码官方发布物中,内置在线 AI 的核心推理入口会统一读取服务器 License:Chat、ChatStream、NL2SQL、NL2SQLStreaming、NL2V8Engine 以及它们的可信聊天编排,只有本机存在有效的付费授权时才继续调用模型。自己在 mic_ai 中配置 DeepSeek、OpenAI 等供应商的 Endpoint/ApiKey,并不会绕过这层服务器授权。 服务器 License 的真实信任链是: - 吾码官方使用签发私钥生成 microi.net.lic;客户发布包和 NuGet 不包含该私钥。 - 客户节点使用程序集内嵌的官方公钥验证 RSA 签名,同时验证当前机器 HID 和有效期。显式配置的公钥也只能是同一官方公钥的副本,客户自建“私钥 + 公钥”不能替换信任根。 - 验签在本机完成,并非每次 AI 调用都访问 api.microi.net。有效 License 启动后会延迟检查一次作废状态,之后每天检查一次;官网短时不可达或超时会跳过本次心跳,不会立即停用已经通过本地验签的 License。 因此,准确说法是“核心在线 AI 需要由吾码官方签发的有效服务器 License”,而不是“每次调用都必须在线请求官网授权”。只下载源码或安装包、复制 Microi.AI.dll、把租户名改成 iTdos,都不能自行签发有效 License。 官方中转站还要经过第二层账号授权:租户使用官网签发的 sk-microi-* ApiKey 请求 https://api.microi.net/v1,官网按账号校验额度并计量。服务器 License 不能代替中转 ApiKey,中转 ApiKey 也不能把本地 Chat/NL2SQL/NL2V8 变成已授权状态。 ProxyChat、ProxyChatStream、头像生成和 OpenAI 兼容 /v1/chat/completions 现在也在 AiProxyService 领域层读取同一服务器 License;不是只靠页面隐藏。/v1/models、套餐、订单和用量属于发现/账户管理接口,不触发模型推理,仍可用于配置与购买流程。中转调用在服务器 License 之外还会继续校验登录态或 sk-microi-* 及账号额度。 MicroiAI 与 AiProxyService 只接受 Microi.net 中封闭的 MicroiFeatureLicense 实现;宿主仅重新注册另一个 IMicroiFeatureLicense 不会把 AI 变成已授权。签发客户端地址固定为 https://api.microi.net,私钥目录从编译、NuGet 和发布内容中排除;签发服务还会核对私钥对应公钥必须与内嵌官方信任根一致。 上述保证针对未被篡改的官方二进制与正常部署。拥有服务器管理员权限的人仍可以替换或修改程序集、改变机器指令,任何纯本地 DRM 都无法从理论上抵抗这种物理控制;但这不等于其能够“伪造 License”。没有官方私钥时,生成的文件不能通过未修改节点内嵌官方公钥的 RSA 验签,也不能拿去给其它正常吾码节点使用。 ## 中转额度与无限权益 中转账户分别记录赠送额度、累计用量、剩余赠送额度和 IsUnlimited 权益。启用无限权益后,平台中转 Token 余额不再阻止请求,也不再扣减原有剩余额度;用量按该调用既有的计量来源继续累计并写入脱敏账本;供应商用量缺失时可能采用估算,不能当作供应商实测值。取消无限权益后恢复原有有限余额规则。付费订阅、模型供应商配额、服务器 License、登录身份和并发限制仍分别生效。 主租户平台管理员通过既有 platform-ai-account 接口引擎管理权益: js ``` // 使用目标用户的精确 Id;先读取,不通过账号名称模糊匹配。 { Action: 'GetRelayTokenAccount', TargetUserId: '目标用户Id' } // ExpectedUnlimited 来自刚才读取的 IsUnlimited,只接受布尔值。 { Action: 'SetRelayTokenLimit', TargetUserId: '目标用户Id', IsUnlimited: true, ExpectedUnlimited: false } ``` MCP 可用 microi_run_engine 调用同一动作。返回包含 AccountExists、IsUnlimited、GiftTokens、UsedTokens、RemainingTokens、UnlimitedUpdatedBy 和 UnlimitedUpdatedAt。管理员须独立回读确认目标及权益;客户端展示以 IsUnlimited 显示“无限额度”,保留数值余额供核对。旧数据库缺少权益字段时保持有限额度行为,设置动作要求先升级官方 AI 应用和匹配的 Core/AI 宿主。应用包不附带任何实际账户记录。 管理动作从可信会话与主库重新核验管理员身份,拒绝访问密钥、子租户管理和跨租户目标。普通用户不能经客户端 FormEngine 给自己授予权益。读操作不会创建账户;设置可受控初始化不存在的账户,检测到多条有效账户时停止并要求核验。额度变更只更新权益与最近操作人/时间,保留原余额和历史;并发状态不符时拒绝覆盖。拥有后端脚本编辑权限的开发者仍属于可信执行主体,应按管理员权限管理。 在途请求若在预检后被撤销权益,或余额被其它请求消耗,记账时按当前数据库状态拒绝不足余额,不继续使用旧无限授权。供应商已经发生的用量可能未进入本地成功账本,需要另查供应商回执;平台不会自动重发请求或补扣。 该能力最低要求 Core/AI 宿主 8.7.0、官方 AI 应用 7.7.8 与 platform-ai-account 1.1.1;MCP 6.1.5 可通过通用引擎调用工具使用。官方中转账户摘要和用量只能由可信主租户身份读取,子租户复用相同用户 Id 也不能读取主租户记录。 ## 跨界面、前后端 V8、MCP 与外部客户端调用 平台已提供前后端第一等 V8.AI 和专用 microi_chat MCP Tool。调用边界如下: 调用方 | 推荐入口 | 鉴权 | 普通返回 | 打字机 / 流式 | PC、H5、UniApp 或 MicroService 页面 | POST /api/Ai/Chat | 吾码登录 Token | 支持 | 改用 POST /api/Ai/ChatStream 并消费 SSE | 前端 V8 | await V8.AI.Chat(...) / ChatGet(...) | 自动使用当前登录 Token、租户并接收轮换 Token | 支持 | await V8.AI.ChatStream(..., onChunk) | 后端接口引擎 / 表单后端 V8 | await V8.AI.Chat(...) | 固定绑定当前 V8 租户与认证用户;匿名上下文拒绝 | 支持 | await V8.AI.ChatStream(..., onChunk) | Microi MCP | microi_chat | MCP 当前登录 Token与绑定租户;不接受身份、密钥或 Endpoint 覆盖 | 支持最终 DosResult | MCP Tool 返回最终结果,不冒充逐 token 流 | OpenAI 兼容客户端 | POST /v1/chat/completions | Authorization: Bearer sk-microi-* | stream:false | stream:true | ### 参数与安全规则 OpenAI 兼容中转的 SSE 需区分模型终态与传输终止:上游明确返回各候选的 finish_reason、存在文本或工具调用载荷且没有错误时,若其正常关闭却缺少 [DONE],代理补齐一个终止帧。已有终止帧不重复发送;纯 EOF、空结果、错误、取消与终态冲突均不能补成成功。length/content_filter 原值保留,仍属于截断/过滤,客户端不能因收到 [DONE] 就按正常答案保存。正常与错误响应体的读取都接收请求取消,并受既有代理超时约束;取消不能撤销供应商已发生的用量。这一修复需要部署包含该实现的新后端,应用包或 MCP 更新不能替换运行二进制。 固定 JSON 实测需显式记录模型思考设置。MiniMax-M3 的公开复核工具协议 1.1.0 固定两组 reasoning_split:true 与 thinking:{type:'disabled'},避免默认推理文本混入答案及占满同一输出预算;其它模型不照搬其专属参数。按供应商文档 (https://platform.minimax.io/docs/api-reference/text-openai-api)选择参数,不靠删除任意回答内容通过 JSON 校验。旧协议的失败回执保留,新旧设置不能当作同一实验或宣称效率提升。 2026-10-26 在实际 8.7.1 官方入口完成单轮六次合成任务:六次流均完整结束、答案均可解析为 JSON;固定平台上下文组计划验收 3/3,无上下文组 1/3,合计 4/6,两个失败保留。供应商用量与六条账本均为 2,079 Token。完整参数、逐项检查与脱敏 JSON 见实测方法与结果 (https://gitee.com/ITdos/microi.net/tree/master/microi.benchmarks/ai-quality)(GitHub (https://github.com/itdos/microi.net/tree/master/microi.benchmarks/ai-quality))。这里只验证模型计划,没有执行业务操作;单轮结果不代表稳定成功率、完整交付率或费用/效率倍数。 - Chat 和 ChatStream 同时声明了 GET/POST,但业务代码默认使用 POST。问题、系统提示、附件和会话信息不应放进 URL、代理日志或浏览器历史。 - 常用请求字段为 UserChatMsg、AiModel、AiModelId、RelayModel、ConversationId、Mode、ReasoningEffort 和 Attachments。模型 Endpoint 与供应商 ApiKey 由服务端读取;Controller 和 V8.AI 会清除客户端提交的 ApiKey/Endpoint。HTTP 来源由 Controller 归一为 http-ai,后端 V8 来源固定为 v8-ai;不能通过伪造 Source=ai-intent-router 绕过中转计量。 - 当前用户、用户名称和 OsClient 以服务端 Token 恢复结果为准。客户端提交同名字段不能切换租户或冒充用户。 - ChatStream 使用标准 SSE 事件:message 是增量文本,result 是最终结果,error 是失败信息,done 的数据为 [DONE]。所谓“打字机效果”是前端收到 message 后逐块更新界面,不是把完整回答再用定时器假装成流式。 - NL2SQL 不能通过通用包装把客户端表名当授权。必须继续调用受控的 /api/Ai/NL2SQL,由服务端根据当前用户生成不可伪造的表白名单。 ### 前端 V8:普通 POST / GET 相对当前 ApiBase 的请求会自动携带吾码登录头,并接收服务端返回的新 Token: javascript ``` var result = await V8.AI.Chat({ UserChatMsg: '把这段工单内容归纳成三条结论', AiModel: 'MiniMax-M3', AiModelId: '当前租户 mic_ai 记录Id', ConversationId: V8.NewGuid ? V8.NewGuid() : '' }); if (result.Code != 1) { V8.Tips(result.Msg || 'AI调用失败', false); return; } V8.Result = result.Data; ``` V8.AI.Chat 默认 POST。只有纯标量、无附件、且确认问题允许进入 URL 日志时才使用 V8.AI.ChatGet;业务默认仍应使用 POST。 AiModelId 应来自当前租户已经启用且当前用户可见的模型选择,不要在公共前端硬编码发布租户的主键。 ### 前端 V8:SSE 打字机输出 V8.AI.ChatStream 已封装 SSE 分帧、认证头、Token 轮换与最终结果。onChunk 每次收到真实 message 增量块: javascript ``` var abortController = new AbortController(); var answer = ''; var result = await V8.AI.ChatStream({ UserChatMsg: '生成一段客户回访建议', AiModel: 'MiniMax-M3', AiModelId: '当前租户 mic_ai 记录Id' }, function (chunk) { answer += chunk; V8.Result = answer; }, { Signal: abortController.signal }); if (result.Code != 1) V8.Tips(result.Msg || 'AI调用失败', false); ``` 复杂页面应把这段逻辑放进 MicroService 的 services/ai.ts,并用 AbortController 在页面关闭时取消浏览器读取;不要在多个按钮 V8 中复制完整 SSE 解析器。 ### 工作台对话排查与升级验收 低代码建模也使用实时事件流。页面先显示当前轮模型的公开说明,再持续显示工具调用、 表结构创建(DDL)、字段结构更新(DDL)、菜单配置与回读阶段;文本按收到的增量逐步呈现。 “思考与执行摘要”展示可公开的过程,隐藏推理原文、密钥、连接串和完整工具参数不会进入该区域。 长步骤中的等待提示表示请求尚未返回,不代表 DDL 已提交或工具已经成功。 建表和新增字段会显示数据库实际执行的 DDL 安全语句,并区分“已发出”“数据库执行已返回” 和“执行失败”。默认值、注释等字面量会隐藏,数据库事务尚未确认提交时也会明确标注。 这些回执来自 ORM 的真实执行点;不会把模型生成的计划 SQL 当作已经执行的 SQL, 也不会为了展示过程再次执行 DDL。单条较慢 DDL 先显示等待状态,返回后逐步展示真实回执。 建模回执 | 含义 | 后续处理 | notExecuted | 可信写前校验确认未发起写请求 | 显示工具名、参数位置与安全错误码;同一动作最多修正一次参数 | uncertain | 写请求已发出,但返回错误或传输中断 | 停止后续写入,精确只读核对目标资源 | 回读已返回 | 已取得当前资源的只读回执 | 保留原错误;不能据此自动重发写入或宣称原调用成功 | 例如创建表之后连接中断,系统先按原表名回读;添加字段失败则按原 TableId 回读。 不能换一个表名再次创建,也不能让 HTTP 客户端把不确定的 POST 自动改走另一传输重放。 停止、断网和服务端错误都会保留已经显示的过程,正在执行的工具显示“结果待核对”。 AI 工作台出现错误时,先结合浏览器控制台和 Network 判断失败阶段: 现象 | 优先检查 | 验收依据 | options is not defined 等 JavaScript ReferenceError | 工作台发送函数与 SSE 读取调用的变量作用域 | 浏览器不再抛错,真实增量进入回答区域 | HTTP 失败或 SSE error 事件 | 登录态、服务器授权、模型可用性、额度与服务端错误 | 保留真实状态和错误信息,不显示为正常回答 | HTTP 200,但没有回答 | 是否开始读取响应流、SSE 分帧与 message/result/done 处理 | 收到增量或最终回答,等待状态结束 | options is not defined 可以发生在响应已到达、前端尚未读取 SSE 的阶段,不能直接归因为模型推理失败。 此时模型是否已经执行应以服务端回执为准,不要连续重发问题。修复工作台发送代码后必须更新 PC 前端程序; 仅更新后端或安装 AI助手应用包不会替换浏览器运行的前端代码,更新后还应刷新页面并核对当前前端版本。 最小验收是在目标租户的 AI 工作台选择可用模型,实际发送“你好”,检查增量回答、最终结果和等待状态; 同时覆盖跨块中文、仅有 result 的兼容响应、SSE 错误、HTTP/网络失败与停止读取。 microi_chat 或 V8.AI.ChatStream 调用成功只证明对应调用入口,不能代替工作台发送按钮和页面状态的真实验收。 平台回归测试也应执行工作台实际发送函数与 SSE 消费行为,不能只检查源码字符串或单独测试 SDK。 ### 后端 V8:直接使用 V8.AI 后端接口引擎与表单后端事件不再自请求 HTTP。V8.AI 会绑定当前执行租户与 V8.CurrentUser,并清除调用参数中的身份、Endpoint、ApiKey、AllowedTables 和服务端授权标记: javascript ``` var result = await V8.AI.Chat({ UserChatMsg: String(V8.Param.Question || ''), AiModel: String(V8.Param.AiModel || ''), AiModelId: String(V8.Param.AiModelId || '') }); return result; ``` 匿名接口没有可信用户上下文时 V8.AI 返回 Code=1001。NL2SQL 继续按当前用户生成表白名单;NL2V8/NL2V8Stream 仅平台管理员可调用。不要把完整 Token、问题和回答写入日志。 ### MCP 调用 外部 Agent 直接调用专用 Tool: text ``` microi_chat({ question: "归纳当前工单", aiModel: "MiniMax-M3", aiModelId: "...", reasoningEffort: "low" }) ``` microi_chat 只暴露对话白名单参数,实际 OsClient、用户和 Token 来自当前 MCP 连接,HTTP 来源再由服务端归一;Tool 不接受 Endpoint、ApiKey、Authorization 或身份覆盖。它返回最终 DosResult,不冒充逐 token MCP 流。如果 Agent 本身需要模型协议流,使用 /v1/chat/completions 的 stream:true;平台事实写入仍调用对应 MCP 写工具并遵守确认与回读。 ## AI 图片与音乐工作台 /#/mic-ai-engine 首屏直接展示 AI 对话、数据分析、AI 绘图、AI 音乐、AI 视频和模型管理,不再把媒体能力藏在“自动识别”里。AI 绘图采用简化的 Stable Diffusion 式工作台:左侧按创作、AI 编辑、人像/商品和精确处理选工具,中间只保留当前工具必需参数,右侧预览结果;手机端依次折叠为工具、参数、结果。 这里必须区分“对话/意图模型”和“媒体生成模型”:MiniMax-M3 负责理解与路由,图片由 image-01 生成;音乐新路由优先请求 music-3.0,已有供应商配置继续兼容 music-2.6,只有托管音乐接口明确返回 410 退役终态时才切到官方开源 MiniMax-Music3。部署时必须以目标账号实时可用的模型清单为准,不能让文本模型用说明文字冒充图片或音频。 能力 | 登录态入口 | 当前边界 | 结果与页面呈现 | 生成式图片 | POST /api/Ai/GenerateMiniMaxImage | image-01;文生图及最多 4 张主体参考图;支持图生图、重绘、扩图、消除、去水印、证件照、多图合成、上色、修复、商品场景等受控工具意图 | 参考图先进入当前租户私有 HDFS,只把短时签名地址交给供应商;结果重新下载、校验并写入当前租户公有 HDFS | 精确图片处理 | POST /apiengine/platform-ai-runtime,Action=ProcessImage | 黑白、纯色背景抠除、缩放、居中裁剪、旋转、翻转、格式转换和拼图;不消耗模型额度 | V8.Image 在服务端处理并写入当前租户公有 HDFS,返回可回读的尺寸、格式和永久地址 | 音乐 | POST /api/Ai/GenerateMiniMaxMusic | 当前仅管理员;托管新路由 music-3.0,兼容既有 music-2.6 配置,或明确 410 后的官方开源 MiniMax-Music3;无人声,开源回退时长 10~60 秒 | 托管结果为 MP3,开源结果为 WAV,采样率、声道、码率与时长按实际文件头回读;两者均校验后写入当前租户公有 HDFS并用原生播放器预览 | 生成式“消除、扩图、去水印、抠图”等目前是参考图 + 提示词重绘,不是像素级蒙版编辑;页面必须明确提示这一边界。要求确定像素结果时,应选择右侧标记为“精确”的 V8.Image 工具。 图片请求示例: http ``` POST /api/Ai/GenerateMiniMaxImage Content-Type: application/json Authorization: <当前吾码登录 Token> { "RequestId": "image:conversation-id:message-id", "Operation": "image-to-image", "Prompt": "一张现代办公室团队协作的横版插画", "Model": "image-01", "AspectRatio": "16:9", "Count": 1, "ReferenceImages": [ { "FileName": "subject.webp", "DataUrl": "data:image/webp;base64,..." } ] } ``` 参考图只允许 JPEG、PNG、WebP,单张最多 10MiB、合计最多 24MiB。自定义尺寸必须在 512~2048 之间且为 8 的倍数。供应商临时图片地址不能直接作为最终结果返回。 音乐请求示例: http ``` POST /api/Ai/GenerateMiniMaxMusic Content-Type: application/json Authorization: <当前吾码管理员登录 Token> { "RequestId": "music:conversation-id:message-id", "Prompt": "轻快、克制、适合产品演示的科技感纯音乐", "Model": "music-3.0", "DurationSeconds": 20, "IsInstrumental": true, "SampleRate": 44100, "Bitrate": 256000, "Format": "mp3" } ``` 两类请求都必须使用稳定 RequestId。服务端按当前 OsClient + 用户 + RequestId 做共享幂等;相同请求可回放,参数冲突或上游结果不确定时不能换随机 Id 盲目重试。供应商 Key、图片 Base64、音频十六进制和中转站真实密钥都不能返回浏览器。 音乐入口会先创建持久后台任务,返回 Code=2 和 Data.TaskId。继续调用 GET /api/Ai/GetMiniMaxMusicTask?taskId=<原任务号>,直到返回 Code=1 + Permanent=true + FileUrl;Failed、Uncertain 是需要处理的终态,不应一直显示“正在生成”。刷新页面或停止等待只结束前端等待,后台任务继续执行;重复提交必须保留原 RequestId 与全部参数。 ### MCP 图片工具 MCP 暴露三步图片任务链: - microi_generate_minimax_image:先不传确认值获取 dry-run;正式调用必须让 confirmExecution 精确等于 requestId。通常返回 Code=2 + Data.TaskId,这只代表任务已持久入队,不代表图片已生成。 - microi_get_minimax_image_task:使用同一个 TaskId 查询。只有 Code=1 + Data.Images 才能进入文章素材或后续 HDFS 校验;超时、刷新页面和 MCP 连接断开都不能换新的 requestId 重试。 - microi_recover_minimax_image_task:仅在状态含 CanRecoverResult=true 时调用,用于重新下载已有供应商结果并写入当前租户 HDFS,不会重新消耗图片生成额度。 工具只接收业务提示词和已配置的图片模型选择,不接收 Endpoint、ApiKey、Authorization 或租户覆盖。width 与 height 必须同时提供;参考图编辑、图片数量、比例和分辨率仍以服务端 mic_ai.MediaProtocol / MediaModels 实时目录为准。MCP 返回的临时供应商地址不能直接作为公开文章素材,必须等服务端返回当前租户 HDFS 结果后再做 SHA-256、尺寸和公开托管验收。 若 Music3 事件流或文件下载中断,系统保存原供应商任务号及完成文件地址。状态中的 CanRecoverResult=true 表示可以点击“恢复原配乐结果”,或调用 POST /api/Ai/RecoverMiniMaxMusicTask?taskId=<原任务号>;恢复只读取既有生成结果,不再次作曲。旧请求若没有保存供应商回执,仍会保留不确定状态,不能凭超时推断已扣费或自动另开请求。 吾码中转节点采用 POST /v1/microi/music_tasks、GET /v1/microi/music_tasks/{taskId} 的异步协议,使用受保护的平台 API Key 和稳定 Idempotency-Key。调用节点、中转节点、Core/AI/API 和前端均需更新,安装 AI 助手应用包本身不会替换平台二进制。 ### 媒体预览与文件地址 生成成功后,浏览器只消费服务端返回的 FilePath、FileUrl、ContentType、文件大小等附件元数据: - 公有 HDFS 附件优先使用当前运行租户的 sys_config.FileServer + FilePath 生成最终 URL。不能写死官网域名,也不能继续沿用另一个租户或旧环境返回 URL 的域名前缀。 - 图片使用 在当前页面放大、缩放和关闭;图片卡片不能再套 target="_blank" 跳到新浏览器页面。 - 音频使用