乐于分享
好东西不私藏

深度解读微信小程序 AI 生态接入文档(附代码 & 开发视角理解)

深度解读微信小程序 AI 生态接入文档(附代码 & 开发视角理解)

前言

2026 年 6 月 8 日,微信正式发布《关于开发者接入微信 AI 生态的指引》,全面开放小程序 AI 开发模式(Beta 内测),这套方案并非简单给小程序叠加 AI 对话能力,而是试图把数百万小程序从 “面向人操作的图形应用”,升级为可被 AI Agent 调度的标准化服务,结合微信官方开发文档、技术架构、代码落地逻辑、生态影响做全维度拆解,适合小程序开发者、前端工程师、产品运营阅读,你可在此基础上补充个人实操案例、踩坑经验、业务思考完成公众号原创内容。

一、整体背景:行业热度与微信的底层态度

1.1 市场现状:开发者普遍观望,热度偏理性

公告发布后,微信官方账号、开源社区数据均反映出行业波澜不惊的状态:
GitHub 官方 Demo:小程序 AI 示例 Demo 截止发布 2026年 6 月 10 号仅 139 个 Star、21 个 Fork,多数开发者仅围观,未动手测试。
核心原因:当前小程序 AI 开发模式处于内测阶段,暂不开放代码提审,开发者无法上线商用,短期看不到直接流量与收益,因此以观望为主。

1.2 微信核心态度:自愿接入,打消开发者顾虑

本次接入最大的前置原则:完全自愿,接入与否不影响小程序原有服务,该规则在官方指引、Q&A、服务条款中反复强调。

接入收益:完成接入的小程序,可被微信 AI 主动推荐、对话调用,获得全新对话式流量入口;

无强制约束:不接入、不授权,小程序原有功能、流量、权限完全不受影响。

背后逻辑:微信刻意规避 “店大欺客” 的平台争议,用 “耐心” 推动生态自然迁移,而非强制捆绑。结合微信过往对外部 AI 产品的管控策略,也能看出微信希望自建 AI 服务生态,同时平衡平台与数百万中小开发者的关系,这也是微信 AI 布局的核心基调。

二、核心技术架构:双模式并行,两套 AI Agent 范式

微信为小程序提供自动模式 + 开发者开发模式两套接入方案,对应行业两种主流 AI Agent 技术路线,二者可同时开启,覆盖「零成本改造」到「深度定制开发」全场景。

2.1 自动模式:零代码改造,GUI Agent + 源码解析双能力

2.1.1 技术本质:模仿人类操作(GUI Agent)

自动模式面向无开发能力、中小体量小程序,开发者仅需在后台授权即可启用,无需编写任何代码。其底层融合两大技术能力:

读屏(页面交互授权)微信 AI 模拟真人操作小程序:读取页面视图、识别按钮 / 输入框、代替用户完成点击、搜索、下单、授权等操作,属于典型的GUI Agent(图形界面智能体)。微信配套自研了POINTS-GUI-G、UI-Oceanus两大 GUI 识别技术,优化读屏准确率,解决传统 GUI Agent 识别慢、误触率高、Token 消耗大的痛点。

读码(源码解析授权)平台在小程序提审环节,自动读取、解析小程序源码,提取页面结构、业务逻辑、API、交互流程,自动生成标准化 Skill(技能),让 AI 理解小程序的功能逻辑,弥补纯读屏的效率短板。

2.1.2 自动模式的隐性代价(开发 & 运营必看)

授权自动模式后,小程序会产生多处体验与规则变化,也是运营和前端需要重点关注的点:

页面展示被重构AI 会在后端运行小程序,跳过首页、Banner、运营位、品牌门面,仅保留核心交互界面。传统视觉运营、广告位、活动弹窗在 AI 对话场景下完全失效。微信折中方案:支持原子卡片渲染,商家可在 AI 对话流中展示带品牌的交互卡片,卡片强制保留「跳转小程序入口」,挽回品牌曝光。

AI 操作视同用户行为条款明确:AI 在用户授权后的所有操作,法律层面等同于用户本人操作,开发者无正当理由不得拦截、屏蔽 AI 指令。前端在做接口拦截、风控校验时,需要兼容 AI 调用场景,避免误拦截正常请求。

适配建议(代码视角)

2.2 开发模式(Beta 内测):深度定制,工业级 AI 服务方案

面向有研发能力、核心业务型小程序(电商、本地生活、工具、服务类),也是本次文档的核心重点。该模式要求开发者主动封装能力,让 AI直接调用接口,而非模拟点击,优势是稳定、高效、可控,是长期生态主流方向。

2.2.1 三大核心概念(开发核心:原子接口、原子组件、SKILL)

三者是开发模式的最小单元,配合小程序 MCP 协议完成 AI 调度,也是编码的核心载体。
概念
定义
作用
代码 / 文件形态
原子接口
最小业务执行单元,封装单一功能,标准化入参 / 出参
处理核心业务逻辑(查商品、下单、支付、查订单)
运行在微信独立 JS 环境的接口函数,纯逻辑层
原子组件
原子接口的可视化载体,结构化数据渲染为卡片
在 AI 对话流中展示结果、提供确认操作,替代传统页面
基于微信自研glass-easel卡片引擎的自定义组件,受限 UI 组件
SKILL
能力包整体封装,串联原子接口 + 组件 + 业务规则
定义一个完整场景(点咖啡、打车、挂号),供 AI 调度
文件夹:SKILL.md(业务说明)+mcp.json(接口声明)+ 代码实现
补充规则:单个小程序最多支持 30 个 SKILL,需按业务场景拆分,不可无限堆砌。

