跳到主要内容

Rabetbase 常见问题(FAQ)

本页汇总 Rabetbase 开发体系(CLI + SDK + Skill + BaaS)的常见问题。如果你的问题不在此列,可以在 Lovrabet 社区提问。


一、基础概念

Q1: Rabetbase 和 Lovrabet 是什么关系?

Lovrabet 面向所有的业务人员和开发人员,是一套完整的AI-Native业务系统的生成平台。

Rabetbase 是 Lovrabet 的开发者基础设施层。它向上层应用提供标准化的数据访问、权限控制和 API 能力;向开发者提供 CLI、SDK、Skill三件套——在终端完成从数据操作到项目部署的全流程,无需自建后端。

Lovrabet 平台

  • AI-Native业务系统生成
  • DB Agent / Vibe Coding / 需求描述生成系统
  • 工作台 / 权限管理
  • 应用托管

Rabetbase 开发体系——隶属于Lovrabet平台

  • CLI:终端操作工具
  • SDK:数据访问接口
  • Skill:AI 辅助开发
  • BaaS:后端即服务

图片展示了RabetBase在Lovrabet体系中的企业级技术底座相关内容。上方说明其为数据库深度学习和逆向扫描,提供API、SDK、MCP、Skills、Backend Function等面向技术团队的完整开发能力,支持SaaS和私有化部署。下方分为L5生态与分发、L3/L4标准和L2开放与扩展三个层级,分别列出生态、解决方案生态、合作伙伴网络、AI集成能力、可配置化配置、TypeScript SDK等标准,以及DBAgent逆向扫描、表关系推理等开放与扩展内容。

Q2: 没有后端开发经验,能用 Rabetbase 吗?

可以。Rabetbase 的 BaaS 层已经把后端能力(数据库、API、权限、认证)全部封装好了。你只需要:

  1. 用 Lovrabet 平台创建应用和数据表
  2. rabetbase api pull 生成 SDK 配置
  3. 用 SDK 的 filter、create、update、delete 操作数据

整个过程不需要写后端代码、不需要部署服务器。

Q3: Rabetbase CLI 2.0 和旧版 lovrabet CLI 有什么区别?

维度旧版(lovrabet)新版(rabetbase 2.0)
命令前缀lovrabetrabetbase
构建部署lovrabet buildrabetbase run build
AI 集成MCP ServerSkill(社区标准)
命令体系功能分散统一 service + command 两级结构
信息

💡 如果你还在用旧版 lovrabet CLI,请升级到 rabetbase 2.0。旧版已停止维护。


二、安装与配置

Q4: 如何安装 Rabetbase CLI?

安装后验证:

rabetbase --version
rabetbase --help

Q5: Skill 如何安装?

Skill 是 AI 辅助开发的规则集,让 Claude Code、Codex、Cursor 等工具能正确使用 Rabetbase CLI。Rabetbase 面向开发人员,建议优先使用 CLI 内置命令安装官方开发 Skill:

rabetbase skill install

如果当前 CLI 版本尚不支持 skill install,可以使用等价命令:

npx skills add lovrabet/rabetbase -g -y

信息

网络提示:如果安装或刷新 Skill 时提示无法连接 github.com:443timeoutCould not connect to server,说明当前网络无法访问 GitHub;CLI 可能已经安装成功。请参考故障排查 Q28 Rabetbase 常见问题(FAQ)。

安装后,在 Claude Code、Codex、Cursor 等支持 Skill 的 Agent 中,AI 会理解 Rabetbase CLI 的项目初始化、数据库分析、数据集、SQL、BFF、页面菜单和代码生成规则。

开发者排障步骤:

  • 先确认 CLI 本身是否安装成功:
rabetbase --version
rabetbase --help

如果这两条命令正常,说明 CLI 已安装;后续错误只代表 Skill 注册链路需要排查。

  • 如果出现 PromptScript does not support global skill installation 或自然语言日志里的 Failed to install 1,通常是 skills@1.5.10 自动探测到不支持全局 Skill 目录的 PromptScript Agent,不能直接判定 Rabetbase Skill 整体安装失败。参考上游 Issue #1352 和修复 PR #1362https://github.com/vercel-labs/skills/issues/1362 会跳转到同一个 PR。
  • 用真实本地 skills CLI 输出做辅助确认:
