前言

云原生开发已经从“能跑起来”进入“要跑得好”的深水区:
一边是复杂的企业级中后台界面、云控制台、DevOps 平台;
另一边是大模型、智能体、MCP 等新一代 AI 能力源源不断涌入。

如何在 不牺牲可维护性 的前提下,把这两件事同时做好?
华为云前端技术生态给出了一种很有代表性的答案——

  • DevUI:面向企业中后台、研发工具场景的企业级前端解决方案(Angular + Vue 组件体系 + Design System)。
  • MateChat:面向前端智能化场景的 GenAI 交互 UI 库,用来“轻松构建你的 AI 应用”。

两者组合起来,几乎覆盖了从 云原生应用界面构建AI 智能交互体验 的完整链路:

DevUI 负责“把界面搭好”,MateChat 负责“让界面更聪明”。

下面这篇文章,将进行一次系统的、工程实践导向的拆解与讲解:

  • DevUI 与 MateChat 内容核心讲解;
  • 重点放在 “如何落地” + “如何进阶” + “如何创新用法”
  • 尽量用工程视角说人话,但保持足够专业深度 💪。

相关官方地址汇总如下:

一、云原生 × 智能交互:为什么是 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”类教程,可以抽象出一条比较通用的上手路径:

  1. 使用 CLI 创建 Angular 项目
  2. 安装 ng-devui 与图标库(可选)
  3. 在根模块或业务模块中引入所需组件模块
  4. 使用 DevUI 的布局与导航组件搭出基础框架
  5. 逐步替换业务中的表格、表单、弹窗等组件

示例:构建一个简单的云控制台列表页

<!-- 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 官方文档的“快速开始”,基本流程是:

  1. 使用 Vite 创建 Vue3 + TS 项目
  2. 安装 vue-devui 并全局注册
  3. 使用 Layout + Nav + Table + Form 等组件完成基本页面
  4. 按需开启主题系统、暗黑模式、虚拟滚动等能力

示例:构建一个 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 文档,可以归纳出表格的几类进阶场景:

  1. 大数据量 + 虚拟滚动

    • 利用 DevUI 提供的虚拟滚动能力,减少 DOM 数量
    • 关键点在于:行高需要固定或可预估,否则计算会不准确
  2. 服务端分页 / 排序 / 筛选

    • 将分页、排序、筛选参数统一放到一个 queryState
    • DevUI 表格只负责展示,真正的查询逻辑交给 service
  3. 可编辑表格行

    • 行内编辑与弹窗编辑最好选一种为主,避免交互混乱
    • 使用 Form 组件嵌入单元格时,要注意校验和焦点管理
  4. 权限控制

    • 不要在 template 中散落 v-if="hasPermission('xxx')" / *ngIf
    • 更好的做法是:列配置里加入 permissionCode,渲染前统一过滤

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 容器、表单项、校验规则支持
  • 与布局系统结合的响应式表单布局
  • 典型控件:输入框、选择器、日期、级联、开关等

企业级云原生场景下表单的典型需求:

  1. 动态表单(例如:根据云资源类型切换不同字段)
  2. 分步表单 / 向导式创建流程(创建集群 / 创建流水线)
  3. 复杂校验(跨字段、异步、后端校验)

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 等弹层组件,结合企业场景常见用法,我们可以提炼出若干最佳实践:

  1. Modal 用于“阻塞式确认”(删除、危险操作、重要配置)

  2. Drawer / 右侧滑出面板用于“上下文编辑”(列表 → 编辑详情)

  3. 避免多层弹窗嵌套,优先考虑 流程拆分 + 页面导航

  4. 弹窗与表单结合时:

    • 弹窗关闭前一定要提示未保存内容
    • 提交按钮要绑定表单的整体校验结果

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 的自定义组件实践,一般建议遵循以下原则:

  1. 基于 DevUI 组件二次封装,而不是“另起炉灶”

    • 这样可以继承 Design System 与主题系统
  2. 统一 API 风格

    • 属性命名、事件命名尽量与 DevUI 保持一致(如 v-model / [(ngModel)]onChange 等)
  3. 支持主题与暗黑模式

    • 不要写死颜色,优先使用 DevUI 提供的变量 / token
  4. 配套文档与示例

    • 按 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 官方也提到主题系统与主题化能力)。

推荐做法:

  1. 不直接在组件里写硬编码颜色
  2. 定义一个品牌主题配置文件(如 brand-theme.scss / brand-theme.less 或 token JSON)
  3. 通过 DevUI 提供的主题切换能力加载
2.5.2 暗黑模式与多主题切换

暗黑模式已经成为 DevOps 平台、云控制台、IDE 类场景的标配需求。

DevUI 与 Vue DevUI 带来的价值主要体现在:

  • 组件本身已经适配多主题
  • 只要正确切换主题变量,绝大部分组件就能“跟着变”

实践建议:

  • 主题切换逻辑

    • 统一由“主题服务”管理(Vue 可用 Pinia/单例 store,Angular 可用 Service + BehaviorSubject)
    • 支持自动根据 prefers-color-scheme 初始化
  • 业务组件不要写死背景色 / 字体色

    • 统一使用 Design System 的变量(例如 --devui-text--devui-bg 之类)

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 环境搭建
  1. 创建 Vue3 + Vite 项目(与 Vue DevUI 场景类似)
  2. 安装 MateChat(根据仓库说明,使用 pnpm / npm 安装)
  3. 在入口处引入 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 插件:

一个合理的技术路径可以拆解为:

  1. UI 嵌入方式

    • IDE 提供一个 WebView / 插件面板容器
    • 在容器内运行一个 Vue + MateChat 应用
  2. 上下文输入

    • IDE 将当前文件、选中代码块、光标位置等上下文通过消息传递给插件(如 postMessage / RPC)
    • 插件将这些上下文打包成 Prompt 或结构化参数,发送给后端大模型服务
  3. 对话与结果展示

    • MateChat 的气泡组件展示对话过程
    • 代码片段可以用特定的气泡样式(等宽字体、高亮)展示
    • 支持“一键插入到编辑器”按钮,通过 IDE 提供的 API 将代码回写
  4. 多会话 / 任务管理

    • 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 可以做这些事情:

  1. 将“工具调用”过程以消息或状态的形式展示,例如:

    • “正在检索流水线最近 10 次执行记录……”
    • “正在调用 Kubernetes API 获取 Pod 日志……”
  2. 在工具调用结束后,用可视化组件展示结果:

    • 使用 DevUI 的表格 / 图表组件呈现数据
    • 通过 MateChat 气泡嵌入这些可视化内容
  3. 提供“复用工具”的快捷入口:

    • 在返回结果气泡下方提供一个“继续深入分析”按钮,点击后自动构造下一条 Prompt

MateChat 在这里扮演的角色,是一个“对话层的 UI 统筹者”,让复杂的工具链执行过程变得可见、可理解、可追溯。

3.5.2 智能体与个性化记忆

在智能体与记忆化方面,推荐的架构模式是:

  • 记忆与智能体逻辑在后端

    • 会话记忆存储在向量数据库 / KV 存储中
    • 不同智能体对应不同的 Prompt 模板与工具列表
  • MateChat 在前端做:

    • 提供“智能体选择器”(例如顶部下拉选择:代码助手 / 流水线助手 / 运维助手)
    • 通过气泡展示“身份切换”提示(如“你正在与【运维助手】对话”)
    • 在适当时机展示“记住 / 不再提及”等人性化操作按钮

UI 层的小细节,如:

  • 将“记忆点”以 Tag 或提示标记出来(例如“已记住你的代码风格偏好”)
  • 提供一个“会话设置面板”,让用户调整记忆范围(本项目 / 本组织 / 当前对话)

这些都是 MateChat 十分适合承载的内容。

3.5.3 知识检索与自然语言生成 UI

结合 RAG(检索增强生成)与自然语言生成 UI 的场景,MateChat 可以承担:

  1. 展示检索到的知识片段(文档片段 / FAQ / 知识库条目)
  2. 标记“引用来源”(如在气泡下方展示引用编号与来源链接)
  3. 提供“继续问这个文档”的快捷入口

如果结合 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 在以下方向会有很大潜力:

  1. 场景化模板

    • DevOps 助手模板
    • 运维助手模板
    • 代码审查助手模板
    • 安全审计助手模板
  2. 更强的可视化表达能力

    • 更复杂的结果视图(表格 + 图表 + 流程图)
    • 对结果的可编辑 / 可执行能力(比如在对话框内直接修改配置并应用)
  3. 与 DevUI 的更深层次融合

    • 共享设计系统与 token
    • 在 DevUI 应用模板中预置 MateChat 区域
    • 实现“开箱即用的智能化界面骨架”

四、DevUI × MateChat:云原生智能应用的全链路范式

把前面的内容连在一起,我们可以得到一个相对完整的“全栈视图”。

4.1 架构视角:前端如何分层?

从前端工程视角,一个典型的 DevUI + MateChat 云原生智能应用大致可以分为四层:

  1. 设计与体验层(Design System)

    • DevUI Design:颜色、字体、交互规则、组件规范
    • MateChat GenAI 体验语言:消息气泡样式、状态提示、对话流程规范
  2. 基础组件层

    • DevUI / Vue DevUI:表格、表单、布局、导航、图表、代码编辑器等
    • MateChat:气泡、输入区、Header、快捷建议等
  3. 业务组件与场景层

    • 基于 DevUI 封装的业务组件(资源标签、流水线视图、集群拓扑等)
    • 基于 MateChat 封装的场景化助手(DevOps 助手、日志分析助手、代码助手等)
  4. 智能能力与后端服务层

    • 模型服务(盘古大模型、ChatGPT、内部模型网关等)
    • MCP / 智能体框架 / 工作流引擎 / RAG 服务
    • 业务 API(集群、流水线、监控、日志等)

前端的职责是:

  • 用 DevUI 把“业务界面”构建好
  • 用 MateChat 把“智能交互界面”构建好
  • 用统一状态管理与 API 层,将两者串起来

4.2 典型落地模式示例:云原生 DevOps 平台

以一个“云原生 DevOps 平台”为例,可以设计这样的布局:

  • 左侧:项目 / 仓库 / 流水线树(DevUI Tree + Menu)
  • 中间:流水线列表 + 详情视图(DevUI Table + Tabs + Timeline)
  • 右侧:MateChat 智能助手面板(对话 + 建议)

典型交互流程:

  1. 用户在流水线列表中点开某条失败的流水线

  2. 右侧 MateChat 自动刷新上下文(当前流水线 ID、最近几次运行记录)

  3. 用户在 MateChat 中输入:“帮我分析这条流水线最近三次失败的原因”

  4. 后端:

    • 调用流水线服务获取日志 / 运行记录
    • 基于 RAG / 模型对日志进行分析
    • 输出结构化结果(错误类型、可疑步骤、推荐修复)
  5. MateChat 将结果以气泡 + 表格 + Tag 形式展示

  6. 用户点击建议中的“重新运行流水线”按钮,调用平台 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 深度融合的浪潮里,更从容地走在前面 🚀。

相关官方地址汇总如下:

声明:如上内容部分配图来源官网及公开互联网,若有侵权,请联系删除!

本期完毕

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