DevUI组件生态与MateChat智能应用:构建智能企业级前端的完整体系

引言:企业级前端的智能化演进

在云原生与AI技术深度融合的今天,企业级前端应用正经历着从"工具型"到"智能型"的范式转变。作为华为云推出的企业级前端解决方案,DevUIMateChat共同构成了应对现代企业复杂业务场景的双翼。DevUI提供了坚实的前端组件基础,而MateChat则为系统注入了智能交互能力,两者的结合正在重新定义企业级应用的开发模式和使用体验。

本文将深入探讨DevUI组件生态的全流程应用,并结合MateChat智能能力的落地实践,为开发者提供一套完整的企业级前端智能化解决方案。

一、DevUI组件生态:从基础组件到企业级架构

1.1 DevUI设计理念与核心价值

DevUI并非单一的组件库,而是一套以设计系统为灵魂、组件库为核心、工程化工具为支撑的企业级前端解决方案。其核心优势在于企业级场景适配、全链路一致性设计、高可定制性与工程化效率协同。

与传统组件库相比,DevUI的差异化优势主要体现在:

  • 企业级专属定位:针对中后台复杂场景深度优化
  • 全链路设计系统:从设计到开发的一体化协作
  • 行业特定解决方案:金融、政务、医疗等行业专属组件
  • 完整的工程化支持:CLI工具链、微前端集成、主题定制等全套解决方案

1.2 高频组件深度用法与性能优化

DataTable组件:企业级数据展示的核心

在企业级应用中,DataTable是最常用也最复杂的组件之一。DevUI的DataTable组件针对大数据场景提供了完整的解决方案:

// 大数据表格配置示例
@Component({
  template: `
    <d-table
      [data]="tableData"
      [columns]="tableColumns"
      [virtualScroll]="true"
      [scrollY]="500"
      [treeConfig]="{ idKey: 'id', parentIdKey: 'parentId', expandAll: false }"
      [loading]="loading"
      (sortChange)="onSortChange($event)"
      (filterChange)="onFilterChange($event)"
    >
      <!-- 自定义筛选器 -->
      <ng-template #statusFilter let-filterValue="filterValue" let-onFilter="onFilter">
        <d-select
          [(ngModel)]="filterValue"
          [options]="statusOptions"
          (change)="onFilter($event)"
          placeholder="全部状态"
        ></d-select>
      </ng-template>
    </d-table>
  `
})
export class DataTableComponent {
  // 开启虚拟滚动,支持万级数据流畅展示
  tableConfig = {
    virtualScroll: true,
    itemSize: 50
  };
  
  // 树形数据配置
  treeConfig = {
    idKey: 'id',
    parentIdKey: 'parentId',
    expandAll: false
  };
}

性能优化要点

  • 虚拟滚动必须设置准确的itemSize,避免滚动条跳动
  • 树形表格使用懒加载,避免一次性加载所有节点
  • 对于频繁更新的数据,使用OnPush变更检测策略
复杂表单的联动与校验

企业级表单常包含复杂的业务逻辑,DevUI表单组件提供了完整的解决方案:

// 复杂表单联动示例
@Component({
  template: `
    <d-form [dFormGroup]="formGroup" (onSubmit)="handleSubmit()">
      <d-form-item label="用户类型" name="userType">
        <d-select
          [(ngModel)]="formData.userType"
          [options]="userTypeOptions"
          (valueChange)="onUserTypeChange($event)"
        ></d-select>
      </d-form-item>
      
      <!-- 动态显示的部门字段 -->
      <d-form-item 
        label="部门" 
        name="dept" 
        *ngIf="formData.userType === 'internal'"
      >
        <d-select
          [(ngModel)]="formData.dept"
          [options]="deptOptions"
        ></d-select>
      </d-form-item>
      
      <!-- 自定义异步校验 -->
      <d-form-item label="用户名" name="username">
        <d-input
          [(ngModel)]="formData.username"
          (blur)="validateUsername()"
        ></d-input>
        <d-form-validator
          [errorMsg]="usernameError"
        ></d-form-validator>
      </d-form-item>
    </d-form>
  `
})
export class ComplexFormComponent {
  formGroup = new FormGroup({});
  