npx skills list -g --json

只有确认该命令是在本地 shell 中执行,才把它作为证据;App 私有 SkillHub、自然语言总结或替代命令输出都不能作为全局注册证据。

  • 临时规避可以固定上一版安装工具:
npx skills@1.5.9 add lovrabet/rabetbase -g -y

  • --agent <agent> 只适合作为临时排障手段,用来把安装目标收敛到明确支持全局 Skill 的 Agent;不要把它当成 Rabetbase CLI 的主安装命令,也不要在不知道目标 Agent 名称时让 Agent 自行猜测。
  • 在 Feishu Aily、钉钉悟空等 IM 类 Agent 中遇到 30 秒超时、沙箱路径、写入目录不确定时,应停止自动化重试,改为让用户在本地终端执行安装命令。

Q6: 认证方式有哪些?

Rabetbase 支持两种认证模式:

模式认证方式适用场景
WebAPICookie(浏览器登录)前端应用
OpenAPIAccessKey + SecretKey后端服务、CLI

前端推荐使用 Cookie 认证(用户在浏览器中登录后自动获取),后端和 CLI 使用 AccessKey 认证。

信息

🎁 AccessKey 不要硬编码在源码中!请按团队认可的密钥管理方式保存。


三、CLI 常用命令

Q7: 如何创建新项目?

rabetbase project create my-app
cd my-app
rabetbase api pull --appcode your-app-code

project create 会生成完整的项目脚手架(含构建配置、路由、API 客户端)。api pull 会根据你的应用数据生成 SDK 类型定义。

Q8: 如何同步菜单到主应用?

rabetbase menu sync

CLI 会自动扫描 src/pages 下的页面,智能提取菜单名称,批量创建菜单。

Q9: 如何构建和部署?

rabetbase run build

构建产物在 dist/ 目录,可以直接部署到 CDN。

Q10: 常用 CLI 命令速查

命令说明
rabetbase project create创建项目
rabetbase api pull拉取 API 配置
rabetbase dataset detail查看数据集结构
rabetbase sql validate校验 SQL 语法
rabetbase sql save保存自定义 SQL
rabetbase sql exec执行自定义 SQL
rabetbase bff new创建 Backend Function
rabetbase bff push推送 BFF 到平台
rabetbase menu sync同步菜单
rabetbase run build构建项目
rabetbase auth login登录认证
rabetbase app list查看应用列表

四、SDK 数据操作

Q11: SDK 客户端怎么初始化?

推荐使用单例模式,整个应用共享一个客户端实例:

// src/api/client.ts
import { createClient } from "@lovrabet/sdk";

export const client = createClient({
appCode: "your-app-code",
});

不要在每个组件中重复创建客户端。

Q12: filter、getOne、create、update、delete 怎么用?

import { client } from "@/api/client";

// 查询列表(分页)
const { tableData, total } = await client.models.customers.filter({
currentPage: 1,
pageSize: 20,
});

// 查询单条
const customer = await client.models.customers.getOne("123");

// 创建
const newId = await client.models.customers.create({
name: "张三",
phone: "13800138000",
});

// 更新
await client.models.customers.update("123", { name: "李四" });

// 删除(仅 WebAPI 模式)
await client.models.customers.delete("123");

Q13: 删除操作报错怎么办?

delete 操作只在 WebAPI 模式(Cookie 认证)下可用。如果你用的是 OpenAPI 模式,用"软删除":

await client.models.customers.update(id, {
status: "deleted",
deleted_at: new Date().toISOString(),
});


五、SQL 与 Backend Function

Q14: 什么时候用自定义 SQL?

场景推荐
单表增删改查SDK 的 filter/create/update/delete
单表条件查询filter + 搜索/筛选参数
跨表关联查询自定义 SQL
复杂聚合统计自定义 SQL
数据分组求和自定义 SQL

Q15: 自定义 SQL 怎么写?

创建 .rabetbase/sql/ 目录下的 SQL 文件:

-- @lovrabet sqlName=myQuery description=我的查询
SELECT
category,
COUNT(*) as count,
SUM(amount) as total
FROM dataset_orders
WHERE 1=1
<if test="startDate">
AND create_time >= #{startDate}
</if>
GROUP BY category