2.2.2 小程序 MCP 协议(通信核心)

MCP(Model Context Protocol)是 AI 与外部工具通信的通用协议,微信小程序 MCP 做了定制化改造,适配小程序运行环境,区别于标准 MCP:

作用:作为桥梁,让微信 AI 精准发现、推理、调用开发者封装的原子接口;

开发要求:开发者只需完整实现 SKILL,无需额外适配协议底层,降低接入成本;

定位:整个开发模式的通信基石,所有接口调用、数据传输都基于此协议。

2.2.3 运行环境隔离(前端重点,避坑核心)

微信对 AI 相关代码做了多层运行环境隔离,和原有小程序运行环境完全拆分,前端编码必须严格遵守环境限制,否则代码失效:

JS 执行环境原子接口、原子组件、动态组件分属三个独立 JS 上下文不共享全局变量。代码避坑:不要依赖全局变量传参、共享状态,所有数据通过接口入参 / 出参传递;禁止在原子接口中使用小程序全局App()、Page()实例。

渲染环境原子组件基于glass-easel卡片引擎,WXSS 样式、组件能力和原生小程序(Skyline/WebView 引擎)存在差异:

半屏页面补充方案当卡片无法承载复杂操作时,可跳转半屏页面,其运行环境和原生小程序一致,但禁止跳转到外部公众号、视频号、其他小程序,仅承载详情展示。

2.3 完整流程演示:以 “AI 对话点咖啡” 为例(端到端链路)

结合官方时序图,梳理从对话到支付的全链路,直观理解代码执行顺序,

用户对话:「帮我点一杯少糖拿铁」,消息上传至小程序 AI 后台;

AI 推理:通过 MCP 协议匹配对应 SKILL,调用「查询饮品 + 创建订单」原子接口;

先匹配Skills

# drink-skill WeStoreCafe 点单场景## 业务流程图```用户意图  │  ├─ 模糊意图("想喝点什么")─→ getRecommendedDrinks → 推荐卡片  │                                                        │  ├─ 明确关键词("拿铁")───→ searchDrinks → 搜索结果卡片 ─┤  │                                                        │  │                          用户点击卡片选择某款饮品         │  │                                    ↓                    │  │                              selectDrink → 饮品详情卡片  │                                    │  │                    ┌───────────────┤  │                    ↓               ↓  │         用户在半屏选规格    Agent 使用默认规格  │              ↓                     ↓  │         confirmSku ←───────────────┘  │              │  │              ↓  │       订单确认卡(order-confirm-card)  │         ├─ 有地址:展示完整订单  │         └─ 无地址:展示"添加收货地址"空态  │                    ↓  │              用户点击地址区域 → 半屏填写 → saveAddress  │                                              ↓  │                                    订单确认卡更新(含地址)  │              ↓  │       用户点击"确认下单" → payOrder → 支付成功卡片  │  └─ 门店查询("最近的店")──→ getStoreStatus → 门店状态卡片(实时刷新)```**Agent 不能跳过 selectDrink 直接调 confirmSku**——必须先有 selectDrink 返回的有效 drinkId。**Agent 不能跳过 confirmSku 直接调 payOrder**——必须先有 confirmed 状态的订单。**payOrder 未返回成功前,禁止向用户宣布"已支付成功"。**## 原子接口依赖关系| 接口 | 作用 | 组件 | 前置条件 ||------|------|------|----------|| getRecommendedDrinks | 模糊意图时展示精选饮品 | recommended-drinks | — || searchDrinks | 按关键词搜索饮品 | recommended-drinks | 用户提供了关键词 || getAllDrinks | 半屏页面加载全量数据 | — | Agent 通常不直接调用 || selectDrink | 查看饮品详情与规格 | drink-detail-card | 已有 drinkId(来自推荐/搜索) || confirmSku | 确认规格生成订单 | order-confirm-card | 已调 selectDrink 获取规格信息 || getAddress | 查看默认地址 | address-card | — || saveAddress | 保存地址并续跑订单 | order-confirm-card | 用户提供了完整地址三要素 || confirmOrder | 重新展示订单确认 | order-confirm-card | 已有 orderId || payOrder | 发起支付 | pay-success-card | 订单 status=confirmed || getStoreStatus | 门店实时状态 | store-status-card | 用户询问门店信息 |## 业务约束(跨接口铁律)### 1. 输出形态- 所有成功返回的接口(isError=false)且绑定了组件的,**必须展示卡片**,禁止以纯文本列出卡片中的详情数据。- Agent 回复时可附加一句简短引导话术(如"为你推荐了 3 款,点击卡片选择"),但**禁止把商品名、价格、规格等以 markdown 列表形式展开**### 2. 执行顺序- `payOrder` 必须在调用成功(isError=false)后才能向用户宣布"支付成功"。- `confirmSku` 必须在 `selectDrink` 成功后调用。- 禁止并发调用 `payOrder`;须等上一笔结束后再发起下一笔。### 3. 数据来源- `drinkId` 必须来自 `getRecommendedDrinks` / `searchDrinks` / `getAllDrinks` 返回的 `items[].drinkId` 原值,禁止编造。- `orderId` 必须来自 `confirmSku` / `saveAddress` / `confirmOrder` 返回的 `orderId` 原值,禁止编造。- 所有枚举类规格值必须使用英文枚举(如 `ice` / `hot`),禁止使用中文 label。### 4. 地址处理- `confirmSku` 无论有无地址都直接返回订单确认卡,地址空态由卡片组件自行展示入口。- Agent 无需主动调 `getAddress` 来判断是否有地址——这由 `confirmSku` 内部自动处理。- 用户在地址为空时点击"确认下单",`payOrder` 会返回 isError 提示缺少地址。## 用户意图分流### 直接意图(触发本 SKILL)- "想喝点什么"- "来杯咖啡"- "推荐一下饮品"- "有什么奶茶"- "帮我点杯拿铁"- "看看菜单"- "大杯热美式"- "最近的门店排队吗"### 意图分流规则- 用户只说"想喝/推荐"等模糊表达 → `getRecommendedDrinks`- 用户说出具体品名/品类 → `searchDrinks`- 用户从卡片点击选中某饮品 → `selectDrink`(drinkId 由卡片 sendFollowUpMessage 传入)- 用户问门店/排队 → `getStoreStatus`- 用户表达歧义短语(如"那个")→ 先反问澄清,禁止猜测

