从控制台到对话框:DevUI × MateChat 打造云原生智能前端的双引擎实践!
一、背景:云原生前端从“能用”走向“聪明好用”
在云原生早期,前端更多是把各类 API 的“配置项”和“状态”表现出来:
控制台、运维平台、CI/CD 面板,能查、能配、能点,就算完成任务。
但现在情况已经明显不同:
-
业务复杂度
- 多集群、多 Region、多租户
- 资源对象越来越多:集群、节点、工作负载、服务网格、安全策略……
-
智能化诉求
- 日志希望有人帮“粗看一遍”,只把可疑点挑给我
- 告警希望有人帮“分组归因”,给出优先处理顺序
- 配置希望通过“自然语言描述”就能自动生成一份表单 / YAML 草稿
这两股力量叠加,逼着前端从单纯的“界面层”升级为一个 “体验+智能协作”的综合层”。
在这条升级路径上:
- DevUI 负责给我们一套稳定、统一、可扩展的 企业级中后台 UI 方案——包括设计体系、组件库和实践范式。
- MateChat 则带来一个面向 GenAI 场景的前端智能化 UI 库,专门解决“在各种工具里如何放一个好用、不违和的 AI 助手”的问题。
接下来,我们先把“地基”打牢——从 DevUI 讲起。🏗️
官方链接汇总如下,一键直达:
- MateChat:https://gitcode.com/DevCloudFE/MateChat
- MateChat官网:https://matechat.gitcode.com
- DevUI官网:https://devui.design/home

二、DevUI:企业级界面层的“地基工程”
2.1 DevUI 是什么:一套面向中后台的前端解决方案
从官方站点和仓库来看,可以把 DevUI 概括为三句话:
-
定位:面向企业中后台产品(云控制台、管理系统、研发工具等)的 开源前端解决方案。
-
形态:同时提供
-
一套统一的设计体系 DevUI Design(规则、设计语言、最佳实践)
-
两条主技术栈版本:
- Angular 版本:
ng-devui - Vue3 版本:Vue DevUI /
vue-devui
- Angular 版本:
-
-
目标:让“设计师专注体验、前端专注逻辑”,统一企业内部中后台界面风格、交互范式和组件实现。
✅ 对征文要求的呼应:
- DevUI 主要版本为 Angular 与 Vue 版本 —— 这也是下文示例重点覆盖的技术线。
- 文章内容围绕官方能力展开,不引入臆造的 API 或组件。
DevUI 更像是一套“企业 UI 操作系统”,而不是一个零散的控件集合。

2.2 组件进阶攻略:高频表格 / 表单 / 弹层的工程化使用
在任何一个云管平台或 DevOps 系统里,你打开页面十秒内一定能看到三个东西:
- 数据表格(资源列表)
- 表单(创建 / 编辑向导)
- 弹层(详情、确认、选择器)
DevUI 在这三类组件上的抽象已经非常成熟,但想“用得高级又不踩坑”,还是有不少工程层面的小技巧。
2.2.1 表格:从“能列出来”到“能驾驭大数据”
DevUI 在 Angular/Vue 两条线,都提供了功能丰富的表格组件,支持:
排序、过滤、固定列、树形结构、行/列拖拽、可编辑单元格、分页、虚拟滚动等。
假设有一个典型场景:集群节点列表,需求大概是:
- 支持按照状态 / 节点池 / 可用区过滤
- 支持 CPU / 内存 使用率排序
- 点击行可展开查看 Pod / 容器信息
- 一次可能展示上万行数据
在这种场景下,几条“生存经验”很关键:
-
前后端协同分页 + 条件查询是底线
- DevUI 表格负责展示与交互,数据量控制交给后端。
- 分页、排序、过滤参数都作为 Query 一部分传给后端。
-
大表格必须开启虚拟滚动或分段加载
- 否则 DOM 一多,浏览器就开始“风扇起飞”。
- Angular 场景可配合
cdk-virtual-scroll等技术;Vue 场景通过列表虚拟化方案减轻压力。
-
不要在模板里写重逻辑函数
<!-- 反例:模板中反复执行复杂计算 --> <td>{{ computeHealthStatus(row) }}</td>- 这种写法会在变更检测中被频繁触发,极易成为性能瓶颈。
- 建议预先在数据加工阶段算好字段,用纯字段绑定。
-
树形表格适用于“层级资源视图”
- 例如“集群 → 节点 → Pod → 容器”的分层展示,可使用 DevUI 提供的树表格 / 嵌套行能力来承载。
- 折叠状态不要全部展开,以免首屏太重。
2.2.2 表单:从“填空题”到“配置编排器”
在 DevOps/云管场景里,一个创建表单往往意味着一个复杂的资源配置过程,例如:
- 创建 Deployment:描述副本数、镜像、环境变量、资源限制、挂载卷、探针等
- 创建流水线:配置触发规则、阶段、任务、通知策略等
DevUI 提供了各类输入组件:输入框、选择器、日期时间、开关、滑块、多选等。
但真正落地时,建议按以下思路升级:
-
Schema 驱动,而不是纯手搓表单布局
-
针对复杂资源类型,用一份 JSON Schema 或自定义 DSL 描述字段:
- 字段类型、默认值、校验规则、是否必填、依赖条件、字段分组等
-
由统一的“表单渲染器组件”去解释 Schema,并渲染 DevUI 的具体控件。
-
好处是后续扩展字段时,不用频繁改前端模板。
-
-
校验逻辑一分为二:即时反馈 + 最终兜底
- DevUI 表单做“即时体验”:必填、格式、范围等校验,让用户边填边得到反馈。
- 重要约束(例如配额、资源上线等)仍交给后端再次校验,确保不会被绕过。
-
可视化配置与 YAML 模式双向同步
-
许多高阶用户习惯直接编辑 YAML / JSON,而初学者更偏向可视化表单。
-
可以利用 DevUI 的代码编辑器组件 + 表单组件,提供“表单 ⇄ YAML”的互相转换:
- 表单改动自动生成 YAML。
- 粘贴 YAML 自动解析成表单字段(解析失败要给友好提示)。
-
涉及官方展示如下:

