微信小程序 + 云开发 + AI 实战
用 CloudBase Skill + MCP + AI 编程工具,从零搭建一个带 AI 对话的微信小程序——涵盖认证、数据库、云函数和大模型调用的完整链路。
本文用一个真实场景——AI 心情日记(AI Mood Journal)——演示怎么在微信小程序里集成腾讯云开发(CloudBase)的全部能力:用户登录、数据存储、云函数、AI 大模型对话。
更重要的是,全程用 AI 辅助完成,并安装了 CloudBase Skill,让 AI 知道每个环节的正确 API 和最佳实践。
背景
如果你从来没做过小程序,这篇文章适合你。AI 心情日记是最简单的小程序场景之一——不需要支付、不需要复杂交互,核心就是"用户写文字 → AI 分析情绪 → 存到数据库"这三个步骤。但它覆盖了小程序开发的完整基础流程:用户登录、数据库读写、云函数调用。
做完这一篇,你就能自己搭出一个完整的小程序骨架。
完整链路只需要 4 步:
- 准备工作:注册小程序、开通云开发、安装 AI 工具链
- 实现微信一键登录:云函数获取用户 OPENID
- 搭建数据库 + 云函数:存日记、调 AI 分析情绪
- 前端页面:输入日记 → AI 回复 → 历史记录
项目概览
AI 心情日记 是一个极简小程序,用户每天记录一段文字,AI 分析情绪并给出回应:
- 用户用微信一键登录(免输账号密码)
- 日记数据存到云数据库
- AI 分析情绪并生成鼓励回复(调用大模型)
- 历史记录可翻看
准备工作
注册云开发环境
根据官方建议,小程序项目直接在微信开发者工具中开通云开发(而不是去腾讯云控制台开通):
- 在微信开发者工具中创建小程序项目,填入 AppID
- 点击工具栏"云开发"按钮,开通云环境
- 记下生成的
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 aitcb ai 会自动检测你用的 AI 编程工具(Claude Code、Cursor、CodeBuddy、Windsurf 等),完成 MCP 配置。一行命令,立即使用——不需要手动创建 .mcp.json。
三层工具的关系
这套工具链分三层,每一层解决不同的问题:
| 层级 | 工具 | 作用 | 安装方式 |
|---|---|---|---|
| CLI | @cloudbase/cli(命令 tcb) | 管理云开发环境、函数部署、数据库、静态托管 | npm install @cloudbase/cli@latest -g |
| MCP | @cloudbase/cloudbase-mcp | AI 直接执行管理操作(建集合、查日志、配环境变量) | tcb ai 自动配置,或手动加 .mcp.json |
| Skill | cloudbase-skills | AI 知道正确的代码写法(登录 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 |
| Trae | IDE 设置 → 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 集合。
集合结构:
| 字段 | 类型 | 说明 |
|---|---|---|
_id | string | 自动生成 |
openid | string | 用户标识 |
content | string | 日记正文 |
mood | string | AI 分析结果(开心/难过/焦虑/平静...) |
aiReply | string | AI 的鼓励回复 |
createdAt | Date | 创建时间 |
第三步:编写日记云函数
创建一个云函数 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-flash、hunyuan-2.0-instruct-20251111)要传给 generateText 或 streamText 的 model 字段。
调 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 路线