自定义Agent部署

更新时间:
复制 MD 格式

本文面向通过计算巢以自定义方式部署Agent的用户,说明创建页面各功能模块的作用、配置要点及注意事项,提供完整的部署指引。

自定义 Agent 能做什么

您自行指定应用从哪里来(Git 仓库、OSS 压缩包或容器镜像)、如何启动与停止,并可配置环境变量、百炼模型与 API Key、可选 MCP、Skills 与应用连接绑定等。部署完成后可通过 Web 对话页 / API 调用等方式使用。

进入计算巢控制台,在 Agent 部署 > Agent 选择 中创建 Agent。

image.png

前提说明

  • 计算巢平台仅提供 Agent 运行环境,具体 Agent 代码需由开发者自行编写。

  • 官方示例基于 Google ADK,建议对齐 ADK 项目结构以获得最佳适配。

  • 记忆、沙箱等连接通过环境变量注入,代码中 os.getenv() 读取即可,详见连接使用说明

开发说明:

  • ECS 宿主机预装 Docker、Python 3.12、Google ADK、google-adk-redis。

  • 业务镜像推荐基于以下公开基础镜像构建:compute-nest-registry.cn-hangzhou.cr.aliyuncs.com/computenest/agentscope-adk-base-py312:latest

  • 对接 Agent 连接(MCP、知识库、记忆等)时,可直接使用 computenest-agent-integrations 开发库。

  • 项目结构与代码实现可参考Agent 市场中的官方示例。

部署页参数说明

创建 Agent 时,先在部署页选择部署方式(ECS 版容器集群版),再按页面分区填写各项参数。以下按控制台页面结构说明各配置项。

应用信息

参数

说明

应用名称

当前部署的 Agent 应用名称,默认即可

分组名称

当前部署的 Agent 应用分组名称,默认即可

Agent 配置

源文件类型

源文件类型:选择应用来源方式:Git 仓库代码OSS 文件Docker 镜像。后续需填写的参数会随该选项变化。

不同部署方式下,各源类型是否可用如下:

源类型

ECS 版

容器集群版

Docker 镜像(推荐)

支持

支持

Git 仓库

支持

不支持

OSS 文件

支持

不支持

Docker 镜像

参数

说明

ACR 地域

镜像所在地域

ACR 类型

个人版 / 企业版

仓库名称

镜像仓库

镜像版本

部署的 Tag

内网拉取

企业版需 VPC 互通

发布时镜像会在执行脚本前自动拉取到 ECS,脚本中无需执行 docker pull

推荐基于官方公开 ADK 基础镜像构建。

FROM compute-nest-registry.cn-hangzhou.cr.aliyuncs.com/computenest/agentscope-adk-base-py312:latest
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["bash", "docker-entrypoint.sh"]   # 启动

Git 仓库(仅 ECS 版)

参数

说明

平台

github / gitee 等

所有者 / 组织

仓库归属

仓库名称 / 分支

代码位置

代码自动下载到 code_deploy_application/,无需 git clone

OSS 文件(仅 ECS 版)

参数

说明

OSS 地域 / Bucket / 文件路径

部署包位置

内网下载

需 ECS 与 OSS 同地域

文件自动下载到工作目录,压缩包需启动脚本中解压。

工作目录与脚本

ECS 版

参数

说明

工作目录

绝对路径,默认 /root

应用启动脚本

Shell 脚本,启动 Agent

应用停止脚本

Shell 脚本,停止 Agent

每次启动前会先执行停止脚本,确保旧版本被清理。

启动脚本示例(ADK Docker)

set -euo pipefail

IMAGE=<您的 ACR 镜像地址>

docker run -d \
  --name my-agent \
  --restart unless-stopped \
  --network host \
  -e DASHSCOPE_API_KEY \
  -e DASHSCOPE_MODEL_NAME \
  ${SESSION_REDIS_URL:+-e SESSION_REDIS_URL} \
  -e PORT=8000 \
  "$IMAGE"

停止脚本示例:

docker rm -f compute_nest_agent 2>/dev/null || true

容器集群版:无需配置启停脚本,K8s 自动管理 Pod 生命周期,镜像的 CMD/ENTRYPOINT 即为启动入口。

部署资源

ECS 版

  • 付费方式:按量付费 / 包年包月

  • 实例规格:默认 ecs.u1-c1m2.large

  • 系统盘:ESSD,默认 40 GiB

  • 公网带宽:默认 5~10 Mbps

  • 预装:Docker + Python 3.12 + Google ADK

容器集群版

  • 集群选项:新建 ACS / 新建 ACK / 已有集群

  • 默认:新建 ACS(Serverless,无需管理节点)

  • ACK 需配置:Worker 规格、节点数量、网络插件

两种方式的 WebUI 与 API 均通过 8000 端口访问。

环境变量配置

参数

环境变量

说明

百炼 API Key

DASHSCOPE_API_KEY

必填

模型选择

DASHSCOPE_MODEL_NAME

部署页选择后自动注入

服务端口

PORT

默认 8000

自定义环境变量

用户自行添加键值对

ECS 版:环境变量写入宿主机,启动脚本中通过 -e VAR_NAME 透传给容器。

