我的Windows台式机一个月的日志轻松攒到好几万条。这些条目里既有“NVMe硬盘控制器发出警告”,也有“某个性能计数器DLL第九千次无害加载失败”。Windows把这两类记录用完全相同的急迫口吻塞进事件查看器,而人类的大脑根本做不到把凌晨两点十四分的磁盘警告,和两点十五分的备份失败,跨两个不同日志关联起来。更别说观察一个曾经每周报一次的错误,现在是不是每小时都在跳——这活我们不擅长,几乎所有人的选择都是关上窗口,直到系统肉眼可见地崩掉。

这件事的正反两面非常清晰。正方观点:事件查看器里真的藏着重要信息。硬件故障藏在WHEA-Logger里,文件系统损坏的蛛丝马迹躲在Ntfs/Operational里,这些日志被砍在好几层菜单底下,但它们是存在的,也能解释上周那次蓝屏究竟发生了什么。反方观点:这台机器把日志当成一场没有任何过滤的消防水龙头狂喷,DCOM错误像背景噪音一样永不停歇,没有任何内置机制来告诉用户“这条警告和那台备份失败之间有因果关系”。Windows 自身的 Copilot 本来最该站出来解决这个鸿沟,但它至今没有读取事件日志的能力。

打开网易新闻 查看精彩图片

我的判断是这件事的责任不在用户偷懒。微软把事件查看器做成了一座没有索引、没有巡检员的资料库,反而给人感觉像是故意把答案埋在海量噪音底下。人的认知特点天然不适合在海量非结构化数据里找交叉关联,但这恰好是大语言模型的舒适区。一堆没有标注的原文、一大片关于每个事件ID是什么意思的技术文档,加上一条“从干草堆里把故事脉络找出来”的提示词——Claude几秒之内就能告诉我,过去三个月里哪些错误组合是真实的健康隐患,哪些不过是周期性无害抖动。

我把Windows事件查看器的日志喂给Claude,做法没有多玄乎。核心是先用PowerShell把需要看的日志通道导出成文本,再交给模型去做关联分析。我不愿意让Claude用宝贵的Token去干PowerShell能干的粗活,所以负责抽取、清洗、打包的那部分脚本都由Claude当场写完,我只负责运行。关键日志根本不在大家最熟悉的“应用程序”和“系统”那两个视图里:跟硬件直接相关的故障在WHEA-Logger下,关于NTFS文件系统的细微凋零信息藏在Microsoft/Windows/Ntfs/Operational路径下,单靠手动点击甚至想不起来它们的存在。

在这场人机协作里我还踩到一个经验:不要拿本地跑的小模型来干诊断的活。不是因为它们跑不动,而是因为误判的代价太高。如果一个模型错误地解读了控制器警告,我会傻乎乎重装整个操作系统,麻烦太大,所以当前只敢用前端的大模型处理。Claude给出的诊断结果最终帮我揪出了好几个月来一直潜伏在系统里的慢性故障,这些故障Windows自己从来不曾主动推送过一个通知,而通过自定义通知规则,我头一次获得了一套始终在后台运行的系统健康检查,它不吵、不闹,只在真出事的时候才响。

把日志导出来这件事本身也是一道坎。Windows 提供过滤和导出的工具,但操作繁琐到可以劝退大多数用户。好在我只需要向Claude描述大意,它就能生成精确的PowerShell脚本,把跨越多条日志通道的片段,按时间窗口拼凑成可供阅读的文本块。整个过程变成了:我提出需要比对哪些事件日志、时间跨度多长,Claude输出脚本,我粘贴执行,再把结果交回去分析。这套流水线一旦搭起来,应付系统暗病的效率,比过去十几年盲目忽略红色叉号快得出奇。