运行约 12 分钟

统一部署与三种部署方式

一个部署管理器、三种部署策略:子进程、Docker、Kubernetes。智能体、插件、镜像都走同一条部署流程。

依据 agent-runtime develop@0a47a523(2026-11-12)核实

Runtime 解决什么问题

agent-core 让你写出一个智能体;agent-runtime 负责把它从开发态带到生产态:统一部署、多租户隔离、多种部署方式、生命周期管理。

README 把它拆成几个模块:

模块目录做什么
管理management/DeploymentManager 和各部署器:部署策略、实例启停、状态持久化
服务框架service/智能体应用的服务外壳:统一消息结构、请求上下文、对话接口
基础能力foundation/数据库(SQLite / MySQL 等)、端口、虚拟环境、Docker 工具、日志
应用applications/具体的应用与运行支撑,比如 A2A 服务、管理面
源码Runtime READMEagent-runtime/README.md@0a47a523

一个管理器,三种策略

DeploymentManager 不关心智能体跑在哪里,具体怎么拉起交给"部署策略":

模式部署器做法
subprocess(默认)LocalSubprocessDeployer为每次部署建独立虚拟环境、装包,用 python -m 包名 --host --port 起一个子进程,日志写到文件
dockerDockerDeployer以容器方式运行
k8sK8sDeployer在集群里创建 Secret、Deployment 和 Service
源码DeployModeagent-runtime/management/openjiuwen_runtime/management/models/enums.py:25@0a47a523

每个策略由两部分组成:一张自己的记录表(存这种部署方式特有的信息,比如进程号、容器 ID),加一个部署器(真正去拉起和停止)。要支持新的部署方式,就是再写一个策略。

源码BaseDeploymentStrategyagent-runtime/management/openjiuwen_runtime/management/deployments/base/strategy.py:67@0a47a523

Kubernetes 的依赖是可选的:没装时管理器照常启动,只是不注册 k8s 策略,真要用时才报错并说明原因。

三种部署对象,一条流程

管理器对外有三个部署入口,最后都走同一个内部流程:

入口部署什么限制
deploy_agent一个智能体包—
deploy_plugin一个插件(带 URL)—
deploy_image一个现成镜像子进程模式不支持
info = await manager.deploy_agent(DeployAgentParams(
    name="promise_agent",          # 包名,子进程模式下用 python -m 启动
    version="1.0.0",
    mode=DeployMode.SUBPROCESS,    # 默认值
    user_id="u-001",               # 租户信息,下一关细讲
    space_id="sales",
    extras={"whl_path": "dist/promise_agent-1.0.0-py3-none-any.whl"},
))
说明

示意代码,参数名取自 DeployAgentParams;extras 里放哪些字段由具体策略决定。本站没有运行它。

内部流程 _deploy 是:

  1. 生成部署 ID,在部署表里写一条记录,状态 pending
  2. 选中的策略写自己的记录表,再调部署器拉起实例
  3. 部署器成功则状态改为 running,并记下访问地址
  4. 等实例就绪:状态是 running,并且 /health 探活通过(下一关细讲)
  5. 中间任何一步出错,状态改为 failed,异常继续往上抛
源码_deployagent-runtime/management/openjiuwen_runtime/management/manager.py:423@0a47a523

关于管理接口

README 列出了管理面的 REST 接口(POST /api/v1/agents/deploy、GET /api/v1/agents、DELETE /api/v1/agents/{id} 等),也提到 server/ 目录。

注意

在本站核实的基线版本里,仓库根目录没有 server/ 目录,也搜不到这些路由的实现;能核实的是 DeploymentManager 这一层的方法。README 的 Roadmap 也写着 Docker / Kubernetes 部署能力还在完善。实际使用前请以你拿到的版本为准。

部署好的智能体应用本身对外提供 /health、/query(支持流式)、/reset_conversation 等接口。agent-studio 配好 Runtime 地址后,可以一键发布、在线验证、一键下架。

小结

  • DeploymentManager 统一管理部署,具体怎么拉起由可替换的部署策略负责。
  • 默认子进程;镜像只能用 Docker 或 Kubernetes;Kubernetes 依赖是可选的。
  • 所有部署走同一流程:记录 → 拉起 → 等就绪 → 失败就标 failed。
  • README 和代码有出入的地方,以代码为准。

源码出处

链接指向固定提交,仓库后续更新不影响这里的行号。

过关测验

  1. 1. 部署方式没有显式指定时,默认用哪一种?

  2. 2. 用子进程方式部署一个现成的容器镜像(deploy_image),会怎样?

  3. 3. 当前环境没装 Kubernetes 的依赖,部署管理器会怎样?

通关条件

  • ○ 测验全部答对