微信小程序

微信小程序 + 云开发 + AI 实战

用 CloudBase Skill + MCP + AI 编程工具,从零搭建一个带 AI 对话的微信小程序——涵盖认证、数据库、云函数和大模型调用的完整链路。

本文用一个真实场景——AI 心情日记(AI Mood Journal)——演示怎么在微信小程序里集成腾讯云开发(CloudBase)的全部能力:用户登录、数据存储、云函数、AI 大模型对话。

更重要的是,全程用 AI 辅助完成,并安装了 CloudBase Skill,让 AI 知道每个环节的正确 API 和最佳实践。

背景

如果你从来没做过小程序,这篇文章适合你。AI 心情日记是最简单的小程序场景之一——不需要支付、不需要复杂交互,核心就是"用户写文字 → AI 分析情绪 → 存到数据库"这三个步骤。但它覆盖了小程序开发的完整基础流程:用户登录、数据库读写、云函数调用

做完这一篇,你就能自己搭出一个完整的小程序骨架。

完整链路只需要 4 步:

  1. 准备工作:注册小程序、开通云开发、安装 AI 工具链
  2. 实现微信一键登录:云函数获取用户 OPENID
  3. 搭建数据库 + 云函数:存日记、调 AI 分析情绪
  4. 前端页面:输入日记 → AI 回复 → 历史记录

项目概览

AI 心情日记 是一个极简小程序,用户每天记录一段文字,AI 分析情绪并给出回应:

  • 用户用微信一键登录(免输账号密码)
  • 日记数据存到云数据库
  • AI 分析情绪并生成鼓励回复(调用大模型)
  • 历史记录可翻看

准备工作

注册云开发环境

根据官方建议,小程序项目直接在微信开发者工具中开通云开发(而不是去腾讯云控制台开通):

  1. 在微信开发者工具中创建小程序项目,填入 AppID
  2. 点击工具栏"云开发"按钮,开通云环境
  3. 记下生成的 EnvId,后面会用到

注意:如果你做的是 Web 项目而非小程序,才去腾讯云控制台开通。微信小程序和腾讯云控制台是两个独立的开通入口——它们底层共享同一套云开发能力,但团队分属不同部门,入口和部分策略不同。

安装 CloudBase Skill

npx skills add TencentCloudBase/cloudbase-skills

安装后 AI 编程助手会自动识别 CloudBase 相关任务,加载对应的参考文档。当你问到"怎么做登录"时,它会去读 auth-wechat 参考文档;问到"怎么调大模型"时,去读 ai-model-wechat

安装 CloudBase AI CLI(推荐)

腾讯云官方提供了一键安装方案,同时包含了 CLI 工具和 MCP 配置:

npm install @cloudbase/cli@latest -g
# 安装后运行,会自动检测 IDE 并配置 MCP
tcb ai

tcb ai 会自动检测你用的 AI 编程工具(Claude Code、Cursor、CodeBuddy、Windsurf 等),完成 MCP 配置。一行命令,立即使用——不需要手动创建 .mcp.json

三层工具的关系

这套工具链分三层,每一层解决不同的问题:

层级工具作用安装方式
CLI@cloudbase/cli(命令 tcb管理云开发环境、函数部署、数据库、静态托管npm install @cloudbase/cli@latest -g
MCP@cloudbase/cloudbase-mcpAI 直接执行管理操作(建集合、查日志、配环境变量)tcb ai 自动配置,或手动加 .mcp.json
Skillcloudbase-skillsAI 知道正确的代码写法(登录 API、模型参数、数据库语法)npx skills add TencentCloudBase/cloudbase-skills

Skill 和 CLI/MCP 是互补关系,不是替代关系:Skill 告诉 AI "怎么写正确的代码",MCP 让 AI "直接执行管理操作"。

手动配置 MCP(备选方案)

如果 tcb ai 没有覆盖你的 IDE,或者你想手动管理配置,在项目根目录创建 .mcp.json

{
  "mcpServers": {
    "cloudbase": {
      "command": "npx",
      "args": ["@cloudbase/cloudbase-mcp@latest"]
    }
  }
}

配置文件位置因 IDE 而异:

编辑器配置文件位置
Claude Code.mcp.json(项目根目录)
Codex CLI.mcp.json(项目根目录)
Cursor.cursor/mcp.json
Windsurf~/.codeium/windsurf/mcp_config.json
TraeIDE 设置 → MCP 配置(项目级)
CodeBuddy通过 tcb ai 自动配置

验证 MCP 是否生效:

npx mcporter list | grep cloudbase

第一步:实现微信一键登录

小程序天然免密认证——用户打开小程序时,微信已经提供了身份标识。

获取用户 OPENID

创建云函数 login,用于获取用户身份:

// cloudfunctions/login/index.js
const cloud = require('wx-server-sdk')
cloud.init()
exports.main = async (event, context) => {
  const { OPENID, APPID } = cloud.getWXContext()
  return { openid: OPENID, appid: APPID }
}

前端调用

// pages/index/index.js
const app = getApp()
Page({
  async onLoad() {
    wx.cloud.init({ env: 'your-env-id' })
    const res = await wx.cloud.callFunction({ name: 'login' })
    this.setData({ openid: res.result.openid })
    console.log('登录成功', res.result.openid)
  }
})

CloudBase Skill 中的 auth-wechat 参考文档包含了更多场景:绑定 UNIONID、获取手机号、服务端校验身份等。

第二步:创建日记数据库

用 MCP 创建集合(如果已安装并登录):

通过 MCP 工具调用在云开发环境中创建 diaries 集合。

集合结构:

字段类型说明
_idstring自动生成
openidstring用户标识
contentstring日记正文
moodstringAI 分析结果(开心/难过/焦虑/平静...)
aiReplystringAI 的鼓励回复
createdAtDate创建时间

第三步:编写日记云函数

创建一个云函数 submitDiary,接收日记内容、调 AI 分析情绪、存储到数据库:

// cloudfunctions/submitDiary/index.js
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()

// 使用 wx-server-sdk 的 AI 能力
const { AI } = cloud
const model = AI.createModel('cloudbase') // 使用默认模型池

exports.main = async (event, context) => {
  const { OPENID } = cloud.getWXContext()
  const { content } = event

  // AI 分析情绪
  const prompt = `你是一个情绪分析助手。分析以下日记的情绪(用中文回答):
1. 情绪标签:一个词(开心/难过/焦虑/平静/愤怒/惊喜/疲惫/其他)
2. 回应:一段温暖鼓励的话,30字以内

日记:${content}`
  
  const result = await model.generateText({
    model: 'deepseek-v4-flash',  // 具体模型 ID
    prompt: prompt,
  })
  
  // 解析 AI 回复(简化处理)
  const lines = result.text.trim().split('\n')
  const mood = lines[0].replace('情绪标签:', '').trim()
  const aiReply = lines[1]?.replace('回应:', '').trim() || ''

  // 存储到云数据库
  const diary = {
    openid: OPENID,
    content,
    mood,
    aiReply,
    createdAt: db.serverDate()
  }
  
  await db.collection('diaries').add({ data: diary })
  
  return { ...diary, _id: diary._id }
}

Skill 中 ai-model-wechat 参考文档会告诉你:小程序端 AI 调用走 wx.cloud.extend.AI.createModel(而不是 Web 端或 Node.js 端的 API),streamText 需要 data wrapper,generateText 返回原始响应。这里在云函数里用的是 Node.js SDK 路径(ai-model-nodejs 参考文档),两种都可以。

关于模型 ID 的重要说明

CloudBase Skill 里有一个容易踩坑的点,值得单独说一下:

createModel('cloudbase') 的参数不是模型 ID,而是 GroupName。合法的值只有三种:

  • 'cloudbase' — 默认管理模型池(TokenHub 后台)
  • 'hunyuan-exp' — 小程序成长计划专用
  • 'custom-xxx' — 用户自定义(需要先 CreateAIModel

真正的模型 ID(如 deepseek-v4-flashhunyuan-2.0-instruct-20251111)要传给 generateTextstreamTextmodel 字段。

调 AI 前的资格检查

大模型调用容易遇到"资源包未开通"的问题——不是代码写错了,而是账号资格没配好:

  • 小程序端:优先检查是否报名了"AI 小程序成长计划"(DescribeActivityInfo
  • 云函数/Web 端:优先检查是否购买了 Token Credits 资源包(DescribeEnvPostpayPackage

第四步:前端页面

// pages/index/index.js
Page({
  data: {
    content: '',
    diary: null,
    submitting: false
  },

  onInput(e) {
    this.setData({ content: e.detail.value })
  },

  async submit() {
    if (!this.data.content.trim()) return
    this.setData({ submitting: true })
    try {
      const res = await wx.cloud.callFunction({
        name: 'submitDiary',
        data: { content: this.data.content }
      })
      this.setData({ diary: res.result, content: '' })
    } catch (err) {
      wx.showToast({ title: '提交失败', icon: 'error' })
    }
    this.setData({ submitting: false })
  }
})

WXML 页面:

<view class="container">
  <textarea value="{{content}}" bindinput="onInput" placeholder="今天发生了什么?"></textarea>
  <button bindtap="submit" loading="{{submitting}}">记录心情</button>
  
  <block wx:if="{{diary}}">
    <view class="result">
      <text class="mood">情绪:{{diary.mood}}</text>
      <text class="reply">{{diary.aiReply}}</text>
    </view>
  </block>
</view>

第五步:查看日记历史

创建云函数 getDiaries

// cloudfunctions/getDiaries/index.js
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()

exports.main = async (event, context) => {
  const { OPENID } = cloud.getWXContext()
  const { page = 1, pageSize = 20 } = event
  
  const res = await db.collection('diaries')
    .where({ openid: OPENID })
    .orderBy('createdAt', 'desc')
    .skip((page - 1) * pageSize)
    .limit(pageSize)
    .get()
  
  return { data: res.data }
}

no-sql-wx-mp-sdk 参考文档包含完整的小程序端数据库操作指南:复杂查询、聚合、分页、地理定位和安全规则。这里的 .orderBy().skip().limit() 是标准分页模式。

完整开发流程总结

准备工作
  ├── 微信开发者工具中创建项目
  ├── 开通云开发环境
  ├── npm install @cloudbase/cli@latest -g
  ├── tcb ai(自动配置 MCP)
  └── npx skills add TencentCloudBase/cloudbase-skills

开发步骤
  1. 用 MCP 创建数据库集合(diaries)
  2. 编写 login 云函数(获取 OPENID)
  3. 编写 submitDiary 云函数(写库 + 调 AI)
  4. 编写 getDiaries 云函数(历史记录)
  5. 编写小程序前端页面(WXML + JS)
  6. 真机调试验证完整流程

调 AI 前必做
  1. 检查是否报名"AI 小程序成长计划"
  2. 或购买 Token Credits 资源包
  3. 确认 createModel groupName 和 model ID 的区别

这个过程中 Skill 帮了哪些忙

在整个开发过程中,CloudBase Skill 在关键节点提供了准确的知识,避免了很多试错:

场景没有 Skill有 Skill
选择开通入口可能去腾讯云控制台创建环境(导致小程序无法调用)auth-wechat 说明小程序要在微信开发者工具内开通
获取用户身份查文档查半天,踩 OPENID 获取的坑直接给出 cloud.getWXContext() 的正确用法
调 AI 模型不确定 createModel 参数怎么传ai-model-wechat 详细说明了 GroupName vs Model ID 的区别
调 AI 前准备代码写对了但一直报错,不知道要买资源包明确指出两步预检流程
数据库操作忘记加安全规则或分页写错no-sql-wx-mp-sdk 子文档给出了精确的 CRUD 和安全规则写法

下一步

  • 部署小程序正式版:微信开发者工具 → 上传 → 提交审核
  • 申请微信 AI 小程序成长计划,获得免费云开发资源和 Token
  • 查看 CloudBase Skill 中更多的能力:CloudRun 云托管、AI Agent(AG-UI 协议)、Ops 巡检
  • 参考完整的 2026 微信小程序 AI 开发最佳实践 了解原生、Weapp-vite 和 Taro 路线