在 mcp.json 配置 相对路径 skills/drink-skill/mcp.json 确认订单的mcp 配置

{  "apis": [     {      "name""confirmSku",      "description""确认饮品规格并生成订单(业务对象:订单确认卡片)。\n调用前置条件:已调用 selectDrink 成功获取到饮品详情(即上下文中有 selectDrink 返回的 drinkId 和 specOptions)。\n【严禁场景】禁止未经 selectDrink 直接调用本接口;禁止使用中文 label 作为 specs value(必须使用英文枚举值)。",      "inputSchema": {        "type""object",        "properties": {          "drinkId": {            "type""number",            "description""商品唯一标识,必须来自上一步 selectDrink 返回的 structuredContent.drinkId 原值。【禁止编造】禁止从用户语言推断。"          },          "specs": {            "type""object",            "description""规格对象,key 为维度 key,value 必须使用英文枚举值。取值来源:selectDrink 返回的 specOptions 中各维度的 options[].value。【禁止编造】禁止使用中文 label 或不在枚举中的值。",            "properties": {              "temperature": {                "type""string",                "description""温度。仅允许:'ice'(冰)/ 'hot'(热)。用户说「热的」→ 'hot',用户说「冰的」或未指定 → 'ice'。",                "enum": ["ice""hot"]              },              "sugar": {                "type""string",                "description""糖度。仅允许:'none'(无糖)/ 'less'(少糖)/ 'normal'(标准)/ 'more'(多糖)。用户未指定时使用 'normal'。",                "enum": ["none""less""normal""more"]              },              "cupSize": {                "type""string",                "description""杯型。仅允许:'medium'(中杯)/ 'large'(大杯)/ 'xlarge'(超大杯,仅部分品类支持)。用户未指定时使用 'medium'。",                "enum": ["medium""large""xlarge"]              },              "toppings": {                "type""array",                "description""加料(多选)。元素仅允许:'oatMilk'(燕麦奶)/ 'coconut'(椰浆)/ 'extraShot'(额外浓缩,仅奶咖)/ 'pearl'(珍珠)/ 'jelly'(椰果)。用户未指定时传空数组 []。",                "items": {                  "type""string",                  "enum": ["oatMilk""coconut""extraShot""pearl""jelly"]                }              }            }          }        },        "required": ["drinkId""specs"]      },      "outputSchema": {        "type""object",        "properties": {          "orderId": { "type""string""description""订单 ID" },          "drinkName": { "type""string""description""饮品名称" },          "specText": { "type""string""description""规格文本描述" },          "totalPrice": { "type""number""description""订单总价(元)" },          "needAddress": { "type""boolean""description""true 表示用户需在卡片上补充收货地址" },          "status": { "type""string""description""订单状态:awaiting_address / confirmed" }        }      },      "_meta": { "ui": { "componentPath""components/order-confirm-card/index" } }    },  ]}    

环境初始化:微信客户端启动独立 JS 环境,下载分包,通过wx.login同步用户登录态;

接口调用:原子接口请求开发者服务端,创建订单并返回结构化数据;skills/drink-skill/apis/confirmSku.js

