H11 · 如何部署、发布和运维 Agent System? - Deployment & Operations
所属知识库:Agent 全栈技术地图
所属领域:03 · Agent System
所属章节:03 · 如何让 Agent System 稳定、安全、可控地运行? - Engineering & Governance
文档类型:Agent System 生产部署、交付流水线与运维工程专题研究
版本:v1.1
更新日期:2026 年 10 月 29 日
核心问题:如何将包含模型服务、Agent Runtime、任务编排、状态存储、工具执行和用户应用的 Agent System,以可复现、可隔离、可观测、可渐进发布且可恢复的方式部署到生产环境,并在持续变更中控制运行风险?
专题导读
本篇属 Engineering & Governance。Agent System 的上线不等于部署一个聊天页面或启动一个 Python 进程。实际系统往往包含同步 API、长时间运行的 Worker、工作流调度器、模型网关、外部工具、数据库、对象存储、事件通道和人工审批接口。各组件有不同的生命周期:HTTP 请求可能在秒级结束,Agent Run 可能持续数小时;应用镜像可以快速替换,正在运行的工作流却可能绑定旧版本的 Prompt、工具协议与状态 Schema。因此,部署、发布和运维必须同时管理基础设施版本、代码版本、行为配置版本、持久状态版本与外部副作用。
本文沿用“技术研究报告 Studio”案例:用户创建研究任务,由选题、调研、分析和审核 Agent 协作生成报告,并经过人工确认后发布。研究重点不是罗列 Kubernetes 命令,而是建立从构建、验证、发布、观测、故障响应到退役的完整生产运行模型。
专题边界: L1 Infrastructure 研究运行环境的基础能力;L2 Platform Services 研究数据库、队列、对象存储等服务;L3 - L4 - L5 - L6 研究 Agent System 的业务技术架构。H11 研究如何把这些能力交付、运行、升级与维护。H5 Configuration 负责配置及版本语义;H7 Reliability 负责容错与恢复机制;H10 Testing & Validation 负责验证方法;H1 Observability 提供运行证据;H12 Policy & Governance 将进一步定义组织级规则与责任。H11 负责将这些要求纳入实际发布和生产操作。
阅读目标: 能够选择适当部署拓扑,定义可复现构建和发布单元,设计兼容长任务的灰度与回滚流程,制定运行手册、SLO、容量规划、备份恢复和事故响应机制,并为 Agent System 建立生产准入清单。
一、部署与运维的对象:运行的究竟是什么
1.1 四个核心概念
Deployment(部署):将软件制品、配置及其依赖放入目标环境,使服务具备可运行条件。部署成功仅说明实例启动或通过指定健康检查,不代表真实任务已正确完成。
Release(发布):将已部署的能力向某类用户、租户或任务开放。发布可以与部署分离,例如新版本已经部署但流量权重为零,或仅允许内部租户使用。
Operations(运维):持续保障系统在约定的可用性、质量、成本、安全和合规约束下运行,包括监控、扩缩容、故障响应、数据维护、变更管理与退役。
Production Readiness(生产就绪):以证据证明系统具备上线所需的操作能力,包括回滚路径、告警、容量、数据恢复、权限与值班责任;不等于“开发环境运行正常”。
1.2 Agent System 的部署单元
| 部署单元 | 典型职责 | 关键运行特性 |
|---|---|---|
| Web / API | 身份、任务提交、查询、审批 | 短请求、可横向扩展 |
| Agent Worker | 模型循环、工具执行、产物生成 | 长任务、需要安全中断 |
| Orchestrator | 依赖、调度、重试、交接 | 持久化状态、并发协调 |
| Model Gateway | 供应商适配、配额、路由 | 外部依赖、速率限制 |
| Tool Executor | 浏览器、代码、文件及外部 API | 高风险、需要隔离 |
| State / Data | 数据库、队列、对象存储 | 数据持久性、备份恢复 |
| Telemetry | 指标、日志、Trace、审计 | 数据量大、权限敏感 |
以上是逻辑职责而非强制的七套独立服务。MVP 可将多个职责合并进一个进程;生产环境则按故障域、扩缩容需求、安全边界和团队维护能力拆分。不能仅为了“微服务化”而引入不必要的网络跳数和分布式一致性问题。
1.3 五类需要分别管理的版本
- 应用代码版本:API、Worker、编排器、工具执行器镜像或构建制品。
- 行为配置版本:Prompt、模型选择、工具清单、路由策略、Workflow 定义;与 H5 的 Release Manifest 关联。
- 数据契约版本:数据库 Schema、事件结构、Checkpoint、Artifact 元数据、消息协议。
- 依赖与基础设施版本:运行时、基础镜像、数据库、队列、编排平台及网络策略。
- 外部接口版本:模型供应商 API、第三方工具 API、Webhook 及 MCP 相关契约。
一次发布至少应能回答:哪个代码制品、哪个配置快照、哪个数据契约、在哪个环境、对哪些任务生效、由谁批准、怎样回退?
二、生产拓扑与环境设计
2.1 从单机到分布式的演进
形态 A:单机 / 单容器 MVP。 Web、Worker、调度器可运行在同一主机,使用托管数据库和对象存储。优势是部署简单、成本可控;局限是故障域集中、任务与请求竞争资源、扩容粗糙。适用于早期低并发验证,但必须从第一天保留任务持久化、秘密管理和备份能力。
形态 B:API + Worker 分离。 API 负责请求和控制,Worker 从可靠队列或工作流引擎领取任务;数据库保存权威状态。可以分别扩容、滚动升级,减少长任务阻塞 HTTP 服务。通常是研究 Studio 进入实际使用的合理起点。
形态 C:多服务与独立执行沙箱。 Orchestrator、模型网关、不同工具 Worker 独立部署;高风险浏览器/代码执行进入隔离环境。适用于多租户、较高吞吐或存在外部副作用的场景,但需要成熟的网络策略、身份体系、可观测性与值班能力。
形态 D:跨区域或多集群。 只有在数据驻留、可用性目标、区域故障风险或规模要求明确时考虑。跨区域状态复制、工作流恢复和外部副作用去重会显著提高复杂度;“多区域部署”本身不等于可自动无损切换。
2.2 研究 Studio 的参考部署拓扑
用户浏览器 / 外部系统
|
HTTPS / WAF
|
API Gateway / Ingress
|
Studio API (无状态) --------> Identity / Policy
|
+----> PostgreSQL (任务/版本/审批/操作账本)
+----> Object Storage (原文/报告/产物)
+----> Workflow / Queue
|
Agent Workers
|
Model Gateway ---> 模型供应商
|
Tool Gateway ----> 检索 / 文件 / 受限沙箱
|
Telemetry SDK
|
Collector / Metrics / Logs / Traces架构约束:API 不以进程内存作为权威任务状态;Worker 崩溃后任务可以重新认领;工具执行凭据不随意暴露给模型;用户批准的产物版本必须在发布时重新校验;可观测性系统故障不应无条件阻断核心业务,但安全审计的强制要求应单独定义。
2.3 环境隔离
至少区分本地开发、集成测试、预发布与生产。预发布应尽可能匹配生产的关键拓扑、协议和安全约束,但不应复制真实敏感数据或真实生产凭据。外部工具默认使用测试账户、沙箱接口和专用资源。
环境隔离应覆盖数据库、对象存储 Bucket、队列、密钥、服务账户、Webhook 回调地址、模型预算和网络出口。仅使用不同环境变量名,而共用生产数据库或生产密钥,不构成有效隔离。
对于开发者在本地调试 Agent,尤其要防止测试工具调用误触发真实邮件、付款、发布或文件删除。可在工具网关引入 environment=staging 的硬约束及出站目标白名单。
2.4 计算平台选择
| 平台 | 适用情境 | 主要权衡 |
|---|---|---|
| 单机 + systemd | 个人 MVP、低复杂度 | 故障域集中 |
| Docker Compose | 小型多组件部署 | 集群能力有限 |
| 托管容器服务 | 中小规模生产 | 平台约束与成本 |
| Kubernetes | 多服务、多租户、复杂扩容 | 运维复杂度较高 |
| Serverless Jobs | 短时、突发任务 | 时长、冷启动与状态限制 |
平台选型首先看任务持续时间、运行资源、隔离要求、并发和团队运维能力。长任务不应依赖普通 HTTP 请求生命周期;容器被终止时必须有明确的任务移交和状态恢复策略。
三、可复现构建:从源代码到可信制品
3.1 构建流水线的最小契约
建议采用以下路径:
提交代码
-> 静态检查 / 类型检查 / 单元测试
-> 依赖与镜像安全扫描
-> 构建不可变镜像
-> 生成 SBOM / 记录来源信息
-> 集成测试与契约测试
-> 制品签名与入库
-> 发布候选版本不可变制品意味着同一个发布版本引用确定的镜像摘要(Digest),而不是部署时重新拉取可能变化的 latest 标签。镜像摘要解决代码制品可追溯性,不能自动固定模型供应商的实际行为;模型 ID、配置快照、供应商版本和外部依赖仍需单独记录。
3.2 依赖锁定与供应链
Python 项目应使用明确的依赖锁定方案,并在 CI 中以锁文件重建环境。Node、Python、容器基础镜像和系统依赖均需关注可复现性。记录构建来源、提交哈希、制品摘要、构建时间、依赖清单(SBOM)和签名验证结果。具体采用何种工具,应结合仓库和部署平台决定。
不要将 API Key、数据库密码或生产环境 .env 写入镜像层。构建阶段需要的凭据使用受控的短期访问机制;运行阶段从秘密管理服务注入,按最小权限授权并保留轮换能力。
3.3 数据库与消息契约迁移
Agent System 的数据库迁移可能影响正在运行的旧 Worker。优先使用 Expand → Migrate → Contract:
- Expand:先增加新字段或新表,保持旧代码可读写。
- Migrate:新旧版本兼容运行,迁移或双读必要数据;核对一致性。
- Contract:确认旧版本任务和消费者已退出,再删除旧字段。
对于 Checkpoint、任务事件、工具调用参数和 Workflow 定义,不能假设任意新版本都能直接读取旧版本状态。应建立显式的兼容性矩阵,决定旧任务继续由旧 Worker 执行、通过迁移器转换,还是安全暂停并人工处理。
四、CI/CD 与发布门禁
4.1 CI 与 CD 的职责
**CI(持续集成)**主要证明变更可以构建并满足自动化验证要求。**CD(持续交付/部署)**负责将候选制品安全地送达目标环境,并控制对用户和任务的暴露范围。
对 Agent System,CI 不应仅检查代码。发布候选需要绑定:代码 Digest、Prompt/Workflow 配置版本、模型与工具兼容性、数据迁移版本、评估基线和安全策略版本。发布清单可采用以下参考结构:
release_id: studio-2026-10-29.1
source_commit: "<git-commit>"
artifacts:
api_image_digest: "sha256:<digest>"
worker_image_digest: "sha256:<digest>"
behavior:
agent_config_revision: "agents-r42"
workflow_revision: "workflow-r18"
prompt_bundle_revision: "prompts-r25"
contracts:
db_schema_revision: "db-014"
checkpoint_schema_revision: "cp-3"
rollout:
audience: "internal"
max_new_run_percent: 5以上为概念性发布清单,不是 Kubernetes、GitHub Actions 或任何框架的原生 Schema。生产中应增加签名、审批、环境和策略校验字段。
4.2 发布门禁应分层
| 门禁 | 必要证据 | 失败处理 |
|---|---|---|
| 构建门禁 | 制品与依赖可追溯 | 拒绝候选 |
| 契约门禁 | API/事件/状态兼容 | 阻断部署 |
| 安全门禁 | 漏洞、权限、秘密检查 | 阻断或审批例外 |
| 行为门禁 | H3 评估与 H10 回归 | 不进入灰度 |
| 数据门禁 | 迁移、备份、恢复路径 | 暂停发布 |
| 运行门禁 | 健康检查、SLO、告警 | 不扩大流量 |
| 业务门禁 | 关键任务与人工验收 | 保持有限发布 |
模型评估存在统计波动,不能把一次单样本通过当作充分证据。关键行为不变量(如未授权不得发布)应使用确定性测试;报告质量和任务成功率则结合配对样本、置信区间及人工复核。
4.3 部署成功与发布成功的差异
新 Worker 已启动并通过 Readiness,不代表它能正确恢复旧 Checkpoint;新模型 API 可连接,不代表工具调用结构与旧配置兼容;新前端可显示页面,不代表人工审批状态正确。因此发布门禁应包含至少一个真实业务合成任务,但合成任务必须使用测试数据、测试工具和受控预算,避免产生生产副作用。
五、灰度发布、金丝雀与版本绑定
5.1 常见发布策略
**Rolling Update(滚动更新)**逐步替换实例,适合无状态 API 和协议兼容的 Worker;对长时间运行任务,需要确保旧实例能够完成或安全移交任务。
**Blue-Green(蓝绿发布)**维护两套可切换环境,便于流量快速切换,但状态存储和 Schema 兼容仍是共同依赖。不能把“切回旧流量”误认为数据库已回到旧状态。
Canary(金丝雀发布)向少量用户、租户或新任务开放候选版本,观察业务与系统指标后扩大范围。对 Agent System,推荐以新建 Run 的比例或租户/任务类型分流,而不是随意在单个 Run 的执行中途切换 Worker 行为版本。
**Feature Flag(功能开关)**可以控制工具能力、模型路由或新工作流的可见范围;但开关变更同样属于行为配置变更,必须记录作用范围、版本和生效时间。
5.2 长任务的发布原则
一个运行中的 Run 可能在发布前已完成资料检索、等待人工审批,发布后才继续生成报告。若新 Worker 更改了工具参数或状态结构,直接接管可能导致重复工具调用或审批失效。建议:
- Run Pinning:创建 Run 时绑定工作流、Prompt、工具契约及模型策略版本。
- Worker Compatibility:调度器仅将 Run 派给声明支持其状态/协议版本的 Worker。
- Graceful Drain:停止给旧 Worker 分配新任务,允许现有步骤到安全点后持久化状态。
- Migration Gate:跨版本恢复前检查迁移条件;不满足则保留旧执行池或转入人工处置。
- Emergency Override:安全事件时可强制冻结高风险工具或暂停任务,但必须显式记录与普通版本绑定的例外。
5.3 灰度指标不仅是 HTTP 5xx
Agent System 灰度应同时观察:新 Run 成功率、终态比例、任务耗时分布、工具失败率、审批等待时长、每任务总成本、模型错误率、质量评估分数、重复外部操作数、未授权动作阻断数。尤其要区分新版本引入的异常与外部模型供应商自身的波动。
5.4 回滚的四个层面
- 流量回滚:停止新版本接收新任务。
- 代码回滚:恢复上一个可信镜像摘要。
- 行为回滚:恢复上一个 Prompt、模型、工具和工作流配置版本。
- 状态/数据修复:对不兼容 Schema 或已产生的外部副作用执行专门恢复、补偿或人工核查。
前三项通常不能自动完成第四项。对已经发布的报告、发送的邮件或删除的文件,回滚镜像无法撤销外部世界的变化。应使用 H7 的 Operation Ledger、补偿流程和审计证据。
六、运行时生命周期与安全停止
6.1 启动、就绪与存活检查
Startup 用于判断应用是否完成初始化;Readiness 用于判断实例是否可以接收新工作;Liveness 用于判断实例是否处于需要重启的不可恢复状态。三者不可混用:模型供应商短暂不可用时,如果每个 Worker 的 Liveness 都失败,可能触发大规模重启并加剧故障。
API 的 Readiness 可检查本地依赖和必要连接;Worker 的 Readiness 还应考虑是否正在 Drain、是否拥有可用执行能力、是否可领取任务。外部模型供应商异常更适合通过依赖健康指标、熔断和降级处理,而非一律杀死进程。
6.2 优雅终止流程
接到终止信号
-> 将 Worker 标记为 draining
-> 停止领取新任务
-> 当前步骤到达安全中断点
-> 保存 Checkpoint / 操作账本
-> 释放或等待租约到期
-> Flush 必要遥测数据
-> 在终止宽限期内退出终止宽限期必须与实际任务步骤耗时匹配。若工具操作可能无法中断,必须有操作 ID、远端状态查询与恢复后的去重机制。对于容器被强制杀死的情况,系统应依靠持久状态和 Lease/Fencing,而不是依赖 finally 一定执行。
6.3 Worker 伸缩与任务队列
Worker 扩容不能只看 CPU。对于以模型调用和外部工具等待为主的任务,CPU 可能很低,但队列积压和任务延迟很高。常见伸缩信号包括:待执行任务数、队列最老任务等待时间、活跃 Run 数、每类工具并发、模型供应商 RPM/TPM 剩余额度及预算约束。
应按任务类型划分资源池,例如检索任务、模型密集任务、代码执行任务和浏览器任务,避免高耗时工具占满全部 Worker。扩容需要同时满足模型限额、数据库连接上限和成本预算,不能无限放大下游压力。
6.4 计划任务与周期性维护
运维还包括:清理过期临时文件、压缩或归档日志、轮换凭据、校验备份、刷新索引、检查卡死任务、对账模型账单与操作账本。周期性维护任务也必须具备幂等和并发互斥机制,避免多副本重复执行删除或迁移。
七、生产监控、SLO 与值班机制
7.1 三层运行视角
平台健康:实例、网络、数据库、队列、存储、CPU/内存、磁盘、连接数。
执行健康:Run 启动率、完成率、重试次数、Step 延迟、工具失败、模型超时、Checkpoint 恢复、孤儿任务、队列积压。
业务健康:报告按时交付率、人工审批成功率、产物质量门槛通过率、引用可追溯性、每份有效报告成本、重复发布和权限违规次数。
H1 定义观测数据的采集与关联,H11 负责把这些数据转化为仪表盘、告警阈值、响应责任和操作手册。不能以“采集了大量日志”代替“能在事故发生时找到责任人并恢复服务”。
7.2 SLI / SLO 示例
| 指标 | SLI 定义示例 | 适用说明 |
|---|---|---|
| 提交可用性 | 成功接受合法任务的比例 | API 入口 |
| 任务完成率 | 指定时窗内成功终态的比例 | 排除明确用户取消 |
| 交付时效 | 截止时间前交付的任务比例 | 需按任务类型分层 |
| 状态恢复 | 故障后恢复成功的 Run 比例 | 定义恢复时限 |
| 预算合规 | 未超过硬预算的任务比例 | 关注并发预留 |
| 安全约束 | 未授权外部动作发生次数 | 高风险不变量 |
示例 SLO 如“工作日内 99.5% 合法任务提交成功”只是演示目标,并非适用于所有系统的行业标准。真实目标需结合业务容忍度、历史基线、依赖供应商表现和成本决定。对安全关键不变量不能简单用百分比掩盖单次重大事件。
7.3 告警设计与噪声控制
优先对用户可感知的失败、错误预算消耗、持续队列积压、关键数据丢失和外部副作用异常告警。CPU 短时升高或单次模型 429 不一定需要叫醒值班人员。告警必须包含:影响范围、开始时间、Run/Trace 关联、最近发布版本、已知依赖状态、应急操作入口及升级路径。
区分Page(需要立即响应)与 Ticket(可以在工作时间处理)。告警规则需要定期复盘误报、漏报和恢复时间,避免告警疲劳。
7.4 日志与隐私
生产日志不应默认记录完整用户提示词、密钥、私有文档或模型上下文。应采用结构化字段、敏感信息脱敏、采样和分级保留;必要的安全审计记录按单独的访问权限和保留策略管理。调试所需的 Trace 可通过 Run ID 与脱敏事件关联,避免为了排障而扩大敏感数据暴露。
八、故障响应、备份与灾难恢复
8.1 事故响应闭环
检测 -> 分级 -> 指挥与沟通 -> 止损
-> 诊断 -> 恢复 -> 验证
-> 复盘 -> 整改与演练对于 Agent System,事故分级不仅考虑系统不可用,还应考虑:是否发生未授权外部操作、是否泄露用户资料、是否产生错误报告、是否造成重复发布、是否出现预算失控。安全事件与可用性事件可能同时发生,需要明确共同指挥和升级路径。
8.2 Runbook 应包含什么
每类关键告警对应一份可执行 Runbook,至少包含:触发条件、用户影响、依赖关系、排查查询、止损动作、回滚或降级步骤、数据一致性检查、升级联系人、恢复验收与复盘记录位置。示例:模型供应商持续 429 时,先确认配额和流量分布,再限制新 Run 并发、启用有能力约束的备用路由;不应直接将所有请求切到未经质量和数据策略验证的模型。
8.3 RPO、RTO 与恢复对象
**RPO(Recovery Point Objective)**定义可接受的数据损失窗口;**RTO(Recovery Time Objective)**定义业务恢复时间目标。Agent System 应明确不同数据的优先级:任务/审批/操作账本通常比可重新生成的缓存更关键;对象存储中的最终产物可能需要版本化和异地备份;外部服务已执行的副作用不能通过本地数据库恢复自动撤销。
备份策略需要覆盖数据库、对象存储、工作流持久状态、配置发布清单、加密密钥恢复方案和必要审计证据。备份成功的通知不是恢复成功的证据,必须定期在隔离环境演练恢复、校验和重新启动任务。
8.4 恢复时的外部副作用核验
典型故障:Worker 已调用“发布报告”接口,网络响应丢失,数据库未记录成功。恢复后不得立即重试发布。应先根据 operation_id 查询远端发布状态;若远端不支持幂等或状态查询,应将任务标记为 outcome_unknown,转入人工核查或有界补偿流程。操作账本与任务状态恢复的细节见 H4、H7。
8.5 事故复盘
复盘应区分直接故障、促成条件、检测缺口和恢复阻碍,不以“操作人员不够小心”替代系统性分析。需要记录时间线、影响任务数、用户影响、数据与外部副作用、恢复决策、证据链接,以及具备负责人和截止时间的整改项。
九、安全运维与生产访问控制
9.1 生产权限与职责分离
开发者不应默认拥有全部生产数据库、工具密钥和用户文档的访问权限。采用角色与资源范围限制:发布操作员可部署签名制品,但不必读取用户原始数据;值班人员可暂停任务和查询脱敏 Trace,但高风险数据导出需要额外审批;Agent Worker 只获得其任务必需的工具权限。
紧急访问(Break-glass)需要限定时长、记录理由、强制审计和事后复核。应避免共享管理员账号及永久高权限密钥。
9.2 秘密与证书轮换
凭据轮换需要考虑运行中的长任务。建议通过短期凭据、运行时凭据获取和可重试的认证失败处理减少长期暴露。轮换流程应包括新旧凭据并存窗口、验证、切换、撤销与审计;对第三方供应商不支持双密钥的情况,安排维护窗口并设计失败恢复。
9.3 供应链与运行环境加固
使用可信基础镜像、定期补丁、最小权限容器、只读根文件系统(可行时)、受限网络出口和隔离的工具沙箱。对可执行代码、浏览器和下载文件采取更严格的资源与网络限制。镜像扫描不能替代运行时策略;生产环境的外部依赖变化也可能引入新的风险。
9.4 变更审计
每次发布、配置变更、紧急暂停、权限提升、数据迁移和恢复操作,应能追溯操作者、时间、对象、原因、审批、变更前后版本和验证结果。审计记录应防篡改并受限访问,保留期限由业务与适用法规共同决定。
十、容量规划、性能与成本运营
10.1 Agent 的容量不只由 QPS 决定
单个任务可能连续调用多次模型、并行检索、执行代码并等待人工审批。容量模型需要分解为:
- 到达率:单位时间新增任务数及峰值分布。
- 服务需求:每任务模型调用次数、工具耗时、CPU/内存和外部 API 请求数。
- 并发:同时活跃的 Run、模型请求、工具会话及审批等待任务。
- 约束:模型 RPM/TPM、数据库连接、队列吞吐、预算和工具供应商配额。
- 长尾:失败重试、慢模型响应、外部工具卡顿和人工等待。
Little's Law 在稳定系统且统计口径一致时给出 L = λW,可帮助估计系统平均在途任务数,但不直接证明峰值容量,也不适用于无限积压或非稳态负载。需结合负载测试与排队延迟分布校准。
10.2 扩缩容策略
API 主要根据请求延迟、并发和资源利用率扩容;Worker 可根据队列等待时间、待执行 Step、租约数量和下游配额扩容;浏览器/代码执行器按沙箱资源和并发上限单独控制。缩容前先 Drain,避免大量任务被强制重试。
对模型供应商限流,应优先采用准入控制和背压;盲目增加 Worker 往往只会增加 429 和重试成本。H8 Resource Management 负责预算和计量,H11 负责把这些约束转化为生产容量策略和告警。
10.3 单位有效产物成本
推荐按有效完成任务核算总成本,而不是仅按 Token 单价评估。成本范围包括模型调用、工具服务、计算、存储、日志、重试、人工审核和事故恢复。灰度发布时若候选版本降低了单次模型成本却提高了返工率,整体成本可能上升。
十一、研究报告 Studio:可实施的生产交付方案
11.1 推荐的第一版生产架构
对早期研究 Studio,建议优先采用:托管 PostgreSQL + 对象存储 + 独立 API 容器 + 独立 Worker 容器 + 可靠任务队列或工作流服务 + 模型/工具网关 + 集中式遥测。只有当任务量、隔离和部署需求明确时,再考虑更复杂的 Kubernetes 多集群方案。
第一版必须具备:持久任务状态、Run/Release 版本绑定、工具执行授权、预算上限、人工审批、幂等操作账本、日志关联、数据库备份、故障后任务恢复及可执行回滚流程。这些比“使用多少微服务”更能决定能否安全投入使用。
11.2 从开发到生产的十步实施路径
第 1 步:定义生产契约。 明确用户、租户、数据类别、任务类型、允许的外部工具、最大任务时长、质量要求、SLO、预算与责任人。
第 2 步:建立部署单元。 API、Worker、工具执行环境与状态存储分离;定义进程启动、停止、健康检查和资源限制。
第 3 步:实现持久化执行。 Task/Run/Step、Checkpoint、审批与操作账本写入权威存储,验证 Worker 崩溃后恢复。
第 4 步:建立版本清单。 记录代码、Prompt、Workflow、模型策略、工具契约和 Schema 版本;新 Run 绑定快照。
第 5 步:建立 CI。 执行单元、契约、安全和关键行为测试,生成可追溯镜像和发布记录。
第 6 步:部署预发布环境。 使用测试账户、测试工具和独立数据;运行完整研究任务,验证审批与产物交付。
第 7 步:完成运维基础。 仪表盘、告警、Runbook、备份恢复演练、密钥轮换、成本对账与事故联系人。
第 8 步:内部灰度。 仅向内部新 Run 开放候选版本,观察任务成功率、质量、延迟、成本和工具异常。
第 9 步:逐级扩展。 按租户、任务类型或新 Run 百分比扩大流量;遇到指标劣化自动或人工停止放量。
第 10 步:持续运营。 定期复盘故障、清理数据、检查配置漂移、验证恢复、更新兼容矩阵与发布门禁。
11.3 典型故障演练
| 场景 | 注入方式 | 必须验证 |
|---|---|---|
| Worker 崩溃 | 强制终止容器 | Run 可恢复且不重复副作用 |
| 模型限流 | 模拟持续 429 | 背压、重试预算、告警 |
| 数据库短断 | 阻断连接 | 状态不丢失、不错误确认 |
| 发布响应丢失 | 丢弃远端响应 | 操作结果查询与去重 |
| 灰度质量下降 | 注入低质量候选 | 停止放量、回退新 Run |
| Schema 不兼容 | 旧状态交给新 Worker | 拒绝错误恢复或安全迁移 |
| 对象存储故障 | 暂停上传 | 产物状态不虚报完成 |
| 审批期间升级 | 旧 Run 等待审批 | 版本绑定与权限再校验 |
| 预算耗尽 | 并行任务争抢预算 | 原子预留、拒绝超支 |
| 区域性故障 | 隔离主要依赖 | RPO/RTO 与人工处置 |
测试必须在隔离环境执行。对于真实外部发布、删除和敏感数据操作,采用测试端点与可撤销资源,避免演练本身造成生产损失。
十二、部署与运维的关键反模式
12.1 “容器启动成功,所以系统可用”
只检查 Pod Ready 或 HTTP 200,会遗漏数据库迁移错误、工具权限失效、模型能力变化和长任务恢复失败。应补充端到端合成任务及关键状态验证。
12.2 “所有 Agent 共用一个进程,扩容最方便”
单进程可以用于 MVP,但高风险工具、长任务和 API 争抢资源时,应按负载与权限边界拆分。也不应为了形式上的架构完整性强制拆成大量服务。
12.3 “滚动更新自动解决长任务迁移”
滚动更新管理的是实例替换,不负责迁移 Agent Run 的状态语义。需要 Drain、Checkpoint、版本兼容和旧 Worker 保留策略。
12.4 “切回旧镜像就是回滚”
旧镜像未必能读取新 Schema;已发生的外部操作也不会撤销。必须将代码、配置、状态和外部副作用分别处理。
12.5 “无限重试能够提升成功率”
模型供应商限流、数据库故障或工具不可用时,无限重试会放大流量与成本。需要 Deadline、重试预算、熔断、背压和可见的失败终态。
12.6 “开发环境数据可以直接复制到预发布”
真实用户资料、生产密钥和外部工具权限可能造成泄露或误操作。应使用合成/脱敏数据、独立账户和严格出口控制。
12.7 “有监控平台就等于具备运维能力”
没有 SLO、告警分级、Runbook、值班责任、恢复演练和事故复盘,监控数据无法可靠转化为行动。
十三、生产就绪验收清单
以下清单可作为项目发布评审的最小框架;具体门槛由风险级别和业务要求决定。
| 验收领域 | 最低可验证要求 |
|---|---|
| 制品 | 可追溯 Commit、镜像摘要、依赖清单 |
| 配置 | Run 绑定行为配置与工作流版本 |
| 数据 | 迁移可回退或有明确补救方案 |
| 安全 | 凭据隔离、工具最小权限、审计 |
| 执行 | Worker 崩溃后可恢复任务 |
| 副作用 | 发布等操作可去重或人工核验 |
| 灰度 | 可限制新 Run 流量并停止放量 |
| 回滚 | 代码、配置、状态分别有处置方案 |
| 观测 | Run/Trace 关联、业务指标与告警 |
| 容量 | 已测峰值、队列、下游配额与预算 |
| 灾备 | 备份恢复演练、RPO/RTO 记录 |
| 组织 | 值班、升级、Runbook 与事故复盘 |
13.1 生产发布的最小决策记录
每次正式发布至少保存:发布 ID、负责人、变更范围、候选制品摘要、配置版本、数据迁移、测试与评估结果、风险及例外、灰度范围、放量指标、回滚触发条件、最终决策与时间戳。对多 Agent 系统,还应能按 Run ID 反查其实际使用的发布版本。
13.2 不同成熟度的实施优先级
MVP 阶段:优先实现状态持久化、独立凭据、基本监控、自动备份、手动回滚和受控外部工具。
初期生产阶段:增加 CI/CD、发布清单、灰度、Worker Drain、预算管理、事故响应和恢复演练。
规模化阶段:增加多租户隔离、自动扩缩容、策略化发布、完整供应链证明、容量预测和跨区域恢复能力。成熟度取决于真实需求与验证证据,不由 Kubernetes、服务数量或架构图复杂度决定。
研究结论
第一,Agent System 的发布单元必须同时包含代码、行为配置和状态兼容关系。 只固定容器镜像,无法保证 Prompt、模型策略、工具协议与旧任务状态在升级后保持一致。应使用可追溯的 Release Manifest 和 Run Pinning。
第二,长时间运行的 Agent Run 是部署设计的核心约束。 API 可以无状态滚动升级,但 Worker 需要安全停止、持久化恢复、租约保护和兼容性调度。发布策略应优先面向“新建 Run”分流,而不是无条件修改运行中的任务。
第三,部署、发布与回滚是不同动作。 部署让制品运行;发布控制用户和任务使用范围;回滚需要分别处理流量、代码、配置、持久状态与外部副作用。尤其不能将镜像回滚等同于撤销真实世界中的操作。
第四,生产运维必须同时观察平台、执行与业务三个层次。 CPU、HTTP 状态码和容器健康不能独立证明 Agent 正确完成任务。必须追踪任务成功率、产物质量、执行时效、成本、审批与安全不变量。
第五,可靠的运维能力依赖可执行的组织流程。 告警、Runbook、值班责任、备份恢复演练、事故复盘和变更审计是生产系统的一部分,而不是上线后的附加工作。
第六,平台复杂度应与风险和规模匹配。 对研究报告 Studio,API/Worker 分离、托管状态存储、可恢复执行和可控灰度,通常比一开始建设复杂多集群平台更有实际价值。
与后续专题的关系: 「H12 · 如何制定和执行 Agent System 的治理策略? - Policy & Governance」 将把本篇涉及的审批、例外、责任、控制与审计要求提升为组织级、可执行的治理规则。
附录 A:参考文献与原始资料
以下以官方原始资料为主。链接用于支撑相关机制与术语;具体产品版本、默认行为及接口字段应在实施时再次核对。
- [R1] Kubernetes, Deployments(声明式部署与滚动更新):kubernetes.io/docs/concepts/workloads/controllers/deployment/
- [R2] Kubernetes, Pod Lifecycle(容器生命周期、终止与状态):kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/
- [R3] Kubernetes, Configure Liveness, Readiness and Startup Probes(健康检查语义):kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
- [R4] Kubernetes, Horizontal Pod Autoscaling(自动扩缩容):kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
- [R5] Kubernetes, Secrets(敏感配置存储与注意事项):kubernetes.io/docs/concepts/configuration/secret/
- [R6] Docker, Build best practices(容器构建与镜像实践):docs.docker.com/build/building/best-practices/
- [R7] GitHub, Understanding GitHub Actions(CI/CD 工作流概念):docs.github.com/en/actions/about-github-actions/understanding-github-actions
- [R8] SLSA, Specification(软件供应链来源与构建证明):slsa.dev/spec/
- [R9] CycloneDX, Specification(软件物料清单):cyclonedx.org/specification/overview/
- [R10] Google, Site Reliability Engineering(SLO、错误预算、运维实践):sre.google/sre-book/table-of-contents/
- [R11] Google, Site Reliability Workbook(SLO、告警、发布与应急响应):sre.google/workbook/table-of-contents/
- [R12] OpenTelemetry, Documentation(指标、日志、Trace):opentelemetry.io/docs/
- [R13] Temporal, Worker Versioning(长工作流与 Worker 版本):docs.temporal.io/production-deployment/worker-deployments/worker-versioning
- [R14] Temporal, Production Deployment(工作流平台生产部署):docs.temporal.io/production-deployment
- [R15] PostgreSQL, Backup and Restore(备份恢复机制):www.postgresql.org/docs/current/backup.html
- [R16] PostgreSQL, Transaction Isolation(并发与事务一致性):www.postgresql.org/docs/current/transaction-iso.html
- [R17] AWS, Reliability Pillar - AWS Well-Architected Framework(可靠性、恢复与架构):docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/welcome.html
- [R18] NIST, Computer Security Incident Handling Guide(安全事件响应参考;需注意修订状态):csrc.nist.gov/pubs/sp/800/61/r2/final
- [R19] OpenAI, Production best practices(模型 API 生产实践):platform.openai.com/docs/guides/production-best-practices
- [R20] LangGraph, Persistence(Agent 图状态持久化与恢复):docs.langchain.com/oss/python/langgraph/persistence
证据映射: 容器部署、生命周期、健康检查与伸缩参考 [R1] - [R5];构建和供应链参考 [R6] - [R9];SRE、告警与运行机制参考 [R10] - [R12];长任务版本兼容参考 [R13][R14][R20];数据库恢复参考 [R15][R16];可靠性与事故响应参考 [R17][R18];模型 API 生产注意事项参考 [R19]。本文的 Studio 参考架构、十步实施路径、发布清单和验收矩阵属于对这些机制的工程综合设计,并非某一官方文档的原样规定。
附录 B:研究证据、验证声明与适用边界
B.1 本次实际完成的工作
- 结构性校验: 检查了正式目录名称、七项元数据、专题导读、研究结论、两个固定附录及 Markdown 代码块配对。
- 机制交叉核对: 将发布、长任务版本绑定、状态恢复、外部副作用和可观测性分别映射到 L1 - L2 - L3 - L4 - L5 - L6、H1、H4、H5、H7、H8、H10 的职责边界。
- 案例推演: 为研究报告 Studio 提供生产拓扑、发布清单、实施步骤、故障演练和验收标准。
B.2 尚未完成的验证
本文没有执行真实 Kubernetes 集群部署、CI/CD 流水线、镜像签名、数据库迁移、Worker Drain、生产灰度、跨区域故障切换或真实外部工具发布。示例 YAML 是概念性数据结构,不保证可直接提交给具体平台。文中示例 SLO、发布比例和流程为设计建议,不是经生产测量得出的指标。
B.3 适用边界与维护建议
本文适用于具有持久任务、模型调用、工具执行、外部系统集成和人工审批的 Agent System。纯本地单 Agent 实验可以显著简化部署流程;涉及金融、医疗、关键基础设施或受监管数据的系统,需要增加相应法规、行业认证、第三方审计和更严格的恢复与访问要求。
模型供应商、Kubernetes、Temporal、LangGraph 等产品持续演进。实施时应固定实际使用的版本,并核对官方文档与兼容性矩阵。特别是 Worker Versioning、模型接口、健康检查参数和平台默认配置,不应仅凭本文进行生产变更。
下一篇: 「H12 · 如何制定和执行 Agent System 的治理策略? - Policy & Governance」。