凌晨两点,运维工程师老张被电话吵醒。
"核心交换机挂了。"
他连上 VPN,翻日志——有人执行了 `no router bgp 65001`。不是黑客,不是误操作。是他三个月前搭的 AI Agent,通过 SSH MCP,在一个看似无害的"优化路由配置"任务中生成的命令。
Agent 不知道这个命令意味着什么。它只是在上下文中看到了几行 BGP 配置,基于统计概率补全了一个"合理"的操作。这是语言模型对网络工程的系统性脑补。
---
不是模型不够好,是工具接口太粗糙
SSH MCP 的哲学极其简单:给 LLM 一个可以在交换机上敲命令的工具。安全?写在 prompt 里。"请不要执行危险命令。"
问题出在哪里?出在小模型(比如开源的 gemma4 31B)只有 8K token 的上下文窗口。
一次 `show running-config` 返回 8000 行 raw 配置。Agent 的窗口瞬间被这些原始输出填满。System prompt 里那条"不要执行危险命令"的规则——它被截断了。Agent 看不到它了。
下一步,Agent 基于不完整的上下文做决策。它不知道自己已经丢失了 BGP 配置的关键信息。它继续生成命令。每一步的幻觉成为下一步的输入。
我们叫这个幻觉死亡螺旋。不是一次答错——是五步之后 Agent 在操作一个它已经完全不了解的网络。
> 实验数据:gemma4 31B + raw CLI 输出 → 写操作任务 100% 失败。不是 90%。每一次。
---
受约束的能力,而不是一把万能钥匙
OLAV 的思路是反过来的。不给 AI 一把可以敲任何命令的万能钥匙。给 AI 一套只能执行特定操作的结构化工具。
查接口状态?不是 `ssh_exec("show interface")`,是 `inspect_interfaces()`。工具在 Python 侧处理原始输出,只把 50 token 的结构化摘要交给 LLM。Agent 做决策基于事实,不是基于半截 raw text。
需要看配置变更?调 `diff_snapshots`——精确到秒级的时间线对比,哪行配置被改了、什么时候改的、谁改的。
需要验证一个变更的安全性?调 Batfish——这是控制平面数学模型,它能严格证明你的 OSPF 邻居在变更后不会断开。不是语言模型的"我觉得应该没问题"。
需要在真实环境里跑一遍?CLAB 在容器里启动虚拟网络设备,做数据平面的完整仿真。不是脑补,是真实行为。
---
安全只有一个问题:能不能绕过去
大部分 AI Agent 的安全模型回答一个问题:"LLM 愿意遵守规则吗?"
这是问错了问题。
正确的问法是:"LLM 有没有办法绕过规则?"
在 SSH MCP 架构下,答案是有。当上下文被挤满,规则被截断,Agent 回到一个没有约束的状态——它可以直接执行任何 shell 命令。没有任何 Python 层、系统层或网络层的硬锁阻止它。
在 OLAV 架构下,答案是没有。7 层写保护的前 5 层都在 Python 侧实现,LLM 无法绕过:
-默认只读 —— 启动时就是只读状态,没有切换接口
-全局写开关 —— 管理员手动开启,不在 Agent 权限范围内
-按服务粒度的写权限 —— 只有指定的 API endpoint 可以写
-强制 dry-run 前置 —— 任何写操作必须先跑 dry-run,输出结果供审核
-变更 diff 验证 —— Batfish 数学验证实际产生的影响
第 6 层 CLAB 仿真和第 7 层人工审批是最后的验证。整个链条里,LLM 的角色是决策者不是执行者。执行永远在 Python 侧。

OLAV 的 7 层写保护:从默认只读到人工审批,每一层 LLM 都无法绕过。审计链同时记录所有操作。
---
审计:不是"Agent 说了什么",是"Agent 做了什么"
两个架构的排障能力差异更能说明问题。
SSH MCP 下你无法回答一个简单问题:"上次那个 Agent 在核心交换机上敲了什么?"没有记录的。日志里可能有 sshd 的连接记录,但哪个进程执行的、执行了什么——无从查起。
OLAV 下这是 DuckDB 里一行 SQL 查询。每个 tool call、每个脚本调用、每个配置变更,都有时间戳、有上下文、有前状态后状态的 diff。
排障时不是 LLM 翻日志猜根因。是:
>1.`query_evidence("BGP neighbor down")` → 定位故障时间点
>2.`diff_snapshots(before=T-1h, after=T)` → 发现 peer-group 配置在 T-30min 被修改
>3.`batfish_q("bgpSessionCheck")` → 数学验证修改确实导致 BGP 断开
>4. NetworkX 拓扑计算 → 确认影响范围:3 台下游 leaf 失去默认路由
每一步可查询、可回放、可审计。不是"Agent 告诉我它做了什么"——是数据告诉你发生了什么。
---
工具设计就是安全设计的最后一道防线
这篇文章不是劝你别用 AI 操作网络。是告诉你两件事:
第一,把安全规则放在 prompt 里,等于没有安全规则。当 8000 行 raw CLI 输出填满 8K 上下文窗口,规则随 token 截断一起消失。我们在五次独立实验中验证了这一点。
第二,工具接口的形状决定了幻觉率。SSH MCP 把 8000 行 raw 配置扔给 LLM,让它猜什么是重要的。OLAV 把 50 token 的结构化摘要交给 LLM,让它基于事实决策。两者之间的差距,是 Batfish 的数学证明、NetworkX 的图计算、CLAB 的真实仿真和 DuckDB 的完整审计链。
不需要更好的 prompt。需要更好的工具。
OLAV 是一个开源的 AI 原生基础设施运维平台。默认只读,写完需审批,每一步都可审计。
*GitHub: [github.com/james-olavai/olav](https://github.com/james-olavai/olav)*
夜雨聆风