// 确认 SKU:校验规格 -> 生成订单草稿 -> 返回订单确认卡片// 规范(最佳实践):// - content:「事实陈述 + 业务动作」两段式// - structuredContent:供 Agent 理解订单状态(不含 imageUrl 等纯渲染字段)// - _meta:组件渲染用(含 imageUrl、价格明细、地址),Agent 不可见const { findDrink, getAddress, saveOrder, setPendingOrder } = require('../utils/storage.js')const { validateSpecs } = require('../utils/sku.js')const { genOrderId } = require('../utils/id.js')async function confirmSku({ drinkId, specs } = {}) {  try {    if (!drinkId) {      return {        isErrortrue,        content: [{ type'text'text'缺少 drinkId。禁止编造,应先调用 selectDrink。' }]      }    }    const drink = findDrink(drinkId)    if (!drink) {      return {        isErrortrue,        content: [{ type'text'text`未找到 drinkId=${drinkId} 的饮品。禁止编造 ID,应先调用 selectDrink 获取有效 drinkId。` }]      }    }    const check = validateSpecs(drinkId, specs)    if (!check.valid) {      return {        isErrortrue,        content: [{ type'text'text`规格不合法:${check.error}。禁止再次使用相同无效值重试。正确出口:引导用户通过饮品详情卡片上的"选规格"按钮打开半屏重新选择。` }]      }    }    const orderId = genOrderId()    const order = {      orderId,      drinkId: drink.id,      drinkName: drink.name,      basePrice: check.basePrice,      extraPrice: check.extraPrice,      totalPrice: check.totalPrice,      specs: check.normalizedSpecs,      specText: check.specText,      imageUrl: drink.imageUrl,      status'pending',      createTimenew Date().toISOString()    }    saveOrder(order)    const address = getAddress()    if (!address) {      setPendingOrder(orderId)      return {        isErrorfalse,        // content:事实陈述 + 业务动作        content: [{          type'text',          text`订单已生成(${drink.name}${check.specText},¥${check.totalPrice}),但用户尚未填写收货地址。接下来为用户展示订单确认卡片,卡片上有"添加收货地址"入口,用简短话术引导用户在卡片上补充地址,禁止以纯文本列出订单详情。`        }],        // structuredContent:Agent 理解订单状态        structuredContent: {          orderId,          drinkName: drink.name,          specText: check.specText,          totalPrice: check.totalPrice,          needAddresstrue,          status'awaiting_address'        },        // _meta:组件渲染用        _meta: {          imageUrl: drink.imageUrl,          basePrice: check.basePrice,          extraPrice: check.extraPrice,          addressnull,          pendingOrderId: orderId        }      }    }    // 有地址:直接订单确认    order.address = address    order.status = 'confirmed'    saveOrder(order)    return {      isErrorfalse,      // content:事实陈述 + 业务动作      content: [{        type'text',        text`订单已生成并确认(${drink.name}${check.specText},¥${check.totalPrice})。接下来为用户展示订单确认卡片,用简短话术引导用户点击卡片上的"确认下单"按钮,禁止以纯文本列出订单详情。`      }],      structuredContent: {        orderId,        drinkName: drink.name,        specText: check.specText,        totalPrice: check.totalPrice,        needAddressfalse,        status'confirmed'      },      _meta: {        imageUrl: drink.imageUrl,        basePrice: check.basePrice,        extraPrice: check.extraPrice,        address      }    }  } catch (err) {    console.error('[confirmSku] error', err)    return {      isErrortrue,      content: [{ type'text'text`确认规格失败:${err.message || '未知错误'}。` }]    }  }}module.exports = confirmSku

上面已完成 Skill 如何找到 mcp 以及具体配置和服务端交互的代码。接下来就是渲染原子组件。(熟悉Agent开发的其实就是定义Tools)

卡片渲染:原子组件解析数据,在对话流生成订单确认卡片(带小程序跳转入口);

skills/drink-skill/components/order-confirm-card 下有四个文件,仅展示 UI 相关的代码

<viewclass="oc-card">  <viewclass="oc-header">    <viewclass="oc-title">订单确认</view>    <viewwx:if="{{orderId}}"class="oc-order-id">#{{orderId}}</view>  </view>  <!-- 地址行:有地址展示信息,无地址展示空态占位,都可点击 -->  <viewclass="oc-addr {{hasAddress ? '' : 'oc-addr-empty'}}"hover-class="row-hover"bind:tap="onTapAddress">    <blockwx:if="{{hasAddress}}">      <viewclass="oc-addr-body">        <viewclass="oc-addr-top">          <textclass="oc-addr-name">{{address.name}}</text>          <textclass="oc-addr-phone">{{address.phone}}</text>        </view>        <viewclass="oc-addr-detail">{{address.detail}}</view>      </view>      <viewclass="oc-edit-text">修改</view>    </block>    <blockwx:else>      <viewclass="oc-addr-body">        <viewclass="oc-addr-empty-title">添加收货地址</view>        <viewclass="oc-addr-empty-sub">请先添加收货地址以便下单</view>      </view>      <viewclass="oc-edit-text">去添加</view>    </block>  </view>  <!-- 商品行 -->  <viewwx:if="{{drinkName}}"class="oc-item">    <imagewx:if="{{imageUrl}}"class="oc-img"src="{{imageUrl}}"mode="aspectFill"></image>    <viewclass="oc-item-info">      <viewclass="oc-item-name">{{drinkName}}</view>      <viewwx:if="{{specText}}"class="oc-item-spec">{{specText}}</view>      <viewclass="oc-item-price">¥{{totalPrice}} × 1</view>    </view>  </view>  <viewclass="oc-divider"></view>  <!-- 合计 -->  <viewclass="oc-summary">    <viewclass="oc-summary-label">合计</view>    <viewclass="oc-summary-price">¥{{totalPrice}}</view>  </view>  <!-- 确认下单按钮 -->  <viewclass="oc-pay-btn"hover-class="btn-hover"bind:tap="onTapPay">    <viewclass="oc-pay-text">确认下单 ¥{{totalPrice}}</view>  </view></view>

用户确认支付:点击卡片按钮,消息回传 AI,调用「发起支付」原子接口;

支付闭环:接口调用wx.requestPayment拉起微信支付,支付结果回传并渲染结果卡片。包含填地址,确认地址亦是如上面的交互一致,不再赘述,详看下面的配置文件。