  // 用户类型变化时的联动逻辑
  onUserTypeChange(type: string) {
    if (type === 'internal') {
      this.loadDepartmentOptions();
    } else {
      this.formData.dept = null;
    }
  }
  
  // 异步用户名校验
  validateUsername() {
    this.userService.validateUsername(this.formData.username)
      .subscribe(isValid => {
        this.usernameError = isValid ? null : '用户名已存在';
      });
  }
}

1.3 自定义组件开发实践

当标准组件无法满足业务需求时,自定义组件成为必然选择。以下是业务中常见的状态流转组件开发示例:

// 状态流转组件
@Component({
  selector: 'app-status-flow',
  template: `
    <div class="status-flow">
      <d-tag
        *ngFor="let status of statusList"
        [type]="getStatusType(status)"
        [closable]="status.closable"
        (close)="onStatusRemove(status)"
        (click)="onStatusChange(status)"
      >
        {{ status.label }}
      </d-tag>
    </div>
  `,
  styles: [`
    .status-flow {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
    }
  `]
})
export class StatusFlowComponent {
  @Input() statusList: Status[] = [];
  @Input() currentStatus: string;
  @Output() statusChange = new EventEmitter<Status>();
  @Output() statusRemove = new EventEmitter<Status>();
  
  // 状态类型映射
  getStatusType(status: Status): string {
    const typeMap = {
      pending: 'default',
      processing: 'primary',
      success: 'success',
      failed: 'danger'
    };
    return typeMap[status.value] || 'default';
  }
  
  // 状态变更处理
  onStatusChange(status: Status) {
    if (this.validateStatusChange(status)) {
      this.statusChange.emit(status);
    }
  }
  
  // 状态移除处理
  onStatusRemove(status: Status) {
    this.statusRemove.emit(status);
  }
  
  // 业务规则校验
  private validateStatusChange(newStatus: Status): boolean {
    // 实现状态流转的业务规则校验
    const validTransitions = {
      pending: ['processing'],
      processing: ['success', 'failed'],
      failed: ['processing']
    };
    
    return validTransitions[this.currentStatus]?.includes(newStatus.value) || false;
  }
}

1.4 主题与样式定制:企业品牌一致性

DevUI基于Design Tokens的主题系统使得品牌适配变得系统化:

// devui-theme.scss - 企业主题定制
// 主色系定制
$devui-primary: #1890ff; // 企业主色
$devui-success: #52c41a; // 成功色
$devui-warning: #faad14; // 警告色
$devui-error: #ff4d4f;   // 错误色

// 全局样式定制
$devui-border-radius: 4px; // 全局圆角
$devui-font-size-base: 14px; // 基础字号
$devui-line-height-base: 1.5715; // 基础行高

// 暗黑主题支持
$devui-dark-bg: #1a1a1a;
$devui-dark-text: #ffffff;

// 引入DevUI基础样式
@import '~ng-devui/devui-theme';

// 自定义暗黑主题
.dark-theme {
  background-color: $devui-dark-bg;
  color: $devui-dark-text;
  
  // 覆盖组件暗色样式
  .devui-table {
    background: $devui-dark-bg;
    color: $devui-dark-text;
  }
}
// 主题切换服务
@Injectable({
  providedIn: 'root'
})
export class ThemeService {
  private currentTheme = 'light';
  
  toggleDarkMode(isDark: boolean) {
    const htmlElement = document.documentElement;
    this.currentTheme = isDark ? 'dark' : 'light';
    
    if (isDark) {
      htmlElement.classList.add('dark-theme');
      htmlElement.style.setProperty('--devui-global-bg', this.themeConfig.dark.bg);
      htmlElement.style.setProperty('--devui-text', this.themeConfig.dark.text);
    } else {
      htmlElement.classList.remove('dark-theme');
      htmlElement.style.setProperty('--devui-global-bg', this.themeConfig.light.bg);
      htmlElement.style.setProperty('--devui-text', this.themeConfig.light.text);
    }
    
    localStorage.setItem('theme', this.currentTheme);
    this.themeChange.emit(this.currentTheme);
  }
}

1.5 云原生应用落地实践

在云控制台、企业级中后台系统中,DevUI已经过大量项目的验证。某团队使用DevUI的导航、数据和反馈组件,在短短两个月内重构了一个老旧的内部运维系统,新系统不仅界面现代,开发效率更是提升了40%以上。

