1. 为什么我要把实时音视频和AI Agent放在一起做远程运维

事情得从去年年底说起。当时我负责一个跨省项目的现场交付,设备部署在客户侧机房,而团队里最懂那套老系统的专家常驻总部。现场小伙子对着控制台拍了几张照片发到群里,群里你一句我一句猜了半小时,最后才定位到一个再简单不过的信号接线问题。人赶过去两小时,问题解决五分钟,来回差旅倒是花了两千多。

这类场景干过运维的人都懂,远程运维从来不只是"能连上机器敲命令"这么简单。真正难的是让远端的人像站在现场一样看清环境、听到设备声音、和现场人员协同操作,同时在最短时间内把专家脑子里的经验变成可执行的判断。传统方案要么是电话加照片,要么是TeamViewer式的屏幕共享,音画割裂、沟通链条长、信息损耗大,一旦遇到设备异响、指示灯闪烁、线缆松动这类物理环境问题,远程就彻底瞎了。

所以当大模型和AI Agent开始成熟之后,我一直在琢磨一件事:能不能把实时音视频的"在场感"和AI Agent的"判断力"结合起来,做一套真正面向运维场景的远程系统。不是简单的视频通话加一个聊天机器人,而是让音视频成为AI的眼睛和耳朵,让Agent成为专家的数字化分身。它会看、会听、会查手册、会拉取设备日志,还能把高亮箭头直接标在现场画面的设备开关上。

这套系统的核心价值有三块。第一,把远程专家的时间从"路上"和"沟通拉锯"里解放出来,一个人同时支撑多个现场成为可能。第二,把老师傅的判断逻辑固化下来,通过AI Agent给普通工程师兜底,新人也能干出老手的活。第三,所有排障过程中的视频、语音、Agent推理记录都会沉淀成结构化数据,后续就是最有价值的运维知识库。

这套方案适合谁?适合正在做设备运维、售后支持、远程巡检的团队,也适合独立开发者和架构师想给自己手里的项目加一层AI能力。技术栈不算特别新,但组合方式会颠覆传统的运维工具形态。接下来我把自己从零搭建这套系统踩过的坑、做过的选型、写过的核心代码逻辑完整讲一遍。

2. 先认清Agent的边界,才不会被"智能"带偏

2.1 Agent不是玄学,它和LLM的关系是一句话能讲清的

开始动工之前,我花了一周时间把AI Agent的概念彻底捋了一遍,因为团队里好几个同事聊到Agent的时候,眼神是飘的。他们分不清Agent、大模型和AI模型这三者的区别,甚至有人觉得DeepSeek和ChatGPT本身就是Agent。

这里我用自己的理解做个通俗版定义。AI模型是所有智能能力的底层,覆盖了语音识别、视觉识别、自然语言处理这些算法模型。LLM(大语言模型)是其中专攻文本理解和生成的一类模型,DeepSeek、GPT、Qwen都属于这个范畴。而Agent是在LLM之上构建的完整行动系统,它不只是生成回答,而是能拆解任务、调用工具、访问记忆、与环境交互,最终完成某个具体目标。打个比方,LLM是提供推理能力的大脑皮层,Agent是长在大脑皮层上、有手有脚有记忆的完整个体。

很多人都被"Agent = LLM"这个直觉带偏了,结果做出来的东西只是个高级聊天框。我踩过这个坑,后来才把Agent拆分成四个组成要素来理解。

组成部分 作用 在远程运维里的具体表现
大模型推理核心 理解任务、拆解步骤、生成结论 根据现场故障描述,判断是电源链路还是通信链路问题
工具调用能力 让Agent能操作外部系统 调起设备日志接口、查询维修手册、发送工单指令
记忆模块 保存上下文和历史经验 记住同一台设备的历史故障,避免重复排查
感知输入 接入多模态信号 解析视频帧里的仪表读数、识别语音中的关键词

2.2 Agent和LLM在实际系统中的协作方式

我的系统里Agent不是直接拿原始视频去理解,那样成本太高也不稳定。我采用的是一套分层协作机制:音视频底座负责采集和传输,轻量视觉模型负责抽帧和初步识别,Agent负责综合推理和任务编排。

举个例子。现场工程师用手机对着配电柜拍摄,视频流实时传到云端。这时我会在关键帧上跑一个目标检测模型,识别柜内的指示灯、开关状态、仪表读数。检测结果以结构化数据传给Agent:指示灯L2红色常亮、电压表读数226V、开关S3处于OFF位置。Agent接着查设备手册,发现S3应该是ON状态,于是判断是开关未闭合导致L2告警,生成排查建议推给前端,前端把建议以文字卡片叠加在视频画面上。

