设想你是一家连锁餐厅的后厨总管。厨房里几十位厨师各怀绝技:有人擅长川菜,有人精于甜点,还有人专门负责备料。可你很快发现后厨乱成一团——老厨师退休时菜谱锁在抽屉里再也找不见;新厨师不经培训就上手,把招牌菜做得味道飘忽;同一道菜在不同分店完全不一样,因为各自改配方却没人记录。你意识到,缺的不是好厨师,而是一套从入职到退休的「人事制度」。 AI Agent 的运维,就是给这些“数字厨师”立规矩的学问。当一家公司的 Agent 从几个增长到几百个,谁在运行、谁该升级、谁该退役、依赖了什么、改一处会不会炸一片——这些都需要一套全流程的治理体系。本文就用后厨管理的视角,带你走一遍 Agent 从创建到退役的完整生命周期。

岗位关联

掌握 Agent 生命周期管理,你将从「能跑就行」的临时运维,成长为能对生产级 Agent 集群负责的 AgentOps 工程师——这是 AI 运维团队的核心基本功。

目录
  1. 可视化演示
  2. 生命周期全景
  3. 创建初始化
  4. 版本管理
  5. 环境管理
  6. 依赖追踪
  7. 退役策略
  8. 运维制度
  9. 可维护性设计
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

动态演示Agent生命周期管理的核心机制,通过基础/核心/应用/扩展四种模式展示关键概念与交互流程。

本节配有交互动效(进入视口后自动加载,约 3KB)。

Agent生命周期管理:Agen Agent生命周期阶段定义与流 Agent版本管理与配置追踪 核心机制可视化 Agent生命周期管理整体架构与关键组件

生命周期全景

你是一家连锁餐厅的后厨总管,厨房里几十位厨师——也就是一个个 Agent——各怀绝技:有负责推荐菜品的、有处理退款的、有做内容审核的。上任第一天你就发现:老厨师退休时菜谱锁在柜子里再也找不见;新厨师不培训就上手,把招牌菜做得味道飘忽;同一道菜在不同分店完全不一样,因为各自改配方却没人记录。你意识到,缺的不是好厨师,而是一套从入职到退休的「人事制度」。

在 AI 工程化里,Agent 不是写完提示词就一劳永逸的程序。它上线后会经历创建、运行、升级、退役四个阶段,每个阶段都有截然不同的运维任务。AgentOps 团队的角色正是这个后厨总管:把每个 Agent 从「出生」管到「退休」,保证它随时可服务、可追溯、可替换。

生命周期全景图是所有后续治理动作的地图。创建阶段要登记注册,运行阶段要监控健康,升级阶段要灰度发布与回滚,退役阶段要摘流量与归档。为了让状态可以被机器理解和枚举,工程上通常用集合语言描述阶段全集:

有了这张全景图,后厨的每个角落都有了坐标:谁在哪个阶段、下一步该去哪里,一目了然。接下来,我们像为新厨师办入职一样,走进第一个阶段——创建初始化。

L={创建, 运行, 升级, 退役}L = \{ \text{创建},\ \text{运行},\ \text{升级},\ \text{退役} \}
L 是生命周期全集,花括号内四个元素对应四个典型阶段。它像后厨的「人员名册」:每一位数字厨师必须且只能处于其中一个状态,状态之间按规则流转。
  1. L 代表生命周期全集用一个字母概括 Agent 从诞生到消亡的所有可能状态,方便在代码和文档中统一引用。
    LL
  2. 花括号定义集合花括号把多个元素装进一个整体,表示这些状态是并列关系,机器可以逐一枚举。
    { }\{ \ \}
  3. 四个阶段元素创建、运行、升级、退役是四个核心状态,实际系统中升级常被拆分为「变更中」「审核中」等子状态。
    创建, 运行, 升级, 退役\text{创建},\ \text{运行},\ \text{升级},\ \text{退役}
  4. 逗号与空格分隔元素集合内用逗号分隔元素,保证状态机可以按顺序识别和流转。

创建初始化

一位新厨师入职,不能直接把他推进灶台。后厨总管要先做三件事:问清他擅长什么菜系(角色定位)、把刀工火候的要求写成岗位说明书(配置)、在员工花名册上登记编号发工牌(注册)。这三件事没做完,这位厨师就不算「正式员工」。