容器集群版:环境变量通过 ConfigMap(app-config)注入 Pod,代码中直接 os.getenv() 读取。

网络配置

ECS 版:可用区、专有网络(新建或已有)、交换机与网段等,按页面提示选择即可。

容器集群版:须选择已有专有网络及交换机(不支持新建 VPC)。

网络选择会影响下方工具配置中可绑定的应用连接:连接须与 Agent 部署在同一 VPC 内网互通。

模型配置

参数

说明

模型选择

下拉列表中选择要使用的模型

百炼 API Key

从百炼获取后填入,必填,用于调用模型服务

工具配置

参数

说明

应用连接

绑定沙箱、会话管理、知识库、记忆等

百炼 MCP

开启「启动 MCP」后选择所需工具

Skills

开启「启用 Skills」后选择 Skill 空间与要安装的 Skill;安装目录为 /root/skills

应用连接说明

会话连接用于多轮对话上下文持久化,对应 Redis 实例。使用前请先在Redis 控制台创建实例,并在 Agent 部署 > 连接管理 中创建连接。详见连接使用说明

ECS 版:可选。选新建 VPC 时列表不展示会话连接,可使用内置本地 Redis;选已有 VPC 后,列表仅展示与该 VPC 同网的连接,可按需绑定。

容器集群版:必填。须选已有 VPC,并绑定与该 VPC 同网的会话管理连接。

会话连接须与 Agent 部署在同一 VPC 内网互通。选新建 VPC 时 VPC 尚未创建,无法匹配 Redis 网络,故不展示会话连接——仅 ECS 场景生效。

MCP 配置方式

部署方式

配置方式

ECS 版

平台将 JSON 原文固定写入 /root/mcp_config.json,代码直接读取即可

容器集群版

平台将 JSON 经 Base64 编码后写入环境变量 MCP_JSON(存入 ConfigMap app-config),代码读取后须先解码

MCP Json 格式示例:

{
  "mcpServers": {
    "WebSearch": {
      "type": "streamableHttp",
      "baseUrl": "https://dashscope.aliyuncs.com/api/v1/mcps/WebSearch/mcp",
      "headers": {
        "Authorization": "Bearer ${DASHSCOPE_API_KEY}"
      }
    }
  }
}

${DASHSCOPE_API_KEY} 为占位符,部署时由平台替换为实际 API Key。

代码读取示例:

ECS 版从文件读取;容器集群版从 MCP_JSON 读取并 Base64 解码。

import base64
import json
import os
from pathlib import Path

def load_mcp_config() -> dict:
    if raw := os.getenv("MCP_JSON"):
        return json.loads(base64.b64decode(raw).decode("utf-8"))
    path = Path(os.getenv("MCP_CONFIG_PATH", "/root/mcp_config.json"))
    return json.loads(path.read_text(encoding="utf-8"))

调试时可执行 echo "$MCP_JSON" | base64 -d 查看解码后的 JSON。

各 MCP 的 baseUrl 以百炼控制台展示为准;使用前需在百炼侧开通对应 MCP 能力。详见连接使用说明

Skills 配置方式

部署方式

配置方式

ECS 版

部署时开启「启用 Skills」,选择 Skill 空间与要安装的 Skill;平台自动安装到 /root/skills

容器集群版

同上;通过 Init Container 安装 Skill 并挂载到 Pod 的 /root/skills

代码中可从 /root/skills 读取已安装的 Skill 文件,供 Agent 按需加载。

部署完成

输出

ECS 版

容器集群版

WebUI + API (:8000)

支持

支持

代码调试 (:8080)

支持Code Server

支持 Code Server

远程连接(Workbench)

支持

不支持需前端集群控制台登录

ADK 服务通过 8000 端口同时提供 Web UI 与 /run_sse API;OpenAPI 文档:http://<IP>:8000/docs

后续操作(可选)

操作

路径

更换镜像/代码

部署物 > 新建部署物 > 发布部署物

修改环境变量

参数修改 > 发布管理 > 发布部署物

绑定连接

Agents 管理 > 绑定 > 发布管理 > 发布部署物

变更 MCP

Agents 管理 > MCP > 变更

变更 Skills

Agents 管理 > Skills > 变更

常见问题

ECS

现象

建议排查

Git 拉取失败

中国内地访问 GitHub 不稳定,换平台或选海外地域

OSS 下载失败

地域/内网选项是否匹配

镜像拉取失败

ACR 与 ECS 网络是否互通

Docker run 报错

检查 --network host、环境变量透传与 PORT=8000

容器集群版

现象

建议排查

镜像拉取失败

ACR 企业版需配置 VPC 访问控制

Pod CrashLoopBackOff

kubectl logs 查看启动错误

Pod Pending

集群资源不足或调度限制

通用

现象

建议排查

模型鉴权失败

确认百炼 API Key 正确

MCP 401

确认百炼侧已开通对应 MCP

链接绑定后不生效

需在发布管理重新发布

会话不能持久化

是否绑定了会话管理链接;启动命令是否传入 --session_service_uri

WebUI 打不开

部署是否成功;首次启动较慢;确认端口 8000