设计
新建独立仓库 langbot-app/lbctl,使用 Go 实现,命令名为 lbctl,以自包含二进制分发。独立于 LangBot Core,不并入现有 Python langbot CLI,也不改变 lbp 的插件开发职责。
第一期范围
第一期只做远程 Workspace 内的实体管理:面向用户、脚本和 Coding Agent,通过 HTTP API 和现有 Workspace API Key,操作已运行的 LangBot 工作区中的 Bot、Pipeline、Provider、Model、知识库、MCP Server、Skill、Plugin 等实体。
- 包含连接配置、身份与权限查询、实体查询与配置操作,以及 Agent 友好的结构化接口。
- 不负责创建、部署或管理实例,也不负责创建、删除工作区或管理 Cloud 订阅。
- 不做本地自部署实例管理,不提供 LangBot 安装、启动、停止、重启、升级、卸载、宿主机日志或部署诊断命令,不要求 Docker / Compose。
- 本地自托管实例生命周期放在第二期,不纳入第一期实现或验收,计划见文末。
- 不内置浏览器或网页流程编排;第三方平台操作由 Agent 使用现有浏览器工具完成,不作为第一期交付前置条件。
连接与资源管理
Context 只保存 API 连接配置,用于选择要操作的实例与 Workspace,不代表受 lbctl 托管的部署。
lbctl context add production --endpoint https://bot.example.com --api-key-stdin
lbctl context list
lbctl context use production
lbctl context remove production
lbctl whoami # 当前 API 目标、Workspace 与权限
lbctl capabilities # 目标实例支持的 API 能力
lbctl version # lbctl 版本
资源命令直接使用 lbctl <资源> <动作>,不增加 remote、manage 等中间层:
lbctl bot list
lbctl bot get <id>
lbctl bot create --file bot.yaml
lbctl bot update <id> --file bot.yaml
lbctl bot delete <id> --yes
lbctl pipeline list
lbctl pipeline get <id>
lbctl pipeline apply --file pipeline.yaml
lbctl provider list
lbctl model list
lbctl knowledge-base list
lbctl mcp-server list
lbctl skill list
lbctl plugin list
lbctl api get /api/v1/system/info
lbctl api post /api/v1/pipelines --file pipeline.json
- 实体操作仅通过当前 context 的 HTTP API 执行,作用域限定为 API Key 对应的远程 Workspace,不操作宿主机或部署环境。
- 复杂请求统一支持
--file <JSON/YAML 文件>,--file - 从 stdin 读取。
api 用于尚未封装的接口,只接受当前 endpoint 下的相对路径。
- Core 提供带 API Key 鉴权的身份查询接口,供
whoami 返回 Key 对应的 Workspace 和权限,不使用公开系统信息推断身份。
Agent 与认证约定
- 提供可直接使用的
--help、机器可读命令 schema 和 --output json。
- 非交互执行不得等待输入;破坏性操作要求显式
--yes,支持超时,适用的写操作提供 --dry-run。
- stdout 输出结果,stderr 输出诊断;错误码和退出码保持稳定,写操作后回读验证。
- 复用 Workspace API Key 的权限范围、过期、吊销与 Workspace 隔离语义,不新增认证体系,不允许通过请求参数切换 Key 所属 Workspace。
- API Key、Bot Token 等通过 stdin 或受限文件传入,不放入命令行参数,不出现在普通输出、日志或错误中。
分发与配套
- 通过 GitHub Releases 发布各平台二进制与校验信息,官网提供一键安装器;安装器仅安装
lbctl,不自动部署或启动 LangBot。
- CLI 二进制面向 Linux、macOS、Windows,各平台均以远程 Workspace 实体管理为第一期支持范围,发布前完成对应平台验证。
- Core 与
lbctl 独立版本、独立发布,通过 OpenAPI、capabilities 和兼容性测试保持一致。
lbctl 仓库维护 CLI 安装、远程 Workspace 实体管理和 Agent 操作 Skills;官网/Wiki 提供安装与使用入口,避免重复维护命令参数表。
- 在两仓库的
AGENTS.md 和开发文档中写清同步要求:API、认证或资源模型变化时,一并评估 OpenAPI、MCP、lbctl、Skills、文档与兼容测试。
第一期验收
- 能安装并运行
lbctl,配置和切换远程 API context;无需安装 LangBot Core 或 Docker,不改变任何本地部署。
- 能使用 Workspace API Key 连接真实实例,完成身份查询和常用资源的读取、配置与回读验证;越权及跨 Workspace 操作被拒绝。
- Agent 能仅通过非交互命令与 JSON 输出,完成真实远程 Workspace 中实体的查询、创建、更新、删除与结果验证,凭据不泄漏。
- 发布物、安装器、配套 Skills 和文档可用,Core 与 CLI 的兼容性测试通过。
第二期计划:本地自托管实例管理
在第一期远程 Workspace 实体管理之外,增加运行 lbctl 的本机上自托管 LangBot 的生命周期管理。在服务器上执行时,“本地”就是该服务器;不通过 API、SSH 或远程 Docker 管理其他主机,也不管理 Cloud 实例生命周期。
先支持本机 Docker Compose 部署,采用顶层命令,不增加 instance 层级:
lbctl install # 安装本地 LangBot
lbctl start # 启动
lbctl stop # 停止
lbctl restart # 重启
lbctl status # 查看本地运行状态
lbctl logs # 查看本地实例日志
lbctl doctor # 检查部署与依赖
lbctl upgrade # 升级本地 LangBot,而非 lbctl 自身
lbctl uninstall # 卸载本地部署
- 默认操作本地默认部署,必要时用
--dir <部署目录> 指定;切换 API context 不改变生命周期命令的本地目标。
- 安装前检查 Docker / Compose 依赖;停止、升级和卸载默认保留持久化数据,删除数据必须单独明确确认。
- 优先验证 Linux amd64/arm64 + Docker Compose,其他平台生命周期支持以实际验证为准;同步补充本地部署管理 Skills 和文档。
- 第二期验收:真实本地部署完成安装、启停、状态查询、日志、诊断、升级和卸载;验证数据保留、升级后的健康状态,以及远程 context 不影响本地操作目标。
设计
新建独立仓库
langbot-app/lbctl,使用 Go 实现,命令名为lbctl,以自包含二进制分发。独立于 LangBot Core,不并入现有 PythonlangbotCLI,也不改变lbp的插件开发职责。第一期范围
第一期只做远程 Workspace 内的实体管理:面向用户、脚本和 Coding Agent,通过 HTTP API 和现有 Workspace API Key,操作已运行的 LangBot 工作区中的 Bot、Pipeline、Provider、Model、知识库、MCP Server、Skill、Plugin 等实体。
连接与资源管理
Context 只保存 API 连接配置,用于选择要操作的实例与 Workspace,不代表受
lbctl托管的部署。资源命令直接使用
lbctl <资源> <动作>,不增加remote、manage等中间层:--file <JSON/YAML 文件>,--file -从 stdin 读取。api用于尚未封装的接口,只接受当前 endpoint 下的相对路径。whoami返回 Key 对应的 Workspace 和权限,不使用公开系统信息推断身份。Agent 与认证约定
--help、机器可读命令 schema 和--output json。--yes,支持超时,适用的写操作提供--dry-run。分发与配套
lbctl,不自动部署或启动 LangBot。lbctl独立版本、独立发布,通过 OpenAPI、capabilities 和兼容性测试保持一致。lbctl仓库维护 CLI 安装、远程 Workspace 实体管理和 Agent 操作 Skills;官网/Wiki 提供安装与使用入口,避免重复维护命令参数表。AGENTS.md和开发文档中写清同步要求:API、认证或资源模型变化时,一并评估 OpenAPI、MCP、lbctl、Skills、文档与兼容测试。第一期验收
lbctl,配置和切换远程 API context;无需安装 LangBot Core 或 Docker,不改变任何本地部署。第二期计划:本地自托管实例管理
在第一期远程 Workspace 实体管理之外,增加运行
lbctl的本机上自托管 LangBot 的生命周期管理。在服务器上执行时,“本地”就是该服务器;不通过 API、SSH 或远程 Docker 管理其他主机,也不管理 Cloud 实例生命周期。先支持本机 Docker Compose 部署,采用顶层命令,不增加
instance层级:--dir <部署目录>指定;切换 API context 不改变生命周期命令的本地目标。