这个过程中LLM只参与最后一段推理,前面的识别和传输全由传统技术栈完成。这样做的原因是Agent的推理有延迟且成本高,不能把它用在低价值的重复识别任务上。能并行处理的不串行,能在本地做的不上云,这在整个项目里都是铁律。

3. 整体架构怎么设计:音视频底座和Agent大脑各管一摊

3.1 核心架构分层

我的整体架构分五层,从底往上依次是设备接入层、音视频传输层、AI服务层、Agent控制层、业务展示层。

设备接入层解决"现场信号怎么进来"的问题。手机端负责大部分临时接入场景,Web端适配固定摄像头,还有一些工业设备通过RTSP协议推流接入。这层看起来简单,但兼容性问题最多,我后面在问题排查章节会具体讲。

音视频传输层是整个系统的骨架,我用的是基于WebRTC的SFU架构,配合开源流媒体服务器做信令转发和媒体路由。为什么选WebRTC而不是直接用HTTP-FLV或HLS,因为运维场景对延迟极其敏感。你在远端看到设备面板,然后对着现场工程师说"把那个黑色旋钮向左拧半圈",如果画面延迟超过两秒,对方手上的动作和你的指令就对不上,协同效率断崖式下跌。WebRTC能把端到端延迟压到500毫秒以内,这是传统直播方案做不到的。

AI服务层跑的是视觉识别、语音转写、声纹分析这些模型。我用了双轨设计,轻量模型部署在本地边缘节点,满足实时性要求;复杂推理放到云端GPU实例,保证精度。

Agent控制层是核心中的核心。它负责维护会话上下文、编排任务流程、调用工具集。我给它起名叫OpsAgent,内部有一个状态机管理排障流程,从接收问题到收集信息、生成假设、验证假设、给出结论,每一步都有明确的状态流转。

业务展示层是用户直接看到的界面。我做了三端:现场端是移动App,用于拍视频、收指导;专家端是Web控制台,可以看多路实时画面、做空间标注;管理端负责权限和工单流转。

3.2 为什么音视频底座必须单独设计

很多做AI的人会把音视频当成"调一个SDK就行"的附属功能,这是最大的误区。音视频和Agent结合时有两个核心问题:一是时间同步,二是事件语义化。

时间同步问题出在Agent做推理需要时间。画面在0毫秒被采集,Agent在800毫秒后才给出"这个指示灯异常"的结论。如果Agent的结论直接叠加在最新帧上,画面对不上。我做的方案是给每个视频帧打上绝对时间戳,Agent的每条分析结果也带时间戳,前端展示时把分析结果对齐到对应时间点的帧上。虽然会有几百毫秒的延迟,但不影响人眼观看的一致性。

事件语义化解决的是"把视频流变成Agent能理解的语言"的问题。Agent没法直接消费连续的视频帧,它需要的是结构化事件流。我在音视频层做了一套事件提取管道:每5秒抽一帧做关键目标检测,每1秒取一次音频做关键词识别,检测结果统一封装成JSON事件推给Agent。这样Agent不需要时刻盯着视频,它只在收到异常事件时被唤醒,省token省电力。

3.3 AI Agent组成结构在本项目中的落地

网上关于Agent组成结构的资料很多,我的落地经验是把Agent拆成五件套:主控大脑、工具注册表、短期工作记忆、长期经验库、多模态输入处理器。

主控大脑就是LLM推理核心,我这里用的是DeepSeek的API做实验,后来换成Qwen-Max的更长上下文版本。工具注册表维护的是Agent可以调用的所有外部能力,包括设备日志查询、工单系统写入、手册文档检索、前端标注指令等。每个工具都用一个JSON Schema描述输入输出,Agent通过函数调用机制选择工具。短期工作记忆是一个滑动窗口消息队列,保存最近30条对话和事件,控制上下文长度。长期经验库是每次排障结束后自动生成的总结记录,存在向量数据库里供后续检索。多模态输入处理器负责把视频结构化结果、语音转写文本、传感器读数统一成文本上下文,因为现阶段的LLM还是以文本为输入为主。

这套结构的关键在于工具注册表。我一开始只给Agent留了三个工具,后来发现排障场景千奇百怪,工具必须能热插拔。现在我在管理后台可以随时挂载新工具,Agent自动获取工具描述就能使用,不需要改一行代码。

