我做了一个AI运维助手,它会自己查故障
本文是「老计学AI」系列第10篇。 我是老计,一个8年运维工程师,正在往AI方向折腾。 这个系列记录我从零理解AI的过程。
上一篇聊了Agent是什么。
简单说,Agent不只是回答问题。它会自己判断下一步该做什么,调用工具拿结果,再决定是否继续。
这次我们不只讲概念,直接看看一个AI运维助手是怎么搭出来的。
放心,公众号版不讲代码。我们只看它背后的思路。
先说它能干什么
我希望这个AI运维助手收到一句话后,能自己完成排查:
帮我看看生产环境有没有异常Pod,如果有,分析一下原因。
它会按顺序做这些事:
查询异常Pod 发现某个服务反复重启 查看这个Pod的事件和日志 发现OOM,也就是内存不足 查看当前内存配置 给出增加内存的建议
用户只说了一句话,后面的步骤由它自己判断。
这才是Agent最有意思的地方。
一个Agent只需要三部分

把复杂名词都去掉,一个Agent其实就是三件套。
第一件:工具
工具就是Agent的手脚。
比如给运维Agent准备这些工具:
查异常Pod 看Pod日志 查告警事件 看资源配置
它们就像运维工程师常用的命令,只是被包装成了AI可以调用的按钮。
没有工具,AI再聪明也只能告诉你应该怎么查,不能真的替你查。
第二件:菜单
有工具还不够,必须给每个工具写清楚说明:
这个工具叫什么 它能做什么 什么情况下应该用 使用时需要提供什么信息
这就像饭店菜单。
只写菜名不写介绍,客人可能不知道怎么选。工具说明写得不清楚,AI也可能选错。
比如查日志这个工具,说明里应该告诉AI:当服务崩溃、报错或反复重启时使用。
第三件:循环
循环就是Agent的大脑工作方式。
它每一轮都做三件事:
看目前掌握的信息 决定下一步调用什么工具 看工具返回的结果
信息不够,就再来一轮。信息够了,就停止调用工具并给出答案。
工具让它能做,菜单让它会选,循环让它能持续排查。
它是怎么自动排障的

假设用户问:
帮我查查order-service为什么一直重启。
Agent开始工作。
第一轮:先确认现象
它先调用查询Pod的工具。
结果显示:order-service处于反复崩溃和重启的状态。
它知道服务有问题了,但还不知道为什么,所以不会立即回答。
第二轮:继续找原因
它调用查看日志和事件的工具。
日志里出现了OutOfMemoryError,事件里显示OOMKilled。
翻译成大白话:程序需要的内存超过了限制,被系统强制终止了。
第三轮:查看配置
它接着查看资源配置,发现这个服务的内存上限只有512Mi。
到这里,现象、原因和配置都对上了。信息已经足够。
最终回答
Agent整理出一份结论:
order-service因为内存不足被系统终止,导致不断重启。当前内存上限为512Mi,建议结合实际使用量适当提高内存配置,并检查应用是否存在内存泄漏。

整个过程里,用户不需要逐条告诉它该查什么。
真正关键的不是代码
很多人看到Agent,会先问需要写多少代码。
其实代码长短不是最关键的。真正决定效果的是下面三件事。
工具要可靠
AI给出的结论,建立在工具返回的数据上。
如果查日志的工具拿错了Pod,或者监控数据已经过期,再聪明的AI也会分析错。
工具说明要准确
说明写得模糊,AI就可能在不合适的时候调用错误工具。
这跟带新人一样。你只说去查一下,他可能不知道查哪里。你说清楚先看Pod状态,再看事件和日志,他才知道怎么做。
必须设置边界
Agent可以自主行动,但不能无限自主。
生产环境里至少要有这些限制:
最多执行多少轮 每次处理最多花多少Token 只开放查询工具,危险操作需要人工确认 执行过程完整记录,出问题可以回放
先让AI会查,再考虑让AI去改。
它能替代运维工程师吗
现在还不能。
它更像一个刚入职、查资料特别快的新同事。
它能替你完成重复的信息收集,快速翻日志,整理可能原因。但面对复杂故障,它仍然缺少业务背景和长期积累的经验。
更合理的分工是:
AI负责跑腿和初步分析,人负责判断和兜底。
跟你有什么关系
如果你不是程序员,也不需要关心那120行代码。
你只需要理解:Agent不是一个神秘的万能机器人。它只是把大模型和一组可靠工具连接起来,再让它反复执行,直到得到足够的信息。
将来你看到AI客服、AI助理、AI运维工具,都可以用这三个问题判断它是否靠谱:
它能使用哪些工具 它根据什么选择工具 它什么时候停止,谁来兜底
下一篇预告
一个Agent能完成不少任务。但如果任务非常复杂,让一个Agent从头干到尾,可能又慢又容易出错。
下一篇聊多Agent协作:让多个AI像团队一样分工,有的收集信息,有的分析原因,有的检查结果。
我是老计,8年运维,正在从DevOps向AI方向折腾。 关注「老计爱折腾」,一起搞懂AI、用好AI。 有问题欢迎留言交流。
📌 想看完整代码和技术细节,扫码访问CSDN:

夜雨聆风