{  "apis": [    {      "name""getRecommendedDrinks",      "description""获取推荐饮品列表(业务对象:精选饮品卡片)。\n调用前置条件:用户表达想喝饮品但未指定具体商品名(如「想喝点什么」「推荐一下」「有什么好喝的」)。\n【严禁场景】用户已说出具体商品名(如「来杯拿铁」)时,禁止调用本接口,应调用 searchDrinks 或直接 selectDrink。",      "inputSchema": {        "type""object",        "properties": {          "scenario": {            "type""string",            "description""使用场景。仅允许以下取值:'default'(默认推荐)/ 'coffee'(咖啡类)/ 'tea'(茶饮类)/ 'warm'(暖饮)。用户未明确表达品类偏好时,留空走 default。",            "enum": ["default""coffee""tea""warm"]          }        }      },      "outputSchema": {        "type""object",        "properties": {          "items": {            "type""array",            "description""推荐饮品列表",            "items": {              "type""object",              "properties": {                "drinkId": { "type""number""description""商品唯一 ID" },                "name": { "type""string""description""商品名称" },                "price": { "type""number""description""基础价格(元)" },                "categoryName": { "type""string""description""分类名" },                "description": { "type""string""description""商品简介" }              }            }          },          "total": { "type""number""description""该场景下可选饮品总数" },          "hasMore": { "type""boolean""description""是否有更多商品可浏览" },          "keyword": { "type""string""description""搜索关键词(推荐场景为 null)" }        }      },      "_meta": { "ui": { "componentPath""components/recommended-drinks/index" } }    },    {      "name""searchDrinks",      "description""按关键词检索饮品列表(业务对象:饮品搜索结果卡片)。\n调用前置条件:用户说出了具体的商品名或分类关键词(如「拿铁」「奶茶」「水果茶」)。\n【严禁场景】用户仅表达「想喝点东西」等模糊意图时,禁止调用本接口,应调用 getRecommendedDrinks。",      "inputSchema": {        "type""object",        "properties": {          "keyword": {            "type""string",            "description""商品名或分类关键词(用户原话中的饮品名/品类词)。取值来源:用户原话。【禁止编造】用户未说出任何饮品关键词时,禁止填写本字段,应改走 getRecommendedDrinks。"          }        },        "required": ["keyword"]      },      "outputSchema": {        "type""object",        "properties": {          "items": {            "type""array",            "description""匹配的饮品列表",            "items": {              "type""object",              "properties": {                "drinkId": { "type""number""description""商品唯一 ID" },                "name": { "type""string""description""商品名称" },                "price": { "type""number""description""基础价格(元)" },                "categoryName": { "type""string""description""分类名" },                "description": { "type""string""description""商品简介" }              }            }          },          "total": { "type""number""description""匹配总数" },          "hasMore": { "type""boolean""description""是否有更多结果" },          "keyword": { "type""string""description""用户搜索关键词" }        }      },      "_meta": { "ui": { "componentPath""components/recommended-drinks/index" } }    },    {      "name""selectDrink",      "description""查看某款饮品详情及可选规格(业务对象:饮品详情卡片)。\n调用前置条件:已从 getRecommendedDrinks / searchDrinks 返回的 items 中获取到具体的 drinkId。\n【严禁场景】禁止在未获得有效 drinkId 的情况下调用本接口,禁止从用户自然语言推断 drinkId。\n【后续动作】展示饮品详情卡片后,等待用户在卡片上点击「直接下单」(组件会自动触发 confirmSku),禁止 Agent 主动调用 confirmSku 跳过卡片展示。",      "inputSchema": {        "type""object",        "properties": {          "drinkId": {            "type""number",            "description""商品唯一标识,必须来自上游接口 getRecommendedDrinks / searchDrinks / getAllDrinks 返回的 items[].drinkId 字段原值。【禁止编造】禁止从用户自然语言(如『那个 3 号』)推断或截取,禁止使用示例值。上下文中无可用 drinkId 时,应先调 getRecommendedDrinks 或 searchDrinks。"          }        },        "required": ["drinkId"]      },      "outputSchema": {        "type""object",        "properties": {          "drinkId": { "type""number" },          "name": { "type""string" },          "price": { "type""number""description""基础价格(元)" },          "description": { "type""string" },          "categoryName": { "type""string" },          "specOptions": {            "type""object",            "description""可选规格维度,key 为维度 key(temperature/sugar/cupSize/toppings),每个维度含 options 数组"          }        }      },      "_meta": { "ui": { "componentPath""components/drink-detail-card/index" } }    },    {      "name""confirmSku",      "description""确认饮品规格并生成订单(业务对象:订单确认卡片)。\n调用前置条件:已调用 selectDrink 成功获取到饮品详情(即上下文中有 selectDrink 返回的 drinkId 和 specOptions)。\n【严禁场景】禁止未经 selectDrink 直接调用本接口;禁止使用中文 label 作为 specs value(必须使用英文枚举值)。",      "inputSchema": {        "type""object",        "properties": {          "drinkId": {            "type""number",            "description""商品唯一标识,必须来自上一步 selectDrink 返回的 structuredContent.drinkId 原值。【禁止编造】禁止从用户语言推断。"          },          "specs": {            "type""object",            "description""规格对象,key 为维度 key,value 必须使用英文枚举值。取值来源:selectDrink 返回的 specOptions 中各维度的 options[].value。【禁止编造】禁止使用中文 label 或不在枚举中的值。",            "properties": {              "temperature": {                "type""string",                "description""温度。仅允许:'ice'(冰)/ 'hot'(热)。用户说「热的」→ 'hot',用户说「冰的」或未指定 → 'ice'。",                "enum": ["ice""hot"]              },              "sugar": {                "type""string",                "description""糖度。仅允许:'none'(无糖)/ 'less'(少糖)/ 'normal'(标准)/ 'more'(多糖)。用户未指定时使用 'normal'。",                "enum": ["none""less""normal""more"]              },              "cupSize": {                "type""string",                "description""杯型。仅允许:'medium'(中杯)/ 'large'(大杯)/ 'xlarge'(超大杯,仅部分品类支持)。用户未指定时使用 'medium'。",                "enum": ["medium""large""xlarge"]              },              "toppings": {                "type""array",                "description""加料(多选)。元素仅允许:'oatMilk'(燕麦奶)/ 'coconut'(椰浆)/ 'extraShot'(额外浓缩,仅奶咖)/ 'pearl'(珍珠)/ 'jelly'(椰果)。用户未指定时传空数组 []。",                "items": {                  "type""string",                  "enum": ["oatMilk""coconut""extraShot""pearl""jelly"]                }              }            }          }        },        "required": ["drinkId""specs"]      },      "outputSchema": {        "type""object",        "properties": {          "orderId": { "type""string""description""订单 ID" },          "drinkName": { "type""string""description""饮品名称" },          "specText": { "type""string""description""规格文本描述" },          "totalPrice": { "type""number""description""订单总价(元)" },          "needAddress": { "type""boolean""description""true 表示用户需在卡片上补充收货地址" },          "status": { "type""string""description""订单状态:awaiting_address / confirmed" }        }      },      "_meta": { "ui": { "componentPath""components/order-confirm-card/index" } }    },    {      "name""getAddress",      "description""弹出系统地址选择器让用户选择收货地址(业务对象:地址卡片)。内部调用 wx.chooseAddress,用户选择后自动保存。用户取消时返回已存储的地址或空。\n调用前置条件:用户点击了订单确认卡上的地址区域,或 Agent 需要获取/更新收货地址时。\n【严禁场景】无特殊限制。",      "inputSchema": { "type""object""properties": {} },      "outputSchema": {        "type""object",        "properties": {          "hasAddress": { "type""boolean""description""是否已有地址" },          "address": {            "type""object",            "description""收货地址信息(无地址时为 null)",            "properties": {              "name": { "type""string""description""收货人姓名" },              "phone": { "type""string""description""手机号" },              "detail": { "type""string""description""详细地址" }            }          }        }      }    },    {      "name""saveAddress",      "description""保存用户收货地址(业务对象:订单确认卡片更新)。若存在未完成订单,接口会自动续跑订单确认流程并返回更新后的订单确认卡片。\n调用前置条件:用户已在半屏页面或对话中提供了完整地址信息(姓名+手机号+详细地址)。\n【严禁场景】三个必填字段任一缺失时禁止调用,应先反问用户补充缺失信息。",      "inputSchema": {        "type""object",        "properties": {          "name": {            "type""string",            "description""收货人姓名。取值来源:用户原话或半屏页面传入。【禁止编造】用户未提供时禁止填写,应反问用户。"          },          "phone": {            "type""string",            "description""手机号,11 位数字。取值来源:用户原话或半屏页面传入。【禁止编造】用户未提供时禁止填写,应反问用户。"          },          "detail": {            "type""string",            "description""详细地址。取值来源:用户原话或半屏页面传入。【禁止编造】用户未提供时禁止填写,应反问用户。"          }        },        "required": ["name""phone""detail"]      },      "outputSchema": {        "type""object",        "properties": {          "success": { "type""boolean""description""是否保存成功" },          "orderId": { "type""string""description""续跑的订单 ID(无 pending 订单时不存在)" },          "drinkName": { "type""string""description""饮品名称" },          "specText": { "type""string""description""规格描述" },          "totalPrice": { "type""number""description""订单总价" },          "needAddress": { "type""boolean""description""是否仍缺地址" },          "status": { "type""string""description""订单状态" }        }      },      "_meta": { "ui": { "componentPath""components/order-confirm-card/index" } }    },    {      "name""confirmOrder",      "description""展示订单确认信息卡片(业务对象:订单确认卡片,含商品+地址+金额)。\n调用前置条件:已通过 confirmSku 或 saveAddress 获取到有效的 orderId。\n【严禁场景】禁止在无 orderId 时调用;禁止从用户语言推断 orderId。",      "inputSchema": {        "type""object",        "properties": {          "orderId": {            "type""string",            "description""订单唯一标识,必须来自上游接口 confirmSku / saveAddress 返回的 orderId 字段原值。【禁止编造】禁止从用户自然语言推断,上下文中无可用 orderId 时应先引导用户完成选品下单流程。"          }        },        "required": ["orderId"]      },      "outputSchema": {        "type""object",        "properties": {          "orderId": { "type""string" },          "drinkName": { "type""string" },          "specText": { "type""string" },          "totalPrice": { "type""number" },          "needAddress": { "type""boolean""description""是否需要补充地址" },          "status": { "type""string""description""订单状态" }        }      },      "_meta": { "ui": { "componentPath""components/order-confirm-card/index" } }    },    {      "name""payOrder",      "description""发起订单支付(业务对象:支付成功卡片)。若微信支付环境不可用会自动降级为 mock 成功,确保流程跑通。\n调用前置条件:订单状态为 confirmed(已有地址 + 已确认商品规格),orderId 来自 confirmSku / saveAddress / confirmOrder 返回值。\n【严禁场景】订单缺少地址(status=awaiting_address)时禁止调用,应引导用户先补充地址;禁止在 payOrder 未返回成功前向用户宣布「已支付成功」。",      "inputSchema": {        "type""object",        "properties": {          "orderId": {            "type""string",            "description""订单唯一标识,必须来自上游接口 confirmSku / saveAddress / confirmOrder 返回的 orderId 字段原值。【禁止编造】禁止从用户语言推断。"          },          "address": {            "type""object",            "description""可选,收货地址。由卡片组件自动传入,Agent 通常无需手动填写。",            "properties": {              "name": { "type""string" },              "phone": { "type""string" },              "detail": { "type""string" }            }          }        },        "required": ["orderId"]      },      "outputSchema": {        "type""object",        "properties": {          "orderId": { "type""string" },          "paidAmount": { "type""number""description""实付金额" },          "payTime": { "type""string""description""支付时间 ISO 格式" },          "status": { "type""string""description""订单状态:paid" },          "drinkName": { "type""string""description""饮品名称" },          "specText": { "type""string""description""规格描述" }        }      },      "_meta": { "ui": { "componentPath""components/pay-success-card/index" } }    },    {      "name""getStoreStatus",      "description""获取最近门店基础信息(业务对象:门店状态卡片,含实时排队人数与预计出杯时间)。实时数据由卡片组件自身通过网络请求动态刷新,本接口仅返回静态门店信息。\n调用前置条件:用户询问门店相关信息(如「最近的店在哪」「现在排队吗」)。\n【严禁场景】用户未表达门店查询意图时禁止调用。",      "inputSchema": {        "type""object",        "properties": {          "storeId": { "type""string""description""可选,指定门店 id。用户未指定具体门店时留空,返回最近门店。" }        }      },      "outputSchema": {        "type""object",        "properties": {          "storeId": { "type""string" },          "storeName": { "type""string" },          "distance": { "type""string" },          "address": { "type""string" }        }      },      "_meta": { "ui": { "componentPath""components/store-status-card/index" } }    }  ],  "components": [    { "path""components/recommended-drinks/index""relatedPage""/packageDetail/pages/more-drinks" },    { "path""components/drink-detail-card/index""relatedPage""/packageDetail/pages/sku-picker" },    { "path""components/order-confirm-card/index""relatedPage""/packageDetail/pages/address-edit" },    { "path""components/pay-success-card/index""relatedPage""/pages/home/home" },    { "path""components/drink-not-found-card/index""relatedPage""/packageDetail/pages/more-drinks" },    {      "path""components/store-status-card/index",      "relatedPage""/pages/home/home",      "permissions": {        "scope.dynamic": {          "desc""用于实时刷新门店排队人数与预计出杯时间,展示动态门店状态"        }      }    }  ]}
核心亮点:全流程无需跳出 AI 对话框,搜索、下单、支付全闭环,这也是对话式 UI 取代传统页面的核心体验。