Agent 的创建初始化同样如此。第一步是需求定义:这个 Agent 扮演什么角色?目标是完成什么任务?允许调用哪些工具?不允许触碰哪些数据?这些约束就像厨师的工作职责边界,定义不清,后面所有环节都会跑偏。第二步是生成配置清单,包括所用模型、温度参数、工具权限、超时阈值等,全部固定成一份可版本化的配置文件。第三步是在 Agent 注册中心登记,获得唯一 ID 和元数据档案。

工程上,配置完整率是创建阶段最重要的质量关卡。它衡量「该填的配置项填齐了多少」:

入职手续办妥,新厨师才能上岗。但上岗只是开始——厨师会不断改良菜谱,Agent 也会不断升级,这就到了版本管理的地界。

C完整率=N已配置N必需×100%C_{\text{完整率}} = \frac{N_{\text{已配置}}}{N_{\text{必需}}} \times 100\%
配置完整率等于已配置项数量除以必需配置项数量再乘以 100%。低于 100% 的 Agent 不应进入运行环境,就像没填完入职表的厨师不能进后厨。
  1. C 表示配置完整率字母 C 代表 Completeness(完整),用来量化创建初始化的完成程度。
    C完整率C_{\text{完整率}}
  2. 分子 N 已配置N 表示数量(Number),下标「已配置」指这份 Agent 配置清单里已填好的项数。
    N已配置N_{\text{已配置}}
  3. 分母 N 必需下标「必需」指根据角色定义应该配置的必填项总数,如模型、工具权限、超时时间。
    N必需N_{\text{必需}}
  4. 乘以 100% 转为百分比把比值放大为百分制,方便与 95%、99% 之类的质量红线直接比较。
    ×100%\times 100\%

版本管理

后厨最忌讳的事,是厨师想起什么就随手改配方,也不告诉别人。今天这道菜咸了,明天这道菜甜了,客人投诉时你根本不知道是哪一版菜谱出的问题。成熟的后厨会给菜谱写版本号:v1.0.0 是稳定版,v1.1.0 是微调版,v2.0.0 是换主料的大改版——每一版都有记录,随时能退回。

Agent 的「菜谱」就是它的提示词、工具配置和参数。版本管理的核心是语义化版本号,格式为「主版本。次版本。修订号」。主版本号变化意味着行为不兼容,比如换了底层的对话模型;次版本号变化表示在兼容基础上新增了能力;修订号则是修 bug 或微调措辞。每个版本必须关联变更记录,写清楚「改了什么、为什么改、谁改的」。

有版本还不够,上线要稳。新菜谱不能直接端给所有客人,得先在后厨试菜间——也就是灰度环境里小范围放量验证,确认没问题再逐步扩大到全量;一旦发现异常,一键回滚到上一个稳定版。灰度发布与回滚机制,是版本管理的双保险。

V=M.m.pV = M.m.p
版本号 V 由三段组成:M 是主版本(Major),m 是次版本(Minor),p 是修订号(Patch)。三段用点号连接,含义从「破坏性变更」到「兼容性修复」逐级递减。
  1. V 表示完整版本号版本号是 Agent 配置快照的「指纹」,同一版本号的 Agent 行为应当一致。
    VV
  2. M 主版本Major 首字母,发生不兼容变更时加一,如行为逻辑重写、底层模型更换。
    MM
  3. m 次版本Minor 首字母,新增兼容能力时加一,如增加一个新的工具调用。
    mm
  4. p 修订号与点号Patch 首字母,修复小问题时加一;点号将三段隔开,构成可解析的版本字符串。
    pp

环境管理

后厨通常分三块区域:试菜间(开发环境)、验收台(测试环境)、正式灶台(生产环境)。在试菜间里用电磁炉试出来的菜,换到正式灶台的猛火上可能就糊了。聪明的总管会规定:所有菜必须先在试菜间做通,再到验收台由质检试吃,最后才能上正式灶台。

Agent 的环境管理同理。开发环境随意改、测试环境做验证、生产环境跑真实流量,三者必须物理和逻辑双重隔离,否则一个环境的抖动会沿着共享资源传染到另一个。负责 Agent 的运维团队最怕听到一句话:「在我这里明明是好的呀!」——这通常就是开发与生产配置不一致导致的。

