应用后端与托管
对于 Vibe Coding 平台来说,"写代码"只是第一步。用户的真实期望是"一句话生成一个可用的应用"——这意味着应用不仅需要前端页面,还需要:
- 数据持久化:用户数据存在哪里?→ 云数据库
- 后端逻辑:API 接口谁来跑?→ 云函数
- 文件存储:用户上传的图片存在哪里?→ 云存储
- 用户系统:怎么登录注册?→ 身份认证
CloudBase 让 Agent 通过管理面 API 一站式完成这些操作,用户无需自己配置任何基础设施。
概述
CloudBase 为每个 Vibe Coding 应用提供安全、开箱即用的后端资源与部署环境,包括:
| 资源类型 | 能力说明 |
|---|---|
| PostgreSQL 数据库 | 关系型数据库(基于 PostgREST),支持完整 SQL、RLS、外键约束、事务等,适合结构化数据场景 |
| 身份认证 | 提供用户登录注册能力,支持匿名登录、邮箱密码、微信登录等多种方式,也支持连接到企业内部 SSO、OAuth2、SAML 等身份源 |
| 云函数 | 部署业务后端逻辑(API 接口),支持 HTTP 触发、定时触发、WebSocket,支持 Dokcerfile、代码包等多种形式部署 |
| 云存储 | 存储静态资源、用户上传文件,支持权限控制 |
同时也提供应用上线所需的应用托管、网关接入能力,包括:
| 托管方式 | 说明 | 适用场景 |
|---|---|---|
| 静态 Web 托管 | 部署前端 Web 应用(HTML/CSS/JS),自动配置 CDN 加速 | SPA 应用、Landing Page、文档站 |
| 容器托管 | 容器化部署长驻后端服务,支持自动扩缩容 | 需要长连接、自定义运行时的后端服务 |
| HTTP 访问服务 | 统一网关入口,支持泛域名路由、自定义域名、SSL 证书 | 所有需要对外提供 HTTP 访问的场景 |
接入指引
以 Vibe Coding 平台(类似 Lovable、Vercel v0)为例,接入 CloudBase 应用后端的典型流程如下:
Step 1:为每个用户项目创建一个 CloudBase 环境
CloudBase 以环境为管理单元,一个环境 = 一套完整的后端资源(数据库、云函数、云存储、静态托管、HTTP 访问服务等)。推荐采用一租户一环境的模式,通过 @cloudbase/manager-node SDK 自动化创建:
import CloudBase from '@cloudbase/manager-node'
// 使用平台主账号的密钥初始化(不指定 envId,后续按需操作不同环境)
const app = new CloudBase({
secretId: process.env.TENCENTCLOUD_SECRETID,
secretKey: process.env.TENCENTCLOUD_SECRETKEY,
})
// 通过 commonService 调用管理面 API 创建环境
const { env, commonService } = app
async function createUserEnv(projectId) {
// 1. 创建环境
const result = await commonService.call({
Action: 'CreateEnv',
Param: {
Alias: `project-${projectId}`,
PackageId: 'baas_personal',
Resources: ['flexdb', 'storage', 'function'],
Tags: [{ Key: 'projectId', Value: projectId }],
}
})
const envId = result.EnvId
// 2. 轮询等待环境就绪
await waitForEnvReady(envId)
return envId
}
详细的环境创建、计费、生命周期管理,参考 平台接入云开发方案。
Step 2:在 Coding Agent 中接入 CloudBase
环境创建好后,Coding Agent 需要操作环境内的资源(建表、部署云函数、上传文件等)。CloudBase 提供多种接入方式:
| 接入方式 | 说明 | 适用场景 | 文档 |
|---|---|---|---|
| CloudBase MCP | 通过 MCP 协议直接操作 CloudBase 资源,Agent 可通过 stdio 或 HTTP 连接 | Agent 内嵌 MCP Client 的场景(推荐) | 连接 CloudBase MCP |
| 管理面 SDK(Node.js) | 通过 @cloudbase/manager-node SDK 调用管理面 API | Node.js 技术栈的 Agent 服务 | SDK 文档 |
| 管理面 REST API | 通过 HTTP 调用管理面 API,语言无关 | 非 Node.js 技术栈 | API 文档 |
示例1:在 OpenCode 中通过 MCP 操作 CloudBase
以下展示如何在 OpenCode 中配置 CloudBase MCP,让 Agent 直接操作云数据库、部署云函数等:
1. 配置 MCP Server
在项目根目录创建 .opencode.json:
{
"mcpServers": {
"cloudbase": {
"command": "npx",
"args": ["-y", "@cloudbase/cloudbase-mcp@latest"],
"env": {
"CLOUDBASE_ENV_ID": "your-env-id",
"TENCENTCLOUD_SECRETID": "your-secret-id",
"TENCENTCLOUD_SECRETKEY": "your-secret-key"
}
}
}
}
注:在实际 Vibe Coding 平台场景中,这里的密钥需要注入用户的环境级密钥(而非平台级密钥),确保每个用户只能操作自己的 CloudBase 环境。具体方案参考 租户隔离。
2. 在对话中直接操作云资源
配置 完成后,OpenCode 的 Agent 可以直接通过自然语言操作 CloudBase:
> 创建一个 todos 表,包含 title、completed、created_at 字段
Agent 调用 MCP:cloudbase.db.createCollection({ name: "todos", schema: ... })
✅ 集合 todos 创建成功
> 写一个云函数,提供 addTodo 和 listTodos 两个 API
Agent 调用 MCP:cloudbase.function.deploy({ name: "todoApi", code: "..." })
✅ 云函数 todoApi 部署成功,访问地址:https://your-env-id.api.tcloudbasegateway.com/todoApi
> 把前端构建产物部署上去
Agent 调用 MCP:cloudbase.hosting.deploy({ path: "./dist" })
✅ 静态托管部署成功:https://your-env-id.app.tcloudbase.com
同样的 MCP 配置也适用于 Cursor、Cline、Claude Code 等支持 MCP 协议的 AI Coding 工具,详见 CloudBase MCP 配置指南。
示例 2:在 CloudBase Sandbox 中通过 MCP 操作 CloudBase
本场景适合在线 Vibe Coding 平台——Agent 运行在云函数中,通过 Sandbox SDK 管理沙盒,在沙盒内启动 CloudBase MCP Server,然后通过 MCP Client 操作用户的 CloudBase 环境。
// 1. 签发用户环境级临时密钥
const credentials = await generateEnvCredentials(userEnvId);
// 2. 启动沙盒,注入用户级别的密钥
const sandbox = new AgentSandbox({
envId: userEnvId,
secretId: agentConfig.secretId, // 平台凭证,仅用于 Sandbox SDK 的 RPC 认证
secretKey: agentConfig.secretKey,
envVars: {
CLOUDBASE_ENV_ID: userEnvId,
TENCENTCLOUD_SECRETID: credentials.secretId,
TENCENTCLOUD_SECRETKEY: credentials.secretKey,
}
});
// 3. 在沙盒内启动 CloudBase MCP Server
await sandbox.commands.run('npx @cloudbase/cloudbase-mcp@latest');
// 4. Agent Loop 通过 MCP Client 连接沙盒内的 MCP Server
const mcpClient = sandbox.connectMCP({ transport: 'stdio' });
// 5. 现在可以通过 MCP 操作用户的 CloudBase 环境了
// 创建数据库集合
await mcpClient.call('cloudbase.db.createCollection', { name: 'todos' });
// 部署云函数
await mcpClient.call('cloudbase.function.deploy', {
name: 'todoApi',
code: await sandbox.files.read('/app/functions/todoApi/index.js')
});
// 部署前端到静态托管
await sandbox.commands.run('npm run build');
await mcpClient.call('cloudbase.hosting.deploy', { path: '/app/dist' });
// 6. 完成后保存工作区快照
await sandbox.snapshot(sessionId);
关于 Sandbox SDK、MCP Client 的完整架构和安全设计,参考 Agent 运行。
Step 3:部署应用与配置访问入口
环境就绪后,通过 SDK 完成云函数部署、静态托管和域名配置:
// 切换到用户的环境
const userApp = new CloudBase({
secretId: process.env.TENCENTCLOUD_SECRETID,
secretKey: process.env.TENCENTCLOUD_SECRETKEY,
envId: userEnvId,
})
const { functions, hosting, env } = userApp
// 1. 部署云函数
await functions.createFunction({
name: 'todoApi',
type: 'HTTP',
code: {
zipFile: base64Code, // ZIP 包的 Base64 编码
},
})
// 2. 部署前端到静态托管
await hosting.uploadFiles({
localPath: './dist',
cloudPath: '/',
})
// 3. 配置 HTTP 访问服务路由(通过 commonService 调用管理面 API)
await userApp.commonService.call({
Action: 'CreateHTTPServiceRoute',
Param: {
EnvId: userEnvId,
Domain: {
Domain: `${projectId}.your-platform.com`,
Protocol: 'HTTP_AND_HTTPS',
CertId: certId,
Enable: true,
Routes: [{
Path: '/api',
UpstreamResourceType: 'CBR',
UpstreamResourceName: 'todoApi',
Enable: true,
}]
}
}
})
完整的域名绑定、DNS 配置、安全域名等操作,参考 平台接入云开发方案 - 域名与安全域名。