4. 核心功能拆解:从AR标注到智能排障

4.1 AR空间标注:让远端的人"指哪打哪"

AR空间标注是整个系统里最出效果的功能,也是我最想分享细节的部分。实现它需要的不是炫酷的AR引擎,而是一套精准的坐标映射逻辑。

我选的方案是Telestration(远程画面标注),即专家在看视频时,用手指或鼠标在某个设备上画圈、画箭头,然后这些标注需要准确出现在现场人员的屏幕上,并且叠在真实的物理设备上。难点在于人员的手机在移动,画面坐标会持续变化,静态叠加不跑偏才怪。

我的实现思路是用图像特征点做锚定。首先在视频首帧提取ORB特征点,建立特征点和屏幕坐标的映射关系。专家在屏幕上画一个框,系统记录框选区域内的特征点集合。后续每一帧,我重新提取特征点做特征匹配,用单应性矩阵计算出新的坐标位置。这样即使摄像机缓慢移动,标注框也能跟着目标设备走。当然如果快速剧烈抖动,特征点匹配会失败,这时我会提示重新标注。

具体的关键代码如下,定义了一个锚定标注的核心数据结构:

// 标注锚定核心逻辑(前端简化版)
class TelestrationAnchor {
  constructor(firstFrameKeypoints) {
    // 从首帧提取的关键点(ORB feature)
    this.anchorPoints = firstFrameKeypoints;
    this.homography = null;
  }

  // 输入新的一帧,计算标注坐标对应的新位置
  update(currentFrameKeypoints) {
    // 用特征匹配计算单应性变换矩阵
    const matches = matchFeatures(this.anchorPoints, currentFrameKeypoints);
    this.homography = computeHomography(matches);

    Object.keys(this.annotations).forEach(id => {
      const oldPos = this.annotations[id].position;
      // 坐标变换之后,标注跟随物理目标移动
      this.annotations[id].position = transformPoint(oldPos, this.homography);
    });
  }
}

实时传输上,标注坐标直接走WebRTC DataChannel通道,不占媒体带宽,毫秒级到达对端。实测下来,在手机稳定握持的情况下,标注可以维持30秒以上不漂移,足够完成一段操作指令的下发。

4.2 AI辅助排障:从"人肉查手册"到Agent自动排查

AR标注解决的是"怎么指",AI辅助排障解决的是"指哪里"以及在动手之前先判断值不值得指。

我给Agent设计了一条基本的排障决策链路。现场端说话:"这个变频器启动之后三秒钟就报过流。"Agent拿到语音转写文本,先做实体抽取,提取出"变频器""过流"两个关键实体。接着去工具注册表里找相关工具,检索设备手册中关于过流故障的可能原因。手册原文是一段几百页PDF,我用向量化检索的方式把它切成块提前入库,Agent通过语义搜索找到相关性最高的三到五段内容。最后Agent把现场视频的结构化信息、手册段落和工作人员的说话内容一起糅合成上下文,输出排查建议。

这套流程里最巧妙的点在于Agent并不仅仅依赖文本。我让视觉模型同时检测控制面板上的故障代码,如果屏幕显示F0004,Agent会把F0004对应的故障解释也拉进来,不用等现场人员手动报代码。这听起来平平无奇,但现场人员很多时候根本不知道要看什么参数、读什么代码。Agent把"不知道该看什么"这个信息盲区直接填平了。

4.3 多专家远程会诊与工单自动沉淀

传统远程运维只支持单点协同时,遇到跨领域问题需要把电气工程师、软件工程师、机械工程师拉进同一个群聊,各自提问、各自判断。我的系统让专家可以在Web端同时接入同一路视频流,每个专家有独立的标注层,只能看到自己的标注和公共标注,Agent把各专家的建议汇总后生成综合排查报告。

这背后的设计有点讲究。多专家同时标注时,画面会变得很乱,每个人画一个圈,现场人员根本不知道先看谁。我的方案是给专家分了优先级角色。在Session开始时,发起人确定主责专家和协办专家,主责专家的标注对现场人员可见,协办专家的标注只对主责专家可见。这样既保证多专家协作的信息汇聚,又不干扰现场操作人员的注意力。

每一次会诊结束,Agent会自动生成结构化记录:故障现象、排查过程、参与人员、最终结论、操作步骤。这份记录直接写入长期经验库。我实测下来,运行三个月之后,这套系统对常见故障的"首次定位成功率"从最初的37%提升到了68%,很大程度归功于知识库的积累。