Δ配置=∣C开发−C生产∣\Delta_{\text{配置}} = | C_{\text{开发}} - C_{\text{生产}} |

1. Δ 代表配置偏差:希腊字母 Δ(Delta)表示差异,用于量化两套环境配置文件的偏离程度。

Δ配置\Delta_{\text{配置}}

2. 绝对值符号:竖线取绝对值,保证偏差始终是非负数,只关心「差多少」而不关心谁大谁小。

∣ ∣| \ |

3. C 下标开发:C 代表 Configuration(配置),下标「开发」是开发环境的配置集合。

C开发C_{\text{开发}}

4. C 下标生产:下标「生产」是生产环境的配置集合,两者相减再取绝对值即得偏差量。

C生产C_{\text{生产}}

配置迁移要像传菜一样有固定的流程:从低环境向高环境单向推进,密钥、模型 ID、调用地址统一由配置中心下发,而不是靠人肉复制粘贴。每迁一次就做一次一致性校验,确保「试菜间的味道」就是「正式灶台的味道」。

依赖追踪

一道酸菜鱼,依赖鱼、酸菜、辣椒、食用油,还依赖燃气灶和排风系统。食材供应商换了配方,或者燃气公司限压,整道菜的味道就全变了。后厨总管必须清楚每道菜的供应链路,才能在断货或改配方之前,提前知道哪些菜会受影响。

Agent 从不是孤立运行的。它依赖底层大模型 API、外部工具接口、知识库、甚至另一个 Agent 的输出。想象一个客服 Agent,它调用了订单查询工具,而订单查询工具又依赖库存数据库——这条链路就是它的「供应链」。当底层大模型从 v1 升级到 v2,或者某个工具接口调整了参数格式,所有依赖它的 Agent 都可能出错。

要算出影响半径,先得有依赖清单和血缘图谱。依赖清单记录「我依赖什么」,血缘图谱刻画「谁依赖我」,两者加在一起,才能在一次变更发生前圈定爆炸半径,提前通知相关方或安排灰度。

R影响半径=N受影响N全部×100%R_{\text{影响半径}} = \frac{N_{\text{受影响}}}{N_{\text{全部}}} \times 100\%
影响半径 R 等于受某个上游变更影响的 Agent 数除以关联全部 Agent 数。它像后厨的「停菜预警」:燃气一断,受影响的是所有需要猛火的菜。
  1. R 表示影响半径R 代表 Radius(半径),量化一次上游变更会波及多大范围的 Agent 群体。
    R影响半径R_{\text{影响半径}}
  2. 分子 N 受影响指被变更影响的 Agent 数量,比如底层模型升级后不再兼容的那些。
    N受影响N_{\text{受影响}}
  3. 分母 N 全部指依赖该上游组件的 Agent 总数,包括未受影响的。
    N全部N_{\text{全部}}
  4. 乘以 100% 转为百分比将比例归一化为百分数,便于设置预警阈值,如超过 30% 就触发全量排查。
    ×100%\times 100\%

退役策略

再好的厨师也有退休的一天。后厨总管最担心的不是退休本身,而是「突然消失」:一位掌勺二十年的老师傅某天不来了,招牌菜没人会做,老顾客都跑了。所以成熟的后厨规定:退休前要有交接期,教出徒弟、交出菜谱、办完欢送会才算体面离场。

Agent 同样有退役需求:健康度持续走低、新版本完全替代、维护成本高于重建成本——这些情况都该触发退役评估。退役的第一步是摘除流量,让新请求不再路由到它,但保留旧请求处理完;第二步是数据归档,把日志、配置、版本记录、依赖关系打包存入归档库,以备审计和追溯;第三步才是真正下线释放资源。整个过程像一场有序的交接,而不是一场仓促的消失。

当数字厨师的健康度跌破红线,就要启动体面的「退休流程」:先摘流量、再归档、最后下线。而这一切能否执行得干净利落,取决于运维制度是否健全。