云原生场景架构建议

  • 技术栈:Angular/Vue/React + DevUI + 状态管理 + 业务组件库
  • 页面类型:Dashboard概览、资源列表、资源详情、监控告警
  • 跨页面能力:统一导航、全局搜索、任务中心、通知中心

二、MateChat智能应用:为企业系统注入AI能力

2.1 MateChat定位与核心价值

MateChat是面向智能化场景的前端UI组件库,用于构建一致的对话式GenAI体验。它致力于在不同业务场景下构建高一致性的GenAI体验系统语言,同时匹配各种工具/平台的原生业务场景和界面特征。

MateChat的核心特性包括:

  • 快速唤醒:固定入口、情境建议或快捷键等多种唤醒方式
  • 自由表达:专为与GenAI对话打造的输入区域,功能完善且易于扩展
  • 过程监督:帮助用户理解AI系统内部状态,促进良性人机互动
  • 可读性强:有层次、有逻辑的Markdown语法渲染和清晰直观的界面布局

2.2 快速集成与实践案例

基础集成示例

// Vue项目集成
import { createApp } from 'vue';
import App from './App.vue';

import MateChat from '@matechat/core';
import '@devui-design/icons/icomoon/devui-icon.css';

createApp(App).use(MateChat).mount('#app');

智能运维助手案例

在Kubernetes运维平台中,通过MateChat构建智能运维助手:

<template>
  <div class="ops-assistant">
    <mc-layout>
      <mc-layout-content>
        <mc-bubble
          v-for="(msg, idx) in messages"
          :key="idx"
          :content="msg.content"
          :align="msg.role === 'user' ? 'right' : 'left'"
          :avatarConfig="getAvatar(msg.role)"
          :loading="msg.loading"
        >
          <template #actions v-if="msg.actions">
            <d-button
              v-for="(action, actionIdx) in msg.actions"
              :key="actionIdx"
              :type="action.type"
              :icon="action.icon"
              @click="handleAction(action)"
            >
              {{ action.label }}
            </d-button>
          </template>
        </mc-bubble>
      </mc-layout-content>
      <mc-layout-sender>
        <mc-input
          v-model="inputValue"
          :maxLength="2000"
          placeholder="请输入问题(支持@智能体、上传文件)"
          @submit="handleSubmit"
        />
      </mc-layout-sender>
    </mc-layout>
  </div>
</template>

<script>
export default {
  data() {
    return {
      messages: [],
      inputValue: ''
    };
  },
  methods: {
    async handleSubmit() {
      const userMessage = {
        role: 'user',
        content: this.inputValue,
        timestamp: Date.now()
      };
      
      this.messages.push(userMessage);
      
      // 获取当前页面上下文
      const context = this.getCurrentContext();
      
      try {
        const response = await this.sendToAI(this.inputValue, context);
        const aiMessage = {
          role: 'assistant',
          content: response.content,
          actions: response.actions,
          timestamp: Date.now()
        };
        
        this.messages.push(aiMessage);
      } catch (error) {
        console.error('AI请求失败:', error);
      }
      
      this.inputValue = '';
    },
    
    getCurrentContext() {
      // 获取当前页面状态信息
      return {
        page: this.$route.name,
        resourceType: this.$route.params.type,
        cluster: this.currentCluster,
        namespace: this.currentNamespace,
        lastError: this.lastErrorMessage
      };
    },
    
    handleAction(action) {
      switch (action.type) {
        case 'runCommand':
          this.executeCommand(action.payload);
          break;
        case 'navigate':
          this.$router.push(action.payload);
          break;
        case 'generateYAML':
          this.generateYAML(action.payload);
          break;
      }
    }
  }
};
</script>

2.3 上下文感知的智能交互

为了让AI理解当前业务上下文,可以在发送请求时自动携带页面状态:

// 上下文感知的AI请求
class ContextAwareAIService {
  async sendQueryWithContext(query: string, additionalContext = {}) {
    // 获取当前页面状态
    const pageContext = this.getPageContext();
    const userContext = this.getUserContext();
    
    const fullContext = {
      ...pageContext,
      ...userContext,
      ...additionalContext,
      timestamp: Date.now(),
      availableTools: ['kubectl', 'logAnalyzer', 'yamlGenerator', 'diagnostic']
    };
    
    const response = await fetch('/api/ai/assist', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({
        query,
        context: fullContext,
        tools: fullContext.availableTools
      })
    });
    