2.2.3 弹层:不止是“确认”,而是一种任务容器
DevUI 的弹层(Dialog/Modal/Drawer)在 B 端里几乎无处不在:
- 新建资源向导
- 批量编辑
- 快速查看详情
- 复杂筛选面板
“好用的弹层”通常有几个特点:
-
弹层内部逻辑单一,易于复用
- 建议抽象为独立组件(例如
ClusterCreateDialog),只专注一件事。 - 父组件只负责“开/关弹层 + 接收结果”。
- 建议抽象为独立组件(例如
-
扩展能力交给插槽 / TemplateRef
- 子组件定义好基本结构,预留插槽或内容 Projection(Angular 中用
ng-template)来让业务注入额外字段。 - 这样在多个产品线复用时,只需在不同场景填入不同内容即可。
- 子组件定义好基本结构,预留插槽或内容 Projection(Angular 中用
-
与表格深度组合:弹层表单、弹层选择器
- 例如“选择关联资源”、“挑选用户/角色”等,使用 DevUI 的表格 + 分页 + 搜索嵌入弹层中。
- 统一暴露“已选数据”给父组件,从而形成一套标准的“选择器模式”。
涉及官方展示如下:

2.3 自定义组件与插件:把 DevUI 变成“业务语言”
DevUI 给的是基础构件;真正要服务业务,还得在它之上堆一层“领域组件”。
可以把这层称为:Biz 组件层。
2.3.1 业务组件命名与边界
推荐在团队内部统一一套命名规范,例如:
BizClusterSelector:集群选择器BizNamespaceCascader:命名空间级联选择器BizAlarmPolicyEditor:告警策略编辑器BizPipelineDesigner:流水线编排器
这些组件内部 全部使用 DevUI 的基础组件,但对外只暴露少量业务语义化的属性/事件:
// 示例:集群选择器可能只暴露如下接口:
props: {
value: string[]; // 选中集群 ID 列表
mode: 'single' | 'multi'; // 单选/多选
}
events:
- update:value
- change(clusterList)
这样,对上层页面来说:
- 不再关心“用的是哪个下拉组件、是否多选、样式怎么配”,
- 只关心“我要选一批集群”。
这就是让 DevUI 说“业务语言”的过程。
2.3.2 按领域拆分组件包
在大型组织中,建议将 Biz 组件进一步按业务拆包:
@company/devui-biz-observability—— 监控、告警、日志相关组件@company/devui-biz-devops—— 流水线、制品、环境管理组件@company/devui-biz-security—— 策略、访问控制组件
每个包内部:
- 引入 DevUI(Angular 或 Vue 版本)
- 实现该领域通用的“业务组件和页面骨架”
- 对外以 npm 包形式统一发布
这样,将 DevUI 真正变成了企业级的 “UI 基础设施 + 领域资产”。
这样,一次主题切换就能覆盖整个系统,包括 DevUI 官方组件和你们自定义组件。

2.4 主题、暗黑与响应式:多产品、多场景的一致体验
界面风格一旦跨产品线不统一,用户会非常敏感:“这个明明是同一家的云,怎么感觉 UI 完全不像同一个团队做的?”🤔
DevUI 在这件事上给了我们完整的“工具箱”。
2.4.1 DevUI 主题体系:从设计稿到可切换主题
DevUI 官方站点和 Vue DevUI 文档都强调了 主题和设计体系的整合:
- 颜色、字号、间距等统一抽象为主题变量
- 支持通过 CSS 变量 / 主题包进行重定义
- Vue DevUI 提供
devui-theme相关能力,方便切换与配置
通常可以走这三步:
-
梳理品牌色板
- Primary / Success / Warning / Danger / Info
- 以及背景、边框、文字的基础色级别
-
建立主题映射表
- 将品牌色与 DevUI 主题变量一一映射,并沉淀成主题配置文件。
- 例如“标准控制台主题”、“深色 IDE 主题”、“营销后台主题”等。
-
实现运行时主题切换
- 使用 CSS 变量 +
data-theme实现无刷新切换。 - DevUI 组件跟随变量变化自动更新样式。
- 使用 CSS 变量 +
2.4.2 暗黑模式与 IDE 风格
MateChat 官方说明其主题能力是 基于 vue-devui 主题化能力实现的,支持如 IDE 风主题。
这意味着:
- DevUI 的暗黑主题和 MateChat 的
ide-dark样式是可以对齐的 - 对于在线 IDE / 代码平台,可以让编辑器、控制台、AI 助手统一使用类似 VS Code 风格的深色主题
- 用户切换“浅色 / 深色”,两者同时响应
前端可以通过:
- 根元素挂
data-theme="dark" - 统一设置 DevUI + MateChat 使用同一套主题变量
- 个别组件再进行少量补充样式,保证整体观感统一
2.4.3 响应式布局:从大屏控制台到嵌入式窗口
云原生前端不一定永远跑在全屏浏览器里,还会出现:
- 嵌在其它平台中的 iFrame 小窗
- 日志分析工具的嵌入面板
- 平板 / 小屏笔记本访问
DevUI 的栅格系统和 Flex 布局可以应对大部分适配需求:
- 栅格用于“主内容 / 侧栏 / 工具栏”的布局
- Flex 用于卡片内部结构调整(列表 + 侧边详情等)
- 对于 MateChat 这样的侧边对话区域,可以在窄屏下自动收缩为“悬浮按钮 + 抽屉式对话框”

2.5 云原生场景落地:控制台 / DevOps / B 端系统实战拆解
我们用一个虚构的云原生平台 “NebulaCloud” 来串一下 DevUI 在几个典型场景的落地形态(方便你后面改成自己公司的名字 😄)。
2.5.1 云控制台:集群视图与资源治理
页面骨架:
-
顶部:全局导航 + 搜索框 + 用户菜单
-
左侧:资源导航(集群、节点、工作负载、服务、网络、安全策略、监控、告警……)
-
主内容区:
- 上半部分:资源筛选条件 + 关键指标概览(用 DevUI 卡片 + 图表)
- 下半部分:DevUI 表格展示资源列表
- 详情 / 编辑通过 Drawer 或 Dialog 呈现
DevUI 承担的角色:
- Layout / Menu / Breadcrumb / Tabs:构建主骨架
- Table / Pagination / Tree / Tag / Tooltip:承载资源列表
- Form / Select / DatePicker:承载筛选条件和表单配置
- ECharts 组件(Vue DevUI 提供)承载监控曲线和统计图表
2.5.2 DevOps 平台:流水线与制品管理
在 DevOps 场景中,DevUI 的优势体现在:
- “长流程 + 多阶段 + 状态丰富”的 UI 表达能力
- 通过步骤条、时间轴、状态 Badge、进度条等组合出清晰的流水线视图
典型页面:
-
流水线列表:表格 + 筛选 + 状态组件
-
流水线详情:
- 上部:当前运行状态、最近一次执行结果
- 中部:阶段视图(DevUI Steps / Timeline)
- 下部:执行日志(可结合代码编辑器组件做高亮展示)
2.5.3 一般 B 端系统:运营后台 / 权限管理 / 内部工具
DevUI 的定位本身就包括企业中后台,因此非常适合作为统一的“运营后台套件”:
- 快速搭建 CRUD 页面
- 使用统一的表单风格与校验体系
- 封装一套权限管理界面(角色、菜单、权限点)
- 与后端 RBAC/ABAC 体系协同
2.6 从 0 到 1 的 DevUI 实战路径(Angular & Vue 双线)
这一节我们不写“教科书式 Quick Start”,而是从工程视角给一条更贴近真实项目的路径。
2.6.1 Angular 线:基于 ng-devui 的中后台项目雏形
官方推荐使用 @angular/cli + ng-devui 来构建 Angular 版 DevUI 应用。
Step 1:脚手架初始化
npm install -g @angular/cli
ng new nebula-console
cd nebula-console
npm install ng-devui @devui-design/icons
Step 2:在根模块中引入 DevUI
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { DevUIModule } from 'ng-devui';
import { AppComponent } from './app.component';
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
BrowserAnimationsModule,
DevUIModule
],
bootstrap: [AppComponent]
})
export class AppModule {}
Step 3:搭一个最小“控制台壳子”
<!-- app.component.html -->
<d-layout>
<d-aside width="240px">
<d-menu mode="vertical">
<d-menu-item>集群</d-menu-item>
<d-menu-item>工作负载</d-menu-item>
<d-menu-item>流水线</d-menu-item>
</d-menu>
</d-aside>
<d-layout>
<d-header>
<div class="header-bar">
<span class="logo">NebulaCloud</span>
<div class="header-tools">
<d-input style="width: 260px" placeholder="全局搜索" />
<d-avatar dTooltip="admin">A</d-avatar>
</div>
</div>
</d-header>
<d-content>
<d-card>
<d-card-header>集群列表</d-card-header>
<d-card-content>
<d-datatable [dataSource]="clusterList">
</d-datatable>
</d-card-content>
</d-card>
</d-content>
</d-layout>
</d-layout>
Step 4:迭代往里“塞功能”而不是推翻重来
- 第一次迭代:只做静态数据 + 简单分页
- 第二次:接入真实后端 API,支持排序、过滤
- 第三次:增加弹出层详情,接入 DevUI 表单组件
- 第四次:加上主题切换、权限控制、操作日志等
这种渐进式方式非常友好,对团队上手压力也小。
2.6.2 Vue 线:基于 Vue DevUI 的 Vite 项目
Vue DevUI 官方文档提供了基于 Vite + Vue3 + TS 的示例路径。
Step 1:初始化项目并安装依赖
npm create vite nebula-devops --template vue-ts
cd nebula-devops
npm install vue-devui @devui-design/icons devui-theme
Step 2:入口文件引入 Vue DevUI
// main.ts
import { createApp } from 'vue';
import App from './App.vue';
import DevUI from 'vue-devui';
import 'vue-devui/style.css';
import '@devui-design/icons/icomoon/devui-icon.css';
const app = createApp(App);
app.use(DevUI);
app.mount('#app');
Step 3:构建一个 DevOps 首页骨架
<template>
<d-layout>
<d-aside width="220px">
<d-menu mode="vertical">
<d-menu-item>项目</d-menu-item>
<d-menu-item>流水线</d-menu-item>
<d-menu-item>制品仓库</d-menu-item>
</d-menu>
</d-aside>
<d-layout>
<d-header>
<div class="top-bar">
<span class="logo">Nebula DevOps</span>
<d-button type="primary" @click="createPipeline">新建流水线</d-button>
</div>
</d-header>
<d-content>
<d-card>
<template #header>流水线列表</template>
<d-table :data="pipelines">
<d-column field="name" header="名称" />
<d-column field="project" header="项目" />
<d-column field="status" header="状态" />
</d-table>
</d-card>
</d-content>
</d-layout>
</d-layout>
</template>
<script setup lang="ts">
import { ref } from 'vue';
const pipelines = ref([
{ name: 'build-console', project: 'nebula-console', status: '成功' },
{ name: 'deploy-prod', project: 'nebula-core', status: '运行中' }
]);
const createPipeline = () => {
// TODO: 打开创建流水线弹层
};
</script>
往后你可以:
- 接入路由,将菜单与路由绑定
- 添加面包屑、过滤器、批量操作、卡片视图等
- 再在这个基础上嵌入 MateChat,变成“自带 AI 助手的 DevOps 平台”(下半场就讲这个 💡)
2.7 DevUI × 可视化 × 低代码:让“配置界面”也能很聪明
DevUI 不只是“UI 组件”,还经常扮演 低代码平台的物料基础,以及可视化监控、报表的统一容器。
2.7.1 可视化看板:AI 运维指标一目了然
在 AI 相关场景里,有一些典型指标:
- 模型 QPS / 延迟分布
- Token 消耗
- 命中知识库回答 vs 大模型自由生成的比例
- 不同业务线 / 团队的使用量
可以利用 DevUI 提供的 ECharts 集成、卡片组件和布局能力:
- 上层用栅格系统做 “多卡片 + 多图表” 布局
- 卡片内部嵌入折线图、柱状图、饼图
- 通过 Tag / Badge 表示当前是否超出阈值
把这些做成统一的“AI 能力运营看板”,可为后续 MateChat 智能体验迭代提供数据依据。
2.7.2 DevUI 与低代码可视化平台结合
社区中已有将 Vue DevUI 作为 低代码组件物料 的实践。
如果你们内部也有类似低代码 / 表单引擎平台,可以考虑:
- 把 DevUI 封装为拖拽组件模块
- 让产品 / 运营通过拖拽搭建简单配置页、报表页
- 对复杂场景仍由开发基于 DevUI 手写
最终在企业内形成一条链路:
设计体系(DevUI Design) → 组件库(DevUI) → 领域组件(Biz) → 低代码物料 → 具体应用
到这里,上半场 DevUI 差不多讲完,我们已经有了一套 稳定的 UI 底座 + 领域组件 + 主题体系。
接下来要让它“动”起来、“聪明”起来,就轮到 MateChat 登场了 🚀。
三、MateChat:智能交互层的“体验总控”
实际使用效果如下:

