路由器这东西,绝大多数人家里的态度是“装上就不管了”。它躲在弱电箱里默默工作,没人关心它热不热、忙不忙、有没有在半夜偷偷掉线。直到某一天满屋设备集体断网,你才骂骂咧咧地登录后台,然后发现日志里写满了凌晨三点的拨号失败记录。
我决定改变这个局面,但不想只写一个冷冰冰的监控脚本。于是就有了 The Finn——一个住在路由器里的 AI Agent。它会定期巡检网络状态,发现异常时第一时间给出诊断结论,而且会用一种非常“芬兰人”的方式说话:直接、冷静、略带毒舌,该吐槽就吐槽,但每条吐槽后面都跟着可执行的修复建议。
这篇文章会从零开始拆解 The Finn 的完整实现,包括硬件选型、Agent 核心循环、工具调用机制、人设化 Prompt 设计、离线降级策略,以及最终如何部署到路由器上。代码全部给出,你可以直接复制到自己的项目里,改成任何你喜欢的 Agent 人设。
1. 项目背景与核心概念
1.1 这个项目到底在解决什么问题
家用路由器的困境在于:它是网络故障的第一现场,但也是最后一个被关心设备。大多数家用路由器没有完善的日志告警机制,就算有,也不会有哪台路由器主动给你发一条“外网掉线 3 次,光猫疑似过热”这样的消息。
传统做法是自己写监控脚本,每隔几分钟 ping 一下外网,失败就发告警。这种做法能解决“通不通”的问题,但解决不了“为什么不通”的问题。ping 不通可能是光猫故障、运营商线路波动、DNS 配置错误、路由器 WAN 口协商异常,甚至可能是有人在下载大文件把带宽占满了。普通脚本只能告诉你“挂了”,然后就没有然后了。
The Finn 的思路是把大语言模型(LLM)作为路由器的“运维大脑”。它不只是执行 ping 命令,而是能够理解网络诊断场景,自主决定调用哪些诊断工具,根据多个工具的返回结果推理根因,最终生成一段包含证据、结论和修复步骤的报告。因为 Agent 本身又有性格设定,所以输出不会像传统告警那样干巴巴,而是带有明显“人格”的反馈,这也是项目名字 The Finn 的由来。
1.2 AI Agent 与传统监控脚本的本质区别
很多读者可能对“AI Agent”这个概念有些模糊,这里先做一个清晰区分。
传统监控脚本是“规则驱动”的:你预先写好 if/else,定义什么情况下算异常,什么情况下发告警。它的优点是确定性强、执行快,缺点是不会变通。比如你写“ping 不通就告警”,那 DNS 解析失败时 ping 域名不通但它不告诉你根因;你写“内存超过 90% 告警”,那内存 85% 但负载爆炸的情况它就不会处理。
AI Agent 是“目标驱动”的:你告诉它“检查一下外网是否正常”,它自己规划执行路径。它可能先 ping 网关,再 ping 公共 DNS,再检查本地 DNS 解析,再查系统负载,然后综合分析这些证据得出结论。它甚至能根据问题的组合模式推断故障层级,这是传统脚本很难做到的事情。
用一句话概括:脚本是“死逻辑”,Agent 是“活的推理流程”。
1.3 为什么要把 Agent 放在路由器上
有人会问,既然 Agent 需要调用大模型,为什么不能放在家里的 NAS 或云服务器上?把 Agent 放在路由器上有几个现实原因。
第一,路由器是网络故障的第一发现者。断网时,NAS 可能也连不上外网,但路由器仍然保有局域网内设备的通信能力,并且能看到 WAN 口、拨号日志、DHCP 租约等第一手信息。放在路由器上,Agent 掌握的数据最完整。
第二,路由器是 24 小时在线的。家用服务器可能为了省电关机,但路由器不会。对于网络监控场景,“在场”比“强大”重要得多。
第三,成本低。我们不需要额外购买设备,家庭路由器本身就是现