Skip to content

本文面向企业独立部署的管理员和研发人员,说明如何让 Lovrabet Runtime CLI 的登录、平台 API、运行态、SkillHub 和知识库请求进入企业自己的 HTTPS 服务。

INFO

本文只展开企业独立部署连接方案。

关联文档

:::

TIP

如果要求所有请求留在企业网络内,必须完整配置五个 Domain。只配置一部分时,未填写的服务会回落到 Lovrabet 中国大陆官方地址。

五个 Domain 分别负责什么

字段请求范围部署侧需要提供的能力
userDomain登录与用户服务Access Key 创建入口及用户相关接口
apiDomain平台 API平台管理类接口,例如通知通道配置
runtimeDomain普通 Runtime、数据、SQL、BFF、文件服务运行态 API、SDK 请求和文件上传下载
skillDomainSkillHubSkill 查询、下载和相关接口
kbDomain知识库知识库列表、详情、检索和写入接口

企业可以给五类服务分别配置入口,也可以让五个字段都指向同一个统一网关。CLI 只认 HTTPS origin,具体路径由 CLI 请求和网关路由共同决定。

部署前检查

  • 每个入口都必须使用 HTTPS。可以使用企业内部 CA,但运行 CLI 的机器必须信任对应证书链。
  • Domain 只能写 origin,例如 https://runtime.example.com。不能带路径、查询参数、片段、用户名或密码。
  • DNS、VPN、专线和防火墙应允许员工机器或 CI 访问这些入口。
  • 网关需要保留认证请求头,并正确转发 X-User-AKX-Invoke-Source
  • 文件上传、文件下载、SQL 和 BFF 请求可能耗时较长,不要在网关层设置过短的超时或过小的请求体限制。
  • 五个入口都会接收与自身服务相关的认证请求,只能配置企业信任的地址。

推荐方案:五类请求全部进入企业服务

准备 Domain 文件

新建 lovrabet-domains.json。这是可以直接使用的标准 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:

jsonc
{
  // 登录与用户服务的 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 请求路径转发到内部服务:

json
{
  "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 会被拒绝。需要子路径分流时,在网关内部按实际请求路径配置路由。

写入全局连接配置

bash
lovrabet config init --domain-config ./lovrabet-domains.json

config init 固定更新全局文件 ~/.lovrabet.json,不需要 --global。它会删除原有的国家/地区选择和五个显式 Domain,再写入本次提供的值;Access Key、输出格式、风险等级和应用绑定会保留。

也可以直接传 flag。显式 flag 会覆盖文件中的同名字段:

bash
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。连接配置写入后,再单独完成认证:

bash
# 没有 Access Key 时,输出当前 userDomain 对应的创建地址
lovrabet auth login --non-interactive

# 拿到 Access Key 后保存到全局配置
lovrabet auth login --access-key YOUR_ACCESS_KEY

# 确认当前凭据对应的用户
lovrabet auth info

最终的 .lovrabet.json 示例

下面展示独立部署下常见的完整全局配置。实际文件必须是标准 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 重建一次,保持配置意图清晰。

验证配置是否生效

先核对最终解析结果

bash
lovrabet config list
lovrabet doctor

config list 查看合并后的配置,敏感值会脱敏;doctor 查看最终解析出的国家/地区和五个 API Endpoint。两条命令只能证明本地解析结果,不能替代服务连通性检查。

TIP

当前目录的 ./.lovrabet.json 优先级高于全局文件。若 doctor 显示的地址与预期不一致,先检查当前目录是否写了同名 Domain。

逐类做一次真实请求

目标建议命令通过标准
userDomainlovrabet auth login --non-interactive返回的 Access Key 创建地址属于企业入口
apiDomainlovrabet notification config-list --type EMAIL --appcode <APP_CODE>返回业务 JSON,而不是网关 HTML 或 404
runtimeDomainlovrabet app list --no-cache能从企业运行态服务读取应用
skillDomainlovrabet skill list --scope all能返回 Skill 列表
kbDomainlovrabet kb list --appcode <APP_CODE> --format compress能返回知识库列表

不同企业部署的功能模块可能按授权裁剪。某条命令返回明确的“无权限”或“功能未启用”时,说明请求已经到达业务服务;连接超时、证书错误、网关 HTML 和路径 404 才属于接入层问题。

混合路由与部分独立部署

有些企业只把某一类服务部署到自己的网络,其余请求继续使用指定国家/地区的官方服务。这种情况先初始化官方国家/地区,再精确覆盖单个 Domain:

bash
# 先确定未覆盖服务使用的官方国家/地区
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,并切换到所选国家/地区的官方服务:

bash
# 回退到中国大陆官方服务
lovrabet config init --region cn

# 或切换到印度尼西亚官方服务
lovrabet config init --region id

# 核对最终地址
lovrabet doctor

config init 不会删除 Access Key、输出格式或应用绑定。若切换后的服务不接受原 Access Key,再执行 lovrabet auth login --access-key <ACCESS_KEY> 更新凭据。

交付检查清单

  • 五个 Domain 的 DNS、证书和网关路由均已就绪。
  • 企业要求完整隔离时,五个字段没有缺项。
  • Domain 文件不包含 Access Key,真实凭据未进入 Git、工单或共享文档。
  • lovrabet doctor 显示的五个 Endpoint 与交付清单一致。
  • 五类服务至少各完成一次真实请求,失败项已经区分接入问题与业务授权问题。
  • 已经记录回退到 cnid 的命令。

基于飞书知识库同步生成,内容以飞书源文档为准