关键语法:

  • #{paramName} — 参数化查询(防 SQL 注入)
  • <if test="paramName"> — 动态 SQL 条件
  • <= 需写成 &lt;=(XML 转义)

Q16: Backend Function 是什么?

Backend Function(BFF)是在 Lovrabet 后端运行的 JavaScript 函数,用于处理复杂业务逻辑。三种类型:

类型说明触发方式
HOOK依附于数据集标准 API数据操作时自动触发
ENDPOINT独立 HTTP 端点前端主动调用
COMMON公共函数其他 BFF 内部调用

Q17: 事务怎么用?

const models = context.client.models;

await context.client.db.transaction(async (tx) => {
// 创建主表
const orderId = await models[TABLES.orders].create(orderData);

// 创建明细
for (const item of items) {
await models[TABLES.orderItems].create({ orderId, ...item });
}
});

关键规则:

  • 使用 context.client.models 而非 tx.models
  • 异常自动回滚
  • 不要在事务中执行耗时操作

六、AI 辅助开发

Q18: Skill 能帮我做什么?

Skill 让 AI 工具(Claude Code、Cursor)理解你的业务数据结构,生成的代码一次通过:

  • 自动获取数据集结构(表名、字段名、字段类型)
  • 正确使用 CLI 命令(不会猜字段名)
  • 遵循最佳实践(单例模式、错误处理、分页)
  • 自动执行 CLI 命令(创建项目、拉取 API、推送 BFF)

Q19: 如何用 AI 辅助开发一个完整功能?

在 Claude Code 中描述需求即可:

用 rabetbase CLI 帮我创建一个客户管理页面,包含客户列表(支持搜索和分页)、客户详情页(支持编辑)、新建客户表单(有手机号校验)。

AI 会自动完成:

  1. rabetbase project create 创建项目
  2. rabetbase api pull 生成 SDK
  3. 生成所有页面代码
  4. rabetbase run build 构建
  5. rabetbase menu sync 同步菜单

Q20: 为什么 AI 生成的代码不正确?

可能的原因:

  1. Skill 未安装 — 运行 npx skills add lovrabet/rabetbase --global
  2. API 未拉取 — 运行 rabetbase api pull 更新 SDK 配置
  3. 描述不够具体 — 明确指定数据集名称、字段名、页面结构

七、性能与安全

Q21: 列表查询怎么优化?

  1. 加分页 — 始终传 currentPage 和 pageSize
  2. 搜索加防抖 — 300ms debounce
  3. 只查需要的字段 — SQL 避免 SELECT *
  4. 加 LIMIT — SQL 查询限制返回行数

Q22: AccessKey 泄露了怎么办?

  1. 在 Lovrabet 平台重新生成 AccessKey
  2. 更新密钥配置
  3. 检查是否有硬编码的旧 Key
信息

❌ 永远不要在前端代码中硬编码 AccessKey。前端使用 Cookie 认证或 Token 认证。

Q23: 敏感数据怎么处理?

前端脱敏:

const maskPhone = (phone: string) => {
return phone.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
};
// 138****8000

后端脱敏(推荐):使用 Backend Function 的后验函数,在数据返回前统一处理。


八、故障排查

Q24: CLI 命令报错 "command not found"?

确认安装路径:

which rabetbase
rabetbase --version

如果找不到,重新安装或检查 PATH 配置。

Q25: API 调用返回 401?

检查认证状态:

rabetbase auth login

如果是 AccessKey 认证,按团队约定确认密钥已经正确配置。

Q26: BFF 推送失败?

常见原因:

  1. 语法错误 — 先用 rabetbase bff status 检查
  2. 数据集编码不对 — 检查 TABLES 常量中的编码
  3. 网络问题 — 检查网络连接

Q27: SQL 执行 execSuccess 为 false?

常见原因:

  1. SQL 语法错误(检查 XML 转义)
  2. 表或字段名不正确
  3. 参数类型不匹配

调试方法:

rabetbase sql exec --sqlcode <sqlcode> --params '{}' --format json

Q28: Windows 下 rabetbase skill install / rabetbase update 连接 GitHub 失败怎么办?

**现象:**Windows 上 curl 可以访问 GitHub,但 rabetbase skill installrabetbase update 在 Git 拉取阶段报 Connection was reset、TLS 连接重置、github.com:443timeoutCould not connect to server

