目录

把排查任务交给 AI:让它自己查缓存、查数据库、查日志、看代码

上篇文章说到,我最近用 stdio 的本地 mcp 方式实现了各种基建与 AI 之间的连接,例如查数据库、调接口等等。

这篇文章分享一下出现问题(如接口报错等)时让 AI 直接来排查原因的实践。我可以很明确地说,现在 AI 的能力已经非常强大,这条路是完全走得通的,而且效果很好,超出预期。


出现的问题

线上遇到了一个问题,很快定位到一个缓存的内容与数据库存在不一致。

这个问题并非必现,甚至出现概率非常小。但因为在测试这里三天就出现了两次,因此有必要排查清楚并修复。

接下来其实是有比较清晰的排查思路的:

  • 哪里的删缓存时机有问题?
  • 有没有并发问题?
  • 有没有读写竞争?
  • 主从数据库延迟?

但是这种偶现的问题查起来还是比较费时,而且我们是微服务架构,这块逻辑也稍微有点复杂。

人工是怎么排查问题的

一个线上问题出现时,标准的排查链路大概是这样的:

  1. 收到告警或者用户反馈,知道某个接口报错了或者某个功能表现异常
  2. 先复现一下,拿到错误码和请求参数
  3. 去查日志,按 traceId 拉出一长串日志,一行行看
  4. 怀疑是数据问题,去查数据库,拼 SQL,对数据
  5. 怀疑是缓存问题,连上 Redis 看 key 的值,比对 TTL
  6. 去代码里找相关逻辑,看有没有特殊分支、有没有条件遗漏
  7. 把所有线索拼起来,得出一个推测,再验证

现在我相当于已经完成了第1步,但后面的步骤非常费时。

同样的排查路径,一个复杂问题可能要在五个不同的系统之间来回切换,翻几十个日志记录,读几十段代码。最后定位到根因时,往往发现真正的原因并不复杂,但找到它的路径很长。


为什么让 AI 自己排查是自然的方向

仔细想一下,上面这个排查过程中,人做的绝大部分工作本质上是信息收集和关联

  • 日志里有没有某条报错?
  • 数据库里这条记录的状态对不对?
  • 缓存里这个 key 的值是什么时候写入的?
  • 这段代码在什么条件下会走哪个分支?

这些问题的共同点是:需要知道去哪里找信息,以及找到之后如何拼起来

而今天的 AI 在这两件事上都已经足够强了:

  • 它能准确判断要查什么、从哪里查
  • 它拿到数据后能迅速理解含义、发现异常、建立关联
  • 它不会疲劳,不会漏看,不会被海量日志淹没

所以一个自然而然的想法就出现了:与其人逐层去查再喂给 AI 分析,为什么不直接让 AI 自己去查?


具体怎么做

非常简单:给 AI 一系列能力,让它像我人工操作一样自主排查。

把现象交给 AI

我直接描述问题:

“我遇到了xxx的问题,C端现象是xxx,我目前初步排查到xxx缓存与数据库内容不一致,你可以看一下日志和代码,帮我查一下是什么原因导致的。相关信息:xxx”

剩下的,AI 自己去完成。

AI 会做什么

AI 接收我的问题后,开始搜索代码,查找相关服务名,然后查找了我给出的缓存内容,搜索了数据库中的数据,还根据我提供的信息自主搜索了日志。

期间,它又与我进行了多轮对话,问了我一些业务信息,我也继续向它提出一些我的猜测。

最后 AI 多次读代码,看具体逻辑在哪个环节出现了偏差,给出了代码级别的分析,并给出了多套解决方案。

整个过程其实和我人工的排查路径是一样的,包括我中途提出一些新的猜测告诉 AI,AI 尝试根据日志和代码验证猜测,如果是我人工做的话也是一样的。但 AI 不需要在数个系统之间手动切换,它每一步都在迅速地调用工具、获取信息、更新判断。

我只需要等它给出结果。

人在这个过程中做什么

如此,人做的事情被压缩到了三个:

  1. 描述问题。 告诉 AI 现象是什么,或者把报错信息给它。
  2. 确认结论。 AI 排查完了会告诉我根因是什么、影响了什么、建议怎么处理。我需要做的是审核判断。
  3. 必要时介入。 如果 AI 遇到了需要人工授权的操作(比如修改数据、发布代码),我要来审批和执行。(在本文的例子中没有遇到)

但最耗时的排查过程本身,AI 已经替我走完了。


实际体验如何

效果比我预期的好不少。

速度上,AI 查日志和查数据库的速度远超人工。人拉一个日志要选时间范围、输过滤条件、一页页翻,AI 调用工具拿到的就是过滤好的数据。多条线索可以并行查,不需要排队等。

准确性上,AI 不会因为疲劳而漏掉关键信息。现在 AI 的上下文长度非常宽裕,它不会因为日志太多就跳过某个看起来"应该没问题"的片段。每一条线索它都会过,而且能把日志、数据、缓存、代码四方面的信息放在一起交叉验证。

最让我印象深刻的一点是,AI 的排查路径并不死板。它会像有经验的工程师一样做有方向的推理——根据上一步的发现来决定下一步查什么,而不是机械地按固定流程把所有东西查一遍。

这种灵活度,是我之前有些高估的难度,而现实比我想象的更好。重要的是,我并没有安装或者自己编写任何相关的 skill,只是提供了查询各种基建的方式(mcp),完全靠它的基础能力就能够做到这种程度。如果做一些 skill 上的优化,效果应该会更好。


一些注意事项

这条路已经验证了非常可行,但是有一些也许要注意的事项。

信息接口需要可用。 AI 要能查到日志、连上数据库、看到缓存、读到代码仓库。这不是说给它一个生产数据库的 root 权限,而是需要提供封装好的查询接口或只读权限。

权限控制要做好。 AI 的能力边界要清楚——它能查什么、不能改什么、哪些操作需要人审批,这些是工程前提。

复杂问题仍然需要人把关。 对于一些涉及多个系统联动的深层架构问题,AI 给出的结论需要人来理解、审核和最终决策。但即便如此,AI 已经把排查的工作量从"几个小时的手动排查"压缩到了"几分钟的自动分析加几分钟的人工确认"。


写在最后

我想表达的核心观点其实很简单:

现在的 AI 已经有能力独立承担相当一部分排查工作。

你不需要把问题拆碎了喂给它,不需要一步步告诉它先查什么后查什么。你只需要把现象描述清楚,或者把接口结果甩给它,然后等它给你结论。

这条路是走得通的,而且效果很好。像我上一篇文章说的:

AI 解放了一部分“不得不使用的人类智能”

很多团队还在用人工排查的老流程,不是因为流程本身更好,而是还没有真正尝试过把这件事交给 AI。

如果你还没试过,建议认真考虑一下。在当下,我认为一定要:

  • 对 AI 祛魅:不要觉得所谓“平台化”、“工程化”才是好的方案,土用法有土用法的优势,更何况,“平台化”不过是“土用法”套了个平台壳,仅此而已。
  • 相信 AI 的能力:在很多事情上,相信 AI 的能力吧,现在的 AI 真的已经足够强了,日常工作中多试几次,多让 AI 干点活。