    return response.json();
  }
  
  getPageContext() {
    const route = this.router.currentRoute;
    return {
      page: route.name,
      params: route.params,
      query: route.query,
      resourceId: route.params.id,
      // 从Vuex或Pinia获取应用状态
      appState: this.store?.state
    };
  }
  
  getUserContext() {
    return {
      role: this.user.role,
      permissions: this.user.permissions,
      recentActions: this.user.recentActions
    };
  }
}

2.4 创新玩法探索

自然语言生成UI

探索通过自然语言描述直接生成UI组件的创新玩法:

// AI描述:"创建一个客户反馈表单,包含姓名、电话、问题描述"
interface UISchema {
  type: string;
  items: UIComponent[];
  layout?: string;
}

interface UIComponent {
  type: 'input' | 'select' | 'textarea' | 'button';
  field: string;
  label: string;
  required?: boolean;
  rules?: ValidationRule[];
  options?: SelectOption[];
}

// AI生成的表单Schema
const generatedFormSchema: UISchema = {
  type: 'form',
  layout: 'vertical',
  items: [
    {
      type: 'input',
      field: 'name',
      label: '姓名',
      required: true,
      rules: [{ required: true, message: '姓名不能为空' }]
    },
    {
      type: 'input', 
      field: 'phone',
      label: '电话',
      required: true,
      rules: [{ 
        pattern: /^1\d{10}$/, 
        message: '手机号格式错误' 
      }]
    },
    {
      type: 'textarea',
      field: 'description',
      label: '问题描述',
      required: true,
      rules: [{ min: 10, message: '问题描述至少10个字符' }]
    }
  ]
};

// 动态表单渲染组件
@Component({
  template: `
    <d-form [dFormGroup]="dynamicForm">
      <div *ngFor="let item of schema.items">
        <d-form-item [label]="item.label">
          <ng-container [ngSwitch]="item.type">
            <d-input 
              *ngSwitchCase="'input'"
              [(ngModel)]="formData[item.field]"
              [name]="item.field"
            ></d-input>
            <d-textarea
              *ngSwitchCase="'textarea'"
              [(ngModel)]="formData[item.field]"
              [name]="item.field"
            ></d-textarea>
            <d-select
              *ngSwitchCase="'select'"
              [(ngModel)]="formData[item.field]"
              [options]="item.options"
            ></d-select>
          </ng-container>
        </d-form-item>
      </div>
    </d-form>
  `
})
export class DynamicFormRenderer {
  @Input() schema: UISchema;
  formData: any = {};
  dynamicForm: FormGroup;
}

可执行动作协议

为了让AI不仅能回答还能执行,设计一套可执行动作协议:

interface ActionProtocol {
  thought: string; // AI的思考过程
  action: {
    type: 'runCommand' | 'generateYAML' | 'createTicket' | 'navigate';
    payload: string | object;
    confirmation?: ConfirmationConfig;
  };
  nextSteps?: string[];
}

interface ConfirmationConfig {
  message: string;
  confirmText: string;
  cancelText: string;
  dangerous?: boolean;
}

// 动作执行器
class ActionExecutor {
  constructor(private router: Router, private apiService: ApiService) {}
  
  async executeAction(protocol: ActionProtocol): Promise<ActionResult> {
    // 需要确认的操作
    if (protocol.action.confirmation) {
      const confirmed = await this.showConfirmation(protocol.action.confirmation);
      if (!confirmed) {
        return { success: false, reason: '用户取消' };
      }
    }
    
    switch (protocol.action.type) {
      case 'runCommand':
        return await this.executeCommand(protocol.action.payload as string);
      case 'generateYAML':
        return await this.generateYAML(protocol.action.payload as object);
      case 'navigate':
        this.router.navigate(protocol.action.payload as string[]);
        return { success: true };
      case 'createTicket':
        return await this.createTicket(protocol.action.payload as object);
      default:
        return { success: false, reason: '未知操作类型' };
    }
  }
  