3.1 MateChat 的角色:前端智能化场景解决方案 UI 库
根据 MateChat 官网与 Git 仓库,它的定位可以拆成几层:
-
性质:
- 前端智能化场景解决方案 UI 库
- 完全开源,MIT 协议,可企业级免费使用
-
能力边界:
- 提供的是 一组 GenAI 交互体验组件(对话气泡、输入区、头部、快捷操作、卡片模板等)
- 不自带模型服务、不封装后端 SDK,也不会替你管理 API Key
- 官方文档中对接模型的示例(如使用
openai包)只是前端如何调用模型 API 的 demo,属于“项目方自己的逻辑”,并不是 MateChat 自带 SDK
-
设计理念:
- 体验无边界,业务无侵害 —— 尽量不打破原有业务布局,用“外挂”的方式融入
- 针对 DevOps、IDE 等研发工具场景有专门适配
- 聚焦 快速唤醒 / 轻松使用 / 自由表达 / 过程可监督 / 可读性强 五大要点(官网有完整表述)
-
技术基础:
- 主题系统基于 vue-devui 的主题化能力 实现,与 DevUI 设计体系天然对齐
- 支持多种主题,适配例如 IDE 风格、深色模式等
这意味着:
在 DevUI 搭好的中后台界面里,我们可以“无缝”塞入一个 MateChat,对话体验在视觉上不会突兀,在情境上也能自然融入。
浅色主题效果:

