技术博客

阅读约 11 分钟

一个入口,多专家怎么协同?

不是多开聊天框。DataBuff 用「分诊台 + 专科会诊」讲清运维为何要多专家、大脑如何异步派活并行汇总,附实机一句话双专家 Demo。

凌晨两点,告警群又炸了。

有人要查错误率,有人要拉 Trace,还有人怀疑容器磁盘满了。你开一个 AI 窗口,它要么泛泛而谈,要么把指标、日志、SSH 搅在一起——越问越乱

多开几个窗口更糟:各说各话,最后没有一份能直接转故障群的结论。

这篇讲清楚两件事:① 运维场景为什么需要多专家,单窗口为啥不够;② 多起来以后怎么派活、并行、汇总而不乱。下面用 DataBuff 的实现思路拆解,不写源码,只讲框架。
· · ·
先回答根本问题:为啥需要多专家?

很多人第一反应是:一个更强的模型、一个更长的 Prompt,不就够了吗?值班里真碰到复杂故障,往往不够——原因和医院一样:不是医生不够聪明,而是专科、设备、流程本来就该分开。

想象急诊来了一个病人,主诉胸痛。你不会指望一个全科医生同时去做心电图、抽血化验、拍 CT、上台手术、还要翻用药手册——他就算再厉害,也没有心内科的监护仪、影像科的 CT 机、手术室的权限。硬一个人包打天下,结果是每项都浅尝辄止,还容易把化验单和手术方案搅在一起下错判断。

运维值班是一回事。你问「集群有没有异常」,背后可能同时涉及:

  • 问数——去 Doris 查延迟、错误率,沿 Trace 追慢请求(像化验科看指标)
  • 巡检——扫 30 多个服务的 JVM、GC、下游依赖(像体检中心做分级筛查)
  • 运维——SSH 上机看容器日志、磁盘、进程(像外科要上手术台)
  • 答疑——翻产品文档,告诉你 OTel 端口、告警菜单在哪(像医务科解答流程)

四套工具不同、权限不同、回答规范也不同。塞进同一个 Agent 的 Prompt 里,上下文会迅速膨胀:指标口径和 Shell 命令混在一起,模型容易串味、越权、幻觉——就像让一个人同时记四本专科手册,还边记边给你下结论。

单 Agent · 一个全科包打天下

一个窗口扛所有:查数、巡检、SSH、翻文档全塞一个 Prompt。

复杂故障只能排队查;工具和权限边界模糊;上下文越长越容易乱。

适合:简单问答、单一动作——像感冒开药,全科够用。

多专家 · 会诊制

分诊台判断叫谁;各专家只干本行,用本行工具查本行数据。

问数和巡检可以同时开工;每份结论带证据,最后合成一张「病历摘要」。

适合:跨域诊断、要并行、要可转发的故障报告——必须会诊。

那多开几个聊天窗口呢?也不行。相当于病人家属自己跑科室:没有分诊台,不知道先挂哪科;各窗口互不知道对方查了什么,最后汇总还得靠你人肉拼——凌晨两点谁受得了。

所以多专家不是为了赶时髦。运维问题天然跨域、要并行、要证据链——这和医院「分诊 → 专科检查 → 主治汇总」是同一类结构。差别只在于:科室换成了问数/巡检/运维/答疑,化验单换成了指标和 Trace 报告。
· · ·
会诊怎么落地:一个入口,后台分工

把 DataBuff 的 AI 平台想成医院值班会诊——前面说了为什么要会诊,这里说会诊长什么样:

  • 你只对一个分诊台(AI 大脑)说话
  • 分诊台自己不做化验、不上手术台,只负责叫对口科室
  • 问数、巡检、运维、产品答疑各查各的数据,交带证据的报告
  • 分诊台合成一份你能直接处置的答复
会诊式协同总览
图 1:你只对一个入口;复杂协作在后台完成

这和「侧边栏挂一个 ChatGPT」本质不同:后者常常读不到你环境里的真实指标和链路;DataBuff 从第一天按 AI 原生 APM 设计——AI 长在 OpenTelemetry 数据之上,专家必须调工具查数,不能靠猜。

