DevUI × MateChat:云原生时代的前端与智能交互全链路实践!
前言
云原生开发已经从“能跑起来”进入“要跑得好”的深水区:
一边是复杂的企业级中后台界面、云控制台、DevOps 平台;
另一边是大模型、智能体、MCP 等新一代 AI 能力源源不断涌入。
如何在 不牺牲可维护性 的前提下,把这两件事同时做好?
华为云前端技术生态给出了一种很有代表性的答案——
- DevUI:面向企业中后台、研发工具场景的企业级前端解决方案(Angular + Vue 组件体系 + Design System)。
- MateChat:面向前端智能化场景的 GenAI 交互 UI 库,用来“轻松构建你的 AI 应用”。
两者组合起来,几乎覆盖了从 云原生应用界面构建 到 AI 智能交互体验 的完整链路:
DevUI 负责“把界面搭好”,MateChat 负责“让界面更聪明”。
下面这篇文章,将进行一次系统的、工程实践导向的拆解与讲解:
- DevUI 与 MateChat 内容核心讲解;
- 重点放在 “如何落地” + “如何进阶” + “如何创新用法”;
- 尽量用工程视角说人话,但保持足够专业深度 💪。

相关官方地址汇总如下:
- MateChat:https://gitcode.com/DevCloudFE/MateChat
- MateChat官网:https://matechat.gitcode.com
- DevUI官网:https://devui.design/home
一、云原生 × 智能交互:为什么是 DevUI + MateChat?
1.1 云原生前端的真实挑战
在云原生场景下,前端一般会同时面对几类典型需求:
- 多产品、多业务线的统一体验(云控制台、运维平台、监控平台、流水线平台……)
- 复杂表格 + 大表单 + 多弹窗 + 工作流类 UI 的高频组合
- 跨终端 / 多主题 / 暗黑模式 的品牌统一适配
- DevOps、IDE、研发工具 场景里,对效率与可用性的极致要求
- AI 能力渗透后:需要在现有产品中引入对话式助手、智能推荐、自然语言搜索等能力
如果每个团队自己从 0 搭组件库 + 设计体系 + AI 交互 UI,不仅成本极高,还会迅速造成:
- 交互与视觉标准难以统一
- 组件质量参差不齐、性能与可维护性堪忧
- AI 功能体验割裂:每个产品都长得不一样
1.2 DevUI:中后台与研发工具的统一界面基座
DevUI Design 被官方定义为一套面向企业中后台的设计系统与前端解决方案,提供了 规则、设计语言与最佳实践的组合。
基于 DevUI Design,目前主要有两条技术线:
- ng-devui(Angular 版本):服务大量企业级中后台应用,支持较新的 Angular 版本,配套组件、主题系统与图标库。
- Vue DevUI(Vue3 版本):基于 DevUI Design 的 Vue3 组件库,面向研发工具场景,提供 50+ 高质量组件与多套主题等。
二者都强调:
- 企业级组件完整度
- 开箱即用
- 多主题 / 暗黑模式 / 性能优化
- 面向云原生、B 端、研发工具

1.3 MateChat:前端智能化场景解决方案 UI 库
MateChat 的定位非常明确:
“前端智能化场景解决方案 UI 库,轻松构建你的 AI 应用”。
从官网与仓库可以总结出几个关键点:
- 它是 UI 库 / 体验系统,不是传统意义上的后端 SDK 或模型 SDK
- 聚焦 GenAI 对话式交互体验(消息气泡、输入区、推荐提示、过程状态展示等)
- 提供面向研发工具、DevOps、IDE 等场景的 典型对话组件
- 已经落地在华为内部多个应用、华为云 CodeArts 智能助手、InsCode AI IDE 等场景
MateChat 不提供统一的 SDK,而是 鼓励你用任何符合业务需求的模型服务(如盘古大模型、ChatGPT 等),通过 HTTP / JS SDK 自行接入,把“模型结果”交给 MateChat 负责展示交互。
接下来,我们就按征文要求,从 DevUI → MateChat → DevUI × MateChat 联合方案,一步步展开。

二、DevUI:从组件生态到云原生实践的系统拆解