  private async showConfirmation(config: ConfirmationConfig): Promise<boolean> {
    // 使用DevUI Modal显示确认对话框
    return new Promise((resolve) => {
      this.modalService.open({
        id: 'action-confirmation',
        title: '确认执行',
        content: config.message,
        buttons: [
          {
            text: config.cancelText,
            handler: () => resolve(false)
          },
          {
            text: config.confirmText,
            theme: config.dangerous ? 'danger' : 'primary',
            handler: () => resolve(true)
          }
        ]
      });
    });
  }
}

三、DevUI + MateChat:智能企业级前端的完美融合

3.1 架构模式:分层智能体验

将DevUI与MateChat结合,可以构建分层智能体验:

  1. 基础交互层:使用DevUI组件处理标准的CRUD界面
  2. 智能辅助层:通过MateChat提供上下文相关的帮助和快捷操作
  3. 自动化层:AI驱动的业务流程自动化和智能决策

3.2 智能化云控制台实践

在实际的云资源管理平台中,我们可以实现以下联动:

<template>
  <div class="cloud-console">
    <d-layout>
      <!-- 左侧导航 -->
      <d-sidebar :items="navItems" @itemClick="onNavItemClick"></d-sidebar>
      
      <!-- 主内容区 -->
      <d-layout-content>
        <router-view @contextUpdate="updateAssistantContext"></router-view>
      </d-layout-content>
      
      <!-- 右侧AI助手 -->
      <d-drawer 
        v-model:visible="assistantVisible"
        placement="right"
        :width="400"
        :mask="false"
      >
        <mate-chat-assistant 
          :context="currentPageContext"
          @executeCommand="handleAICommand"
          @insertSnippet="insertCodeSnippet"
        />
      </d-drawer>
    </d-layout>
  </div>
</template>

<script>
export default {
  data() {
    return {
      assistantVisible: false,
      currentPageContext: {},
      navItems: [
        { id: 'dashboard', text: '概览', icon: 'dashboard' },
        { id: 'resources', text: '资源管理', icon: 'server' },
        { id: 'monitoring', text: '监控告警', icon: 'chart' }
      ]
    };
  },
  methods: {
    handleAICommand(command) {
      switch (command.type) {
        case 'navigate':
          this.$router.push(command.payload);
          break;
        case 'filter':
          this.applyDataFilter(command.payload);
          break;
        case 'execute':
          this.executeOperation(command.payload);
          break;
        case 'generate':
          this.generateResource(command.payload);
          break;
      }
    },
    
    applyDataFilter(filterConfig) {
      // 使用DevUI表格组件的方法应用筛选
      if (this.$refs.dataTable) {
        this.$refs.dataTable.setFilter(filterConfig);
      }
    },
    
    updateAssistantContext(context) {
      this.currentPageContext = { ...this.currentPageContext, ...context };
    },
    
    insertCodeSnippet(snippet) {
      // 在代码编辑器中插入AI生成的代码片段
      if (this.$refs.codeEditor) {
        this.$refs.codeEditor.insert(snippet);
      }
    }
  }
};
</script>

3.3 智能工作流引擎

结合两者构建智能工作流:

class IntelligentWorkflow {
  constructor(
    private devUI: DevUIService,
    private mateChat: MateChatService,
    private actionExecutor: ActionExecutor
  ) {}
  
  async executeUserIntent(intent: UserIntent) {
    // 显示进度反馈
    const toastId = this.devUI.toast.show({
      content: `正在处理: ${intent.description}`,
      duration: 0,
      type: 'loading'
    });
    
    try {
      // 解析用户意图
      const analysis = await this.mateChat.analyzeIntent(intent);
      
      // 更新进度
      this.devUI.toast.update(toastId, {
        content: `分析完成: ${analysis.description}`
      });
      
      // 执行工作流步骤
      for (const [index, step] of analysis.steps.entries()) {
        this.devUI.toast.update(toastId, {
          content: `执行步骤 ${index + 1}/${analysis.steps.length}: ${step.description}`
        });
        
        try {
          await this.executeStep(step);
        } catch (error) {
          await this.handleError(step, error);
          break;
        }
      }
      
      // 显示完成状态
      this.devUI.toast.hide(toastId);
      this.devUI.modal.open({
        title: '操作完成',
        content: analysis.successMessage,
        buttons: ['确定']
      });
      
    } catch (error) {
      this.devUI.toast.hide(toastId);
      this.handleWorkflowError(error);
    }
  }
  
