news 2026/7/10 12:13:41

运维转大模型:从真实需求重新拆一遍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
运维转大模型:从真实需求重新拆一遍

这篇不先堆名词。我们把《运维转大模型:一次新的项目切入》拆成几级台阶,看完至少知道下一步该学什么、该练什么。

摘要

先把这篇文章的目标说清楚:看完之后,你应该能判断这件事值不值得做,以及从哪里动手。

最近圈子里都在聊“大模型应用从 Demo 转向权限、日志和可观测”,这话说得太对了。以前我们做运维自动化,靠的是 Shell 脚本和 Ansible playbook,逻辑是确定性的:如果 A 发生,就执行 B。现在做 AIOps Agent,逻辑变成了概率性的:模型觉得 A 发生了,那就尝试执行 B,但万一它幻觉了呢?万一它删库了呢?

这就是我从运维转大模型开发时,最大的心理落差和工程挑战。

很多人以为转型就是学个 LangChain,调个 API 就行。别逗了。在 SRE 的视角里,不可控的自动化就是灾难。如果你只想写个聊天机器人炫技,那随便;但如果你想把这个 Agent 接入生产环境,甚至让它去处理告警,那你必须先学会怎么“管住它”。

这篇文章不讲怎么用 Prompt Engineering 写诗,我复盘一下我最近做的一个“告警归因与自动处置 Agent”项目。重点不在模型有多聪明,而在上线前的那些脏活累活:权限隔离、日志审计、还有最重要的——回滚机制。

目录

  • 运维能力的迁移:从确定性脚本到概率性 Agent
  • 日志分析:让 Agent 读懂“上下文”
  • 告警归因:从“猜”到“查”
  • 自动处置 Agent:权限与审批的硬约束
  • 安全与审批:兜底的最后一道墙
  • 总结

运维能力的迁移:从确定性脚本到概率性 Agent

在传统运维中,我们最怕的是“意外”。在脚本里,rm -rf前面必须有-i或者明确的判断逻辑。但在 Agent 里,模型是“专家系统”,它可能基于错误的上下文给出自信满满的答案。

我的策略是:把 Agent 当作一个“初级工程师”,而不是“管理员”。

这意味着我不能让它直接拥有 Root 权限,也不能让它直接执行破坏性命令。我需要构建一个中间层,这个层负责:
1. 意图识别:它想干什么?
2. 权限校验:它有权干吗?
3. 风险评级:这事干了会挂吗?

在这个项目中,我放弃了端到端的自动化,转而采用“人机协同+自动执行低风险操作”的模式。这种取舍虽然看起来效率低了,但对于生产环境来说,这才是唯一可行的路径。

日志分析:让 Agent 读懂“上下文”

以前我们写日志分析脚本,是用正则匹配关键字。现在用 Agent,难点在于信息过载。K8s Pod 重启、Prometheus 告警、Trace 链路中断,这些分散在不同系统的日志,模型怎么把它们串起来?

这里有个坑:不要直接把全量日志扔给 LLM,Token 贵且噪声大。

我的做法是做一个预处理过滤器。先通过向量检索(Vector Search)找到相关的错误片段,再通过时间窗口聚合,最后才喂给 Agent。

import asyncio from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain_community.vectorstores import FAISS from langchain_openai import OpenAIEmbeddings # 模拟日志清洗流程 class LogPreprocessor: def __init__(self): self.embeddings = OpenAIEmbeddings() async def filter_and_embed(self, raw_logs: list[str]) -> str: # 1. 简单规则过滤掉 INFO 级别噪音 filtered = [log for log in raw_logs if "ERROR" in log or "WARN" in log] # 2. 如果日志过长,截取最近的 N 条并合并上下文 if len(filtered) > 50: filtered = filtered[-50:] combined_context = "\n".join(filtered) # 3. 这里其实应该存入向量库,为后续 RAG 做准备 # 为了演示,直接返回清洗后的文本作为 Agent 的输入 return combined_context # 在实际 Agent 调用前,必须经过这一步 # agent_input = await log_preprocessor.filter_and_embed(k8s_events + prometheus_alerts)

这段代码看着简单,但它是 Agent 不“幻觉”的第一道防线。如果输入垃圾,输出一定是垃圾。运维工程师的优势就在于对数据源的熟悉,知道哪些日志是噪声,哪些是关键线索。

告警归因:从“猜”到“查”

当 Prometheus 报警说 CPU 飙高,Agent 该干嘛?直接重启 Pod?绝对不行。

在这个环节,我引入了工具调用(Tool Calling)的概念。Agent 不应该自己去算 CPU 占比,而应该去调用top,dmesg,kubectl describe pod这些 CLI 工具,获取实时状态,然后基于事实做判断。

这里的关键是工具描述的准确性。如果你给 Agent 的工具描述是“获取服务器信息”,它会瞎猜。如果你描述是“获取指定命名空间下最近 5 分钟 CPU 使用率最高的 Top 5 容器,返回 JSON 格式”,它才能干活。

我踩过的一个大坑是:没有处理工具调用的超时。有一次,某个数据库节点挂了,Agent 调用mysql -e "status"卡住了 30 秒,导致整个编排流程阻塞。解决办法是设置严格的 timeout,并在工具层捕获异常,返回“无法连接”而非“超时”。

