从零构建运维Agent:全网方案调研、架构设计、与核心避坑指南
运维Agent不是一个"把LLM接上运维系统"就能做好的事。LLM负责理解,代码负责执行— 不要让LLM直接操作生产从1个场景开始— 全能Agent是一个陷阱安全边界必须硬编码— 诊断可以循环,执行必须审批技术路线上,MCP直连适合起步和中等规模,UModel语义层是规模化后的必然方向。两者的核心差异不是"哪个更好",而是"哪个适合你当前的阶段"。记忆管理同理——MVP用Markdown文件简单直
本文系统梳理了2024-2026年国内外10大生产级运维Agent方案,深入对比了MCP直连与UModel语义层两种架构路线,并给出了从MVP到规模化的完整实践路径。
一、为什么需要运维Agent?
运维的本质矛盾从未改变:系统复杂度持续增长,而人的处理能力是恒定的。
平均每名值班工程师每周收到约50条告警,其中仅2-5%真正需要人为干预。70%的SRE团队将告警疲劳列为前三运营问题。(数据来源:PagerDuty)
以最常见的"用户反馈支付卡顿"为例,运维的排查流程是固定的:
这个流程里每一步都是确定性操作——查指标、查链路、查日志、对比基准值。人类运维做的是"串联工具+模式匹配",这正是 Agent 的强项。
二、全网谁在生产跑?
经过对2024-2026年公开资料的全面梳理,已确认10个方案处于生产验证状态:
| # | 方案 | 类型 | 核心亮点 | 关键效果 |
|---|---|---|---|---|
| 1 | 微软 Azure SRE Agent | 商业(GA) | 从50+专用Agent收敛到通用Agent | MTTR 40.5h→3min |
| 2 | 阿里云 UModel + AIOps Agent | 商业/内部 | 统一语义层 + 数据飞轮 | Token消耗降90% |
| 3 | 华为云 确定性运维 Multi-Agent | 商业/内部 | KPI树+PDCA驱动Agent协同 | 7成运维满意 |
| 4 | 腾讯 AI自动化运维 | 内部 | 5Agent + Kafka + 四级风险控制 | 告警时间-60% |
| 5 | 字节跳动 智能运维Agent | 内部 | 感知→控制→行动三层闭环 | 故障排查全流程提效 |
| 6 | 某中小团队 3周POC→生产 | 实践案例 | LangChain+AutoGen+Qwen-14B | 处理时间30min→3min |
| 7 | OpenDerisk | 开源 | 因果RCA + MCP | arXiv发布 |
| 8 | Redis SRE Agent | 开源 | 3模型分治+3Agent路由 | 专注Redis场景 |
| 9 | Aurora | 开源 | 30+工具、多云、LangGraph | 全功能AI SRE |
| 10 | Traversal | 商业 | 因果ML | DigitalOcean MTTR-38% |
行业共识:10条铁律
从这些案例中提炼出的共同原则:
- Prompt负责理解,代码负责执行 — LLM不直接操作生产系统
- 所有写操作必须幂等 — 用幂等键防重复执行
- 分级安全控制 — 读自动 / 可逆写自动 / 不可逆需确认 / 关键需审批
- 从1个场景开始 — 别想一步到位做全能Agent
- 能力边界要明确 — 超边界优雅转人工
- 全链路监控 — 每个工具调用必须可审计
- 工具层隔离 — LLM请求工具→Agent安全执行
- 向量知识库 — 历史案例RAG检索
- 长期Agent通用化 — 微软从50+专用收敛到通用验证了这点
- 数据飞轮 — 采集Trace反哺模型进化
三、两大架构路线深度对比
3.1 MCP直连方案
LLM (Claude/GPT/Qwen)
│ Function Calling 决定调哪个工具
├── MCP: Prometheus (PromQL查询)
├── MCP: SkyWalking (GraphQL查询)
├── MCP: SLS (日志检索)
└── MCP: GitLab (代码搜索)
│
▼
LLM直接消费原始返回数据,逐步推理
特点:每个MCP Server独立封装一个运维系统的API。LLM通过Function Calling决定调用哪个、传什么参数,拿到原始结果后自行推理。
3.2 UModel语义层方案
LLM (Claude/GPT/Qwen)
│ 语义查询(自然语言 or 结构化查询)
▼
UModel 统一语义层 (Node+Link有向图)
│ 算子下推:聚合/异常检测在数据端执行
├── Prometheus
├── SkyWalking
├── SLS
└── 变更系统
│
▼
LLM拿到结构化摘要,直接推理
特点:UModel是所有运维数据的统一建模层。Agent不需要逐个系统查询——UModel内部已经做了预聚合和跨系统关联,LLM只需要问一次就能拿到结论。
3.3 核心差异
| 维度 | MCP直连 | UModel语义层 |
|---|---|---|
| 数据抽象层级 | 原始数据(PromQL结果、JSON日志) | 结构化摘要(实体+关系+异常标注) |
| LLM轮次 | 多轮ReAct,逐步排查 | 单轮或少轮即可定位 |
| 跨系统关联 | 依赖Prompt工程 | 图查询原生支持 |
| 拓扑维护 | 手动 | SkyWalking Trace自动派生 |
| 大小模型分流 | 无 | 小模型做异常检测,大模型做根因推理 |
| 开源 | 全开源 | 闭源(阿里云产品功能) |
| 上手成本 | 低(2周) | 高(需平台支持) |
| 适用阶段 | MVP→中等规模 | 规模化→复杂场景 |
为什么会有UModel? 不是MCP方案做不到,而是当系统规模变大后(50+服务,10+运维系统),MCP直连的Token消耗和多轮推理成本会急剧上升。UModel通过"数据预聚合 + 大小模型分流"把综合成本压到原来的10%。
四、ReAct的正确用法:诊断用循环,执行有边界
运维场景里,ReAct不能到处用。调查阶段可以用循环,执行阶段只能走一次且必须人工审批。
不存在"执行完再去看指标不对再调整",那是生产事故的配方。ReAct循环只发生在调查阶段,一到执行写操作就必须人工卡点。
LangGraph 实现关键点
workflow = StateGraph(InvestigationState)
# 调查节点内部跑ReAct,所有工具调用只读
workflow.add_node("investigate", investigate)
# 人工审批节点:LangGraph中断点,等人工确认
workflow.add_node("human_approval", human_approval)
# 执行节点:只有人工确认后才走到这里
workflow.add_conditional_edges(
"human_approval",
lambda s: "execute" if s["human_approved"] else END
)
五、记忆管理:Markdown vs 向量数据库,不是二选一
5.1 Claude Code的启示
Claude Code的记忆系统完全基于Markdown文件:
~/.claude/projects/<project>/memory/
├── MEMORY.md # 索引,每次会话加载前200行
├── debugging.md # 主题文件,按需读取
└── api-conventions.md
项目目录:
├── CLAUDE.md # 项目指令,每次会话完整加载
└── .claude/skills/ # Skill文件夹
为什么不用向量数据库? 因为它面向代码项目,知识规模可控(几十个文件)。全量加载索引也就几千Token。
那运维场景能用吗? 初期也能用。场景少的时候,Markdown文件简单直接、人类可维护、不需要额外基础设施。
5.2 运维Agent的三层记忆架构
随着场景增多,推荐混合方案:
┌────────────────────────────────────────────┐
│ L1: 短期记忆 (Working Memory) │
│ 当前诊断会话内的上下文 │
│ 存储:LangGraph State / 内存 │
├────────────────────────────────────────────┤
│ L2: 长期记忆 (Episodic Memory) │
│ 历史诊断案例:当时怎么解决的? │
│ 存储:向量数据库(语义检索Top3相似案例) │
├────────────────────────────────────────────┤
│ L3: 知识库 (Semantic Memory / Runbook) │
│ 标准化排查流程:支付超时怎么办? │
│ 存储:Markdown文件(结构化、可读、可维护) │
└────────────────────────────────────────────┘
5.3 演进路径
| 阶段 | 存储方案 | 理由 |
|---|---|---|
| MVP(< 10个场景) | 纯 Markdown 文件 | 全量加载才几千Token |
| 成长期(10-50场景) | Markdown + 目录索引 | 手动分类,按需加载 |
| 规模化(50+ 场景) | 向量库粗筛 + Markdown精读 | 语义检索Top3,再全文加载 |
5.4 标准化流程即Skill
参考 Claude Code 的 Skill 机制,运维 Agent 的排查流程完全可以按同样方式组织:
knowledge/runbooks/
├── payment-timeout.md # 支付超时排查手册
├── oom-kill.md # OOM Kill排查手册
├── deploy-rollback.md # 部署回滚流程
└── ...
每个Runbook的结构:
1. YAML元数据(触发条件、适用服务、风险等级)
2. Markdown正文(分步骤,每步关联具体Tool Call)
LLM 先看到所有 Runbook 的元数据(触发条件+描述),语义匹配最合适的那个,再加载完整文件指导工具调用——与 Claude Code Skill 的运作方式完全一致。
六、算子下推:计算在数据端,LLM只拿结论
"算子下推"这个概念来自数据库领域,在UModel中借用到可观测场景。
不下推的做法
Agent需要判断"订单服务是否异常"
→ 查Prometheus,返回过去1小时所有订单服务的10000条指标
→ 传到Agent本地
→ Agent用Python计算P99聚合
→ LLM判断是否超过阈值
下推的做法
Agent发送查询:「订单服务P99超过2s了吗?」
→ Prometheus端执行histogram_quantile聚合(PromQL原生能力)
→ 只返回:{service: "order", p99: "5.2s", baseline: "0.2s", status: "degraded"}
→ LLM直接拿到结论
本质:把计算推到数据所在的地方执行,只传结果回来。
用采矿类比:
不下推:把10吨矿石运到冶炼厂 → 冶炼 → 得到1克金
下推: 在矿场就地冶炼 → 只运1克金到冶炼厂
UModel中的三层分流
这才是"Token消耗降90%"的真正来源——不是单次上下文变短了,而是综合轮次减少 + 确定性任务由小模型处理 + LLM只做复杂推理。
七、从零落地的技术选型
7.1 推荐技术栈
| 层次 | MVP选型 | 规模化选型 |
|---|---|---|
| Agent框架 | LangChain + LangGraph | 同左,可能自研 |
| LLM | Claude / GPT-4 / Qwen | 混合:大模型推理 + 小模型检测 |
| 工具集成 | MCP Server(独立封装) | MCP + 统一语义层 |
| 记忆(短期) | LangGraph State | 同左 |
| 记忆(长期) | Markdown 文件 | 向量库(Chroma/Milvus) + Markdown |
| 知识库 | Runbook Markdown | 相同格式,规模更大 |
| 安全控制 | Human-in-the-Loop | 四级风险分级 |
| 监控 | Prometheus + Grafana | 全链路Agent Trace采集 |
7.2 MCP Server封装示例
# mcp-server-prometheus/server.py
from mcp.server import Server
from mcp.types import Tool
server = Server("prometheus-mcp")
@server.list_tools()
async def list_tools():
return [
Tool(
name="prometheus_query",
description="执行PromQL即时查询。用于获取服务当前性能指标如P99延迟、QPS、错误率等",
inputSchema={
"type": "object",
"properties": {
"query": {"type": "string", "description": "PromQL查询语句"}
}
}
),
Tool(
name="prometheus_range_query",
description="执行PromQL范围查询。用于获取过去一段时间内的时序数据,帮助判断异常何时开始",
inputSchema={
"type": "object",
"properties": {
"query": {"type": "string"},
"start": {"type": "string"},
"end": {"type": "string"},
"step": {"type": "string"}
}
}
)
]
@server.call_tool()
async def call_tool(name: str, arguments: dict):
if name == "prometheus_query":
response = requests.get(
f"{PROMETHEUS_URL}/api/v1/query",
params={"query": arguments["query"]}
)
return response.json()
7.3 Runbook Markdown 示例
---
trigger: "用户报事支付卡顿"
services: ["order-service", "payment-service"]
risk_level: "MEDIUM"
tools: ["prometheus_query", "skywalking_trace", "sls_search"]
---
# 支付超时排查手册
## Step 1: 确认异常范围
**工具**: `prometheus_query`
**查询**: `histogram_quantile(0.99, rate(http_request_duration_seconds_bucket{service="order-service"}[5m]))`
**判断标准**: P99 > 2s → 继续 Step 2
## Step 2: 定位慢调用环节
**工具**: `skywalking_trace`
**操作**: 获取 order-service 的慢调用 Trace
**判断标准**: 哪个 span 耗时 > 2s → 记录其 traceId → 继续 Step 3
## Step 3: 深入排查日志
**工具**: `sls_search`
**查询**: `traceId: {上一步获取} AND level: ERROR`
**判断标准**:
- 发现超时日志 → 下游服务问题 → 查下游服务最近部署
- 无超时日志 → 检查代码逻辑 → 继续 Step 4
## 常见根因速查
| 根因 | 出现频率 | 修复动作 | 预计恢复 |
|------|---------|---------|---------|
| 银行接口超时 | 40% | 启用熔断 + 通知对方 | 10min |
| 数据库慢查询 | 30% | 索引优化 | 30min |
| 网关超时配置 | 15% | 调整参数 | 5min |
八、从零落地的三阶段路径
阶段一:MVP验证(2-3周)
- 选1个高频低风险场景:如"服务健康检查"或"P99延迟查询"
- 搭建最小闭环:LangChain + 1个MCP Server + Runbook Markdown
- 只读模式上线,对比人工效果
- 验证准确率 > 80%
阶段二:场景扩展(4-6周)
- 扩展到5-10个场景
- 引入分级安全控制(参考腾讯四级风险模型)
- 加入人工审核节点
- 搭建 Runbook 知识库
阶段三:规模化(6-12周)
- 根据场景拆分专职Agent
- 引入事件总线解耦(可选)
- 采集执行Trace,建立数据飞轮
- 逐步开放低风险自动化执行
- (可选)搭建统一语义层,借鉴UModel思想做数据预聚合
九、总结
运维Agent不是一个"把LLM接上运维系统"就能做好的事。从调研来看,所有跑通了的方案都有三个共同特征:
- LLM负责理解,代码负责执行 — 不要让LLM直接操作生产
- 从1个场景开始 — 全能Agent是一个陷阱
- 安全边界必须硬编码 — 诊断可以循环,执行必须审批
技术路线上,MCP直连适合起步和中等规模,UModel语义层是规模化后的必然方向。两者的核心差异不是"哪个更好",而是"哪个适合你当前的阶段"。
记忆管理同理——MVP用Markdown文件简单直接,规模上来后再引入向量数据库做粗筛,两者不是替代关系而是互补关系。
最后,如果你正在规划运维Agent,建议先从你团队最痛的一个场景开始:写下排查流程(Runbook)、封装对应的MCP Server、跑通"用户报事→自动诊断→展示结论"的最小闭环。其他的,一步步来。
本文调研覆盖了微软、阿里云、华为云、腾讯、字节跳动等一线大厂的内部方案,以及OpenDerisk、Redis SRE Agent、Aurora等开源项目,数据截至2026年5月。
更多推荐


所有评论(0)