聊《一个运维项目改成 AI 流程后,最难的部分完全变了》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。
摘要
去年我带团队做了个运维自动化项目,用 LangChain 搭了个故障处置 Agent,本地测试跑起来的时候,从告警触发到自动重启服务,整套流程看着还挺顺。结果一上线,三天内发生了两起误操作——一次是 Agent 把测试库当生产库清了,另一次是它在没有审批的情况下直接扩容了流量入口。
事后复盘,问题不在模型,也不在代码,而在权限没划清楚、日志没留痕、审批流程缺失。
现在回头看,运维转大模型这件事,最大的挑战根本不是调 API 或者写 Prompt,而是把已有的工程化思维迁移过去,并且补上 Agent 特有的约束机制。Demo 能跑和能上线,中间隔着一道叫"兜底"的坎。
目录
- 运维能力迁移:从确定到模糊
- 日志分析:让模型看懂上下文
- 告警归因:模型做分析,人做决策
- 自动处置 Agent:能力越强,边界越要清
- 安全与审批:上线前必须补齐的课
- 总结:Demo 能跑只是起点
运维能力迁移:从确定到模糊

传统运维自动化是确定性的——规则明确、路径清晰、失败可预期。写个 Shell 脚本,配好 crontab,跑不通就回滚。这种思维做 Agent 容易出问题,因为大模型的输出本质上是概率性的,它不会每次都按你预期的路径走。
我能迁移的有三样东西:一是对系统架构的理解,知道哪些操作是高危的;二是对可观测性的重视,日志、指标、链路追踪这些基本功;三是故障处置的经验,知道什么场景该先止血再排查。
不能直接照搬的是执行方式。脚本是"我告诉你做什么",Agent 是"你帮我分析,然后我决定做什么"。这个转变意味着你需要从控制者变成监督者,角色变了,约束机制也得跟着变。
日志分析:让模型看懂上下文

做日志分析的时候,我踩过一个坑。一开始直接用 OpenAI 的 API 让模型分析 Nginx 日志,模型确实能识别出 502 错误、连接超时这些模式,但它不知道这些日志背后的业务含义。
后来我加了个中间层,把日志先结构化,提取出关键维度——服务名、接口路径、错误码、耗时分布,再喂给模型做分析。这样模型的输出准确度明显提升,而且你能看到它依据的是什么数据。
import json
from openai import OpenAI
client = OpenAI(api_key="your_api_key")
def analyze_logs(log_entries: list[dict]) -> dict:
# 结构化日志,提取关键维度
structured = []
for entry in log_entries:
structured.append({
"service": entry.get("service", "unknown"),
"path": entry.get("path", "/"),
"status": entry.get("status", 0),
"latency_ms": entry.get("latency_ms", 0),
"error_type": classify_error(entry.get("message", ""))
})
# 用结构化数据做上下文,而不是原始日志
context = build_context(structured)
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": context}
],
temperature=0.1
)
return parse_analysis(response.choices[0].message.content)
这段代码里最关键的不是模型调用本身,而是 build_context 这一步——把原始日志转成模型能理解的结构化上下文。日志分析的价值不在于模型能识别多少种错误模式,而在于你能否让它看到正确的信息,并且知道它看到了什么。