三、开发规范与最佳实践

微信官方给出注意力权重表,明确 AI 读取信息的优先级,直接决定接口是否被正确调用,是开发者编码的重中之重,也是区别普通开发和 AI 适配开发的关键。

3.1 信息权重优先级(AI 决策逻辑,编码必遵循)

权重从高到低排序,权重越高,对 AI 行为影响越大:

3.2 入参字段编码规范(高频踩坑点)

优先传递 ID,拒绝自然语言场景:门店、商品、品类等数据,传唯一 ID(storeId/goodsId),而非文字描述。原因:大模型对自然语言解析易产生歧义,ID 可保证参数精准、推理更快。

description 书写:以下给出两类典型字段的写法示例。

普通字段:举例时给多个不同样本(避免被当默认值),并配明确的缺省处理。单一举例容易被模型当作"标准答案"——用户只说“想喝点什么”时,可能直接照搬该例子填入。

// 反例:只举一个例子,且未说明缺省处理"keyword": { "description": "饮品关键词,如『拿铁』" }// 推荐:多样化举例 + 缺省处理"keyword": {  "description": "饮品关键词,例如『拿铁』『美式』『奶茶』。用户未说出具体饮品时,不要填写本字段,应改走饮品推荐接口。"}

ID 类字段:声明取值来源接口。业务 ID 容易被按格式凑出,需在 description 中显式声明来源。