S健康=w1A+w2P+w3QS_{\text{健康}} = w_1 A + w_2 P + w_3 Q
健康度评分 S 由三项指标加权求和得到:A 是可用性,P 是性能,Q 是任务质量,权重 w₁、w₂、w₃ 之和为 1。当 S 持续低于退役阈值 θ 时,就进入退役评估流程。
  1. S 表示健康度评分健康度是退役决策的核心输入,像厨师每季度的综合考评分数。
    S健康S_{\text{健康}}
  2. w 为各项权重w₁、w₂、w₃ 分别表示可用性、性能、质量在总评中的重要性,三者相加等于 1。
    w1, w2, w3w_1,\ w_2,\ w_3
  3. A 可用性、P 性能、Q 质量可用性是 Agent 能正常响应服务的时间占比,性能是响应延迟与吞吐,质量是回答正确率或任务完成率。
    A, P, QA,\ P,\ Q
  4. 加权求和每项得分乘以对应权重再累加,得到一个 0 到 100 的综合分数,直接与退役阈值比较。
    w1A+w2P+w3Qw_1 A + w_2 P + w_3 Q

运维制度

后厨光有好人好事还不够,得把规矩写进员工手册。新厨师入职要看手册,晋升要过评审,食品安全检查要留记录,每个人该向谁汇报、该审批什么都写在纸面上。没有制度的人治后厨,全靠总管一双眼睛盯,迟早出乱子。

Agent 生命周期的运维制度包括四块基石。第一是生命周期策略:把「什么 Agent 能创建、什么能升级、什么该退役」写成策略代码(Policy as Code),让系统自动执行而不是靠人拍脑袋。第二是审批流程:重大版本升级、退役、跨环境迁移都要经过变更评审,留下审批人和理由。第三是审计合规:所有操作记录归档,支撑监管查询和数据溯源。第四是团队协作:明确开发、运维、业务方各自的职责边界。

在这些制度背后,有一个度量运维质量的经典指标——系统可用性:

制度不是用来束缚人的,而是让团队里每个人都知道:遇到问题该找谁、做什么、留什么痕迹。制度健全的后厨,即使总管休假一个月,厨房照样井井有条。

U可用性=TMTBFTMTBF+TMTTR×100%U_{\text{可用性}} = \frac{T_{\text{MTBF}}}{T_{\text{MTBF}} + T_{\text{MTTR}}} \times 100\%
可用性 U 等于平均无故障时间除以平均无故障时间与平均修复时间之和。它回答了一个朴素问题:后厨一年 365 天里,真正能正常出菜的比例有多高?
  1. U 表示系统可用性可用性是运维制度成效的「体检报告」,越高代表 Agent 越值得信赖。
    U可用性U_{\text{可用性}}
  2. MTBF 平均无故障时间Mean Time Between Failures,故障间隔的平均时长,代表 Agent「健康持续期」。
    TMTBFT_{\text{MTBF}}
  3. MTTR 平均修复时间Mean Time To Repair,从故障发现到恢复的平均时长,代表团队「抢救速度」。
    TMTTRT_{\text{MTTR}}
  4. 比值与 100%MTBF 除以两者之和,再放大为百分比。MTTR 越小、MTBF 越大,可用性越接近 100%。
    ×100%\times 100\%

可维护性设计

最后一块拼图,是让接手的后人不至于抓狂。总厨发现,前任留下的菜谱术语混乱:有人写「辣椒」、有人写「海椒」,同一个菜谱在三个地方有三个版本,看的人只能靠猜。于是新规定:每道菜谱必须有统一命名、必须配说明文档、每周必须试菜体检一次。

Agent 的可维护性设计也落在三件事上。首先是命名规范:规定 Agent ID 的格式,比如「项目-业务线-功能-版本」,让运维人员看到名字就知道它是谁、归谁管、干什么的。其次是文档化:每个 Agent 要有 README,写清角色定义、配置说明、依赖清单、已知问题和联系负责人;人员流动时,文档就是「交接菜谱」。最后是健康检查:为每个 Agent 配置探针和心跳机制,定时探测它是否存活、响应是否正常,异常时自动告警。

当命名有规矩、文档成体系、健康有探针,一个几百人规模的后厨团队才能长期运转而不崩坏。可维护性不是写给现在的自己看,而是写给半年后那个焦头烂额、深夜排查问题的接班人。