告警归因:模型做分析,人做决策
告警归因是 Agent 最容易被高估的场景。很多 Demo 里,模型能"智能归因",把一堆告警关联起来,找出根因。但真实环境里,告警噪声极大,模型很容易把无关告警串在一起,给出一个看起来很合理但实际上错误的结论。
我的处理方式是:模型只负责生成假设,不负责下结论。它输出的是"可能的根因列表",每个假设附带置信度和依据,最终由人确认。这个设计看起来多了一步,但避免了模型幻觉带来的误判风险。
def generate_hypotheses(alerts: list[dict], changes: list[dict]) -> list[dict]:
"""模型只生成假设,不直接下结论"""
context = {
"alerts": format_alerts(alerts),
"recent_changes": format_changes(changes),
"topology": get_service_topology()
}
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": REROOT_CAUSE_PROMPT},
{"role": "user", "content": json.dumps(context)}
],
temperature=0.3
)
# 解析模型输出,提取假设列表
hypotheses = parse_hypotheses(response.choices[0].message.content)
# 每个假设都要有依据,不能只有结论
for h in hypotheses:
h["evidence"] = extract_evidence(h["reasoning"], context)
h["confidence"] = assess_confidence(h)
return hypotheses
这里 temperature 设得比较高(0.3),是因为归因需要一定的发散性,不能太死板。但输出必须结构化,每个假设都要有依据和置信度,这样人才好判断。
自动处置 Agent:能力越强,边界越要清
自动处置是 Agent 最吸引人的场景,也是最危险的场景。一个能自动重启服务、扩容、回滚配置的 Agent,如果权限没管好,一次错误的执行就能造成线上事故。
我现在的原则是:Agent 能做的所有写操作,必须有前置审批或后置复核。读操作可以给较大权限,写操作必须走流程。
class AIOpsAgent:
def __init__(self, permission_scope: PermissionScope):
self.permission = permission_scope
self.audit_logger = AuditLogger()
self.approval_service = ApprovalService()
async def execute_action(self, action: Action, context: dict):
# 1. 检查权限边界
if not self.permission.check(action.target, action.verb):
raise PermissionDenied(f"Action {action} not in permission scope")
# 2. 高危操作需要审批
if action.is_high_risk:
approval = await self.approval_service.request(
action=action,
context=context,
requester="agent"
)
if not approval.approved:
self.audit_logger.log_rejected(action, approval.reason)
return {"status": "rejected", "reason": approval.reason}
# 3. 执行前记录
self.audit_logger.log_execution_start(action, context)
# 4. 执行
try:
result = await self.executor.run(action, context)
self.audit_logger.log_execution_success(action, result)
return {"status": "success", "result": result}
except Exception as e:
self.audit_logger.log_execution_failure(action, str(e))
# 自动回滚或告警
await self.rollback(action, context)
raise
def audit_trail(self, action_id: str) -> dict:
"""完整的操作审计链路"""
return self.audit_logger.get_full_trail(action_id)
这个设计的核心是 permission_scope——Agent 能访问哪些资源、能对哪些资源执行什么操作,必须在启动时就明确配置好,不能运行时动态扩大。审计日志要记录从请求到执行的完整链路,包括模型输入、输出、审批结果、执行结果,这样出了事能追溯到每一步。
安全与审批:上线前必须补齐的课
很多运维转大模型的工程师,容易忽略这一节。Demo 里 Agent 调用工具、执行命令,看起来一切正常,但真实环境里,权限泄漏、操作越界、审计缺失,任何一个都能造成线上事故。
我的建议是上线前必须过这三关:
第一关是权限边界。Agent 的 API Key、访问令牌、资源权限,必须和人工运维的权限分开管理。Agent 能用读接口,不一定需要写接口;能操作测试环境,不一定能操作生产环境。最小权限原则在这里不是口号,是硬性要求。
第二关是审计日志。每次 Agent 的决策和执行,都要有记录。记录什么:输入了什么上下文、模型输出了什么、做了哪些工具调用、谁审批了、执行结果如何。这些日志要能追溯,不能只存最近七天。
第三关是审批流程。高危操作必须有人工节点。这个节点可以是实时的(等待审批通过才执行),也可以是后置的(执行后补审批,但异常时自动回滚)。两种方式各有适用场景,取决于你对延迟的容忍度和风险的接受度。
总结:Demo 能跑只是起点
运维转大模型,最大的陷阱是以为模型能力等于系统能力。实际上,一个能上线的 Agent 系统,模型只占三分之一,剩下三分之二是权限管理、日志审计、审批流程、可观测性这些工程化保障。
简历上写 Agent 项目的时候,不要只写"用了什么模型、实现了什么功能"。面试官更想听到的是:权限怎么划的、日志怎么留的、审批流程怎么走、出错了怎么回滚。这些才是 Demo 和上线之间的真实差距,也是你作为工程师的价值所在。
从脚本到 Agent,变的不是工具,是思维方式。脚本时代你负责控制每一步,Agent 时代你负责设定边界和兜底机制。把这部分补上,你的运维经验才算真正迁移到了大模型时代。
资料展示
下面是我整理的AI大模型学习资料和工具包预览,适合收藏后按主题逐步学习。




如果你想看完整资料目录,可以在评论区留言「资料」;也欢迎告诉我你更关注AI大模型里的哪类内容。

9万+



被折叠的 条评论
为什么被折叠?