// 反例"drinkId": { "description": "饮品 ID" }// 推荐"drinkId": {  "description": "饮品唯一标识,取自上游接口 searchDrinks 或 getRecommendedDrinks 返回的 drinkId 原值。不要从用户自然语言(如『那个拿铁』)推断,也不要使用示例值。上下文无可用 drinkId 时,应先调 searchDrinks。"}

3.3 原子组件 UI & 交互约束(前端样式编码)

原子组件为卡片形态,有强尺寸、交互限制,编码时严格遵循:

尺寸:宽高比区间 4:1(最小)~1:1(最大),初始化后高度不可动态修改

交互:仅支持点击、图片加载 / 报错事件,不支持滑动、长按、动画;

网络:默认禁止网络请求、定时器,动态数据需声明为「实时动态原子组件」;

硬性规则:卡片右上角必须配置小程序跳转入口,这是官方强制规范。

四、微信 AI 的核心护城河:登录态与生态能力

这是微信区别于其他 AI Agent 产品(如豆包、ChatGPT 插件)的核心优势,也是开发者需要理解的生态逻辑:

4.1 登录态无缝继承

AI 模式下,用户登录身份与原小程序完全一致

数据互通:通过小程序原生storage共享登录凭证,也可复用wx.login、wx.getPhoneNumber完成登录;