现在我们已经完成了主题的自定义,来看看效果吧

3.2 搭起第一块“对话砖”:用 MateChat 组装智能助手界面
我们继续沿用上面的虚构平台:NebulaCloud。
这次要给它加一个统一的智能助手,代号叫:“Nebula Assistant” 😎。
3.2.1 项目集成:Vite + Vue3 + Vue DevUI + MateChat
官方建议基于 Vite + Vue3 + TypeScript。
Step 1:初始化项目(若已用 DevUI,可复用前文工程)
npm create vite nebula-ai --template vue-ts
cd nebula-ai
Step 2:安装 Vue DevUI 与 MateChat
npm install vue-devui @devui-design/icons devui-theme
npm install @matechat/core
这里再次强调:
@matechat/core提供的是 UI 组件;
后续你如果需要调用大模型,可以自己单独npm install openai或接入自家网关的 SDK,不是 MateChat 自带 SDK。
Step 3:在入口文件中引入 DevUI 与 MateChat 样式
import { createApp } from 'vue';
import App from './App.vue';
import DevUI from 'vue-devui';
import 'vue-devui/style.css';
import '@devui-design/icons/icomoon/devui-icon.css';
// MateChat 样式
import '@matechat/core/style.css';
const app = createApp(App);
app.use(DevUI);
app.mount('#app');
3.2.2 组装基础对话 UI:Header + Bubble + Input
参考官方组件说明(消息气泡、输入框、头部等),我们可以写一个非常聚焦的聊天面板。
<template>
<div class="assistant-panel">
<McHeader
title="Nebula Assistant"
:logoImg="logo"
:logoClickable="false"
>
<template #operationArea>
<d-button size="sm" @click="clear">清空对话</d-button>
</template>
</McHeader>
<div class="assistant-body">
<McBubble
v-for="(msg, idx) in messages"
:key="idx"
:content="msg.content"
:align="msg.from === 'user' ? 'right' : 'left'"
:loading="msg.loading"
:avatarConfig="msg.avatarConfig"
/>
</div>
<div class="assistant-input">
<McInput
v-model="input"
placeholder="用自然语言描述你的问题,例如:帮我分析最近 5 分钟某集群的错误日志"
@submit="handleSubmit"
/>
</div>
</div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
// 假定对话组件来自 @matechat/core
// import { McHeader, McBubble, McInput } from '@matechat/core';
const logo = '/nebula-logo.svg';
interface ChatMsg {
from: 'user' | 'assistant';
content: string;
loading?: boolean;
avatarConfig?: {
name?: string;
displayName?: string;
imgSrc?: string;
};
}
const messages = ref<ChatMsg[]>([]);
const input = ref('');
const clear = () => {
messages.value = [];
};
const handleSubmit = async (val: string) => {
const text = val.trim();
if (!text) return;
messages.value.push({
from: 'user',
content: text,
avatarConfig: { displayName: '我' }
});
input.value = '';
// 增加一条“占位”消息,用于流式输出
messages.value.push({
from: 'assistant',
content: '',
loading: true,
avatarConfig: { displayName: 'Nebula AI' }
});
const idx = messages.value.length - 1;
await fetchAnswer(text, idx);
};
// 实际调用后端模型服务
const fetchAnswer = async (question: string, index: number) => {
// TODO: 调用你自己的 BFF / 模型网关 API,支持流式返回更佳
const fake = `这是对「${question}」的示例回答。你可以在这里接入真实大模型服务。`;
messages.value[index].content = fake;
messages.value[index].loading = false;
};
</script>
这里,我们用最简单的方式把 MateChat 组件“拼”起来:
McHeader承担整体头部形态McBubble承载每条消息,用左 / 右对齐区分人机McInput提供带提交行为的智能输入区
你只要把 fetchAnswer 换成真实的大模型调用,就拥有了一个真正的 AI 助手界面 🎯。
3.2.3 按官方示例对接大模型(以 OpenAI SDK 为例)
MateChat 官网在“如何接入使用”中给出了对接模型服务的示例,使用 openai 包流式拉取结果。
大致结构如下(注意:这是你项目自己的逻辑,与 MateChat 解耦):
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: '', // 模型 API Key(自行保密)
baseURL: '', // 模型服务地址,可以是内网网关
dangerouslyAllowBrowser: true
});
const fetchAnswer = async (question: string, index: number) => {
messages.value[index].loading = true;
messages.value[index].content = '';
const completion = await client.chat.completions.create({
model: 'my-model',
messages: [{ role: 'user', content: question }],
stream: true
});
for await (const chunk of completion) {
const content = chunk.choices[0]?.delta?.content || '';
messages.value[index].content += content;
}
messages.value[index].loading = false;
};
MateChat 负责把 messages 渲染得好看、好用;
你负责构造 messages 数组并赋值,这就是两边的边界关系。

