选择接入方式
Connector 只是选择之一,不是 Mini App 的前提,没有对应的 Connector 也不代表数据拿不到。用户明确指定了方式并且能验证时,就用用户的;否则按可用能力、鉴权、运行环境和需要的操作来选。
先验证,再开发
写包之前,对每个数据源用选定的方式做一次只读查询,确认授权、真实参数、返回字段和类型,拿到一条有代表性的数据,或一个真实的空结果。解析逻辑按观察到的结构来写。Agent 终端里查询成功,不代表 Mini App 运行时里也能成功。CLI、API、文件访问还要在 Node 服务里实际跑通一次。
Host Connector
Node 服务通过context.hostConnector 使用用户已授权的连接器。访问第三方服务时,用的是用户授权给 MiniMax Code 的账号,Mini App 自己不保存任何凭证。miniapp/miniapp.json
- 只声明运行时真正需要、并且已经验证过的 provider。
list()随时可用,返回允许的工具清单和输入 schema。call()只在服务激活后、在请求处理里调用,不要在start里调。- 不要自己构造或保存
toolRef,也不要发给页面。进程重启或遇到过期引用时,重新list()。 - 用户退出登录时,工具清单和授权引用会被撤销;同一账号重新登录后再
list()即可恢复,不用重新发布。换成别的账号,旧引用就永久失效了。
错误处理
按code 判断,不要依赖跨进程的 instanceof。disposition 说明请求有没有发出去:not_dispatched、provider_reported、unknown_after_dispatch。遇到 unknown_after_dispatch,先读业务状态核对,再决定写操作要不要重试。解析返回值
result.value 是第三方服务的原始结果,宿主不做归一化。Skill 提供的 host-connector-value.mjs 处理常见的”单个 text 块”包装,其他结构原样返回。解析出零条数据时,只有服务明确返回了空结果才算成功;有源数据却解析不出来,要按解析错误处理,不要显示成”暂无数据”。状态与持久化
- 运行时数据写在
context.dataDir,不要写进工作区或载荷。 - 页面、MCP 调用和 Agent 操作的所有写入都走同一个 Node 业务服务。先把状态落盘,再推 SSE 或 WebSocket 事件,这样每个打开的页面都能刷新到最新数据。