OpenCode 安装部署脚本使用指南
本目录包含用于安装和部署 OpenCode 系统的一系列自动化脚本。这些脚本简化了从下载到安装的完整流程,帮助用户快速搭建 OpenCode 环境。
目录结构
opencode/
├── opencode_download.sh # 下载OpenCode一体机相关软件包和模型权重
├── install_base_sw.sh # 安装系统基础软件,如操作系统依赖、NPU驱动和Docker等
├── install_llm.sh # 部署基于vLLM Ascend的LLM模型服务,支持多种机型和模型
├── install_opencode.sh # 部署和配置OpenCode服务,支持多实例部署
└── README.md # 本使用指南
安装部署流程
1. 准备工作
- 确保系统已连接网络
- 确保当前执行用户为root用户
- 确保磁盘空间充足(至少100GB,取决于模型大小)
- 克隆本代码仓(如果未克隆):
git clone https://gitcode.com/Ascend/ascend-deployer.git - 切换至appliance_deployer分支:
git checkout appliance_deployer - 如需多机执行安装时需参考配置批量待安装场景的方式一修改
./ascend_deployer/inventory_file文件配置待安装服务器的信息,执行脚本后则会同时在配置的待安装设备上执行安装,示例如下:[worker] xx.xxx.xx.xx1 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" #请替换为实际待安装设备的IP xx.xxx.xx.xx2 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" #请替换为实际待安装设备的IP
2. 下载所需软件包和模型
使用方式:
首先使用 opencode_download.sh 脚本下载Ascend相关软件包和所需的LLM模型:
cd ./kadt/opencode/
chmod +x *.sh
./opencode_download.sh --os <os_type> [--model <model_name>] [--stream]
参数说明:
--os <os_type>:指定操作系统类型(必填),可直接输入数字选择--model <model_name>:可选,指定要下载的模型名称,可直接输入数字选择--stream:可选,启用流式打印下载输出--server-type <a2|a3>:可选,指定服务器类型;如果未指定,将自动检测服务器类型,检测失败则默认使用 Atlas 800I A2-h, --help:显示帮助信息,查看支持的操作系统和模型列表
支持列表:
- 操作系统:
OpenEuler,BCLinux,CTyunOS,CULinux,CentOS,Debian,EulerOS,Kylin,MTOS,UOS,Ubuntu,VesselOS,veLinux等 - 模型:
Qwen3-8B,Qwen3-14B,MiniMax-M2.5,Qwen3.5-27B,Qwen3.5-35B-A3B-w8a8-mtp,Kimi-K2.5-W4A8等
示例:
# 查看帮助信息
./opencode_download.sh --help
# 通过名称指定操作系统和模型
./opencode_download.sh --os OpenEuler_22.03LTS-SP4_aarch64 --model Qwen/Qwen3.5-27B
# 通过数字选择操作系统和模型
./opencode_download.sh --os 1 --model 5
# 指定下载Atlas 800I A3版本的vllm-ascend镜像
./opencode_download.sh --os 1 --model Qwen/Qwen3.5-27B --server-type a3
配置说明:
- Linux系统中可执行
cat /etc/os-release命令查看操作系统类型,如PRETTY_NAME="openEuler 22.03 (LTS-SP4)"则操作系统类型为OpenEuler_22.03LTS-SP4 - 脚本中
DOWNLOAD_PARAMS参数指定了要下载的软件列表(默认:OpenCode-image(OpenCode镜像),DockerCompose==v5.0.0-rc.2(Docker Compose),vLLM-Ascend==800I-A2-v0.18.0(Atlas 800I A2 vllm-ascend镜像),NPU==25.5.0(NPU驱动与固件)) - 可选参数
--server-type <a2|a3>指定服务器类型,用于选择vLLM-Ascend镜像版本,若未指定,将自动检测服务器类型,检测失败则默认使用 Atlas 800I A2 版本的 vLLM-Ascend 镜像 - 如需安装Atlas 800I A3的驱动与固件,请前往昇腾驱动与固件下载页面下载所需版本与架构的驱动与固件(如25.5.1版本的A3驱动固件文件名为Atlas-A3-hdk-npu_25.5.1_linux-aarch64.zip),并保存在
./ascend_deployer/resources/npu目录下 - 下载的模型权重将存储在
kadt同级的model_weights/目录下
注意:
- 下载Docker Compose需要保证服务器可访问Docker Compose页面,如无法访问可去掉脚本DOWNLOAD_PARAMS参数中的DockerCompose==v5.0.0-rc.2,并手动下载对应架构的Docker Compose二进制文件(如docker-compose-linux-aarch64)后放置在./ascend_deployer/resources/DockerCompose目录下。
- 脚本使用modelscope命令行下载模型权重,可能会遇到SSL认证问题,需自行完成相关配置,或临时禁用SSL认证(不建议)。
- 该脚本会调用common/download.sh脚本执行实际的下载任务
3. 安装基础软件
使用方式:
使用 install_base_sw.sh 脚本安装基础软件组件:
./install_base_sw.sh
配置说明:
默认直接安装脚本中INSTALL_SOFTWARE参数指定的软件,无需用户交互。可以在脚本头部修改以下配置,如已安装驱动与固件且当前版本驱动固件与vllm-ascend镜像中的CANN版本匹配,可将npu从INSTALL_SOFTWARE参数中移除以避免重启服务器,CANN与驱动版本配套关系请参考CANN与驱动版本配套关系,vllm-ascend镜像配套软件版本可参考兼容性矩阵:
INSTALL_SOFTWARE:指定要安装的软件列表(默认:sys_pkg,npu,docker_compose)ENABLE_SOFTWARE_SELECTION:是否启用用户选择功能(默认:false),设置为true时会显示软件列表供用户选择
注意:
- 安装NPU驱动和固件后,建议安装完成后立即重启,单机安装时重启请执行reboot命令。批量安装则执行以下命令重启所有设备。
- 如果Ascend Deployer工具是部署在某一台待安装设备上,需要先在“inventory_file”屏蔽本机IP地址,否则执行重启时可能还未发送重启命令到其他服务器,本机就已重启,导致其他服务器无法重启。如果Ascend Deployer工具未部署在待安装服务器可以跳过本步骤直接执行重启服务器。
# 本机IP address ansible_ssh_user="root" # 屏蔽本机IP- 重启服务器。
ansible -i inventory_file all -m shell -a 'reboot' - 该脚本会调用common/base_install.sh脚本执行实际的安装任务
4. 安装和配置LLM模型服务
前提条件:
- 执行部署LLM模型服务前,请先确保要使用的NPU未被占用,否则可能会导致模型服务启动失败
- 下载的模型权重目录名必须与模型名称一致,否则vllm服务启动时会报错,如--model参数输入的模型名称为
Qwen3-8B,--weight_path参数指定的权重路径为/data/weights,则模型权重目录的绝对路径应为'/data/weights/Qwen3-8B',如使用openclaw_download.sh脚本下载模型权重,默认会将在--weight_path参数指定的目录下创建与模型名称一致的子目录存储模型权重 - 使用双机部署时需参考配置批量待安装场景的方式一修改
./ascend_deployer/inventory_file文件配置待安装服务器的信息,[worker]的第一台待安装设备为主节点,示例如下:[worker] xx.xxx.xx.xx1 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" #请替换为实际待安装设备的IP xx.xxx.xx.xx2 ansible_ssh_user="root" ansible_ssh_pass="xxxxxxx" #请替换为实际待安装设备的IP
使用方式:
使用 install_llm.sh 脚本安装和配置vllm_ascend模型服务,成功安装后会提示模型服务信息:
./install_llm.sh --model <model_name> --port <port> --api-key <api_key> [--weight_path <weight_path>] [--devices <device_list|card_count>] [--dual-node]
参数说明:
-m, --model:指定模型名称(必填),支持直接输入数字选择模型名称,也支持直接输入模型名称(如:Qwen3-8B)-p, --port:指定模型服务端口号(必填)-k, --api-key:指定模型服务的API KEY(必填)-w, --weight_path:指定模型权重所在的父目录(可选,默认:使用/data/weights)-d, --devices:指定vllm容器挂载的卡列表或卡数(可选,默认使用配置文件中的值)- 格式:
[0,1,2,3]或4(自动生成[0,1,2,3])
- 格式:
--dual-node:使用双机部署模式(可选,默认:单机模式)--privileged <true|false>:是否使用特权容器(可选,默认:false)。使用特权容器后会将服务器所有卡挂载到容器,如未指定--devices参数,默认使用前N张卡部署模型,可结合--devices参数指定部署模型的卡,如--devices [4,5]则表示在4,5两张卡上部署模型-h, --help:显示帮助信息,查看支持的模型列表及各机型支持情况
支持模型列表:
- Atals 800I A2 单机 / Atlas 300I A2 多卡:Qwen3-8B、Qwen3-14B、Qwen3.5-27B、Qwen3.5-35B-A3B-w8a8-mtp等
- Atals 800I A2 双机:MiniMax-M2.5等
- Atals 800I A3 单机:Qwen3-8B、Qwen3-14B、Qwen3.5-27B、Qwen3.5-35B-A3B-w8a8-mtp、Kimi-K2.5-W4A8、MiniMax-M2.5等
- Atals 800I A3 双机:Kimi-K2.5-W4A8等
示例:
# 查看帮助信息(包含支持的模型和机型列表)
./install_llm.sh --help
# 通过数字选择模型安装LLM服务
./install_llm.sh --model 1 --port 8000 --api-key vllm12#$ --devices 4
# 通过名称选择模型安装LLM服务(双机部署)
./install_llm.sh --model Qwen3-8B --port 8000 --api-key vllm12#$ --devices [0,1,2,3] --dual-node
# 指定权重路径安装LLM服务
./install_llm.sh --model Qwen3.5-27B --port 8000 --api-key vllm12#$ --weight_path /data/models --devices 8
# 开启特权容器安装LLM服务,且在4,5,6,7四张卡上部署模型
./install_llm.sh --model Qwen3.5-27B --port 8000 --api-key vllm12#$ --devices [4,5,6,7] --privileged true
安装成功后会提示模型服务信息,包括模型名称、API、API KEY等,如下图所示:

注意事项:
-
执行该安装脚本会自动在
--weight_path参数对应目录下的模型权重目录中生成容器启动脚本run_container_{IP}_{容器名}.sh。如启动 vLLM 服务失败,可以通过命令"docker logs 容器名"来查看日志 -
由于模型服务拉起耗时较长,安装脚本最多等待15分钟,如15分钟内模型服务未启动成功,安装脚本按安装失败处理,请自行检查日志确认是否成功拉起模型服务
-
安装脚本会自动拉起以vllm_ascend_x命名的容器,如有重名容器会自动增加数字后缀,如安装失败不会自动删除相应容器,如有需要请手动删除相应容器
-
该脚本会调用common/vllm_server.sh脚本执行实际的部署任务
5. 安装和配置OpenCode服务
使用方式:
使用 install_opencode.sh 脚本安装和配置OpenCode服务实例,会拉起指定实例数量的OpenCode容器,安装成功后会提示容器名及OpenCode访问信息:
./install_opencode.sh --port <base_port> --model <model_name> --api-key <api_key> --url <vllm_url> [--count <instance_count>] [--data_path <data_path>]
参数说明:
-p, --port:多OpenCode实例的起始端口(必填),端口号依次累加,如创建2个实例,起始端口为9080,则会占用9080~9081两个端口,请确保端口不会冲突-m, --model:推理服务模型名称(必填)-u, --url:推理服务URL(必填),格式为http://0.0.0.0:8000/v1-k, --api-key:模型服务的API KEY(必填)-c, --count:要启动的OpenCode实例数量(可选,默认:1)-d, --data_path:OpenCode数据存储目录(可选,默认:/data/opencode)-h, --help:显示帮助信息
示例:
# 查看帮助信息
./install_opencode.sh --help
# 安装OpenCode服务
./install_opencode.sh --port 9080 --model Qwen3-8B --url http://0.0.0.0:8000/v1
./install_opencode.sh --port 9080 --model Qwen3-8B --url http://0.0.0.0:8000/v1 --count 2 --data_path /data/opencode_data
访问OpenCode服务:
在本地安装了opencode之后,可在cmd窗口中通过opencode attach http://{服务器IP}:{port}来访问opencode服务,其中port为安装OpenCode服务时--port指定,随实例数递增,例如--port 9080 --count 2,则端口为9080和9081
WebUI 可视化部署(测试中)
注意:WebUI 功能目前处于测试阶段,可能存在不稳定或功能不完整的情况,建议仅用于测试和体验。生产环境部署请使用命令行方式。
WebUI 提供可视化的部署流程管理界面,支持单步执行、实时日志查看、任务中止等功能。
启动 WebUI
cd ./kadt/webui
./launcher.sh
默认端口:8080
自定义端口
./launcher.sh 9000
launcher.sh 功能
启动脚本会自动完成以下操作:
- 检查 Python 环境:验证 Python 3 是否可用
- 自动安装依赖:检测并安装 Flask、PyYAML(如未安装)
- 获取本机 IP:自动获取服务器 IP 地址用于远程访问
- 启动服务:启动 Flask 应用
启动后显示访问地址:
访问地址:
本机: http://127.0.0.1:8080
远程: http://10.10.10.10:8080
WebUI 操作流程
- 选择部署场景:在首页选择
opencodeprofile - 查看部署步骤:左侧显示完整 workflow(下载 → 基础软件 → LLM 服务 → OpenCode 服务)
- 执行单步操作:
- 点击当前步骤进入参数填写页面
- 填写必要参数(操作系统、模型、端口等)
- 点击"开始执行"
- 实时查看执行日志
- 支持中止正在运行的任务
- 继续下一步:当前步骤完成后可跳转至下一步
WebUI 功能特性
- 配置驱动:参数通过 YAML 配置文件定义,易于扩展
- 实时日志:实时显示脚本输出,支持 ANSI 颜色高亮
- 模型兼容性过滤:根据服务器类型自动过滤可选模型
- 任务状态持久化:WebUI 重启后可恢复任务状态
- 服务器配置:支持配置目标服务器列表(用于 Ansible 批量部署)
WebUI 目录结构
webui/
├── app.py # Flask 主应用
├── script_runner.py # 脚本执行引擎
├── scripts_config.yaml # 配置文件
├── launcher.sh # 启动脚本
├── templates/ # HTML 模板
├── static/ # CSS/JS 文件
└── logs/ # 任务日志存储
常见问题和注意事项
-
权限问题
- 确保所有脚本都具有执行权限:
chmod +x *.sh - 请使用root用户执行
- 确保所有脚本都具有执行权限:
-
网络问题
- 确保系统已连接到可靠的网络
- 模型下载可能需要较长时间,请耐心等待
-
磁盘空间
- 确保有足够的磁盘空间用于存储模型和软件包
- 单个LLM模型可能需要数十GB的磁盘空间
-
端口冲突
- 如果指定的端口已被占用,请使用
--port参数指定其他端口
- 如果指定的端口已被占用,请使用
-
Ansible回调模块无效问题
- 当看到如下报错信息:
ERROR! Invalid callback for stdout specified: community.general.yaml,表明 Ansible 环境缺少 community.general 这个 Ansible 集合,可进入./ascend_deployer/resources/sources/ansible_collections目录下执行以下命令安装该集合:
ansible-galaxy collection install community-general-*.tar.gz - 当看到如下报错信息:
故障排除
- 如果安装失败,请检查错误信息并根据提示进行修复
- 确保所有依赖项已正确安装
- 检查网络连接和权限设置
- 查看日志文件以获取更详细的错误信息