小程序的入口正在从「用户打开页面」变成「模型调用能力」。微信在 2026-06-08 发布的《关于开发者接入微信 AI 生态的指引》里给了两条技术路径:一条由平台读源码生成可调用能力(自动模式),一条由开发者自己把功能抽象成原子接口、原子组件并封装成 SKILL(开发模式)。两条路径并行,也可以同时开启。
本文只谈工程:模式边界带来的设计差异、SKILL 与原子接口该切到多细、调用链上必须留哪些可观测性。文中规则引自官方接入指南与 SKILL 设计建议,该能力当前处于内测阶段,细则以官方当期文档为准。

图 5:意图识别 → 选接口 → 填参数 → 执行 → 卡片确认 → 页面接力,断点分布在不同环节
两种模式的目标一致——让模型能正确调用小程序能力——但责任边界完全不同。
| 维度 | 自动模式 | 开发模式 |
|---|---|---|
| 能力来源 | 平台在提审时读源码,分析页面逻辑、API 定义、数据模型后生成 | 开发者按框架实现,注册接口与组件后封装 SKILL |
| 运行位置 | 复用小程序运行时,由平台侧驱动页面交互 | 原子接口运行在微信客户端的独立 JS 环境 |
| 可控点 | 页面结构、控件语义、状态可见性 | 接口契约、参数定义、返回内容、卡片形态 |
| 失效模式 | 语义不可读、状态不可判、流程不可恢复 | 接口职责重叠、描述偏差、参数靠猜 |
| 适用边界 | 查询类、短链路操作 | 有明确高频任务、需要多步确认的办理类 |
一个容易忽略的差异:自动模式把「可读性」变成了接口契约的替代品。 页面里那些只有老用户能懂的省略语(「确定」「下一步」「完成」)、只靠颜色区分而文字不体现的状态,在人工操作时是效率优化,在模型读取时是信息缺失。改造成本不在技术服务端,在页面语义层。
原子接口运行在微信客户端的独立 JS 环境中,这个「独立」不是细节,它直接约束代码组织方式。
storage 接口共享小程序内的登录凭证,也可通过 wx.login、wx.getPhoneNumber 完成登录流程。这意味着一套账号体系可以复用,但凭证的获取要在「非页面上下文发起」的情形下也能走通。
图 6:SKILL 声明场景与流程,原子接口承担执行,原子组件承担确认,接力页承担落地
粒度的判断标准可以逐层定义,不需要凭感觉。
| 层级 | 粒度定义 | 切太细的代价 | 切太粗的代价 |
|---|---|---|---|
| SKILL | 一个用户能一口气说完的完整任务 | 模型在多个 SKILL 间选择,路由错误率上升 | 一个 SKILL 混多个场景,意图分流不准 |
| 原子接口 | 一个可独立完成、有明确入参与结果的业务动作 | 单次任务串行十几步,中断点成倍增加 | 一个接口承担多个动作,参数集合膨胀 |
| 原子组件 | 一次确认一件事(规格、地址、金额各一张) | 卡片过多,把对话切碎 | 单卡信息过载,用户不敢确认 |
三类典型的切错方式值得单独记一笔:
一个可复用的切分示例(预约到店服务):
SKILL: bookService
原子接口: searchSlots / createBooking / getBooking / cancelBooking
原子组件: 时段选择卡 / 预约确认卡 / 预约详情卡
接力页 : 预约详情页(接收 bookingId 直接渲染)四个接口、三张卡片、一个场景。三个自测问题:用户能否用一句话说清这个 SKILL 办的事(说不清即切粗)、每个原子接口能否被其他场景复用(不能则职责不单一)、每张卡片用户看一眼敢不敢确认(不敢则信息缺失或一次确认太多)。
官方《SKILL 设计建议》给出的权重分层,是这套框架里信息密度相当集中的一部分。模型在决定调用哪个接口、填什么参数、回什么内容时,会综合多个信息源,权重与职责各不相同:
| 信息源 | 权重 | 承载内容 |
|---|---|---|
| 原子接口返回的 content | ★★★★★ | 本次调用结果与下一步动作 |
| mcp.json 的接口 description | ★★★★ | 接口功能、调用时机、不适用场景 |
| mcp.json 的 inputSchema.description | ★★★★ | 参数语义、取值来源、缺省处理 |
| SKILL.md | ★★★ | 业务流程编排、跨接口规则、意图分流、通用规范 |
官方点名的三类错位,正好对应三种常见写法:
mcp.json 易不一致。SKILL.md 的接口清单只写前置条件与上下游关系。content → content 只承载本次结果与下一步动作。与之配套的写作约束:
searchDrinks 优于 search);首句声明业务对象而非入参,避免类目过宽导致误命中;职责单一、描述互不重叠;同名字段跨接口统一命名。content 是直接面向模型的文本,写法上有两个固定模式。
事实 + 动作两段式。 只有动作没有事实时,模型可能把「展示卡片」理解成「准备调下一步接口」,从而跳过用户确认。写法是「已根据所选规格生成订单。请展示订单确认卡片,并用一句话引导用户核对后下单」——前半句陈述状态,后半句给动作。
失败分支三件事。 陈述具体事实、给出下一步出口、指出不应做的动作,三者配套。例如:未匹配到目标对象并已返回兜底清单 → 请先告知未找到并引导从兜底清单选择 → 不要以相同条件重复调用本接口。只写禁令不给出口,流程会卡在原地。
配套的工程约束还有四条,属于跨接口层面,写在 SKILL.md 里:
平台侧还有四条硬规则:不含越狱类表述(如「忽略指令」)、接口名与注册的 methodName 完全一致(含大小写)、不写死面向用户的回复格式、不妨碍关键信息呈现(名称、时间、金额、地址不得省略)。
调用是否成立,只能靠度量判断。建议在接第二个场景之前就把口径定下来。
| 指标 | 定义 | 定位的问题 |
|---|---|---|
| 意图覆盖率 | 用户表达命中已封装 SKILL 的比例 | 场景选择与边界划分 |
| 接口选中准确率 | 命中场景后选对原子接口的比例 | 接口 description 的准确度 |
| 参数填充准确率 | 必填参数被正确填充的比例 | 字段语义与取值来源的清晰度 |
| 接力率 | 卡片点击进入接力页的比例 | 卡片信息量与入口设计 |
| 中断率 | 确认前放弃的比例 | 步骤数量与确认信息完整性 |
日志侧三条要求:同一次会话贯穿一个 traceId、每个原子接口的入参与 content 原文落库、失败分支按原因分类统计(缺参数 / 无结果 / 权限 / 超时)。没有这三条,返工只能靠猜。
官方文档明确:当前处于内测阶段,暂未开放开发模式的代码提审,请勿将相关代码合入正式版本提交审核,以免影响正常版本发布。
由此推出三条工程约束:
content,功能与边界放接口 description,参数语义与来源放字段 description,跨接口规则放 SKILL.md。这些设计在接入前做完,代价是文档;在评测被拒之后做,代价是重构。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。