#!/bin/bash
CONFIG_FILE="../../ascend_deployer/conf/opencode/opencode_config.json"
INSTALL_SCRIPT="../../ascend_deployer/install.sh"
SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd)
show_help() {
echo "默认参数Usage:: $0 --port <base_port> --model <model_name> --api-key <api_key> --url <vllm_url>"
echo "自定义参数Usage: $0 --port <base_port> --model <model_name> --api-key <api_key> --url <vllm_url> [--count <instance_count>] [--data_path <data_path>]"
echo ""
echo "Options:"
echo " -p, --port 多OpenCode实例的起始端口(必填),端口号依次累加,每个实例占用2个端口,如创建2个实例,起始端口为9080,则会占用9080~9083四个端口,请确保端口不会冲突"
echo " -m, --model 推理服务模型名称(必选)"
echo " -k, --api-key 模型服务的API KEY(必选)"
echo " -u, --url 推理服务URL(必选),如http://0.0.0.0:8000/v1"
echo " -c, --count 要启动的OpenCode实例数量(可选,默认:$INSTANCE_COUNT)"
echo " -d, --data_path OpenCode数据存储目录(可选,默认:$DATA_PATH)"
echo " -h, --help 显示帮助信息"
}
INSTANCE_COUNT="1"
DATA_PATH="/data/opencode"
BASE_PORT=""
MODEL_NAME=""
VLLM_URL=""
API_KEY=""
while [[ $# -gt 0 ]]; do
case $1 in
-c|--count)
INSTANCE_COUNT="$2"
shift 2
;;
-d|--data_path)
DATA_PATH="$2"
shift 2
;;
-p|--port)
BASE_PORT="$2"
shift 2
;;
-m|--model)
MODEL_NAME="$2"
shift 2
;;
-k|--api-key)
API_KEY="$2"
shift 2
;;
-u|--url)
VLLM_URL="$2"
shift 2
;;
-h|--help)
show_help
exit 0
;;
*)
echo "未知参数: $1"
show_help
exit 1
;;
esac
done
if [[ -z "$BASE_PORT" || -z "$MODEL_NAME" || -z "$VLLM_URL" || -z "$API_KEY" ]]; then
echo "错误,缺少必选参数"
echo "请确保提供以下必选参数:"
echo "--port <base_port> --model <model_name> --api-key <api_key> --url <vllm_url>"
exit 1
fi
TIMEOUT=3
VLLM_HEALTH_URL="${VLLM_URL%/*}/health"
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -m $TIMEOUT -X GET "$VLLM_HEALTH_URL")
if [ "$HTTP_CODE" -eq 200 ]; then
echo "vLLM 服务可访问 - 状态码:$HTTP_CODE"
else
echo "vLLM 服务异常 - 状态码:$HTTP_CODE,检测地址:$VLLM_HEALTH_URL"
exit 1
fi
echo "{
\"instance_count\": $INSTANCE_COUNT,
\"data_path\": \"$DATA_PATH\",
\"base_port\": $BASE_PORT,
\"vllm_url\": \"$VLLM_URL\",
\"model_name\": \"$MODEL_NAME\",
\"api_key\": \"$API_KEY\"
}" > $CONFIG_FILE
echo ""
echo "正在启动安装脚本..."
cd "$SCRIPT_DIR"
echo "y" | bash "$INSTALL_SCRIPT" --install opencode --stdout_callback community.general.yaml