体验优势:AI 代用户操作时,自动同步会员、优惠券、收货地址、历史订单,无需重复授权;

代码适配:原有登录逻辑完全复用,无需单独为 AI 场景开发登录体系,改造成本极低。

4.2 生态壁垒:百万级服务 + 支付闭环

底层底座:微信坐拥 14.32 亿月活,数百万小程序覆盖点餐、打车、挂号、缴费等全民生服务,且深度绑定微信支付、社交体系;

对比外部 AI:ChatGPT 等外部 Agent 接入电商、外卖服务时,面临登录、支付、数据归因、Session 追踪等一系列问题,而微信从底层打通全链路;

流量规则变化:未来小程序流量不再只争夺首页、搜索、最近使用,SKILL 描述、接口注释、页面元数据成为新的流量资产,AI 会根据文本描述匹配服务。

4.3 兜底能力:AI 短链拉起小程序

当对话闭环无法满足需求时,AI 可生成小程序短链,点击跳转对应页面。官方提醒:该能力为兜底策略,核心业务尽量在 AI 对话内完成闭环,频繁使用短链可能触发平台降权,编码时谨慎使用。配置方式:在app.json中新增pageMetadata字段,配置页面元数据,供 AI 生成短链使用。

五、生态变革与未来思考

5.1 小程序的形态进化

2017 年:小程序诞生,解决「App 下载、分发」问题,定位轻应用,核心理念「用完即走」;

2026 年:小程序接入微信 AI,解决「服务查找、手动操作」问题,定位可调度服务,核心理念「不用来访,直接完成」;

本质变化:对话成为新 UI,小程序从 “给人点击的页面” 变成 “给 AI 调用的能力”,是小程序诞生以来最大的形态变革。

5.2 当下挑战(客观分析,增加内容深度)

  • 开发者冷启动难题

鸡生蛋蛋生鸡 —— 用户量依赖开发者接入,开发者接入动力依赖 AI 流量,目前仅头部商家(美团、携程)率先试水,长尾开发者观望情绪浓厚;

  • AI 调度难题

数百万小程序同台竞争,AI 如何精准匹配用户需求(如 “喝咖啡” 匹配瑞幸 / 星巴克),排序、推荐、风控体系仍需打磨;

  • 用户习惯培养

用户是否愿意用对话替代传统点击操作?对话式交互是否为全行业最优解,仍需要长期市场验证。

5.3 给不同角色的建议

  • 中小开发者

优先开启自动模式(零成本),提前适配 AI 流量埋点、风控规则,布局新流量入口;暂不急于深度开发 SKILL,等待内测放开提审;

  • 前端 / 全栈开发者

吃透原子接口、原子组件、MCP 协议规范,重点练习环境隔离、结构化出参、ID 传参等编码规则,提前储备 AI 小程序开发技能;

  • 产品 / 运营

重构运营思路,弱化首页 Banner、弹窗运营,重点优化 SKILL 描述、接口注释、卡片视觉,适配对话式场景的品牌曝光与转化。

六、总结

微信推出小程序 AI 生态,不是一次简单的功能更新,而是基于现有十亿级生态,向 AI Agent 时代的全面迁移。双模式接入兼顾了大小开发者,环境隔离、权重规范、登录态复用等设计,体现了微信 “稳字当头” 的产品思路。
对于小程序开发者而言,短期可以零成本入局自动模式抢占流量;长期来看,掌握 SKILL、原子接口、MCP 等 AI 适配开发能力,将成为小程序开发的新标配。
这条路并非一蹴而就,开发者生态、用户习惯、AI 调度算法都需要时间打磨,但可以确定的是:对话驱动的智能服务,会成为小程序下一个十年的核心方向
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-11 15:56:38 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/740135.html
  2. 运行时间 : 0.190456s [ 吞吐率:5.25req/s ] 内存消耗:4,897.19kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=1b98c3a6278a9738abce9dedff98a89d
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000866s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001356s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000654s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000519s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001034s ]
  6. SELECT * FROM `set` [ RunTime:0.000466s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001213s ]
  8. SELECT * FROM `article` WHERE `id` = 740135 LIMIT 1 [ RunTime:0.002424s ]
  9. UPDATE `article` SET `lasttime` = 1781164598 WHERE `id` = 740135 [ RunTime:0.001427s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000615s ]
  11. SELECT * FROM `article` WHERE `id` < 740135 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001003s ]
  12. SELECT * FROM `article` WHERE `id` > 740135 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001023s ]
  13. SELECT * FROM `article` WHERE `id` < 740135 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001629s ]
  14. SELECT * FROM `article` WHERE `id` < 740135 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001673s ]
  15. SELECT * FROM `article` WHERE `id` < 740135 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002046s ]
0.193839s