基于OpenCode构建智能运维助手的实践探索
深入钻研AIOps领域已逾半载,目前手中已积累多项可实施的方案,后续将把这些方案悉数整合进我的大模型教学课程中。
本周直播课计划重点剖析OpenCode,因此近期频繁使用该工具,并尝试基于它构建了一款智能运维助手,实际体验后发现,其灵活性与轻量化程度相比Dify更胜一筹。
既然你阅读了此文,想必对OpenCode并不陌生,没错,它正如Claude Code、Codex CLI那般,是一款AI编程利器。OpenCode的核心优势在于开源、卓越的终端交互体验、可控的权限体系以及深度的可定制性。
今日便以此为例,为大家展示如何利用OpenCode打造智能运维助手的实战案例。
01 | 架构总览
02 | 分层架构设计
交互入口涵盖命令行终端、聊天对话框、值班群机器人或内部运维门户。此处的核心不在于界面UI,而在于支持用户直接使用运维术语交互,例如:
“分析一下支付服务为何在5分钟内错误率激增”
“对比此次故障前后的发布记录与节点异常情况”
“依据S1标准起草一份事故通报”
“基于SOP列出回滚前的检查清单”
Agent主要负责解析意图、拆解任务、确定调用的MCP工具及是否加载特定skill。OpenCode的skills机制正是为这种“先识别可用skill,再按需加载”的流程量身定制的。
此层是方案能否成功落地的核心。通常会接入以下几类MCP Server:
监控告警类:Prometheus、Grafana、Alertmanager
日志链路类:ELK、Loki、Jaeger、Tempo
资源环境类:Kubernetes、云平台、CMDB
发布变更类:CI/CD、Git平台、制品库
协同记录类:工单系统、知识库、群通知、事故复盘库
MCP的价值并非取代现有系统,而是为agent提供统一的访问接口。模型无需了解各平台细节,仅需掌握“可用工具、工具功能及调用时机”。
若缺乏skills,AI极易陷入“每次即兴发挥”的困境。而运维最忌讳临场发挥,因为生产故障处理强调一致性、可审计及可复盘。因此,我们通常将高频流程固化为skills,诸如:
告警初步研判skill
Kubernetes故障诊断skill
变更前预检skill
故障通报生成skill
事故复盘整理skill
发布回滚决策辅助skill
4)治理层:权限管控、审计追踪与边界约束
这是许多PoC项目容易忽视,但在生产环境中不可或缺的一环。因为一旦agent不仅限于“读”,还开始“写”或“执行”,就必须明确界定:
哪些操作仅限查询,哪些允许执行
哪些步骤必须人工确认
哪些结果需记录审计日志
哪些系统仅限测试环境生效
哪些高危操作必须走审批流程
MCP仅是能力协议,无法自动完成治理;Skills也只是流程封装,无法自动保障安全。实际落地时,必须在工具层与业务层双重设置安全护栏。
03 | 智能助手运作流程
某日21:40,支付网关服务触发高优先级告警:5分钟内错误率由0.3%飙升至8.7%,部分核心接口RT同步上升。使用OpenCode智能助手的流程如下:
值班人员无需逐一打开十几个页面,直接向智能运维助手下达指令:
“协助排查支付网关的高错误率问题,优先判断是否由发布引起,若是则提供回滚建议;若非,则继续分析节点及依赖状况。”
该请求本身即包含了一个典型的运维流程:初步研判 -> 归因分析 -> 提出建议。
此时,agent不会仅回复“可能是配置问题”。它会根据任务意图,优先加载“告警初判skill”或“故障排查skill”,随后调用多个MCP工具:
1)查询近15分钟核心指标趋势
2)查询近1小时发布记录
3)拉取异常Pod/节点状态
4)检查下游依赖调用失败率
5)汇总历史类似事故的处置经验
这正是MCP与skills协同的体现:MCP负责“查什么、调什么”,skill负责“执行顺序与判断逻辑”。
优秀的智能运维助手,并非简单罗列十张图表和二十条日志,而是优先提供结论框架:
现象:21:38后支付网关错误率急剧攀升,主要集中在/createOrder接口
初步判断:与21:31的灰度发布时间高度吻合
证据:
新版本Pod错误率显著高于旧版本
节点层无明显资源争抢
下游库存服务RT虽有波动,但未构成主因
建议:
立即暂停灰度扩容
保留1个异常实例用于诊断
其余新版本实例执行回滚
同步向值班群发送一级故障通报草稿
此处的关键不在于“AI具备总结能力”,而在于它能依据skill中定义的SOP,将多源数据整合为利于决策的输出。
若团队治理体系成熟,可进一步推进自动化。例如,对于低风险操作,agent在确认后可自动执行:
暂停发布流水线
触发指定服务回滚
拉起标准通知模板
自动生成事故单草稿
将本次排障过程整理为复盘初稿
但必须强调:自动化绝非全自动。在运维场景中,更合理的模式通常是“AI辅助决策 + 人工确认执行”,尤其是涉及生产回滚、扩缩容、熔断、切流等高风险操作时。
04 | 智能助手实施路径
1)环境搭建
安装OpenCode(支持终端/IDE/桌面版)
配置LLM API
配置本地或远程MCP Server接入权限
根据运维需求,至少接入以下MCP Server:
监控:Prometheus / Grafana MCP Server
日志:ELK 或 Loki MCP Server
链路追踪:Jaeger / Tempo MCP Server
容器/资源管理:Kubernetes MCP Server
发布流水线:CI/CD MCP Server(Jenkins / GitLab)
资产与配置:CMDB MCP Server
协同/工单:工单系统 MCP Server(Jira / ServiceNow)
MCP Server的作用在于将外部系统功能进行统一标准化,使agent能够通过统一接口进行调用。
告警初判Skill:依据告警类型自动汇总关键指标与日志
Kubernetes排查 Skill:查询Pod、节点状态、事件及依赖服务
变更检查Skill:核查发布版本、发布记录及变更审批状态
复盘整理Skill:基于故障数据生成事故复盘初稿
通报生成Skill:生成事故通报及内部通知草稿
Skills通过SKILL.md进行定义,每个Skill应尽量聚焦单一职责,包含触发条件、操作步骤及输出格式。
创建运维智能助手Agent
加载已安装的MCP Servers和Skills
设置权限策略(分层设置:只读 / 建议 / 执行)
配置对话入口(命令行、Web控制台或聊天机器人)