3.3 三种嵌入模式:侧边助手 / IDE 面板 / 知识库问答
MateChat 官网和介绍文章中列举了多个适用场景:协作式、沉浸式、情境式等。
结合 DevUI 的页面,我们可以总结出三种非常常见的嵌入方式。
3.3.1 模式一:中后台里的“侧边智能助手”
典型形态:
- 在 DevUI 控制台主布局右侧保留一条窄栏,用来放 MateChat 面板
- 或者使用右下角悬浮按钮 + 抽屉的方式,随时“呼出 / 收起” AI 助手
- 助手默认处于“静默”状态,需要时点一下“AI 帮我看看”按钮启动对话
用户故事示例:
运维在查看某个集群的错误日志时,一键把当前日志片段 + 集群元数据打包,丢给 MateChat,问:“最近这个集群为什么频繁出现 5xx?”
MateChat 读完日志和监控,给出可能的原因和排查步骤。
这种模式下:
- DevUI 负责把当前上下文(选中的资源、日志、指标)组合好
- MateChat 负责对话呈现
- 后端的大模型服务负责真正的“聪明事”
3.3.2 模式二:IDE / 代码平台中的“AI 辅助面板”
MateChat 官网案例里提到 InsCode AI IDE 和华为云 CodeArts 智能助手,就是典型的“IDE 插件 + AI 面板”场景。
布局通常是:
- 左边项目树
- 中间代码编辑器
- 右边 MateChat 窄栏或底部工具面板
MateChat 在这里可以做:
- 解释选中代码
- 帮忙写注释、重构、生成单测
- 根据错误信息给出修复建议
而且它的 IDE 风主题可以保证整体风格与编辑器一致,不像“嵌了一个外站聊天窗口那么违和”。
3.3.3 模式三:知识库 / 文档中心里的“智能问答助手”
在一个 DevUI 构建的文档中心里,可以这样嵌:
- 左侧目录树 + 中间文档内容使用 DevUI 组件展示
- 右侧或底部使用 MateChat,提供“问知识库”入口
- 后端通过 RAG(检索增强生成)根据文档索引返回参考片段
前端的呈现模式:
- 将检索结果通过 MateChat 的卡片组件展示为“引用文档列表”
- 在对话中附上“来自:安装指南 / 故障处理手册”等说明
- 支持一键跳转到相关文档位置
用户只需要记得“找 AI 问就行”,不必一页页翻文档,这对新同学极其友好 👍。