D覆盖率=N有文档N全部×100%D_{\text{覆盖率}} = \frac{N_{\text{有文档}}}{N_{\text{全部}}} \times 100\%
文档覆盖率 D 等于已配备完整文档的 Agent 数除以 Agent 总数。它是可维护性设计的底线指标,行业中通常以 90% 为及格线。
  1. D 表示文档覆盖率Documentation Coverage,记录「有多少数字厨师留下了交接菜谱」。
    D覆盖率D_{\text{覆盖率}}
  2. 分子 N 有文档已拥有命名规范达标、说明完整、依赖清单更新的 Agent 数量。
    N有文档N_{\text{有文档}}
  3. 分母 N 全部当前生命周期内的全部 Agent 数量,无论运行中还是退役中。
    N全部N_{\text{全部}}
  4. 乘以 100% 转为百分比换算为百分制后,可直接纳入团队的 DoD(完成定义)和质量考核。
    ×100%\times 100\%

AI 应用场景

场景一:促销季营销 Agent 的批量退役治理

阶段:退役管理

解决的问题:某电商平台每次大促都会临时创建上百个商品推荐 Agent。过去活动结束后它们仍占用 GPU 算力和 API 配额,甚至在大促和平峰期互相抢流量。传统做法靠运维逐个手工下线,经常漏掉,还容易误删仍在服务的 Agent。

具体案例:平台接入 AgentOps 生命周期平台后,所有促销 Agent 创建时自动带上过期时间标签。大促结束当晚,系统依据健康度评分和过期策略圈定退役名单,先摘除流量、再归档日志、最后释放资源,全程自动生成退役报告供审计。运维团队从「熬夜删 Agent」变成「睡醒看报告」。

场景二:底层大模型升级引发的依赖修复

阶段:依赖追踪与版本管理

解决的问题:基础模型厂商发布新版本后,企业内部数百个 Agent 的提示词和参数可能不兼容。传统的排查方式是让各业务团队自查,来回扯皮半个月,还有遗漏风险。

具体案例:某金融公司用依赖血缘图谱自动圈定受影响 Agent 清单,按影响半径排序分批灰度升级。升级过程中发现某风控 Agent 的行为偏差,立即触发版本回滚,老版本继续对外服务,全程无感知。事后审计记录了每个 Agent 的旧版本、新版本和回滚原因。

场景三:金融场景的 Agent 合规审计

阶段:审计合规

解决的问题:监管机构要求金融机构能够解释每个智能服务 Agent 的版本、数据流向和变更历史。人工整理既慢又容易出错,且无法证明数据未被篡改。

具体案例:合规团队直接调取 Agent 生命周期档案,看到每个 Agent 从创建时的需求定义、每次版本变更的审批记录、依赖的模型和数据集、以及退役时的数据归档清单。审计材料从「攒两周」缩短到「一键导出」,并且每一笔操作都有不可抵赖的时间戳。

Python 演示

python54 行
from dataclasses import dataclass  @dataclassclass Agent:    agent_id: str    version: str    env: str    health: float = 100.0    status: str = "created"  class LifecycleManager:    def __init__(self) -> None:        self.registry_map: dict[str, Agent] = {}     def register(self, agent: Agent) -> None:        agent.status = "running"        self.registry_map[agent.agent_id] = agent        print(f"[注册] {agent.agent_id} 进入运行态,环境={agent.env}")     def upgrade(self, agent_id: str, new_version: str) -> None:        agent = self.registry_map[agent_id]        old_version = agent.version        agent.version = new_version        print(f"[升级] {agent_id}: {old_version} -> {new_version}")     def health_check(self, agent_id: str) -> float:        agent = self.registry_map[agent_id]        agent.health = max(0.0, agent.health - 6.0)        return agent.health     def retire(self, agent_id: str, threshold: float = 60.0) -> None:        agent = self.registry_map[agent_id]        if agent.health < threshold:            agent.status = "retired"            print(f"[退役] {agent_id} 健康度 {agent.health:.1f} 低于阈值 {threshold}")        else:            print(f"[保留] {agent_id} 健康度 {agent.health:.1f} 仍高于阈值")  def main() -> None:    manager = LifecycleManager()    agent = Agent(agent_id="A001", version="1.0.0", env="prod")    manager.register(agent)    manager.upgrade("A001", "1.1.0")    for _ in range(12):        if manager.health_check("A001") < 60.0:            break    manager.retire("A001")  if __name__ == "__main__":    main()
目的:用一个极简的生命周期管理器模拟 Agent 从注册、升级、健康检查到退役的全流程,直观演示注册中心、版本号、健康阈值这三个核心概念如何协作。
  1. manager = LifecycleManager()创建生命周期管理器,它内部维护一个注册中心字典。
  2. self.registry_map: dict[str, Agent] = {}注册中心用字典保存所有 Agent,Agent ID 是唯一主键。
  3. manager.register(agent)把 Agent 登记进注册中心,状态从 created 变为 running。
  4. manager.upgrade("A001", "1.1.0")按语义化版本号升级,仅修改版本字段,不中断服务。
  5. manager.health_check("A001")模拟一次健康检查,每次调用健康度衰减 6 分。
  6. if manager.health_check("A001") < 60.0:检测到健康度跌破退役阈值 60,提前结束巡检循环。
  7. manager.retire("A001")触发退役流程,健康度不足则状态置为 retired,否则保留观察。