  private async executeStep(step: WorkflowStep) {
    // 根据步骤类型执行不同操作
    switch (step.type) {
      case 'data_fetch':
        return await this.fetchData(step.config);
      case 'ui_update':
        return await this.updateUI(step.config);
      case 'ai_operation':
        return await this.mateChat.execute(step.config);
      case 'system_action':
        return await this.actionExecutor.execute(step.config);
    }
  }
  
  private async handleError(step: WorkflowStep, error: Error) {
    // 错误处理逻辑
    const recoverySuggestion = await this.mateChat.suggestRecovery(step, error);
    
    this.devUI.modal.open({
      title: '操作遇到问题',
      content: `
        <div>
          <p>步骤 "${step.description}" 执行失败:</p>
          <p><strong>错误信息:</strong> ${error.message}</p>
          <p><strong>建议方案:</strong> ${recoverySuggestion}</p>
        </div>
      `,
      buttons: [
        {
          text: '重试',
          handler: () => this.retryStep(step)
        },
        {
          text: '跳过',
          handler: () => this.skipStep(step)
        },
        {
          text: '取消',
          handler: () => this.cancelWorkflow()
        }
      ]
    });
  }
}

四、未来趋势与展望

4.1 组件生态的智能化演进

DevUI组件将向更加智能的方向发展:

  • 自适应组件:根据数据特征自动选择合适的可视化方式
  • 预测性交互:基于用户行为预测下一步操作并提供快捷入口
  • 内置AI能力:组件层面集成数据分析、洞察生成等AI功能

4.2 交互范式的根本变革

MateChat代表的对话式交互将与传统GUI深度融合:

  • 混合交互:用户可在表格中直接使用自然语言筛选数据
  • 多模态输出:AI回答不仅包含文本,还包含图表、操作按钮等丰富元素
  • 情境感知:系统自动识别用户意图,主动提供相关AI助手建议

4.3 开发模式的升级

随着低代码平台和AI生成代码的成熟,DevUI将成为可视化搭建的重要基石:

  • 设计到代码:设计稿自动转换为DevUI组件代码
  • 自然语言到界面:通过MateChat描述需求,直接生成功能界面
  • 智能维护:AI辅助的代码重构和性能优化

五、入门指南与最佳实践

5.1 环境搭建与基础使用

Angular项目集成

# 创建Angular项目
ng new my-project --style=scss --routing

# 安装DevUI
npm i ng-devui

# 引入样式到angular.json
{
  "styles": [
    "node_modules/ng-devui/devui.min.css"
  ]
}

Vue项目集成

# 安装Vue DevUI
npm install vue-devui

# 配置自动按需引入
import Components from 'unplugin-vue-components/vite'
import { DevUiResolver } from 'unplugin-vue-components/resolvers'

export default defineConfig({
  plugins: [
    vue(),
    Components({
      resolvers: [DevUiResolver()]
    })
  ]
})

5.2 新手常见问题与解决方案

  1. 表格性能问题:确认开启virtualScroll,设置合适的itemSize
  2. 表单验证不生效:确保使用ReactiveFormsModule,正确添加Validators
  3. 暗黑模式不生效:检查是否正确引入暗色主题CSS文件
  4. MateChat接入慢:优先实现基础对话功能,再逐步添加复杂特性

结语

DevUI与MateChat的组合为企业级前端开发提供了全新的可能性——既保持了大型应用所需的稳定性和一致性,又融入了现代AI交互的智能和灵活。通过本文介绍的全链路实践,我们可以看到,从基础组件使用到深度定制,再到智能应用集成,DevUI生态系统已经形成了一套完整的企业级前端解决方案。

未来,随着AI技术的进一步发展,前端开发的重点将从"如何实现界面"逐渐转向"如何设计智能交互"。掌握DevUI和MateChat,不仅能够提升开发效率,更能在智能体验时代占据先机。

作为开发者,我们正站在前端开发新纪元的起点。拥抱这些变革,不断学习和实践,我们将共同塑造企业级应用更加智能、高效的未来。


相关资源

Logo

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

更多推荐