常见问题
常见问题解答
这里汇总了集成开发中经常被问到的问题。如果你遇到的问题不在这里,可以在文末找到技术支持渠道。
AI 辅助开发
如何让 AI 帮我写代码?
AI 能帮你写代码,但这不是"在 Claude Code 里输入 prompt 就行"。你试试:没有后端接口,AI 生成的全是 const mockData = \[\.\.\.\]。你得先搭后端:选框架、连数据库、写 CRUD 接口、处理认证、配跨域。后端搞了一周,前端干等。联调又一周:字段名对不上(后端叫 customer\_name 前端写的是 name),参数格式对不上(后端要 page/size 前端传的是 currentPage/pageSize),返回值结构对不上(后端包了 \{ data: \{\.\.\.\} \} 前端直接取顶层)。SQL 的 JOIN 条件全靠蒙,字段名 10 条里对 3 条。一个列表页,前后端联调两周起步。rabetbase 三件套直接消灭了后端搭建和联调:BaaS 的数据库逆向引擎自动分解出业务模型,API/SDK/企业级权限全部就绪——不用搭后端、不用写接口;CLI 提供系统级 tools——查结构、生成 SDK、保存 SQL、同步菜单,一条命令搞定;Skill 指导 AI 按 SOP 操作——字段名对、API 调用方式对、SQL JOIN 条件对。三件套配合,10 分钟完成传统开发 2 周的工作。安装 Rabetbase Skill 后,在 Claude Code 或 Cursor 中直接用自然语言描述需求,记得提到"用 rabetbase CLI":
用 rabetbase CLI 帮我创建一个客户列表页,支持搜索和分页,数据从客户数据集读取。AI 会自动使用 rabetbase CLI 查询数据集结构、生成代码、创建自定义 SQL 等。
Skill 和直接写代码有什么区别?
对比项 | 直接写代码 | AI + Skill |
数据探索 | 手动查文档 20-30 分钟 | AI 几秒钟搞定 |
代码生成 | 手写 + 反复调试 | AI 一次生成,准确度 95%+ |
SQL 设计 | 反复调试 30-60 分钟 | AI 1-2 分钟 |
完整页面 | 2-3 小时 | 10-15 分钟 |
Skill 支持哪些 AI 工具?
集成开发采用微前端架构,你的代码在独立仓库里,和主系统完全隔离。
对比项 | 集成开发(微前端) | 直接修改主系统 |
代码隔离 | 独立仓库,清晰边界 | 混在主系统代码中 |
维护成本 | 低,只维护自己的代码 | 高,主系统更新时容易冲突 |
团队协作 | 不同团队独立开发 | 容易相互影响 |
部署灵活 | 独立构建、独立部署 | 必须整体重新部署 |
版本管理 | 独立版本控制 | 耦合在主系统版本中 |
推荐使用集成开发,通过 rabetbase menu sync 一键集成到主系统。
MCP 是否必须配置?
不是必须的,但强烈推荐。配置 MCP 后,AI 能完全理解你的数据结构,生成的代码准确度接近 100%,开发时间可以节省一半以上。不配置的话,你仍然可以使用 SDK 手动编写代码,只是需要自己查文档、理解 API,效率会低一些。简单说就是:不配能用,配了事半功倍。
MCP 支持哪些 AI 工具?
目前支持所有兼容 Skill 协议的 AI 工具,包括 Claude Code、Cursor 等。安装方式很简单:
npx skills add lovrabet/rabetbase --global
菜单同步后,主系统会立即看到新页面吗?
是的。rabetbase menu sync 完成后,菜单会立即出现在主系统中,用户点击后加载你的子应用页面。对用户来说,感知不到这是独立开发的子应用。如果菜单没有出现,检查以下几点:
-
rabetbase menu sync是否执行成功 -
子应用是否已部署到服务器
-
主应用的子应用配置是否正确
-
刷新一下主系统页面
如何调试 SDK 调用失败的问题?
SDK 提供了调试模式,开启后会在控制台输出完整的请求和响应信息:
const client = createClient({
appCode: "your-app-code",
accessKey: process.env.ACCESS_KEY,
options: {
debug: true,
},
});
常见错误及解决方法:
错误 | 原因 | 解决方案 |
401 Unauthorized | 认证失败 | 检查 AccessKey 或 Token |
403 Forbidden | 权限不足 | 检查数据集访问权限 |
404 Not Found | 资源不存在 | 检查 datasetCode 是否正确 |
400 Bad Request | 参数错误 | 检查请求参数格式 |
Network Error | 网络或 CORS 问题 | 检查网络连接和 CORS 配置 |
Token Expired | Token 已过期 | 重新生成 Token 或使用 Cookie |
更多调试技巧:SDK 故障排查
一个应用可以创建多个子应用吗?
可以,这正是微前端架构的优势。比如团队 A 开发"销售分析"扩展,团队 B 开发"客服服务"扩展,团队 C 开发"财务报表"扩展——各自独立仓库、独立部署,最终都通过 rabetbase menu sync 同步到主系统,在用户看来就像一个完整的应用。注意事项:
-
确保不同子应用的菜单名称不重复
-
建议统一 SDK 和 CLI 版本
-
可以共享公共组件库
子应用的性能会受影响吗?
不会。微前端架构下,子应用是按需加载的——只有用户访问时才加载对应的代码。加上独立缓存和 CLI 内置的构建优化,性能表现不用担心。日常开发中注意这几点就好:
// 路由懒加载
const CustomerAnalysis = lazy(() => import("./pages/CustomerAnalysis"));
// 按需引入,不要整包引入
import debounce from "lodash-es/debounce"; // 好
// import _ from "lodash"; // 不好
// 数据分页,不要一次拉全量
const result = await client.models.customers.filter({
currentPage: 1,
pageSize: 20,
});
Skill 会泄露数据吗?
不会。Rabetbase Skill 在你的本地运行,只读取数据集的元数据(表结构、字段定义),不会读取实际的业务数据。AI 工具通过 Skill 理解的是"你有哪些表、每张表有什么字段",而不是"张三的手机号是多少"。MCP 传递的信息大致长这样:
{
tableName: "customers",
fields: [
{ name: "id", type: "string", isPrimaryKey: true },
{ name: "customer_name", type: "string" },
{ name: "phone", type: "string" },
{ name: "company", type: "string" }
]
}
如何在本地开发时预览效果?
本地开发时,你的子应用独立运行:
rabetbase run start
# 子应用运行在 http://localhost:3000
# 数据通过 SDK 从真实系统获取
如果需要看集成到主系统后的完整效果,有两种方式:
-
方案一:把本地地址配置到测试环境的子应用入口
-
方案二:构建后部署到测试服务器,再同步菜单日常开发建议用本地模式快速迭代,定期部署到测试环境验证集成效果。
子应用能访问主系统的所有数据吗?
子应用通过 SDK 访问数据,权限由认证方式决定:
-
Cookie 认证:继承当前登录用户的权限
-
AccessKey 认证:继承 AccessKey 配置的权限数据集和字段级别的权限都受平台权限系统限制。安全建议:
-
服务端使用 AccessKey,浏览器端使用 Token 或 Cookie
-
遵循最小权限原则
-
不要在前端代码中硬编码 AccessKey
注意事项
安全性
-
永远不要在前端代码中硬编码 AccessKey
-
用环境变量管理敏感信息
-
生产环境使用 Token 或 Cookie 认证
-
数据传输走 HTTPS
-
定期更新 SDK 和 CLI 版本
版本兼容性
-
确保 SDK、CLI、MCP Server 版本兼容
-
关注工具链的更新日志
-
测试环境先验证再部署生产推荐的版本管理方式:
{
"dependencies": {
"@lovrabet/sdk": "^1.1.18",
"@lovrabet/rabetbase-cli": "^2.0.0"
}
}
菜单命名
-
使用 Title 注释提供清晰的中文名称
-
避免特殊字符
-
确保菜单名称在应用内唯一
-
名称简洁明了,不超过 10 个字好的例子:
客户分析、销售漏斗、数据报表不好的例子:page1、基于机器学习算法的客户行为分析与预测系统
相关资源
文档
工具包
示例项目
技术支持
-
开发者社区