5. 动手实现一套最小可用系统的完整路径

5.1 技术选型:我踩过一圈之后留下来的组合

技术选型是整个项目里翻车最多的地方,我从头到尾列一下最终确定的组合以及取舍理由。

模块 选型 备选方案 选择理由
音视频传输 WebRTC + mediasoup Janus、SRS mediasoup的SFU性能高,多路流转发性能好,文档全面
信令服务 Socket.IO自研 - 轻量灵活,和业务系统容易集成
视觉识别 YOLOv8 + ONNX Runtime PaddleDetection 部署简单,边缘端推理和云上部署一套代码搞定
语音转写 讯飞流式ASR Whisper 中文识别准确率高,延迟低,流式接口适合实时场景
大模型 DeepSeek API / Qwen-Max GPT-4、本地模型 成本可控,推理效果满足需求,支持function calling
向量数据库 Milvus Lite Chroma、Qdrant 支持本地轻量运行,后续扩展方便
前端 微信小程序 + Vue3 Web React Native 现场端用小程序免安装,专家端Web支持多窗口
后端框架 Spring Boot Node.js 团队Java技术栈为主,生态成熟

这套组合的核心原则是先把业务跑通,再考虑极致优化。比如视觉识别模型,我一开始用的YOLOv5,后来换成v8,检测精度提升不多但推理速度更快。语音转写选的讯飞,因为现场环境噪音大,需要针对工业场景做过降噪训练的ASR服务,这是Whisper原生模型暂时做不到的。

5.2 Agent工具集的设计与调用链路

Agent要干活,必须有一组好用的工具。我为远程运维系统设计了一组标准工具集,每个工具都遵循OpenAI Function Calling规范,这样换任何支持Function Calling的LLM都能无缝对接。

工具集包含这么几个核心能力:设备信息查询、日志检索、维修手册检索、传感器数据拉取、工单创建更新、操作指令下发。下面是一个设备日志查询工具的JSON Schema定义:

{
  "name": "query_device_logs",
  "description": "查询指定设备的运行日志,支持按时间范围和关键词过滤",
  "parameters": {
    "type": "object",
    "properties": {
      "device_id": {
        "type": "string",
        "description": "设备唯一标识"
      },
      "start_time": {
        "type": "string",
        "description": "日志起始时间,ISO 8601格式"
      },
      "end_time": {
        "type": "string",
        "description": "日志结束时间,ISO 8601格式"
      },
      "keyword": {
        "type": "string",
        "description": "日志关键词过滤"
      }
    },
    "required": ["device_id", "start_time", "end_time"]
  }
}

工具本身好写,难的是让Agent知道"什么时候该调哪个工具"。这里的关键在prompt设计。我在系统提示词里写了一段清晰的行为准则,大意是:当用户描述故障现象时,先查询设备信息确认设备类型;再查询最近30分钟日志定位异常时间段;如果现象和特定模块相关,检索对应维修手册;形成结论后,建议创建工单记录。这套准则加上纠错机制,让Agent的排障路径稳定了很多。

5.3 信令与媒体流的联动:核心流程串讲

音视频和Agent不是孤立的两条线,它们靠一套联动的流程串起来。我描述一下一次完整呼叫的流程:

现场人员打开小程序进入工作台,发起远程协助请求。后端服务创建Session,分配Session ID,同时生成一对加入凭证:视频呼叫凭证和Agent会话凭证。专家端收到呼叫通知后点击接听,WebRTC媒体流建立,同时Agent会话激活。

这个过程中Agent做了一件很关键的事:它会主动分析首帧画面。视频流建立后,我让视觉模型对首帧做全局检测,识别出画面里的设备类型、周围环境特征、是否有明显告警指示。检测结果作为初始上下文自动进入Agent会话。这样专家还没开口,Agent已经有了基础判断,可以在专家端侧边栏先展示"画面中检测到KHC-200变频器,面板显示F0004故障代码"这类信息。专家开场就知道该往哪里看。

信令层我额外设计了一个媒体事件通道,当视觉模型检测到异常事件时,通过Socket.IO实时推送一条结构化消息给Agent和所有端侧,前端收到后展示一条浮动提示条,Agent收到后更新上下文。这个机制让系统从"人找问题"变成了"事件找人"。

6. 实战中踩过的坑和排查技巧实录

6.1 多路视频并发时的CPU和带宽失控

