本文面向企业独立部署的管理员和研发人员,说明如何让 Lovrabet Runtime CLI 的登录、平台 API、运行态、SkillHub 和知识库请求进入企业自己的 HTTPS 服务。
INFO
本文只展开企业独立部署连接方案。
关联文档
- Lovrabet Runtime CLI .lovrabet.json 配置项参考:查看全部配置字段、作用域和合并规则。
- Lovrabet-CLI 区域节点&自定义API域名配置:查看首次初始化、国家/地区选择和部分服务覆盖方案。
TIP
如果要求所有请求留在企业网络内,必须完整配置五个 Domain。只配置一部分时,未填写的服务会回落到 Lovrabet 中国大陆官方地址。
五个 Domain 分别负责什么
| 字段 | 请求范围 | 部署侧需要提供的能力 |
|---|---|---|
userDomain | 登录与用户服务 | Access Key 创建入口及用户相关接口 |
apiDomain | 平台 API | 平台管理类接口,例如通知通道配置 |
runtimeDomain | 普通 Runtime、数据、SQL、BFF、文件服务 | 运行态 API、SDK 请求和文件上传下载 |
skillDomain | SkillHub | Skill 查询、下载和相关接口 |
kbDomain | 知识库 | 知识库列表、详情、检索和写入接口 |
企业可以给五类服务分别配置入口,也可以让五个字段都指向同一个统一网关。CLI 只认 HTTPS origin,具体路径由 CLI 请求和网关路由共同决定。
部署前检查
- 每个入口都必须使用 HTTPS。可以使用企业内部 CA,但运行 CLI 的机器必须信任对应证书链。
- Domain 只能写 origin,例如
https://runtime.example.com。不能带路径、查询参数、片段、用户名或密码。 - DNS、VPN、专线和防火墙应允许员工机器或 CI 访问这些入口。
- 网关需要保留认证请求头,并正确转发
X-User-AK与X-Invoke-Source。 - 文件上传、文件下载、SQL 和 BFF 请求可能耗时较长,不要在网关层设置过短的超时或过小的请求体限制。
- 五个入口都会接收与自身服务相关的认证请求,只能配置企业信任的地址。
推荐方案:五类请求全部进入企业服务
准备 Domain 文件
新建 lovrabet-domains.json。这是可以直接使用的标准 JSON:
{
"userDomain": "https://user.example.com",
"apiDomain": "https://api.example.com",
"runtimeDomain": "https://runtime.example.com",
"skillDomain": "https://skills.example.com",
"kbDomain": "https://kb.example.com"
}下面是逐项说明版,只用于阅读,不能直接保存为 JSON:
{
// 登录与用户服务的 HTTPS origin
// Access Key 自助创建地址会基于它生成
"userDomain": "https://user.example.com",
// 平台 API 的 HTTPS origin
// 承载平台管理类请求
"apiDomain": "https://api.example.com",
// 普通 Runtime 的 HTTPS origin
// 数据、SQL、BFF、文件等运行态请求会进入这里
"runtimeDomain": "https://runtime.example.com",
// SkillHub 的 HTTPS origin
// 承载 Skill 查询、下载和相关请求
"skillDomain": "https://skills.example.com",
// 知识库服务的 HTTPS origin
// 承载知识库列表、详情、检索和写入请求
"kbDomain": "https://kb.example.com"
}使用统一网关
如果企业只对外提供一个入口,可以把五个字段写成同一个 origin。网关再按 CLI 请求路径转发到内部服务:
{
"userDomain": "https://lovrabet.example.com",
"apiDomain": "https://lovrabet.example.com",
"runtimeDomain": "https://lovrabet.example.com",
"skillDomain": "https://lovrabet.example.com",
"kbDomain": "https://lovrabet.example.com"
}TIP
不要把网关子路径写进 Domain,例如 https://lovrabet.example.com/runtime 会被拒绝。需要子路径分流时,在网关内部按实际请求路径配置路由。
写入全局连接配置
lovrabet config init --domain-config ./lovrabet-domains.jsonconfig init 固定更新全局文件 ~/.lovrabet.json,不需要 --global。它会删除原有的国家/地区选择和五个显式 Domain,再写入本次提供的值;Access Key、输出格式、风险等级和应用绑定会保留。
也可以直接传 flag。显式 flag 会覆盖文件中的同名字段:
lovrabet config init \
--user-domain https://user.example.com \
--api-domain https://api.example.com \
--runtime-domain https://runtime.example.com \
--skill-domain https://skills.example.com \
--kb-domain https://kb.example.com保存 Access Key
Domain 文件不要携带 Access Key。连接配置写入后,再单独完成认证:
# 没有 Access Key 时,输出当前 userDomain 对应的创建地址
lovrabet auth login --non-interactive
# 拿到 Access Key 后保存到全局配置
lovrabet auth login --access-key YOUR_ACCESS_KEY
# 确认当前凭据对应的用户
lovrabet auth info最终的 .lovrabet.json 示例
下面展示独立部署下常见的完整全局配置。实际文件必须是标准 JSON,不能保留注释:
{
// 默认应用别名;没有显式传 --app 或 --appcode 时优先使用
"defaultApp": "crm",
// 本地应用别名,只保存稳定的 App Code 映射
"apps": {
// crm 是本地别名,可按企业业务命名
"crm": {
// 该别名对应的 Lovrabet App Code
"appcode": "app-crm-001"
}
},
// Runtime CLI 的认证凭据;不要提交到 Git 或分发给其他人
"accessKey": "YOUR_LOVRABET_ACCESS_KEY",
// 默认输出格式:compress、json 或 pretty
"format": "compress",
// 支持分页配置的命令所使用的默认页大小
"pageSize": 50,
// 允许执行的最高风险等级:read、write 或 high-risk-write
"riskLevel": "write",
// 应用本地化设置;不是 CLI 界面语言,目前命令尚未消费
"locale": "en-US",
// 登录与用户服务的 HTTPS origin
"userDomain": "https://user.example.com",
// 平台 API 的 HTTPS origin
"apiDomain": "https://api.example.com",
// 普通 Runtime、数据、SQL、BFF 和文件服务的 HTTPS origin
"runtimeDomain": "https://runtime.example.com",
// SkillHub 服务的 HTTPS origin
"skillDomain": "https://skills.example.com",
// 知识库服务的 HTTPS origin
"kbDomain": "https://kb.example.com"
}独立部署的完整隔离配置不需要 region。如果全局文件里仍有该字段,显式 Domain 仍会覆盖对应服务,但建议通过 config init --domain-config 重建一次,保持配置意图清晰。
验证配置是否生效
先核对最终解析结果
lovrabet config list
lovrabet doctorconfig list 查看合并后的配置,敏感值会脱敏;doctor 查看最终解析出的国家/地区和五个 API Endpoint。两条命令只能证明本地解析结果,不能替代服务连通性检查。
TIP
当前目录的 ./.lovrabet.json 优先级高于全局文件。若 doctor 显示的地址与预期不一致,先检查当前目录是否写了同名 Domain。
逐类做一次真实请求
| 目标 | 建议命令 | 通过标准 |
|---|---|---|
userDomain | lovrabet auth login --non-interactive | 返回的 Access Key 创建地址属于企业入口 |
apiDomain | lovrabet notification config-list --type EMAIL --appcode <APP_CODE> | 返回业务 JSON,而不是网关 HTML 或 404 |
runtimeDomain | lovrabet app list --no-cache | 能从企业运行态服务读取应用 |
skillDomain | lovrabet skill list --scope all | 能返回 Skill 列表 |
kbDomain | lovrabet kb list --appcode <APP_CODE> --format compress | 能返回知识库列表 |
不同企业部署的功能模块可能按授权裁剪。某条命令返回明确的“无权限”或“功能未启用”时,说明请求已经到达业务服务;连接超时、证书错误、网关 HTML 和路径 404 才属于接入层问题。
混合路由与部分独立部署
有些企业只把某一类服务部署到自己的网络,其余请求继续使用指定国家/地区的官方服务。这种情况先初始化官方国家/地区,再精确覆盖单个 Domain:
# 先确定未覆盖服务使用的官方国家/地区
lovrabet config init --region id
# 只让运行态请求进入企业服务
lovrabet config set runtimeDomain https://runtime.example.com --global
# 核对最终结果
lovrabet doctor如果未覆盖服务应使用中国大陆官方地址,把第一条改为 lovrabet config init --region cn。
不要用只包含一个字段的 --domain-config 文件搭建上述混合方案。进入独立部署模式时,CLI 会清除原有国家/地区和 Domain;未填写的服务随后回落到中国大陆官方地址,可能与预期不一致。
常见问题
| 现象 | 处理方式 |
|---|---|
| Domain 校验失败 | 确认使用 HTTPS origin,删除路径、查询参数、片段和末尾之外的多余内容。 |
| 提示未知字段 | lovrabet-domains.json 只允许五个 Domain 字段,不要把 Access Key、应用或输出配置放进去。 |
| 证书错误 | 检查证书名称、有效期和完整链;使用内部 CA 时,把 CA 加入运行 CLI 的机器和 CI 信任链。 |
| 返回 HTML 或网关登录页 | 检查网关是否把 API 路径转发到业务服务,且没有把 CLI 请求改写到浏览器登录流程。 |
| 返回 401 或 403 | 先执行 lovrabet auth info 核对身份,再确认网关保留认证请求头,Access Key 属于当前独立部署服务。 |
| 部分请求仍访问官方地址 | 执行 lovrabet doctor 检查五个最终地址;完整隔离必须配置五个 Domain,并清理当前目录中的冲突覆盖。 |
| 连接超时或大文件失败 | 检查 DNS、VPN、防火墙、反向代理超时、请求体限制和上游连接池。 |
回退到官方服务
回退会清除全局五个显式 Domain,并切换到所选国家/地区的官方服务:
# 回退到中国大陆官方服务
lovrabet config init --region cn
# 或切换到印度尼西亚官方服务
lovrabet config init --region id
# 核对最终地址
lovrabet doctorconfig init 不会删除 Access Key、输出格式或应用绑定。若切换后的服务不接受原 Access Key,再执行 lovrabet auth login --access-key <ACCESS_KEY> 更新凭据。
交付检查清单
- 五个 Domain 的 DNS、证书和网关路由均已就绪。
- 企业要求完整隔离时,五个字段没有缺项。
- Domain 文件不包含 Access Key,真实凭据未进入 Git、工单或共享文档。
lovrabet doctor显示的五个 Endpoint 与交付清单一致。- 五类服务至少各完成一次真实请求,失败项已经区分接入问题与业务授权问题。
- 已经记录回退到
cn或id的命令。