跳到主要内容

应用后端与托管

对于 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 调用管理面 APINode.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 配置、安全域名等操作,参考 平台接入云开发方案 - 域名与安全域名