AI 原生架构
图 2:观测数据 → 工具 → 专家 → 大脑 → 你
· · ·
三层能力,怎么叠起来?

扩展一种新能力,不靠往一个巨大 Prompt 里堆说明,而是三层组合——仍然用医院来对照:

  • 工具——化验仪、CT、手术器械:查服务列表、拉 Trace、跑巡检、受控执行命令
  • 专家——专科医生:问数懂指标口径,巡检懂全集群扫描,运维能上机,答疑懂产品文档
  • 规范——诊疗路径:每个科室怎么问诊、怎么开检查、报告怎么写;分诊台还有专门的路由规范

新开一个「科室」≈ 组合工具 + 写规范 + 注册专家,不必改建医院本身(观测链路不用动)。对患者——也就是你——始终只对一个分诊台说话。

· · ·
大脑怎么派活?

这里没有一堆「if 告警 then 巡检」的规则表。大脑加载路由规范后,结合当前所有专家的职责描述,做语义匹配,再发出派活:指定哪位专家 + 一段任务说明。

两个关键约束,决定协同是否靠谱:

  • 任务说明忠实原意——你只问「最近一小时服务列表」,大脑不会擅自加上错误率、拓扑等你没提的维度
  • 大脑不越权——它不亲自查指标、不跑巡检、不敲 Shell;只做分诊和汇总,边界清晰

典型直觉:查指标/Trace → 问数或巡检;要健康报告 → 巡检;产品怎么用 → 答疑;容器/磁盘/进程 → 运维;业务异常又怀疑环境 → 可同时叫巡检 + 运维两个不同专家。

· · ·
痛点一:派活到底怎么实现?

很多人一听「多专家」,脑子里是多个聊天窗口互 @。DataBuff 不是这套——派活是一条工单链路

1你对 AI 大脑说话,大脑读完路由规范,决定叫哪位专家。
2大脑发出一次派活:目标专家是谁 + 任务说明(忠实你的原话,不擅自加指标维度)。
3系统立刻回大脑一句「已受理,请等待」——注意,此时专家还没干完,只是工单创建成功。
4被选中的专家在后台独立推理:调工具查 Doris 指标、拉 Trace、跑巡检、或受控执行命令。
5专家做完,把结果写成「专家交付物」送回同一会话,并唤醒大脑再跑一轮,消化这份报告。

你可以把它理解成:大脑是分诊台,派活是开检查单,专家是各科室,交付物是化验报告——不是几个模型在群里聊天

· · ·
痛点二:能不能同步等专家干完?为啥不行?

直觉上,同步最简单:派给问数专家,等它查完,再派巡检,再汇总——像函数调用一样 await 就行。为什么 DataBuff 不这么做?

  • 专家任务太慢。一次巡检报告常常要几十秒甚至一分钟以上;问数要多次查指标、追 Trace;运维可能要 SSH 多步排查。同步等 = 你盯着空白聊天框干瞪眼。
  • 长连接扛不住。对话走流式输出,如果大脑回合一直卡在「等专家」,HTTP/SSE 容易超时,前端体验是「卡死」或「断流」。
  • 并行做不了。值班最值钱的是「问数追链路」和「巡检扫集群」同时跑。同步模型只能排队:先问数 40 秒,再巡检 80 秒,合计两分钟;异步可以压到「取最大值」。
  • 专家自己会多轮调工具。一个专家内部就是小型 ReAct 循环(想一步、查一步、再想)。同步会把整段循环都绑死在大脑的一个回合里,上下文和错误恢复都更难做。
所以派活从设计上就是异步的:大脑发出工单后先收工本回合,专家在后台跑;跑完再通过「回调」把大脑叫醒。这不是偷懒,是运维场景下的现实选择。
异步派活时序与同步痛点
图 3:左同步串行会卡死等待;右异步先受理、专家并行、pending 归零后再汇总
· · ·
痛点三:异步会不会乱?四条护栏

异步最怕两件事:同一专家被塞两单活,以及大脑还没收齐报告就对外瞎总结。DataBuff 用四条硬规则兜住:

1同一专家必须串行。问数专家上一单没做完,大脑再派会被系统直接拒绝,并提示「该专家已有进行中的任务」——不是排队,是禁止并行重复派,避免两次查询口径搅在一起。
2不同专家可以并行。巡检 + 问数、巡检 + 运维,各跑各的工单,互不阻塞。
3会话级 pending 计数。每派一单 pending+1,每回来一份专家交付物 pending−1。大脑始终知道:还有几份报告没齐。
4到齐才出定稿。pending>0 时,大脑只能输出内部中间过程(思考区可折叠,不算正式交付);pending=0 时,系统要求大脑重新完整写出最终答复,禁止「如上所述」——保证你不展开折叠区也能读懂。

另外,并行时每个工单带独立工作上下文,避免两个专家的结果串味;同一专家若被串行派了多次,则共享该专家在会话里的记忆,方便追问补查。

共享的是会话历史、上传文件、生成的报告目录;APM 数据不会在路由前整包塞进上下文——各专家按需实时查,既省成本,也降低幻觉。

· · ·
实机走一遍:一句话,两支专家

下面截图来自在线体验环境 demo.databuff.ai。浏览器打开后进入 AI 大脑,不手动选专家,只问一句:

「最近 1 小时整个集群有没有异常?请联合智能问数和智能巡检做综合诊断:问数查延迟和错误率并追慢 Trace,巡检做分级健康检查,最后汇总成可转发的故障报告。」

接下来是传统 APM 做不到的——大脑并发派了两单:一边给智能问数,一边给智能巡检。思考区里能看到两次派活和各自执行轨迹:

AI 大脑并发派发
图 4:AI 大脑 → 智能问数 + 智能巡检,并行开工

巡检带回 S/A/B 分级总览:34 个服务里多数落在 S/A 级,整体运行平稳;service-b 标 B 级需关注,InsufficientStockException 集中在库存 SKU DEMO-10001,伴随约百条 ERROR 日志。

大脑把两边证据合成一份可预览、可转发的 HTML 报告,附 P0/P1 建议行动项——可直接转故障群:

联合诊断报告
图 5:分级结论 + 证据链,可直接转故障群
一句话:你问一次,后台像一支数字班组在跑——能点名、能派活、能并行、能汇总,而且每一句结论都能指回查过的数据。想自己试,把上面那句话粘到 demo.databuff.ai 的 AI 大脑里跑一遍即可。
· · ·
多数产品还是:你先选专家,再单聊

市面上不少「多专家」产品,界面上确实摆着问数、巡检、运维、答疑四个入口——但你点进去之前,得自己猜该找谁。进去之后,这一整段对话也只属于那一个专家:换人要重新开窗口,前面的上下文带不过去;想一句里同时让问数查错误率、让巡检扫 JVM?做不到,得你自己当调度员,一个一个窗口试。

这就像病人到了医院门口,匾牌写着心内科、影像科、检验科——没有分诊台,只能靠症状自己挂号。挂错了白排队;挂对了也只能跟一个科室聊,化验单和 CT 报告最后还得家属自己去各窗口凑。

单专家模式 · 你先选科室

四个入口四扇门,进门只能和一位专家单聊。想联合诊断,得自己开多个窗口、自己传话、自己拼结论。

值班凌晨最伤的是:你不知道该先点谁,也不知道另外几扇门的对话互相看不见。

DataBuff · 先分诊,再并行

只进 AI 大脑这一个入口,像到分诊台说一句症状;大脑判断叫谁、能不能并行,开出检查单交给问数和巡检。

上文 Demo 已演示——一句话,两支专家同时查,最后合成带 P0/P1 和证据链的报告,不用你切换窗口对传。

差别不在「界面上有没有四个头像」,而在谁来派活:是你手动选专家单聊,还是大脑接单后分派、并行、汇总。后者才对应值班里那四件事——一个入口、大脑派活、合法并行、证据链汇总

记住这一句就行:好系统不会让你猜该挂哪科;你只管像交班那样问一句,分诊和会诊在后台完成。

体验 DataBuff

开源 · 多专家协同 · 一个入口派活、问数巡检并行

在线 Demo:https://demo.databuff.ai

GitHub:https://github.com/databufflabs/databuff