自动处置 Agent:权限与审批的硬约束

这是我最想强调的部分。很多教程教你怎么写一个能自动修复的 Agent,但我建议你先写一个不能自动修复的 Agent。

在生产环境,自动处置必须满足三个条件:
1. 白名单机制:只有经过人工审核确认的命令模板才能被触发。
2. Dry Run(预演):Agent 在执行前,必须生成一份“拟执行计划”,包含预期影响范围和回滚方案。
3. 审批流:高风险操作(如扩容、删库、配置变更)必须经过 Slack/钉钉群的人工确认。

以下是我设计的简易审批拦截器逻辑:

class SafetyGate: def __init__(self, high_risk_actions=["kill", "drop", "resize"]): self.high_risk_actions = high_risk_actions def check(self, action_plan: dict) -> bool: """ action_plan: { "action": "restart_pod", "target": "payment-service-v2", "risk_level": "low" } """ command = action_plan.get("command", "").lower() # 1. 关键词黑名单检查 for risk_cmd in self.high_risk_actions: if risk_cmd in command: return False # 拦截,需要人工审批 # 2. 风险等级检查 if action_plan.get("risk_level") == "high": return False # 高风险必须人工介入 return True # 低风险且不在黑名单,允许自动执行

不要小看这几行代码。在真实项目中,这个SafetyGate是连接 AI 智慧和工程安全的桥梁。运维的背景让你知道哪些操作是“红线”,比如禁止跨可用区迁移,禁止在非维护窗口重启核心网关。把这些规则硬化在代码里,比让模型去“遵守指令”靠谱得多。

安全与审批:兜底的最后一道墙

Agent 可能会犯错,这是概率问题。所以,可观测性和可恢复性比智能化更重要。

我在项目中加入了两个关键组件:
1. 全链路审计日志:Agent 的每一步思考(Thought)、每一个工具调用(Action)、每一次观察(Observation)都记录在案。这不是为了监控,是为了事后追责。如果出了问题,我要能还原出模型当时是基于什么数据做出的决定。
2. 一键回滚脚本:无论 Agent 做了什么修改(比如更新了 ConfigMap),系统必须自动生成对应的反向操作指令。如果 Agent 发现服务异常并尝试重启失败,系统应立即切断 Agent 的控制权,并执行预设的回滚步骤。

总结

从运维转到 AIOps,我们拥有的最大资产不是对 Transformer 架构的理解,而是对系统稳定性的敬畏心。

现在的热点是从 Demo 走向生产,而生产环境的核心痛点就是:信任。

你不能信任模型,所以你要限制它的权限;
你不能信任它的判断,所以你要强制它提供证据(日志/指标);
你不能容忍它的错误,所以你要准备好回滚方案。

对于想转型的运维工程师,我的建议是:
1. 先别急着学复杂的 Agent 框架,先用 Python 封装好你的运维工具,写好文档。
2. 理解 Prompt 只是输入的一部分,工具描述(Function Calling Schema)才是决定 Agent 行为边界的关键。
3. 把“失败处理”和“权限控制”写在项目架构的前面,而不是后面。

大模型不会取代运维,但会用大模型且懂工程边界的运维,会取代只会写脚本的运维。这条路不好走,但值得投入。

资料展示

下面是我整理的AI大模型学习资料和工具包预览,适合收藏后按主题逐步学习。

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 12:13:34

百度网盘高速下载终极指南:告别限速困扰的简单方法

百度网盘高速下载终极指南:告别限速困扰的简单方法 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘那令人抓狂的下载速度而烦恼吗?今天我…

作者头像 李华
网站建设 2026/7/10 12:13:13

Claude Fable 5免费试用延期至7月12日:技术团队评估指南

最近不少开发者都在关注 Claude Fable 5 的付费政策变化——原本6月22日结束的免费试用期,现在延长到了7月12日。这个看似简单的日期调整,背后其实反映了AI大模型商业化策略的重要转变。对于技术团队来说,这三周的延期意味着什么?…

作者头像 李华
网站建设 2026/7/10 12:10:10

基于PD-NOMA和turbo编译码的智能反射面系统matlab性能仿真

目录 1.前言 2.算法测试效果图预览 2.1系统仿真参数 2.2系统仿真结果 3.算法运行软件版本 4.算法理论概述 4.1 PD-NOMA基本原理 4.2 IRS信道基础模型 4.3 Turbo编译码 4.4 系统优势 5.算法完整程序工程 1.前言 智能反射面(IRS,Intelligent Reflecting S…

作者头像 李华
网站建设 2026/7/10 12:08:30

ModuleNotFoundError 深度排查:从 dotenv 到 Python 4种包管理工具路径冲突

Python模块导入深度排查:从dotenv到多工具环境冲突解决方案 1. 理解ModuleNotFoundError的本质 ModuleNotFoundError是Python开发中最常见的错误之一,它揭示了Python解释器在模块搜索路径中无法找到指定模块的问题。当遇到 ModuleNotFoundError: No mo…

作者头像 李华
网站建设 2026/7/10 12:06:10

9款主流网盘直链下载助手LinkSwift:免费获取真实下载地址的完整指南

9款主流网盘直链下载助手LinkSwift:免费获取真实下载地址的完整指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移…

作者头像 李华