常见误区

误区我刚把 Agent 调通上线,效果很好啊。不是说大模型会自己学习吗?那它应该越用越聪明,根本不需要我管,为什么要搞生命周期管理这套麻烦事?

正解大模型本身不会在生产环境中自动进化,反而会「腐化」:上游 API 悄悄变了参数格式、知识库过期、依赖工具调整了响应结构,都可能让 Agent 从「好用」变成「乱来」。生命周期管理不是为了对付刚上线的 Agent,而是为了应对上线三个月后那个悄悄变味的它。就像菜谱不会自己改良,但食材、火候、客人口味都在变。

为何常见:开发阶段的 Agent 在固定环境下表现稳定,容易让人产生「一劳永逸」的错觉;而且绝大多数团队第一次踩坑都是在生产事故之后。

误区这个 Agent 不用了,直接把它从服务器上删掉不就行了?反正留着也是浪费资源,删了还能省点钱。

正解Agent 是一个有依赖方的服务,直接删除会带来三颗雷:正在处理的请求中断、依赖它的其他 Agent 报错、审计需要的历史数据丢失。正确的退役顺序是先摘流量、再等存量请求处理完、然后归档日志与配置、最后才是释放资源。这相当于厨师退休要先交接再离开,而不是突然人间蒸发。

为何常见:本地开发时删文件删习惯了,忘了生产环境里 Agent 是给别人调用的线上服务,删除动作会通过依赖链传导。

误区就一个内部工具,我自己记得住改了什么,版本号写 v1、v2 还是「最终版3」都无所谓,别人也不太看。

正解版本号的真正价值在于可回溯。生产环境中出现行为异常时,第一个问题永远是「它现在跑的是哪一版配置?」没有规范版本号,你只能在几十份相似配置里盲猜。语义化版本号加上变更记录,让你能在五分钟内定位到「是升级引发的还是早就坏了」,并快速回滚。

为何常见:小团队单兵作战时没有协作压力,人脑记忆短期内够用;一旦 Agent 数量增多、交接发生,记忆就不可靠了。

误区公司小、资源紧张,开发测试生产共用一套环境不也挺好?省服务器还省部署时间,出问题我能在同一个环境里直接看。

正解环境不隔离时,测试流量会污染生产数据,调试时的临时改动可能被线上请求命中,一个环境的抖动会顺着共享依赖传染。先不说事故定责难,逻辑上你根本无法确认观察到的问题是哪个环境导致的。「在我这里是好的」这句话,就是环境混杂的典型后遗症。

为何常见:小团队早期资源有限,图省事把环境合并,等规模上来后再拆分,成本已经高到没人愿意承担。

面试题

Q1. 以下哪一项不属于 Agent 生命周期管理的核心阶段?

单选题 · easy

  • A.创建初始化
  • B.版本升级
  • C.代码编译← 正确答案
  • D.退役归档

答案:C。Agent 生命周期四阶段是创建、运行、升级、退役。「代码编译」是传统软件开发的环节,与 Agent 的运行时治理无关。就像后厨管理关注入职、在岗、晋升、退休,而不是关注厨师考执照的过程。