2.1 DevUI 组件生态概览:Angular & Vue 双栈
2.1.1 Angular:ng-devui 的企业级底座
ng-devui 是 DevUI Design 在 Angular 技术栈的实现,官方描述中强调:
- 面向企业中后台产品
- 有配套设计规范、图标库与主题
- 当前支持较新版本 Angular(例如官方文档给出
^16.0.0版本支持) - 开箱即用的组件库(表格、表单、导航、弹窗、数据可视化等)
典型集成方式(示意):
ng new devui-demo
cd devui-demo
npm i ng-devui
npm i @devui-design/icons # 可选
在 app.module.ts 中引入需要的模块,例如按钮、表单、表格等:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { DevUIModule } from 'ng-devui'; // 或按需引入具体模块
@NgModule({
declarations: [AppComponent],
imports: [
BrowserModule,
DevUIModule, // 或者 DataTableModule / FormModule / ModalModule 等
],
bootstrap: [AppComponent],
})
export class AppModule {}
2.1.2 Vue:Vue DevUI 的研发工具向能力
Vue DevUI 定位为 基于 DevUI Design 的 Vue3 组件库,官网与开源说明中突出:
- 面向研发工具、云原生平台、DevOps 场景
- 提供 50+ 组件、多个主题系统、虚拟滚动等性能优化能力
- 支持如 Code Editor、Markdown 编辑器、GitGraph、ECharts 封装等研发工具向组件
典型接入方式(简化示意):
npm create vite@latest vue-devui-demo -- --template vue-ts
cd vue-devui-demo
npm i vue-devui
在入口文件中注册:
import { createApp } from 'vue';
import App from './App.vue';
import DevUI from 'vue-devui';
import 'vue-devui/style.css';
createApp(App).use(DevUI).mount('#app');
小结:对企业和平台团队来说,DevUI 给的是一整套“从 Design System 到组件库”的标准化能力,不是单纯零散的 UI 组件集合,这一点在后续“主题化 + 品牌适配 + 暗黑模式”里会非常关键。
官方文档写的非常详细:

2.2 入门实战:从 0 到 1 的环境搭建与基础用法
2.2.1 Angular + DevUI 入门路径
基于官方“Environment Setup / DevUI Travel”类教程,可以抽象出一条比较通用的上手路径:
- 使用 CLI 创建 Angular 项目
- 安装
ng-devui与图标库(可选) - 在根模块或业务模块中引入所需组件模块
- 使用 DevUI 的布局与导航组件搭出基础框架
- 逐步替换业务中的表格、表单、弹窗等组件
示例:构建一个简单的云控制台列表页
<!-- app.component.html -->
<d-layout>
<d-header>Cloud Console</d-header>
<d-content>
<d-card>
<d-search [(ngModel)]="keyword"></d-search>
<d-data-table
[dataSource]="data"
[pager]="pager"
(pagerChange)="onPagerChange($event)"
>
<!-- 列定义略 -->
</d-data-table>
</d-card>
</d-content>
</d-layout>
组件选择上,优先使用 DevUI 自带的 Layout、Card、Search、DataTable 等组合组件,可以在很短时间内搭出一套视觉统一的控制台页面。
2.2.2 Vue + DevUI 入门路径
参考 Vue DevUI 官方文档的“快速开始”,基本流程是:
- 使用 Vite 创建 Vue3 + TS 项目
- 安装
vue-devui并全局注册 - 使用 Layout + Nav + Table + Form 等组件完成基本页面
- 按需开启主题系统、暗黑模式、虚拟滚动等能力
示例:构建一个 DevOps 任务列表页
<template>
<d-layout>
<d-header>Pipeline Center</d-header>
<d-content>
<d-card>
<d-form :model="query">
<d-form-item label="Keyword">
<d-input v-model="query.keyword" />
</d-form-item>
</d-form>
<d-data-table
:data="pipelines"
:pagination="pagination"
@page-change="onPageChange"
/>
</d-card>
</d-content>
</d-layout>
</template>
<script setup lang="ts">
import { ref } from 'vue';
const query = ref({ keyword: '' });
const pipelines = ref([]);
const pagination = ref({ pageSize: 20, pageIndex: 1, total: 0 });
const onPageChange = (page: number) => {
pagination.value.pageIndex = page;
// 调用后端接口加载数据
};
</script>
2.3 高频组件进阶:表格、表单、弹窗的深度用法与避坑
在云原生与 B 端项目中,“80% 的页面时间花在 20% 的组件上”,而这 20% 通常就是:
- 表格(DataTable / Table)
- 表单(Form / Form Item)
- 弹窗(Modal / Drawer / Dialog)
2.3.1 表格:虚拟滚动、服务端分页与权限控制
结合 DevUI 与 Vue DevUI 文档,可以归纳出表格的几类进阶场景:
-
大数据量 + 虚拟滚动
- 利用 DevUI 提供的虚拟滚动能力,减少 DOM 数量
- 关键点在于:行高需要固定或可预估,否则计算会不准确
-
服务端分页 / 排序 / 筛选
- 将分页、排序、筛选参数统一放到一个
queryState中 - DevUI 表格只负责展示,真正的查询逻辑交给 service
- 将分页、排序、筛选参数统一放到一个
-
可编辑表格行
- 行内编辑与弹窗编辑最好选一种为主,避免交互混乱
- 使用 Form 组件嵌入单元格时,要注意校验和焦点管理
-
权限控制
- 不要在 template 中散落
v-if="hasPermission('xxx')"/*ngIf - 更好的做法是:列配置里加入
permissionCode,渲染前统一过滤
- 不要在 template 中散落
Vue DevUI 表格配置示例(简化)
interface Column {
field: string;
header: string;
sortable?: boolean;
filterable?: boolean;
permissionCode?: string;
}
const allColumns: Column[] = [
{ field: 'name', header: 'Cluster Name' },
{ field: 'owner', header: 'Owner', sortable: true },
{ field: 'operation', header: 'Operation', permissionCode: 'cluster:edit' },
];
const visibleColumns = computed(() =>
allColumns.filter((col) => hasPermission(col.permissionCode))
);
避坑小结:
- 大数据表格一定要启用虚拟滚动或服务端分页,否则在云监控类场景中容易出现性能瓶颈
- 权限控制不要写死在模板里,要抽象到列配置 / 操作配置中
- 表格内嵌表单要注意“表格状态”与“表单状态”的职责边界

2.3.2 表单:动态表单、分步表单与复杂校验
DevUI 在表单上通常提供:
- form 容器、表单项、校验规则支持
- 与布局系统结合的响应式表单布局
- 典型控件:输入框、选择器、日期、级联、开关等
企业级云原生场景下表单的典型需求:
- 动态表单(例如:根据云资源类型切换不同字段)
- 分步表单 / 向导式创建流程(创建集群 / 创建流水线)
- 复杂校验(跨字段、异步、后端校验)
Angular + DevUI 动态表单思路示例
- 定义一个 “表单 schema”,用来决定展示哪些
d-form-item - 不直接写死在 template,而是循环生成
interface FieldSchema {
key: string;
label: string;
component: 'input' | 'select' | 'switch';
required?: boolean;
visible?: (model: any) => boolean;
}
const baseFields: FieldSchema[] = [
{ key: 'name', label: 'Cluster Name', component: 'input', required: true },
{ key: 'type', label: 'Cluster Type', component: 'select', required: true },
{
key: 'nodeCount',
label: 'Node Count',
component: 'input',
visible: (model) => model.type === 'production',
},
];
模板中:
<d-form [formGroup]="form">
<ng-container *ngFor="let field of fields">
<ng-container *ngIf="!field.visible || field.visible(form.value)">
<d-form-item [label]="field.label">
<!-- 根据 field.component 渲染不同控件 -->
</d-form-item>
</ng-container>
</ng-container>
</d-form>
表单避坑:
- 强烈建议 将校验逻辑与字段定义绑定,避免“校验散落一地”的问题
- 对于云资源创建类表单,建议用 分步式表单 + 步骤条组件,一步只做一类决策
- 异步校验(比如名称唯一性)要有防抖和错误提示

2.3.3 弹窗:从“能弹出来”到“好用好维护”
DevUI 通常提供 Modal / Drawer / Dialog 等弹层组件,结合企业场景常见用法,我们可以提炼出若干最佳实践:
-
Modal 用于“阻塞式确认”(删除、危险操作、重要配置)
-
Drawer / 右侧滑出面板用于“上下文编辑”(列表 → 编辑详情)
-
避免多层弹窗嵌套,优先考虑 流程拆分 + 页面导航
-
弹窗与表单结合时:
- 弹窗关闭前一定要提示未保存内容
- 提交按钮要绑定表单的整体校验结果
Vue DevUI 抽屉示例思路
<template>
<d-drawer v-model:visible="visible" title="Edit Cluster" :width="560">
<ClusterForm :model="formModel" @submit="onSubmit" />
</d-drawer>
</template>
避坑:
- 多弹窗叠加会严重损害用户体验;一旦发现“弹窗里弹弹窗”,基本是信息架构需要重构的信号
- 要注意可访问性(焦点管理、ESC 关闭、键盘操作),DevUI 在这方面已有规范,尽量遵守设计系统的建议

2.4 自定义组件与插件:在 DevUI 生态内“长出自己的 DNA”
在真实企业项目中,光靠组件库是不够的,团队往往需要:
- 封装 与业务紧密相关 的“中间层组件”(比如统一的资源标签、告警条、云账号选择器)
- 将这些组件也纳入统一设计规范与主题体系
基于 DevUI 的自定义组件实践,一般建议遵循以下原则:
-
基于 DevUI 组件二次封装,而不是“另起炉灶”
- 这样可以继承 Design System 与主题系统
-
统一 API 风格
- 属性命名、事件命名尽量与 DevUI 保持一致(如
v-model/[(ngModel)]、onChange等)
- 属性命名、事件命名尽量与 DevUI 保持一致(如
-
支持主题与暗黑模式
- 不要写死颜色,优先使用 DevUI 提供的变量 / token
-
配套文档与示例
- 按 DevUI 社区开源组件的结构来组织(src / tests / README 等)
示例:基于 Tag + Tooltip 的 ResourceTag 组件(Vue 思路)
<template>
<d-tooltip :content="description">
<d-tag :type="type" :icon="icon">
{{ name }}
</d-tag>
</d-tooltip>
</template>
<script setup lang="ts">
defineProps<{
name: string;
type?: 'success' | 'warning' | 'danger' | 'primary';
icon?: string;
description?: string;
}>();
</script>
通过这种方式,你可以在团队内部快速沉淀一批“业务组件”,但又始终保持与 DevUI Design 的一致外观与交互。
2.5 主题与样式定制:品牌、暗黑模式与响应式布局
DevUI Design 明确强调了 设计系统 + 主题化能力,包括:
- 统一的颜色/字体/间距规范
- 多套主题 / 自定义主题
- 面向中后台场景的布局与组件风格规范
2.5.1 品牌主题适配
在一个典型的云平台或企业产品中,你可能会面对:
- 主品牌色不一样(如蓝色系 → 绿色系)
- LOGO、字体、按钮圆角等要求不同
DevUI 的主题系统通常是基于 变量 / token 来实现的(Vue DevUI 官方也提到主题系统与主题化能力)。
推荐做法:
- 不直接在组件里写硬编码颜色
- 定义一个品牌主题配置文件(如
brand-theme.scss/brand-theme.less或 token JSON) - 通过 DevUI 提供的主题切换能力加载
2.5.2 暗黑模式与多主题切换
暗黑模式已经成为 DevOps 平台、云控制台、IDE 类场景的标配需求。
DevUI 与 Vue DevUI 带来的价值主要体现在:
- 组件本身已经适配多主题
- 只要正确切换主题变量,绝大部分组件就能“跟着变”
实践建议:
-
主题切换逻辑
- 统一由“主题服务”管理(Vue 可用 Pinia/单例 store,Angular 可用 Service + BehaviorSubject)
- 支持自动根据
prefers-color-scheme初始化
-
业务组件不要写死背景色 / 字体色
- 统一使用 Design System 的变量(例如
--devui-text、--devui-bg之类)
- 统一使用 Design System 的变量(例如

2.5.3 响应式布局技巧
云原生系统往往需要:
- 在宽屏下展示大量信息
- 在窄屏 / 小窗口下依然可用(尤其是 IDE 内嵌面板)
建议遵守 DevUI 布局组件与栅格系统的用法,将页面拆成:
- Header:导航、面包屑、全局搜索
- Sidebar:项目 / 集群 / 服务树
- Content:主内容区,内部再用栅格 / 卡片布局
在 MateChat 引入之后,右侧往往会再增加一个 对话助手侧栏,这点在后面会详细展开。
2.6 云原生应用落地:DevUI 在控制台、B 端系统中的应用范式
结合官方的“面向中后台产品、研发工具场景”的描述,我们可以抽象出几类典型落地模式。
2.6.1 云控制台:资源管理与监控视图
典型云控制台页面结构:
- 顶部:全局导航 + 账号信息 + 快捷入口
- 左侧:资源树(项目 / 区域 / 服务)
- 右侧:资源列表 + 详情 + 图表监控
DevUI 的组件组合示例:
- Navigation + Menu + Tree:构建资源导航
- DataTable:资源列表
- Tabs + Card:详情视图分组
- Chart / ECharts 封装组件:可视化指标图
做法要点:
- 抽象出统一的“资源列表页”布局模板,避免每个服务自己写
- 统一使用 DevUI 的表格与图表组件,保证各服务一致的体验
2.6.2 DevOps / 研发工具平台
在 DevOps 平台、流水线中心、制品库等场景,DevUI 的优势更加突出:
- Vue DevUI 提供了 Code Editor、Markdown 编辑器、GitGraph 等组件,特别适合研发工具场景
- 配合主题系统,可以提供与 IDE 接近的视觉风格
典型页面:
- 流水线可视化编排(Step 列表 + 状态 Tag + Timeline)
- 构建历史列表(表格 + 状态过滤 + Tag)
- 日志查看(Code / Log Viewer)
2.7 DevUI × AI & 低代码:跨场景创新探索
2.7.1 DevUI + AI 可视化
DevUI 与 Vue DevUI 都强调数据可视化能力(例如与图表组件配合使用)。
如果配合大模型,可以实现一些有趣的能力:
- 用户用自然语言描述需要的图表(例如:“帮我对比最近 7 天不同集群的 CPU 使用率”)
- 后端服务调用大模型,将自然语言转成图表配置(如 ECharts option)
- 前端用 DevUI 封装的图表组件渲染
这里 DevUI 负责提供稳定、统一的“图表容器”和主题化视觉,大模型只负责“生成配置”,职责清晰。
2.7.2 DevUI + 低代码平台
在低代码 / pro-code 场景中,DevUI 的组件体系与设计系统可以作为“物料库”,配合:
- 组件元数据(属性、事件、插槽)
- 页面描述 schema
- 渲染引擎
可以构建出:
- 面向运维 / 运营用户的低代码工作台
- 面向内部开发者的“页面拼装工具”
DevUI 的价值在于:
- 统一视觉与交互语言
- 提供稳定可用的组件基础,无需团队从零重复造轮子
其中,针对API也有一些详细使用案例:

三、MateChat:智能应用的落地实践与创新探索
如果说 DevUI 是“云原生前端的骨架与皮肤”,那 MateChat 就是“嵌在这个骨架里的大脑与神经”。
3.1 MateChat 的定位与核心理念
从官网与 GitHub / GitCode 仓库可以总结出 MateChat 的几个关键词:
- 前端智能化场景解决方案 UI 库
- 聚焦 GenAI 对话体验:消息气泡、输入区、快捷建议、过程状态可视化、上下文提醒等
- 适配 DevOps 平台、IDE、云原生工具等场景(例如 CodeArts、InsCode AI IDE)
- 基于 Vue 技术栈与 Vue DevUI 主题能力构建(主题化依托 Vue DevUI)。
- 不提供 SDK 形式的大模型接入:模型调用交给业务自己实现,MateChat 专注 UI 与体验
核心理念可以概括为:
“将 GenAI 的对话体验沉淀为一套统一的 UI / 交互语言,让业务只用关心:
- 如何获取结果?
- 如何把结果回填到 MateChat?”
这与传统“把模型 SDK 包到 UI 库里”的方式有明显区别,也更适合企业内部复杂、多云、多模型的现实需求 👍。
3.2 组件生态:从消息气泡到完整对话流
根据官网与文档、CSDN 对项目的拆解,MateChat 提供了若干核心组件:
- Bubble(气泡):承载对话消息,支持多种对齐方式、头像配置、加载态、样式变体等
- Header(头部):展示标题、LOGO,并支持操作区域插槽
- Input / 输入框相关组件:用于对话输入,支持多种扩展能力
- 快捷使用 / 建议组件:根据上下文给出推荐提示(如推荐问题 / 快捷按钮)
- 其他围绕对话流程的组件与容器:如消息列表、状态展示、布局组件等
以 Bubble 组件为例(参考文档中的 API 总结):
content: 文本内容loading: 是否展示加载状态align: 左 / 右 / 居中avatarPosition: 头像在顶部或侧边variant: 填充、边框、无背景等avatarConfig: 头像名称、性别、图片、显示名等
生成式 AI 交互中的“阅读体验”,很大程度上依赖于这些组件的组合与状态设计,而 MateChat 正是将这些组合做成一套比较完整的体系。

3.3 从 0 到 1:用 MateChat 构建一个智能助手
下面以一个“对接大模型的基础问答助手”为例,按官方指南抽象出完整流程。
3.3.1 环境搭建
- 创建 Vue3 + Vite 项目(与 Vue DevUI 场景类似)
- 安装 MateChat(根据仓库说明,使用 pnpm / npm 安装)
- 在入口处引入 MateChat 样式与组件(具体引入方式以官方文档为准)
pnpm i matechat
# 或 npm i matechat
入口文件(示意):
import { createApp } from 'vue';
import App from './App.vue';
// import MateChat from 'matechat';
// import 'matechat/dist/style.css';
createApp(App)
// .use(MateChat)
.mount('#app');
具体包名与引入方式请以官方文档为准,这里仅演示典型 Vue UI 库接入模式。
3.3.2 构建基础对话界面
可以构造一个布局:Header + 对话区 + 输入区,使用 MateChat 的组件组合。
伪代码示意(简化):
<template>
<div class="mc-layout">
<McHeader
title="AI Assistant"
logoImg="/logo.svg"
@logoClicked="goHome"
>
<template #operationArea>
<d-button @click="openSettings">Settings</d-button>
</template>
</McHeader>
<div class="mc-content">
<McBubble
v-for="msg in messages"
:key="msg.id"
:content="msg.content"
:align="msg.from === 'user' ? 'right' : 'left'"
:loading="msg.loading"
:avatar-config="msg.avatarConfig"
/>
</div>
<McInputArea
v-model="inputValue"
:suggestions="suggestions"
@submit="onSubmit"
/>
</div>
</template>
组件名仅做示意,实际需根据官方文档中的命名和用法进行调整。
要点:
messages维护一个对话列表,里面区分from: 'user' | 'model'McBubble代表单条消息,用户消息右对齐、模型消息左对齐- 输入区组件
McInputArea负责收集用户输入,并通过事件触发提交

3.3.3 对接大模型服务:无 SDK 的灵活性
MateChat 不提供 SDK,而是鼓励你:
- 直接使用 HTTP / JS SDK 调用任意大模型
- 通过一个统一的
fetchData方法来处理对话流 - 将流式返回的内容持续写入
messages中
官方文档中给出了使用 OpenAI JS SDK 的示例,包括:安装 openai、初始化客户端、调用 chat.completions.create 接口并遍历流式返回。
我们可以基于官方示例扩展一个更工程化的版本:
import OpenAI from 'openai';
const client = new OpenAI({
apiKey: '', // 模型 API Key
baseURL: '', // 模型服务地址(可对接自建网关 / 盘古网关等)
dangerouslyAllowBrowser: true,
});
const messages = ref<any[]>([]);
const inputValue = ref('');
const startPage = ref(true);
const onSubmit = (text: string) => {
if (!text.trim()) return;
inputValue.value = '';
startPage.value = false;
// 1. 用户消息
messages.value.push({
from: 'user',
content: text,
avatarConfig: { name: 'user' },
});
// 2. 发起请求
fetchData(text);
};
const fetchData = async (ques: string) => {
// 先压入一条“空的模型消息”,用于流式填充
messages.value.push({
from: 'model',
content: '',
avatarConfig: { name: 'model' },
id: '',
loading: true,
});
const index = messages.value.length - 1;
const completion = await client.chat.completions.create({
model: 'my-model',
messages: [{ role: 'user', content: ques }],
stream: true,
});
for await (const chunk of completion) {
messages.value[index].loading = false;
const content = chunk.choices[0]?.delta?.content || '';
const chatId = chunk.id;
messages.value[index].content += content;
messages.value[index].id = chatId;
}
};
这里的关键点在于:
- MateChat 只负责展示
messages列表; - 调用大模型的逻辑完全由上层业务控制;
- 你可以根据需要替换为盘古大模型、内部模型网关等,只要 HTTP 协议兼容即可。
这种 UI 与模型调用逻辑解耦 的方式,非常适合多模型、多环境、多租户的企业场景。
而且它还分不同的UI主题:

3.4 落地实践案例拆解:从 IDE 插件到云平台助手
官方案例中提到 MateChat 已经应用于:
- 华为内部多个应用智能化改造
- 华为云 CodeArts 智能助手
- InsCode AI IDE(与 CSDN、GitCode、CodeArts 合作开发的 AI IDE)
3.4.1 IDE 插件场景:InsCode AI IDE
从官网描述来看,InsCode AI IDE 使用 MateChat 的丰富组件资源,在 IDE 中快速搭建了 AI 插件:
一个合理的技术路径可以拆解为:
-
UI 嵌入方式
- IDE 提供一个 WebView / 插件面板容器
- 在容器内运行一个 Vue + MateChat 应用
-
上下文输入
- IDE 将当前文件、选中代码块、光标位置等上下文通过消息传递给插件(如 postMessage / RPC)
- 插件将这些上下文打包成 Prompt 或结构化参数,发送给后端大模型服务
-
对话与结果展示
- MateChat 的气泡组件展示对话过程
- 代码片段可以用特定的气泡样式(等宽字体、高亮)展示
- 支持“一键插入到编辑器”按钮,通过 IDE 提供的 API 将代码回写
-
多会话 / 任务管理
- MateChat UI 可以扩展多会话列表,支持保存历史对话
- 不同会话可绑定不同“任务类型”(如解释代码 / 生成测试 / 重构等)
这种模式对于后续引入智能体、MCP 工具、工作流编排也非常自然,因为:
- 前端只需展示“对话 + 工具执行结果”
- 复杂逻辑放在后端(或 IDE 插件宿主)实现
3.4.2 云平台智能助手:CodeArts 智能助手
MateChat 也被应用于华为云 CodeArts 智能助手场景:
典型实现方式:
-
在 CodeArts 的 DevOps/流水线/代码托管等页面右侧嵌入 MateChat 面板
-
面板与当前页面共享上下文(项目 ID、仓库、流水线 ID 等)
-
用户通过自然语言发问,例如“帮我分析最近构建失败原因”
-
后端服务基于上下文调用日志检索、监控信息、大模型进行分析,并以结构化信息返回
-
MateChat 用消息气泡 + 卡片组合展示结果,例如:
- 错误摘要
- 可能原因列表
- 推荐修复步骤
- 相关文档链接

3.5 创新玩法:MCP、智能体、记忆化、工作流与多模态
征文要求中提到了多项前沿玩法,下面结合 MateChat 的 UI 定位,从架构与实践角度进行分析与设想。
注意:MateChat 自身专注 UI,不直接提供 MCP / 智能体 / 工作流引擎;这些通常在后端或者中间层实现。MateChat 的职责,是 把这些能力“变成人类可理解的交互”。
3.5.1 集成 MCP:工具调用可视化
假设你在后端实现了基于 MCP(Model Context Protocol)的工具调用系统,前端 MateChat 可以做这些事情:
-
将“工具调用”过程以消息或状态的形式展示,例如:
- “正在检索流水线最近 10 次执行记录……”
- “正在调用 Kubernetes API 获取 Pod 日志……”
-
在工具调用结束后,用可视化组件展示结果:
- 使用 DevUI 的表格 / 图表组件呈现数据
- 通过 MateChat 气泡嵌入这些可视化内容
-
提供“复用工具”的快捷入口:
- 在返回结果气泡下方提供一个“继续深入分析”按钮,点击后自动构造下一条 Prompt
MateChat 在这里扮演的角色,是一个“对话层的 UI 统筹者”,让复杂的工具链执行过程变得可见、可理解、可追溯。
3.5.2 智能体与个性化记忆
在智能体与记忆化方面,推荐的架构模式是:
-
记忆与智能体逻辑在后端
- 会话记忆存储在向量数据库 / KV 存储中
- 不同智能体对应不同的 Prompt 模板与工具列表
-
MateChat 在前端做:
- 提供“智能体选择器”(例如顶部下拉选择:代码助手 / 流水线助手 / 运维助手)
- 通过气泡展示“身份切换”提示(如“你正在与【运维助手】对话”)
- 在适当时机展示“记住 / 不再提及”等人性化操作按钮
UI 层的小细节,如:
- 将“记忆点”以 Tag 或提示标记出来(例如“已记住你的代码风格偏好”)
- 提供一个“会话设置面板”,让用户调整记忆范围(本项目 / 本组织 / 当前对话)
这些都是 MateChat 十分适合承载的内容。
3.5.3 知识检索与自然语言生成 UI
结合 RAG(检索增强生成)与自然语言生成 UI 的场景,MateChat 可以承担:
- 展示检索到的知识片段(文档片段 / FAQ / 知识库条目)
- 标记“引用来源”(如在气泡下方展示引用编号与来源链接)
- 提供“继续问这个文档”的快捷入口
如果结合 DevUI 组件,可以更进一步:
- 用 DevUI 的 Tabs 分离“对话视图”与“引用详情视图”
- 通过 DevUI 卡片展示“相关流水线 / 相关集群”等实体
自然语言生成 UI 的典型玩法是:
- 用户用自然语言描述想要的界面 / 报表 / 流水线
- 后端生成结构化 schema
- 前端 DevUI 根据 schema 渲染组件
- MateChat 用气泡解释“我为你生成了如下配置,可点击编辑”
在这个环节中:
- MateChat 用于解释、对话、确认
- DevUI 用于渲染真正的 UI / DSL 结果
二者正好形成一个闭环 👍。
3.5.4 工作流与思维链(Chain-of-Thought)
在工作流与思维链方面,MateChat 可以把“模型在后台做的复杂推理过程”可视化出来:
-
将 CoT 拆成多个步骤气泡:
- Step 1:定位问题
- Step 2:收集日志
- Step 3:分析异常模式
- Step 4:给出修复建议
-
对于需要自动执行的工作流(例如“重启异常 Pod → 回滚版本 → 验证健康检查”),可以采用:
- 气泡 + 状态 Tag + 进度条(DevUI 组件)
- 每一步都提示用户“是否继续执行”,保证安全性
MateChat 的“过程监督”与“可读性强的 Markdown 渲染”等特性,在这里能很好地发挥作用。
3.5.5 多模态交互
多模态交互主要涉及:
- 上传 / 拖拽文件(日志、配置文件、截图等)
- 展示图片 / 文件解析结果
- 语音输入 / 语音回放
在前端层面:
-
MateChat 负责粘合多模态消息:
- 比如气泡中包含图片、文本摘要、下载链接等
-
DevUI 组件可以补充:
- FileUploader、预览组件、播放器等
一条“多模态消息”的数据结构大概会长成:
interface MultiModalMessage {
id: string;
from: 'user' | 'model';
content?: string;
images?: string[];
files?: { name: string; url: string; type: string }[];
meta?: Record<string, any>;
}
MateChat 的气泡组件需要支持对这些字段进行合适的渲染,而后端则负责实际存储与解析。

3.6 未来趋势:MateChat 的演进方向与潜力
从官网“特性规划”与仓库信息可以看出,MateChat 正在不断演进:
- 与 Vue DevUI 主题化能力更紧密结合
- 持续丰富组件类型与场景模板
- 提供更多 demo 和文档示例(包括多场景演示页面)
- 社区贡献开放,欢迎开发者参与组件、文档等贡献
结合行业趋势,可以预见 MateChat 在以下方向会有很大潜力:
-
场景化模板
- DevOps 助手模板
- 运维助手模板
- 代码审查助手模板
- 安全审计助手模板
-
更强的可视化表达能力
- 更复杂的结果视图(表格 + 图表 + 流程图)
- 对结果的可编辑 / 可执行能力(比如在对话框内直接修改配置并应用)
-
与 DevUI 的更深层次融合
- 共享设计系统与 token
- 在 DevUI 应用模板中预置 MateChat 区域
- 实现“开箱即用的智能化界面骨架”
四、DevUI × MateChat:云原生智能应用的全链路范式
把前面的内容连在一起,我们可以得到一个相对完整的“全栈视图”。
4.1 架构视角:前端如何分层?
从前端工程视角,一个典型的 DevUI + MateChat 云原生智能应用大致可以分为四层:
-
设计与体验层(Design System)
- DevUI Design:颜色、字体、交互规则、组件规范
- MateChat GenAI 体验语言:消息气泡样式、状态提示、对话流程规范
-
基础组件层
- DevUI / Vue DevUI:表格、表单、布局、导航、图表、代码编辑器等
- MateChat:气泡、输入区、Header、快捷建议等
-
业务组件与场景层
- 基于 DevUI 封装的业务组件(资源标签、流水线视图、集群拓扑等)
- 基于 MateChat 封装的场景化助手(DevOps 助手、日志分析助手、代码助手等)
-
智能能力与后端服务层
- 模型服务(盘古大模型、ChatGPT、内部模型网关等)
- MCP / 智能体框架 / 工作流引擎 / RAG 服务
- 业务 API(集群、流水线、监控、日志等)
前端的职责是:
- 用 DevUI 把“业务界面”构建好
- 用 MateChat 把“智能交互界面”构建好
- 用统一状态管理与 API 层,将两者串起来

4.2 典型落地模式示例:云原生 DevOps 平台
以一个“云原生 DevOps 平台”为例,可以设计这样的布局:
- 左侧:项目 / 仓库 / 流水线树(DevUI Tree + Menu)
- 中间:流水线列表 + 详情视图(DevUI Table + Tabs + Timeline)
- 右侧:MateChat 智能助手面板(对话 + 建议)
典型交互流程:
-
用户在流水线列表中点开某条失败的流水线
-
右侧 MateChat 自动刷新上下文(当前流水线 ID、最近几次运行记录)
-
用户在 MateChat 中输入:“帮我分析这条流水线最近三次失败的原因”
-
后端:
- 调用流水线服务获取日志 / 运行记录
- 基于 RAG / 模型对日志进行分析
- 输出结构化结果(错误类型、可疑步骤、推荐修复)
-
MateChat 将结果以气泡 + 表格 + Tag 形式展示
-
用户点击建议中的“重新运行流水线”按钮,调用平台 API 触发执行
在这个模式中:
- DevUI 强调的是“业务操作视图”
- MateChat 强调的是“智能解释与建议视图”
- 用户在两者之间来回切换,体验是一致的,因为它们共享同一套设计语言与前端技术栈

五、实践建议与总结
最后,我们从工程实践的角度,总结几条在 DevUI + MateChat 技术栈上构建云原生智能应用时,比较值得遵循的原则:
5.1 先建好“骨架”,再加 AI “大脑”
-
不要一开始就把所有精力放在大模型 Prompt 上
-
先用 DevUI 把核心业务流程、关键界面搭好:
- 资源列表
- 创建 / 编辑表单
- 关键指标图表
- 操作日志查看
-
再引入 MateChat 作为“智能助手层”,提供:
- 自然语言入口
- 智能解释 / 推荐
- 工作流指导与自动化入口
5.2 UI 层坚持“体验一致性优先”
- DevUI 与 MateChat 都有自己的设计与交互规范,要尽量遵守
- 不要在 MateChat 区域使用完全不同风格的组件
- 尽量复用 DevUI 的主题与布局能力,让智能助手“长得像你原来的系统的一部分”
5.3 解耦模型服务与前端 UI
-
MateChat 不提供 SDK,这反而是一种“架构上的自由”:
- 你可以接入任何模型、任何网关
- 可以在后端做统一鉴权、熔断、负载均衡
-
前端只需要关心:
- 如何组织上下文
- 如何处理流式响应
- 如何把结果转成 MateChat 消息结构
5.4 场景优先,而不是功能堆砌
-
不要一开始就把 MCP / 智能体 / CoT / 多模态全部堆进去
-
先选 1~2 个最迫切的高价值场景,例如:
- “流水线失败原因分析助手”
- “日志异常定位助手”
- “代码审查建议助手”
-
在这些场景中把体验打磨好,再逐步拓展
5.5 持续关注官方文档与社区
- DevUI / Vue DevUI 官方文档会不断更新组件与最佳实践
- MateChat 项目提供了“使用指南、演示场景、特性规划、贡献指南”等内容,并欢迎社区参与
- 在企业内部落地时,可以将自己验证过的实践反哺给社区,形成良性循环 ✨
结语
云原生时代,“做好一个前端”已经远远不只是写几个页面、调几个接口那么简单:
- 你要面对层出不穷的业务场景、复杂的研发工具链;
- 你还要拥抱大模型、智能体、工作流带来的新交互范式。
DevUI 提供了一套面向中后台与研发工具的 企业级前端解决方案,让你可以在 Angular 与 Vue 技术栈上快速构建统一、可靠的云原生应用界面;MateChat 则为你构建智能化对话交互提供了 专门的 UI 与体验系统,帮助你把大模型能力自然地嵌入现有产品。
当两者结合起来,你就拥有了一套从 界面构建 → 交互体验 → 智能赋能 的完整技术支撑体系,可以在云原生与 AI 深度融合的浪潮里,更从容地走在前面 🚀。
相关官方地址汇总如下:
- MateChat:https://gitcode.com/DevCloudFE/MateChat
- MateChat官网:https://matechat.gitcode.com
- DevUI官网:https://devui.design/home
声明:如上内容部分配图来源官网及公开互联网,若有侵权,请联系删除!
本期完毕
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐




所有评论(0)