3.4 进阶玩法:智能体、RAG、自然语言生成 UI、工作流与多模态
MateChat 本身不提供 Agent 引擎、RAG 引擎,但它给了我们一个 非常适合承载这些能力的 UI 壳。
下面这几个玩法,可以为论文 / 演讲部分增加“前瞻性”。
3.4.1 智能体(Agent)过程可视化
后端可以使用任意智能体框架(例如自研或基于第三方框架)完成:
- 工具选择(查日志、查监控、改配置)
- 任务规划与多步执行
- 思维链(Chain-of-Thought)管理
MateChat 端可以这样呈现:
-
每一步调用以一条“系统消息 + 卡片”呈现,例如:
- 「已分析最近 10 分钟的日志,发现 3 处高频报错」
- 「已为你生成一条回滚流水线草案」
-
使用“时间线 / 步骤卡片”,在对话中以视觉形式展示 Agent 的执行轨迹
-
为关键步骤提供“撤销 / 重新执行 / 查看详情”入口
用户获得的是一个“透明、可控”的 AI 助手,而不是一个“黑箱给结论”的机器人。
3.4.2 RAG + 证据展示:让“AI 答案”更可信
RAG 模型的价值在于引入企业内知识库,但用户常会担心:
它到底是胡编的,还是确实查了内部文档?
MateChat 的解决方案可以是:
- 使用卡片列表展示检索到的文档片段:标题、摘要、来源链接
- 在答案中标注“引用文档”,点击可展开详细内容
- 按照相关度排序,给用户一种“像查 Google 搜索结果 + Chat 总结”的体验
UI 层完全可以用 MateChat + DevUI 的组合来实现:
- 卡片组件承载文档摘要
- Tag / Badge 标识文档类型和重要性
- 展开后使用 DevUI Markdown / 代码高亮组件展示内容细节
3.4.3 自然语言生成 UI(NL → UI)
这是一个特别适合写进“创新探索”的方向:
-
用户对 MateChat 说:
“帮我建一个限流策略:针对 /api/v1/orders 接口,每秒最多 100 次,请给个配置草稿。”
-
后端模型根据意图生成:
- 一份 JSON / YAML 配置
- 或一份“DevUI 表单默认值配置”
前端流程可以是:
- MateChat 对话中展示一个“配置预览卡片”(YAML/JSON + 概要说明)
- 用户点击“应用到表单”按钮
- 跳转到 DevUI 表单页面,自动带入这些默认值,允许最后再修改确认
这样,MateChat 不再只是“解释器”,而是变成 “配置向导”。
3.4.4 工作流与多模态交互
在复杂问题排查中,用户可能需要:
- 上传日志文件 / 截图 / 抓包结果
- 让 AI 帮忙从大量信息里“找重点”
在 MateChat 端:
-
输入区增加“上传文件 / 截图”按钮,交由后端多模态模型处理
-
返回结果用卡片展示,如:
- “关键错误段落列表”
- “异常指标时间区间”
-
对于 UI 截图错误,可直接显示“错误框定位 + 可能原因”
多模态本质还是模型能力,MateChat 只要支持在消息结构中扩展“附件信息”和合适的卡片模板即可,非常灵活。