Q2. 语义化版本号 2.3.1 中的「3」代表什么?

单选题 · easy

  • A.主版本
  • B.次版本← 正确答案
  • C.修订号
  • D.构建号

答案:B。语义化版本格式是「主版本。次版本。修订号」,2.3.1 中 2 是主版本,3 是次版本,1 是修订号。次版本表示在兼容基础上新增能力,如同菜谱新增了一种配料,但不改变整体口味。

Q3. Agent 退役流程的第一步应该做什么?

单选题 · single

  • A.删除镜像
  • B.摘除流量← 正确答案
  • C.清空日志
  • D.停掉监控

答案:B。退役要先摘流量,让新请求不再路由到该 Agent,同时放行存量请求;随后才归档数据、下线资源。直接删镜像或清日志会让正在处理的请求中断,就像厨师退休前得先把手头的菜做完。

Q4. 环境隔离的主要目的是什么?

单选题 · mid

  • A.节省服务器成本
  • B.防止变更干扰生产← 正确答案
  • C.加快代码编译速度
  • D.让代码风格更统一

答案:B。环境隔离的核心是让未经验证的变更只能在开发、测试环境中试错,不会影响生产环境中的真实用户。它对应后厨的试菜间:新菜先在隔间里试,而不是直接在客人餐桌上下锅。

Q5. 依赖追踪中的「影响半径」指的是什么?

单选题 · mid

  • A.网络延迟增加
  • B.受影响方占比← 正确答案
  • C.代码仓库大小
  • D.内存占用大小

答案:B。影响半径 = 受某个上游变更影响的 Agent 数 ÷ 相关的全部 Agent 数。它量化一次底层改动会波及多大范围,像燃气断供时后厨要统计哪些菜做不了。

Q6. 健康度评分公式中,各项权重之和应当满足什么条件?

单选题 · mid

  • A.总和小于一
  • B.总和等于一← 正确答案
  • C.总和大于一
  • D.总和等于零

答案:B。加权评分要求所有权重之和等于 1,这样综合分数仍保持在 0 到 100 的原始量纲内,可以直读比较。如果权重大于 1 或小于 0,评分就会失真,如同厨师考评的各项占比加起来超过 100% 没法算总分。

Q7. 灰度发布的核心思想是什么?

单选题 · hard

  • A.一次性全量替换
  • B.先小流量逐步放量← 正确答案
  • C.直接删除旧版本
  • D.跳过测试直接上线

答案:B。灰度发布是让新版本先接收一小部分真实流量,观察指标正常后再逐步扩大比例,异常时可快速回滚。它对应餐厅推新菜先请少数熟客试吃,而不是直接写进所有门店的菜单。

Q8. 以下哪些属于 Agent 生命周期的运维手段?

多选题 · mid

  • A.版本回滚← 正确答案
  • B.配置迁移← 正确答案
  • C.手改数据库
  • D.健康检查← 正确答案

答案:ABD。版本回滚用于升级异常时恢复旧版,配置迁移负责跨环境传递配置,健康检查监控运行状态,三者都是生命周期运维的常规动作。手改数据库绕过审批与记录,属于运维事故而非运维手段。

Q9. Agent 退役时应当完成哪些动作?

多选题 · mid

  • A.流量摘除← 正确答案
  • B.数据归档← 正确答案
  • C.立刻删代码
  • D.更新依赖图← 正确答案

答案:ABD。退役流程要求先摘流量、再归档数据和配置,最后还要更新依赖血缘图谱,通知相关方。立刻删代码会导致无法审计追溯,好比把老师傅的菜谱直接烧掉而不是存档。

Q10. 哪些情况应当触发 Agent 的退役评估?

多选题 · hard

  • A.健康度低于阈值← 正确答案
  • B.新版本完全替代← 正确答案
  • C.团队更换新框架
  • D.维护成本高于重建← 正确答案

答案:ABD。健康度跌破红线说明 Agent 已难以胜任,新版本完全替代意味着旧版本失去存在价值,维护成本高于重建说明经济上不划算——三者都该触发退役。团队更换新框架只是技术选型变化,不代表某一个 Agent 必须退役,仍需个案评估。