第一个大坑是并发路数一上来,服务器CPU直接打满。原因是我给每一路视频都单独跑了一个视觉检测实例,YOLOv8推理是CPU密集任务,8路视频同时推理时服务器直接扛不住。

排查过程花了两天。我先用 top 看CPU占用,发现python进程占满了几乎所有核心。接着用 perf 分析热点,定位到预处理环节的图像缩放在反复执行。最后我改成共享推理流水线,把所有视频帧送到一个统一的消息队列,由一个GPU实例排队推理,检测结果按视频流ID分发。这样GPU利用率从20%提升到85%,支持的并发路数翻了好几倍。

另一条带宽优化经验是把视频帧抽帧策略从固定每5秒一帧改为自适应抽帧。当画面变化小(比如静态仪表盘)时拉长到10秒,当检测到画面变化剧烈(比如有人走动、有物体移动)时自动缩短到1秒。这一套优化下来,同样带宽下支持的路数多了40%。

6.2 Agent"幻觉"导致误判怎么办

Agent在排障过程中偶尔会一本正经地胡说八道。最典型的一次是现场报"伺服驱动器报警A8",Agent在手册里检索不到A8这个代码,居然编了一个"A8表示电机过热"的解释,差点误导工程师往散热方向排查。实际手册里A8是通信超时。

这个坑让我意识到,Agent的自信和正确性完全是两码事。我引入了两个机制来缓解。第一是检索置信度机制,向量检索手册时,如果最高分文档的语义相似度低于阈值,Agent必须在回答里明确标注"手册中未找到该故障码的准确定义,以下判断仅供参考"。第二是事实核查环节,Agent每次给出最终结论前,必须列出来自工具的真实数据(日志片段、手册原文等),前端显示的结论中,工具数据部分用蓝色渲染,推理部分用灰色渲染,让专家一眼就能分辨哪些是事实、哪些是推测。

6.3 弱网环境下的音视频与Agent协同降级

远程运维最头疼的网络场景是现场只有4G信号甚至2G网络。视频720P直接卡成PPT,更别说流畅AR标注了。我摸索出一套分级降级策略,效果可以肉眼改善。

第一级是优先保证音频,因为运维协同的绝大部分信息靠语音传递。当检测到网络带宽不足时,先自动把视频从720P降到360P,如果还不行就降到180P。第二级是动态调整关键帧间隔,弱网下增加关键帧间隔,减少带宽压力但换丢帧恢复能力,这个权衡需要调。第三级是降级AI分析策略,画质太低时视觉模型识别率下降明显,这时Agent会主动提示"当前画面质量不足,检测结果置信度降低",并把处理重心转向音频和日志分析,用语音关键词+设备日志来继续排障。

我实测在2Mbps带宽的弱网环境里,这套降级策略可以把通话保持稳定,Agent虽然"看"不太清了,但依然能通过日志和语音做大部分故障判断。

7. 关于Agent能力边界和远程运维未来的几点心得

写到这里,我想分享几个在实际开发过程中形成的个人判断。

第一,Agent不是来替代运维专家的,它的价值在于把专家的经验"稀释"给更多普通工程师。专家一天只能接20个电话,但Agent可以把专家沉淀下来的排障树变成自动化流程,一天处理500个类似问题。这一点我在知识库积累三个月后感受特别明显,最有价值的根本不是技术代码,而是那几百条真实故障处置记录。

第二,实时音视频与AI Agent的结合,难点不在AI,而在工程化。要把端到端延迟控制在可接受范围内,要保证弱网下的可用性,要让视频事件流和大模型推理无缝衔接,每一个都是繁琐而细致的工程问题。大模型技术在飞速进化,但工程问题不会自动消失。

第三,做这套系统最关键的思维转变是把视频从"给人看的画面"变成"给Agent感知的信号"。一旦你开始用事件流、用结构化数据、用元数据来描述视频内容,整个系统的可能性就打开了。视频不再只是记录,而是运维系统的感知神经末梢。

最后分享一个小建议。如果你也想做类似系统,不要一上来就追求大而全。把"专家通过实时视频加标注指导现场人员"这一条核心链路先跑通,然后逐步叠加Agent能力。先让音视频稳定,再让Agent会查日志,再让Agent会调用工具,每一步都能独立创造价值。这套路走下来,你的系统不会变成另一堆躺在服务器上的代码,而是真正能帮人省时间、少跑路、多解决问题的工具。

Logo

邀请您加入社区

更多推荐