3.5 工程实践:MateChat 无 SDK 的集成思路与边界
最后,再把一个重要点说得绝对清楚一点(也是征文特别强调的地方 ⚠️):
-
MateChat 本身不提供 SDK 形式
- 它不是一个“前端一引、后端全搞定”的一站式产品。
- 它只提供了一整套 前端 UI 组件和交互体验设计。
-
模型对接完全由业务方掌控
-
官方文档里演示的是:
- 你在项目中自行
npm install openai, - 然后在自己的代码里调用
openai.chat.completions.create做流式请求, - 最终把返回内容写入 MateChat 的
messages中。
- 你在项目中自行
-
如果你用的是盘古大模型 / 自建网关 / 其他厂商模型,做法一样:
- 在前端 / BFF 中使用对应 SDK 或 HTTP 客户端调用。
- MateChat 完全不感知“背后是谁”。
-
-
这反而给了大企业更多可控性
- API Key 管理、费控、内容审计、调用限流都可以集中在自家网关做
- MateChat 只负责“交互层呈现”,不会额外引入安全面或耦合风险
工程上,可以把这块抽成一个统一的“AI 网关前端 SDK”,例如:
// ai-gateway.ts
export async function chatWithAI(payload: {
messages: { role: 'user' | 'assistant' | 'system'; content: string }[];
stream?: boolean;
}) {
// 调用自家 BFF / 网关
}
然后 MateChat 集成层只依赖这一个函数,不直接接触任何第三方模型 SDK,这样长期维护成本会更低。
四、DevUI × MateChat:一体化智能前端体系设计
现在我们已经分别讲完 DevUI 和 MateChat,最后把它们合在一起,搭一张“全局蓝图”。
4.1 设计层:统一设计系统 + 双层体验结构
-
DevUI Design 作为统一的设计系统与视觉规范:色板、布局、控件形态、交互动效等。
-
页面层全部基于 DevUI(Angular/Vue)构建。
-
智能交互层统一走 MateChat,对话风格、气泡样式、卡片布局也遵守 DevUI 的基础规范。
-
通过主题体系保证:
- 中后台、IDE、AI 助手看起来是“一家人”
- 浅色 / 深色 / IDE 风在不同产品中表现一致
4.2 工程层:组件库 + 智能 UI 的模块化治理
推荐采用 monorepo(pnpm / nx 等)统一管理:
packages/
devui-biz/ # 封装 DevUI 的领域业务组件
matechat-shell/ # 封装 MateChat + 模型调用逻辑的前端壳
console-app/ # 云控制台
devops-app/ # DevOps 平台
ide-app/ # 在线 IDE
docs-app/ # 文档中心 / 知识库
devui-biz只依赖 DevUI,不关心 AImatechat-shell封装 MateChat 组件与“AI 网关前端 SDK”对接逻辑- 各个应用按需引入这两个包,用配置来开关 AI 能力
这样做的好处:
- 当 MateChat 升级、设计迭代、主题调整时,只需在
matechat-shell里调整一次 - 当 DevUI 升级或主题体系更新时,在
devui-biz中校正一次,各应用统一受益
4.3 架构层:BFF + 智能服务网关
在后端架构上,建议将“传统业务流量”和“智能服务流量”做出清晰分层:
-
BFF for Console / DevOps / IDE / Docs:- 负责整合业务数据,给前端提供结构化接口
-
AI Gateway:- 统一代理大模型、RAG、Agent 等能力
- 集中做认证、限流、审计、敏感信息过滤
在前端:
- DevUI 页面直接调用各自对应的 BFF
- MateChat 只调用 AI Gateway 暴露出的统一接口
4.4 组织层:设计 / 前端 / 算法的三方协作模式
在 DevUI × MateChat 框架下,一种较理想的协同模式是:
-
设计团队:
- 维护 DevUI Design & MateChat 体验规范
- 输出组件使用指引、内容规范和对话 UX 规范
-
前端团队:
- 基于 DevUI 实现业务页面和领域组件
- 基于 MateChat 实现智能助手 UI 外壳与卡片组件
-
算法 / 后端团队:
- 负责模型服务、RAG Pipeline、Agent 编排
- 与前端约定统一的消息协议与工具调用反馈格式
最终效果是:
智能体验不是“算法部门单打独斗”,而是变成 “设计 + 前端 + 算法”三方共同打造的产品能力。

