本页接口以 MiniMax Code v3.1.6 为基准。页面入口是 页面的 此方法返回 目标会话可以由任何页面或 Node 创建,但必须属于本 Mini App。页面没有关联聊天时拒绝。侧栏打开期间,用户可在宿主里看过程、审批和回答问卷;关闭侧栏后,审批需由调用的 只创建会话,不运行回合、不占宿主运行名额。省略参数或传空对象使用本页访问与会话归属中的默认值。页面创建的会话 ID 可交给 Node 续用。页面调用达到宿主 60 秒截止时间时可能拒绝为 返回最近更新的最多 50 条用户会话,按最近更新时间排序;不列出 Mini App、定时任务或子 Agent 会话。需要 传入 ID 时返回该会话详情;不存在或不在允许范围时拒绝。页面省略 ID 时读取打开本页的用户聊天,需要
观察单个会话时,可以收到上述全部进度事件;
window.mcode?.miniapp?.agent,Node 入口是 context.agent。调用示例和交互设计见与 Agent 协作。下文类型描述宿主注入的接口,不需要安装运行时 SDK;页面和 Node 的其他接口见 Client API 与 Node API。访问与会话归属
在miniapp/miniapp.json 中按需声明 agentAccess: ["session.run", "session.read"]。两项独立,用户可在插件详情分别关闭。Node 仅在声明至少一项时注入 context.agent;页面对象存在不代表方法已经获准调用。run、answer 只能续用本 Mini App 创建的根会话。reply 可以回答这些会话委派给子会话的审批,必须使用事件里的子会话 ID。session.read 不授予续跑用户会话、审批或回答问卷的权限;其他 Mini App 和子 Agent 的会话不在读取范围。新会话的 agent、工作目录和模型来源如下;续用会话保留 agent 和工作目录,模型仅在显式传 model 时切换。run(input, options?)
运行一个回合。页面可指定用于取消调用的 ID;Node 在第二个参数中传入AbortSignal。会话正忙但未传
whenBusy 时,调用会被拒绝。queue 将文本作为之后的独立回合执行,返回该回合结果;steer 将文本交给正在进行的回合,读入后返回 status: 'steered',回复由原回合的调用接收。若原回合在读入前回答,文本会作为下一回合执行。空闲会话的两种选项都直接启动新回合。用户停止会话后,已有消息队列可能暂停,跟进调用会等待用户恢复并保留运行名额。取消排队调用会移除它的文本;已经交给运行中回合的 steer 文本不能撤回,未读入时取消可能得到结果未知,且不会停止原回合。运行结果
sessionId 始终返回。未启动续跑回合的 answer 可以不带 turnId;未运行回合或结果为 steered 时可以没有 model。text 是最终回复,不保证存在;status: 'error' 表示回合执行失败,与 Promise 本身被拒绝不同。aborted 只在宿主确认中止后返回。问卷暂停时使用 pendingQuestion.request 渲染,再将 pendingQuestion.requestId 传给 answer。reply(input)
页面和 Node 使用相同签名,成功返回undefined:requestId 来自 permission.requested,不是页面的取消 ID。只能选择本次允许或拒绝,不能写入全局规则。请求不存在或已处理时拒绝;审批可能在首个 run() 返回前到达,此时即可 reply。审批来自委派子会话时,应保留事件里的 sessionId 和 requestId。answer(input, options?)
回答问卷并观察续跑;两端对问卷 ID 的字段名不同:questionId、Node 的 requestId 都取自 question.requested.requestId 或 result.pendingQuestion.requestId。页面可另传一个 requestId,用于取消这次回答/续跑调用。answers 为每个步骤提供一个答案。必须等暂停的 run 返回后再 answer,否则该会话仍被原调用占用,调用可能因忙碌而被拒绝。结果与 run 相同;问卷已记录但未能观察到续跑时,结果未知,不要自动重答。显式 model 会在查找问卷前切换,因此即使因问卷不存在而失败,会话模型也可能已经改变。cancel(requestId)
仅页面提供;Node 取消run、answer 或 observe 时中止传入的 signal。undefined,不等待中止确认。未知或已完成的 ID 被忽略。等待运行名额或会话队列的调用取消后拒绝;已运行的调用只有在中止得到确认时才返回 aborted,否则拒绝为结果未知。观察订阅取消后正常结束。页面关闭或重载也会取消它的在途调用和订阅。open(sessionId)
仅页面提供,将本 Mini App 的一个自有根会话显示到所在聊天的侧栏:onEvent 处理,或再次 open。窗口重载、运行时重启或原聊天删除后需重新打开。此操作幂等,可以在调用结果未知后重试打开。models() 与模型选择
models 为当前用户可用的模型目录;default 可直接作为 run / answer 的 model。页面关联聊天时可返回 host,为聊天当前模型;聊天未选择模型时取默认值。Node 没有 host。选择目录中的模型时,复制 providerId、modelId,按需从 variants 选 variant,或从 thinking.efforts 选 thinking.effort。variant: '' 表示明确关闭思考,不能当作未指定而丢弃。目录的 thinking.default 是默认档位信息,入参使用单个 thinking.effort。没有可用默认模型或选择无效模型时,调用会被拒绝;模型可选但 BYOK 凭据缺失时,回合仍可能返回 status: 'error'。agents()
name 是新建会话时 agent 参数的规范名称,displayName 用于显示,primary 标记默认 agent。使用清单中的名称,不传 main 别名。会话不能中途换 agent,需要新建会话;显式选择 agent 不会改变页面继承的项目目录或模型。create(input?)
页面和 Node 使用相同签名:runtime_unavailable,但会话可能已经存在;此时重试仍可能再创建一个会话。observe(target, options)
target 必须恰好包含 sessionId 或 all: true 中的一项,onEvent 必填。指定 ID 持续观察这个会话的进度;all: true 只接收所有用户会话的回合开始、最终回复和回合结束,见观察事件。观察不会取得审批或问卷回答权。页面若需要主动结束订阅,应传自己的 requestId 再调用 cancel(requestId);它与页面在途 run / answer 共用唯一 ID 范围。Node 使用第二个参数中的 signal。订阅没有固定超时;取消、会话删除、页面结束、服务停止/替换、读取权限关闭会使订阅结束。订阅无法启动或运行时失败时,调用会被拒绝;正常结束返回 undefined。每个 Mini App 最多 4 个订阅,不占运行名额或启动预算。sessions()
session.read,没有分页或自定义数量参数。每项字段见会话类型。session(sessionId?)
session.read;不属于聊天时返回 undefined。Node 服务被多个页面共享,没有当前聊天,必须传 ID;可以由页面 session() 取得后交给 Node。此接口不返回完整聊天历史,只提供详情和可用的最后一条最终回复。数据类型
会话摘要与详情
workspaceDir 是记录下来的绝对项目目录,不保证路径仍然存在;isDefaultWorkspace 表示没有项目、使用默认目录。createdAtMs、updatedAtMs 均为 Unix 毫秒。model 未记录时省略,error 仅在状态为 error 且宿主有错误文字时提供,lastAssistantText 没有可用最终回复时省略。列表不包含详情扩展字段。问卷与答案
以下规则适用于页面和 Node 从question.requested.request 或 pendingQuestion.request 收到的问卷。可选的宿主字段可能缺失;提交答案使用独立的 MiniAppAgentQuestionAnswer 类型。渲染问卷
- 渲染全部
steps,问题与选项文字按纯文本展示。 selectionMode决定单选或多选;选中的 ID 必须来自当前步骤的options。allowOther、required固定为true,otherPlaceholder固定为Others...。image.src支持 HTTPS URL 或以/mavis/api/开头的应用附件路径,不使用本地file://URL。recommended仅用于展示推荐标记。对 v2 请求,它不会自动选择或提交答案。presentation提供输入框替换、进度展示和后退导航提示。
提交答案
每项答案仅包含stepId、selectedOptionIds、selectedOther,以及可选的 otherText、skipped。按收到的步骤和选项作答,不添加其他字段。- 自由输入通过
selectedOther和otherText回传。 skipped: true可显式跳过步骤,即使该步骤标为必答。- 返回的
prefillAnswers可用于预填,但不要把其中的contextImages或其他返回元数据复制到answer()。
完整类型定义
完整类型定义
返回状态、计时与历史兼容字段
返回状态、计时与历史兼容字段
以下字段由宿主按需返回,用于展示或兼容已有问卷;它们不属于
answer() 输入,也不代表 Mini App 提供 Goal 等业务接口。这些状态字段是快照;Agent API 不提供
questionnaire.state 事件。事件
run 和 answer 的 onEvent 接收下列判别联合;应忽略不认识的 type。观察事件
all: true 只收到 turn.started、最终回复的 message.committed 和 turn.finished,这些事件可以包含会话 title。观察的 turn.started.model 可缺省;宿主未能读到最终回复时,不发 message.committed,turn.finished 也不带 text。观察没有排队、steer、审批或问卷事件。事件积压时增量文字和工具进度可能被丢弃,不能把每个进度片段都当作可靠持久化记录。并发与取消限制
agentConcurrency范围 1–32,默认 4;一个会话同时只有一个回合。超出运行名额的run/answer按顺序等待,等候队列最多为并发数的 4 倍。whenBusy跟进同一会话已有的本插件调用时共享其名额;这类额外在途跟进也有并发数 4 倍的上限。每 60 秒启动预算为max(12, 5 × agentConcurrency),重启 Mini App 不清空此预算;单纯等待名额、未获准的调用不计入。- 审批只在调用传了
onEvent,或会话仍显示在聊天侧栏时等待。否则直接拒绝审批;问卷会通过pendingQuestion交还。等待审批本身没有超时,忽略审批事件会占住运行名额。 - 每个 Node 进程最多同时挂起 16 个普通请求,由 Agent 的
run、answer、models、agents、create、sessions、session和全部 Tool、Connector 方法共享。Agentreply独立允许 16 个挂起调用;observe独立允许 4 个。Agent 调用遇到普通请求或reply达限时,在派发前以可重试的AGENT_UNAVAILABLE拒绝。等待运行名额、排队回合或审批期间也占用对应的进程请求名额。 - 权限关闭后,运行中的回合被中止、等待调用被拒绝、观察订阅结束;对象仍可能存在,重新开启后可发新调用。Node
signal中止后不再接收事件回调,包括已在传输途中的事件。
错误
页面调用被拒绝时,错误类型为Error,只依赖其中的 message 码值;自定义字段(例如 busy.reason)不能保证经过宿主桥传回页面。Node 调用被拒绝时,错误为带 code、retryable、可选 reason 的 MiniAppAgentError。码值对应关系与处理方法见 Agent 错误码。不要仅因 Promise 拒绝就重试:result_unknown / AGENT_OUTCOME_UNKNOWN 表示操作可能已生效。observe、sessions、session 不改变会话,读取或订阅调用丢失最终结果时,返回不可用错误;页面的 models、agents、create 共用目录调用通道,传输失败仍可能报告 result_unknown。run 的正常结果 status: 'error' 与这些调用拒绝应分开处理。