图片展示的是Windows下rabetbase技能安装或更新时Git拉取阶段报错的故障排查记录。记录显示,rabetbase update命令执行过程中,Git拉取时出现“Connection was reset”、TLS连接重置、github.com:443、timeout或Could not connect to server等错误。排查步骤包括先阅读reference文档,再执行更新命令,更新完成。最终结果是CLI更新成功,SA更新失败,提示由于无法连接github.com(端口443超时),官方skill包未能同步更新,可能是网络问题。

信息

💡 **说明:**CLI 包通过 npm 安装,Skill 通过 GitHub 源刷新。该问题通常发生在 Git 使用 OpenSSL 作为 TLS 后端时,不代表 CLI 升级失败。

步骤 1:确认 CLI 是否已经可用

rabetbase --version

步骤 2:切换 Git 的 Windows 原生 TLS 通道

git config --global http.sslBackend schannel

为什么这个配置可能有效:Git 通过 HTTPS 拉取 GitHub 仓库时,底层 TLS 后端可能是 OpenSSL 或 Windows Schannel。OpenSSL 通常使用 Git 自带或独立的证书与握手路径;Schannel 使用 Windows 系统证书存储、企业根证书和系统 TLS 策略。企业代理、VPN 或安全软件经常只把根证书写入 Windows 证书存储,所以系统里的 curl 能访问 GitHub,但 Git 的 OpenSSL 通道可能在握手阶段被重置。切换到 schannel 后,Git 与系统 curl 的信任链更一致。

步骤 3:重新刷新 Skill 或重新升级

rabetbase skill install
rabetbase update

如果设置后仍失败,再检查代理、VPN、公司网络策略或 GitHub 访问权限。若 rabetbase --version 已显示目标版本,可以先继续使用已升级的 CLI,待网络恢复后再执行 rabetbase skill install

修复后的效果示意

图片展示了Rabetbase故障排查中,Windows下切换到schannel后Git可正常连接github.com,以及重新安装skill的相关内容。其中提到使用git config --global http.sslBackend schannel让Git使用Windows原生TLS通道,与系统curl保持一致。还说明了Skill安装成功的情况,总结了问题原因是Git默认使用OpenSSL作为TLS后端致连接重置,curl使用Windows原生schannel不受影响,修复后rabetbase skill install和rabetbase update应能正常更新skill,契合上文修复后的效果示意说明。

Q29: 安装后仍然执行旧版本 rabetbase 怎么办?

**现象:**已经执行 npm install -g @lovrabet/rabetbase-cli,但 rabetbase --version 显示的版本不对,或命令行为仍然像旧版本。

图片展示了在终端执行npm install -g @lovrabet/rabetbase-cli@2.2.2安装2.2.2版本rabetbase-cli,以及rabetbase --version查看版本号的命令及结果。安装后显示添加了171个包,版本号为2.0.2-beta.2+23。这与文档中Q29问题的上下文相关,用于说明指定安装2.2.2版本,但本机使用仍为2.0.2-beta.2的现象,以示新版本安装成功后可能仍命中旧版本的情况。

信息

💡 **原因:**电脑里可能同时存在多个 rabetbase。终端会按 PATH 顺序执行排在最前面的那个,所以新版本安装成功后,也可能仍然命中旧的 /usr/local/bin/rabetbase。常见于NVM管理的NODE版本可能会出现这个问题。

步骤 1:查看当前执行路径

rabetbase --version
command -v rabetbase
type -a rabetbase
where rabetbase

步骤 2:确认是否存在多个 rabetbase

如果结果里同时出现 /usr/local/bin/rabetbase/Users/<用户名>/.nvm/versions/node/<node-version>/bin/rabetbase,并且 /usr/local/bin/rabetbase 排在前面,说明当前终端优先执行的是旧入口。

步骤 3:删除旧入口并清理 shell 缓存

sudo rm /usr/local/bin/rabetbase
hash -r
rabetbase --version
command -v rabetbase
信息

❗ 只在确认 /usr/local/bin/rabetbase 是旧入口时删除。删除后,command -v rabetbase 应指向当前 Node/npm 安装路径。


信息

💡 更多问题?查看以下资源:集成开发指南、SDK 使用指南、CLI 使用指南,均可通过 open.lovrabet.com 获取。