**重明(Mutong)**的前身叫 resourcemap。它的演进过程,实际上是我在实际运维工作中不断填坑、功能不断生长的过程。
在这个项目中,我做了一个非常彻底的减法:Web 页面上几乎没有任何复杂的操作按钮。
虽然 Mutong 底层支持 12 种复杂的自愈操作(扩缩容、热更新、HPA 管理、版本回滚等),但我选择不把它们做成传统的表单 UI。原因有两个:
- 冠冕堂皇的理由:我认为"API-First"和 Conversational UI(对话式交互)才是未来。与其让用户在一堆下拉框和确认弹窗里找按钮,不如让 AI 听懂人话直接去执行。
- 最真实的理由:我的前端编码能力实在太弱了。 作为一个 SRE,让我写 Go 和写 nGQL 可以,但让我去写几十个带复杂校验的 Vue 表单、调 CSS 样式、处理各种弹窗状态……那简直是折磨。
既然打不过,那就换个打法: 我把这些能力全部封装成 API,交给了 CLI (mutongctl) 和 AI Agent。
- Web 页面回归极简:只保留最擅长的拓扑图(看)、对话(聊)和终端(兜底)。
- 脏活累活交给 CLI:资深运维写脚本比点鼠标快多了。
- 让 AI 充当交互层:用户用自然语言下指令,AI 负责去调那些我没写前端按钮的接口。
这既掩盖了我前端不行的短板,又意外地让产品变得更加"AI Native"了。
核心问题:K8s 集群里的资源越来越多,Pod、Service、Ingress 之间的关系变得难以理清。 解决方案:引入图数据库(NebulaGraph)。
- 初衷:不想只用
kubectl get一条条查,想做全局的拓扑视图。 - 实现:通过 Informer 缓存实时同步 K8s 资源到图数据库,实现资源关联关系查询和前端可视化。
- 产出:解决了资源影响面分析和孤立资源发现的问题。
核心问题:虽然有了拓扑,但处理故障时还需要大量手动敲命令,且告警多时容易漏看。 解决方案:开始尝试把高频运维操作规范化、工具化。
- 告警降噪:基于经验梳理了一些基础的告警过滤规则,缓解"告警风暴"。
- 操作工具化:把常见的 Pod 重启、扩缩容等操作写成了工具接口,不再纯靠 kubectl 手敲。
- 产出:初步积累了运维自动化的经验,意识到"有记录的修复"比"黑盒操作"更安全。
核心问题:自动化解决了操作,但复杂的"根因定位"依然依赖个人经验,MTTR 难以进一步降低。 解决方案:接入 LLM Agent,建立智能诊断闭环。
- 混合诊断:设计"规则快速路径"(低成本)+ "LLM 深度分析"(高精度)的架构。
- MCP 工具服务器:将查询拓扑、日志、指标等 20 个运维动作封装为 MCP 工具,让 LLM 能够自主调用工具排查。
- 知识沉淀:引入 pgvector + NebulaGraph 混合检索,将历史故障向量化,实现相似案例召回。
- 产出:在规则兜底的前提下利用 AI 进行深度分析,将诊断结果转化为可检索的复盘知识。
核心问题:AI 能诊断出根因、能给出修复建议,但"修"这一步还是靠人手动敲命令——诊断和执行之间断链了。而把执行权直接交给 LLM,风险又不可接受。 解决方案:给 MCP 工具服务器加入执行类工具,用"提议-审批"机制把风险关进笼子。
- 工具分两组:
- 安全组(重启 Pod、滚动重启 Deployment、扩缩容):调用后进入既有门禁——自动模式 + 诊断置信度阈值,全程审计留痕;
- 提案组(改镜像、调资源限制、删除 Pod、回滚版本 rollout undo):LLM 只能生成待审批提议,任何情况下都不自动执行,必须人工在界面上批准。
- 准入约束:所有执行类工具强制携带告警指纹,没有诊断结果支撑(无置信度)的调用直接拒绝,防止 LLM 凭空操作;同指纹去重,避免审批列表堆重复项。
- 执行后自动验证:执行成功只代表 API 调用成功,不代表业务恢复。系统在每次执行后启动后台验证——轮询 Deployment rollout 完成度或新 Pod Ready 状态(最长 4 分钟),结果回写审计记录并在前端展示徽标。改镜像/调资源这类可回滚动作验证失败时,自动恢复变更前模板,防止"自愈"变"自伤";其余动作验证失败则标记待人工介入。
- 版本回滚能力:基于 ReplicaSet revision 历史实现 rollout undo(等价 kubectl rollout undo,支持指定版本),补上"改坏了怎么退"的最后一块拼图。
- 自动诊断落库:告警触发的自动诊断结果写入缓存与数据库,自动生成待审批计划,前端点开即用,不再现场重诊。
- 一批真刀真枪的修复:告警自我抑制(抑制规则匹配到自身指纹)、知识库动作与执行枚举对不上、聊天慢诊断被前端超时误掐断、审计表丢失执行参数等。
- 产出:诊断 → 计划 → 审批 → 执行 → 验证 → (失败)自动回滚 → 审计的完整闭环。危险动作的"按钮"还在人手里,但按之前的所有步骤都由系统自动走完。
总结:Mutong 从最初的可视化,演进到自动化、智能化,再到现在的自愈闭环。每一步都是为了解决当时最头疼的实际痛点,而非为了堆砌技术栈。而"放开多少执行权"这道题,答案始终是:让 AI 提议,让人拍板。