AgentBay CLI是AgentBay服务的命令行接口工具。本文介绍如何通过CLI工具创建、构建、激活和管理AgentBay自定义镜像。
简介
主要功能
认证管理:基于OAuth安全登录机制,支持阿里云账号集成。
镜像列表:浏览用户镜像和系统镜像,支持分页和过滤。
镜像创建:从 Dockerfile 构建自定义镜像,支持基础镜像。
镜像激活:激活用户镜像实例,支持自定义资源配置。
镜像停用:停用已激活的镜像实例。
模板下载:从云端下载 Dockerfile 模板。
配置管理:安全的令牌存储和自动令牌刷新。
支持的镜像类型
目前仅支持创建和激活CodeSpace类型自定义镜像。
安装
通过Tap安装(推荐方式)
# 添加阿里云的 Homebrew 仓库 brew tap aliyun/agentbay # 安装 agentbay 工具 brew install agentbay手动下载安装
前往Release页面下载适合最新版本。
快速开始
登录
CLI将自动打开浏览器进行阿里云认证。完成登录后返回终端。
# 登录到 AgentBay
agentbay login
查看可用镜像
# 仅列出用户镜像(默认)
agentbay image list
# 包含系统镜像与用户镜像
agentbay image list --include-system
# 仅显示系统镜像
agentbay image list --system-only
下载Dockerfile模板
# 下载 Dockerfile 模板至当前目录
agentbay image init
创建自定义镜像
# 使用Dockerfile创建自定义镜像
agentbay image create myapp --dockerfile Dockerfile --imageId code-space-debian-12
激活镜像
用户自定义镜像在使用前需要激活,系统镜像无需激活。
# 激活用户镜像,使其可用于部署
agentbay image activate imgc-xxxxx...xxx
停用镜像
使用完毕后停用自定义镜像以节约资源。
# 停用已激活的用户镜像,释放相关资源
agentbay image deactivate imgc-xxxxx...xxx
命令参考
全局选项
所有命令均支持以下全局选项:
--help, -h: 显示命令帮助信息。--verbose, -v: 启用详细输出模式,显示调试信息。--version: 显示CLI版本信息。
命令结构
agentbay [全局选项] <命令> [命令选项] [参数]
镜像管理
镜像激活与停用说明
用户自定义镜像:使用之前需要激活,激活后可用于部署。
系统镜像:始终可用,无需激活。
停用镜像:使用完毕后停用自定义镜像以节约资源,停用已激活的用户镜像会释放相关资源。
image list - 列出镜像
语法:
# 列出可用的 AgentBay 镜像
agentbay image list [选项]
选项:
--os-type, -o <类型>: 按操作系统类型过滤(Linux、Android、Windows)。--include-system: 同时显示用户镜像和系统镜像。--system-only: 仅显示系统镜像。--page, -p <数字>: 页码(默认:1)。--size, -s <数字>: 每页显示数量(默认:10)。
示例:
# 列出用户镜像
agentbay image list
# 列出 Linux 镜像
agentbay image list --os-type Linux
# 列出所有镜像(用户 + 系统)
agentbay image list --include-system
# 仅列出系统镜像
agentbay image list --system-only
# 分页查询
agentbay image list --page 2 --size 5
输出说明:
IMAGE ID: 镜像唯一标识符
IMAGE NAME: 镜像名称
TYPE: 镜像类型(DockerBuilder 或 DedicatedDesktop)
STATUS: 镜像状态
OS: 操作系统类型和版本
APPLY SCENE: 应用场景
状态说明:
Creating: Building
Available: Ready to activate
Activated: Running
Create Failed: Build failed
注意事项:
系统镜像始终可用,无需激活。
只有用户创建的镜像需要激活后才能使用。
默认情况下仅显示用户镜像。
镜像列表会按用户镜像和系统镜像分组显示。
重要image list命令只显示镜像的构建状态(Creating、Available、Create Failed),不显示激活/停用状态。激活和停用状态只在执行image activate或image deactivate命令时显示。
image init - 下载Dockerfile模板
语法:
# 从云端下载 Dockerfile 模板到当前目录
agentbay image init
示例:
# 下载 Dockerfile 模板
agentbay image init
输出示例:
[INIT] Downloading Dockerfile template...
Requesting Dockerfile template... Done.
Downloading Dockerfile from OSS... Done.
Writing Dockerfile to /path/to/current/directory/Dockerfile...
[WARN] Dockerfile already exists at /path/to/current/directory/Dockerfile
[INFO] The existing file will be overwritten.
Done.
[SUCCESS] Dockerfile template downloaded successfully!
[INFO] Dockerfile saved to: /path/to/current/directory/Dockerfile
[IMPORTANT] The first 5 line(s) of the Dockerfile are system-defined and cannot be modified.
[IMPORTANT] Please only modify content after line 5.
注意事项:
如果当前目录已存在
Dockerfile,命令会覆盖现有文件。覆盖前会显示警告信息。
此步骤为可选,也可以手动创建Dockerfile或使用现有文件。
重要提示:Dockerfile模板的前N行(N由系统返回)是系统定义的,不能修改。
只能修改第N+1行之后的内容,否则可能导致镜像构建失败。
系统会在下载成功后显示不可编辑的行数信息,请务必遵守此限制。
image create - 创建镜像
语法:
# 从 Dockerfile 创建新的 AgentBay 镜像
agentbay image create <镜像名称> --dockerfile <路径> --imageId <基础镜像ID>
参数:
<镜像名称>: 自定义镜像名称(必需)
选项:
--dockerfile, -f <路径>: Dockerfile 文件路径(必需)--imageId, -i <ID>: 基础镜像 ID(必需)
示例:
# 使用完整选项名称
agentbay image create my-app --dockerfile ./Dockerfile --imageId code-space-debian-12
# 使用短选项名称
agentbay image create my-app -f ./Dockerfile -i code-space-debian-12
# 使用详细输出模式
agentbay image create my-app -f ./Dockerfile -i code-space-debian-12 -v
输出示例:
[BUILD] Creating image 'my-app'...
[STEP 1/4] Getting upload credentials... Done.
[STEP 2/4] Uploading Dockerfile... Done.
[STEP 3/4] Creating Docker image task... Done.
[STEP 4/4] Building image (Task ID: task-xxxxx)...
[STATUS] Build status: RUNNING
[SUCCESS] Image created successfully!
[RESULT] Image ID: imgc-xxxxx...xxx
构建流程:
获取上传凭证。
上传 Dockerfile 到对象存储。
创建 Docker 镜像构建任务。
启动镜像构建。
注意事项:
构建时间取决于镜像大小和复杂度。
使用
-v选项可查看详细的构建日志。构建过程中可以通过
image list命令查看状态。基础镜像ID必须是有效的系统镜像ID,可通过
image list --system-only查看。
image activate - 激活镜像
语法:
# 激活用户镜像,使其可用于部署
agentbay image activate <镜像ID> [选项]
参数:
<镜像ID>: 要激活的镜像 ID(必需)
选项:
--cpu, -c <核心数>: CPU 核心数(2、4 或 8)--memory, -m <GB>: 内存大小,单位 GB(4、8 或 16)
支持的资源配置组合:
2c4g: 2 个 CPU 核心,4 GB 内存4c8g: 4 个 CPU 核心,8 GB 内存8c16g: 8 个 CPU 核心,16 GB 内存
示例:
# 使用默认资源配置激活
agentbay image activate imgc-xxxxx...xxx
# 使用 2c4g 配置激活
agentbay image activate imgc-xxxxx...xxx --cpu 2 --memory 4
# 使用 4c8g 配置激活
agentbay image activate imgc-xxxxx...xxx --cpu 4 --memory 8
# 使用 8c16g 配置激活
agentbay image activate imgc-xxxxx...xxx --cpu 8 --memory 16
# 使用详细输出
agentbay image activate imgc-xxxxx...xxx --cpu 4 --memory 8 -v
输出示例:
[ACTIVATE] Activating image...
Checking current image status... Done.
Creating resource group... Done.
Waiting for activation to complete...
Status: Activating (elapsed: 5s, attempt: 2/60)
Status: Activating (elapsed: 13s, attempt: 3/60)
[SUCCESS] Image activated successfully!
注意事项:
只有用户镜像可以激活。
系统镜像始终可用,无需激活。
CPU和内存选项必须同时指定,且必须匹配支持的组合。
如果未指定CPU和内存,将使用默认资源配置。
激活过程通常需要1至2分钟。
如果镜像已经激活,命令会提示无需操作。
激活过程中会轮询镜像状态,最多尝试60次,总超时时间为 30 分钟。
image deactivate - 停用镜像
语法:
# 停用已激活的用户镜像,释放相关资源
agentbay image deactivate <镜像ID>
参数:
<镜像ID>: 要停用的镜像 ID(必需)
示例:
# 停用镜像
agentbay image deactivate imgc-xxxxx...xxx
# 使用详细输出
agentbay image deactivate imgc-xxxxx...xxx -v
输出示例:
[DEACTIVATE] Deactivating image...
Deleting resource group... Done.
Waiting for deactivation to complete...
Status: Deactivating (elapsed: 5s, attempt: 2/40)
[SUCCESS] Image deactivated successfully!
认证管理
login - 登录
语法:
# 通过 OAuth 流程登录到 AgentBay
agentbay login
功能说明:
启动本地回调服务器。
打开浏览器进行阿里云认证。
接收授权码并交换访问令牌。
保存认证令牌到本地配置文件。
输出示例:
Starting AgentBay authentication...
Starting local callback server on port 3001...
Opening browser for authentication...
Browser opened successfully!
Waiting for callback on http://localhost:3001/callback...
Authentication successful!
Received authorization code: xxxxx...
Exchanging authorization code for access token...
Saving authentication tokens...
Authentication tokens saved successfully!
You are now logged in to AgentBay!
注意事项:
如果已经登录且令牌未过期,命令会提示已登录。
如果浏览器无法自动打开,命令会显示认证URL,可手动复制到浏览器。
认证超时时间为5分钟。
令牌会自动刷新,无需频繁登录。
故障排查:
如果端口被占用,可以使用以下命令检查:
macOS/Linux:
lsof -i :3001Windows:
netstat -ano | findstr :3001
logout - 登出
语法:
# 登出 AgentBay并清除本地认证数据
agentbay logout
功能说明:
尝试撤销服务器端的刷新令牌。
清除本地配置文件中的认证令牌。
输出示例:
Logging out from AgentBay...
Revoking server tokens...
Refresh token revoked successfully
Clearing local authentication data...
Successfully logged out from AgentBay
注意事项:
即使服务器端撤销失败,本地数据仍会被清除。
访问令牌是短期有效的,会自动过期。
撤销刷新令牌会同时使相关的访问令牌失效。
version - 版本信息
语法:
# 显示 CLI 版本和构建信息
agentbay version
输出示例:
AgentBay CLI version 1.0.0
Git commit: abc1234
Build date: 2025-01-15
Environment: production
Endpoint: xiaoying-share.cn-shanghai.aliyuncs.com
信息说明:
Version: CLI 版本号
Git commit: 构建时的 Git 提交哈希
Build date: 构建日期
Environment: 当前环境(production 或 prerelease)
Endpoint: 当前使用的 API 端点
配置说明
配置文件结构
配置文件采用JSON格式,包含以下信息:
访问令牌(Access Token)
刷新令牌(Refresh Token)
ID令牌(ID Token)
令牌类型(Token Type)
令牌过期时间(Expires At)
令牌管理
CLI 工具会自动管理令牌:
自动刷新:访问令牌过期前会自动使用刷新令牌获取新令牌。
安全存储:令牌存储在用户配置目录,仅当前用户可访问。
令牌验证:每次 API 调用前会检查令牌有效性。
环境变量
CLI 工具支持通过环境变量进行配置:
AGENTBAY_ENV: 设置运行环境(production或prerelease)。
常见问题
认证相关
Q: 登录时提示端口被占用怎么办?
A: 端口3001可能被其他程序占用。可以:
关闭占用端口的程序
使用
lsof -i :3001(macOS/Linux)或netstat -ano | findstr :3001(Windows)查找占用进程终止占用进程后重试
Q: 浏览器无法自动打开怎么办?
A: CLI会显示认证URL,可以手动复制URL然后在浏览器中打开。
Q: 登录超时怎么办?
A: 认证流程有5分钟超时限制。如果超时需重新运行agentbay login。
Q: 如何检查当前登录状态?
A: 运行agentbay image list或其他需要认证的命令,如果未登录会提示先登录。
镜像相关
Q: 如何查看可用的基础镜像?
A: 使用agentbay image list --system-only查看所有可用的系统镜像。
Q: 镜像构建失败怎么办?
A: 请检查:
Dockerfile语法是否正确。
基础镜像ID是否有效。
是否修改了Dockerfile中系统定义的前N行(N在下载模板时会显示)。
使用
-v选项查看详细错误信息。使用
agentbay image init下载模板参考。
Q: Dockerfile的哪些部分不能修改?
A: 使用agentbay image init下载的Dockerfile模板中,前N行(N 由系统返回)是系统定义的,不能修改。这些行通常包含基础镜像定义和系统必需的配置。命令成功后会显示不可编辑的行数,例如:
[IMPORTANT] The first 5 line(s) of the Dockerfile are system-defined and cannot be modified.
[IMPORTANT] Please only modify content after line 5.
只能修改第 N+1 行之后的内容。如果修改了前N行,可能导致镜像构建失败。
Q: 如何查看镜像构建状态?
A: 使用agentbay image list查看镜像状态,状态为Creating表示正在构建。
Q: 激活镜像需要多长时间?
A: 通常需要1-2分钟。激活过程中会显示进度信息。
Q: 可以同时激活多个镜像吗?
A: 可以,每个镜像独立管理,互不影响。
Q: 停用镜像后数据会丢失吗?
A: 停用镜像会释放计算资源,但镜像本身不会删除,可以重新激活。
命令使用
Q: 如何查看命令帮助?
A: 使用--help或-h选项:
agentbay --help
agentbay image --help
agentbay image create --help
Q: 如何启用详细日志?
A: 使用-v或--verbose选项:
agentbay -v image create my-app -f ./Dockerfile -i code-space-debian-12
Q: 配置文件在哪里?
A:
macOS/Linux:
~/.config/agentbay/config.jsonWindows:
%APPDATA%\agentbay\config.json
Q: 如何重置配置?
A: 删除配置文件后重新登录:
# macOS/Linux
rm ~/.config/agentbay/config.json
# Windows
del %APPDATA%\agentbay\config.json
错误处理
Q: 网络连接问题怎么办?
A: 请检查:
网络连接是否正常。
防火墙设置是否阻止了连接。
是否能够访问AgentBay服务端点。
环境切换
概述
AgentBay CLI支持在生产环境和预发布环境之间切换。此功能主要用于内部开发和测试。
环境说明
生产环境(production): 默认环境,用于正式使用。
预发布环境(prerelease): 用于测试和验证。
切换方法
临时切换(单次命令)
AGENTBAY_ENV=prerelease agentbay login
会话级切换(当前终端)
# macOS/Linux
export AGENTBAY_ENV=prerelease
agentbay login
agentbay image list
# Windows (PowerShell)
$env:AGENTBAY_ENV="prerelease"
agentbay login
agentbay image list
永久切换(添加到配置文件)
# macOS/Linux - 添加到 ~/.zshrc 或 ~/.bashrc
echo 'export AGENTBAY_ENV=prerelease' >> ~/.zshrc
source ~/.zshrc
# Windows - 添加到系统环境变量
切换回生产环境
# 取消环境变量
unset AGENTBAY_ENV
# 或显式设置为生产环境
export AGENTBAY_ENV=production
验证当前环境
使用agentbay version命令查看当前环境:
agentbay version
输出中的Environment字段显示当前使用的环境。
支持的环境值
生产环境:
production、prod或不设置(默认)预发布环境:
prerelease、pre、staging
注意事项
不同环境的认证令牌是独立的,需要分别登录。
不同环境的镜像和资源是隔离的。
切换环境后需要重新登录。
此功能主要用于内部测试,普通用户应使用默认的生产环境。
附录
资源配置参考
支持的CPU和内存组合:
CPU 核心数 | 内存 (GB) | 配置名称 |
2 | 4 | 2c4g |
4 | 8 | 4c8g |
8 | 16 | 8c16g |