五、结语:从组件库到“智能体验基础设施”
把视角拉远一点,我们会看到这样一条演进路线:
-
组件库时代:
- 解决的是“页面怎么快点做出来”的问题。
- DevUI 在这件事上已经给了完整答案。
-
设计体系时代:
- 解决的是“多个系统能不能统一体验”的问题。
- DevUI Design + Vue DevUI / ng-devui 让中后台不再各自为政。
-
智能体验时代(正在发生):
- 解决的是“如何把 AI 真正嵌入到业务流里,而不是一个玩具入口”的问题。
- MateChat 以一种“前端智能化场景解决方案 UI 库”的形态,把这件事变成 “一套可复用、可迭代的工程问题”。
对前端团队来说,这既是挑战,也是机会:
-
不再只是“写组件、连接口”,
-
而是可以参与定义:
- 一家公司 云原生控制台的统一界面标准
- 一家公司 智能助手在所有产品中的统一形象与交互逻辑
DevUI 帮你把 “界面层的地基” 打稳;
MateChat 帮你搭起 “智能交互的上层结构”;
把这两者串联起来,你做的就不只是一套 UI,而是一套完整的 “智能体验基础设施”。
📝 写在最后
如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!你的每一个点赞 👍、收藏 ⭐、关注 ❤️,都是我持续更新的最大动力!
我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!
感谢你的阅读,我们下篇文章再见~👋
✍️ 作者:某个被流“治愈”过的 Java 老兵
📅 日期:2025-11-19
🧵 本文原创,转载请注明出处。
声明:相关配图及内容部分来源网络,若有侵权,请联系删除。
更多推荐
所有评论(0)