electron35-vue3-deepseek客户端流式输出AI对话系统

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,1000CU*H 3个月
简介: Electron35-DeepSeek桌面端AI系统|vue3.5+electron+arco客户端ai模板。2025跨平台ai实战electron35+vite6+arco仿DeepSeek/豆包ai流式打字聊天助手。

2025跨平台ai新作:基于Electron35+Vue3.5接入DeepSeek-V3搭建桌面端ai问答系统。

360截图20250416222144323.png

功能性


  1. 基于跨平台Electron35框架,接入DeepSeek-V3,性能更丝滑
  2. 支持各种代码高亮效果、易于展示分享代码片段
  3. 支持上下文多轮对话、提示词生成图片及预览功能
  4. 支持多窗口、亮色+暗黑主题
  5. 支持新窗口打开会话里面的链接
  6. 采用arco-design组件库,风格一致性


p6.gif

p2.gif

使用技术

  • 编辑器:VScode
  • 技术框架:vite^6.2.0+vue^3.5.13+vue-router^4.5.0
  • 大模型ai框架:DeepSeek-V3-0324 + OpenAI
  • 跨平台框架:electron^35.1.2
  • 组件库:arco-design^2.57.0 (字节桌面端组件库)
  • 状态插件:pinia^3.0.1
  • 会话缓存:pinia-plugin-persistedstate^4.2.0
  • 高亮插件:highlight.js^11.11.1
  • markdown解析:markdown-it


p4.gif

项目结构框架

基于跨平台框架Electron35和Vite6搭建项目模板,接入DeepSeek-V3聊天大模型。

360截图20250416003909810.png

001360截图20250415215507389.png 001360截图20250415215720964.png 002360截图20250415220924877.png 003360截图20250415224408704.png 005360截图20250415225913344.png 007360截图20250415232512780.png 007360截图20250415232512782.png 007360截图20250415232713675.png 009360截图20250415233814362.png 009360截图20250415233859613.png 010360截图20250415234222932.png 010360截图20250415234222933.png 012360截图20250415235244417.png 013360截图20250415235402322.png 013360截图20250415235535361.png 014360截图20250415235809250.png

项目入口配置main.js

import { createApp } from 'vue'
import './style.scss'
import App from './App.vue'

import { launchApp } from '@/windows/actions'

// 引入路由/状态配置
import Router from './router'
import Pinia from './pinia'

// 引入插件配置
import Plugins from './plugins'

launchApp().then(config => {
  if(config) {// 全局存储窗口配置
    window.config = config
  }

  // 初始化app实例
  createApp(App)
  .use(Router)
  .use(Pinia)
  .use(Plugins)
  .mount('#app')
})

项目布局模板

7cebf11f836e3f0f72eed833c8b2deab_1289798-20250417114129399-1818820098.png

62e11451ea556e5c40e4016b47a42a94_1289798-20250417113959089-1884145640.png

<script setup>
  import Titlebar from '@/layouts/components/titlebar/index.vue'
  import Sidebar from '@/layouts/components/sidebar/index.vue'
</script>

<template>
  <div class="vu__container">
    <div class="vu__layout flexbox flex-col">
      <!-- 导航栏 -->
      <Titlebar />

      <div class="vu__layout-body flex1 flexbox">
        <!-- 侧边 -->
        <Sidebar />

        <!-- 对话区 -->
        <div class="vu__layout-main flex1">
          <router-view v-slot="{ Component, route }">
            <keep-alive>
              <component :is="Component" :key="route.path" />
            </keep-alive>
          </router-view>
        </div>
      </div>
    </div>
  </div>
</template>

9b4a871fce151925148906abc14d55f5_1289798-20250417114836713-1122021252.png

路由管理配置

a2a0c172ab384344461cb8798756dd06_1289798-20250417115250956-319960391.png

import { createRouter, createWebHashHistory } from 'vue-router'
import { authState } from '@/pinia/modules/auth'

import Layout from '@/layouts/index.vue'

import { loginWindow } from '@/windows/actions'

// 批量导入路由
const modules = import.meta.glob('./modules/*.js', { eager: true })
const patchRouters = Object.keys(modules).map(key => modules[key].default).flat()

/**
 * meta配置
 * @param meta.requireAuth 需登录验证页面
 */
const routes = [
  ...patchRouters,
  // 错误模块
  {
    path: '/:pathMatch(.*)*',
    redirect: '/404',
    component: Layout,
    meta: {
      title: '404 error',
    },
    children: [
      {
        path: '404',
        component: () => import('@/views/error/404.vue'),
      }
    ]
  },
]

const router = createRouter({
  history: createWebHashHistory(),
  routes,
})

// 全局路由钩子拦截
router.beforeEach((to, from) => {
  const authstate = authState()
  // 登录验证
  if(to?.meta?.requireAuth && !authstate.authorization) {
    // console.log('你还未登录!')
    loginWindow()
  }
})

router.afterEach(() => {
  // ...
})

router.onError(error => {
  console.warn('[Router Error]', error)
})

export default router

357aba201614ba5fe32298c12a09b36b_1289798-20250417115515043-979545562.png

编辑框模板

612605ca7fc4781b3ada2b5f6248dfbe_1289798-20250417120714426-1703055759.png

image.png

<template>
  <div class="v3ai__footbar flexbox flex-col">
    <!-- 技能栏 -->
    <div v-if="skillbar" class="v3ai__skills flexbox flex-alignc">
      ...
    </div>
    <!-- 编辑栏 -->
    <div class="v3ai__inputbox flexbox flex-col">
      <div class="v3ai__editor flexbox">
        ...
      </div>
      <!-- 操作栏 -->
      <div class="v3ai__tools flexbox flex-alignc">
        <div class="option flex1 flexbox">
          <div class="btn" :class="{'active': isDeep}" @click="isDeep =! isDeep"><i class="iconfont ai-deepthink"></i> 深度思考 <span class="fs-12">(R1)</span></div>
          <div class="btn" :class="{'active': isNetwork}" @click="isNetwork =! isNetwork"><i class="iconfont ai-network"></i> 联网</div>
        </div>
        <a-dropdown trigger="hover" :show-arrow="false" position="lb" :content-style="{'min-width': '250px'}">
          <a-button shape="circle"><icon-attachment size="18" /></a-button>
          <template #content>
            <a-dgroup>
              <template #title><div style="margin-bottom: 5px;">从网盘添加</div></template>
              <a-doption value="wx"><icon-more /> 选择网盘文件</a-doption>
            </a-dgroup>
            <a-dgroup>
              <template #title><div style="margin-bottom: 5px;">从本地添加</div></template>
              <a-doption value="wx"><icon-apps /> 上传文件</a-doption>
              <a-dsubmenu trigger="hover" position="rb" :popup-translate="[8, 8]" value="option-1" :content-style="{'min-width': '125px'}">
                <template #default><icon-apps /> 上传代码</template>
                <template #content>
                  <a-doption value="pyq"><icon-apps /> 代码文件</a-doption>
                  <a-doption value="qq"><icon-apps /> 代码文件夹</a-doption>
                  <a-doption value="qq"><icon-apps /> GitHub仓库</a-doption>
                </template>
              </a-dsubmenu>
            </a-dgroup>
          </template>
        </a-dropdown>
        <a-tooltip content="截图提问" position="top" mini>
          <a-button shape="circle"><icon-scissor size="18" @click="handleCut" /></a-button>
        </a-tooltip>
        <a-dropdown :show-arrow="false" position="top" :popup-translate="[-10, -5]" :content-style="{'min-width': '160px'}">
          <a-button shape="circle"><icon-plus size="18" /></a-button>
          <template #content>
            <a-doption value="image"><icon-file-image /> 图片</a-doption>
            <a-doption value="file"><icon-file /> 本地文件</a-doption>
            <a-doption value="pdf"><icon-file-pdf /> PDF文档分析</a-doption>
            <a-doption value="page"><icon-cloud /> 网页总结</a-doption>
          </template>
        </a-dropdown>
        <a-divider direction="vertical" style="margin: 0 7px;" />
        <a-button class="submit" type="primary" shape="circle" :disabled="!editorText?.trim() || sessionstate.loading" @click="handleSubmit">
          <icon-arrow-up v-if="!sessionstate.loading" size="20" />
          <icon-loading v-else size="18" />
        </a-button>
      </div>
    </div>
  </div>
</template>

综上就是Electron35+DeepSeek跨平台开发桌面端AI模板的一些知识分享。感谢大家的阅读与支持!

目录
相关文章
|
8天前
|
人工智能 监控 搜索推荐
给RAG打分:小白也能懂的AI系统评测全攻略
RAG系统评估听起来高深,其实跟我们生活中的'尝鲜评测'没啥两样!本文用轻松幽默的方式,带你从检索质量、生成质量到用户体验,全方位掌握如何科学评测RAG系统,避免踩坑,让你的AI应用又快又准。#RAG技术 #AI评估 #信息检索 #大模型 #数据科学
|
3天前
|
SQL 人工智能 数据可视化
高校迎新管理系统:基于 smardaten AI + 无代码开发实践
针对高校迎新痛点,基于smardaten无代码平台构建全流程数字化管理系统,集成信息采集、绿色通道、宿舍管理等七大模块,通过AI生成框架、可视化配置审批流与权限,实现高效、精准、可扩展的迎新服务,大幅提升管理效率与新生体验。
|
1月前
|
存储 人工智能 NoSQL
万字解码 Agentic AI 时代的记忆系统演进之路
本文深入探讨了在 Agentic AI 时代,记忆(Memory) 作为智能体核心能力的定义、构建与技术演进。
万字解码 Agentic AI 时代的记忆系统演进之路
|
1月前
|
人工智能 算法 前端开发
超越Prompt Engineering:揭秘高并发AI系统的上下文工程实践
本文系统解析AI工程范式从Prompt Engineering到Context Engineering的演进路径,深入探讨RAG、向量数据库、上下文压缩等关键技术,并结合LangGraph与智能体系统架构,助力开发者构建高可靠AI应用。
207 1
|
1月前
|
人工智能 监控 搜索推荐
使用LangGraph从零构建多智能体AI系统:实现智能协作的完整指南
本文将通过构建AI研究助手的完整案例,展示如何使用LangGraph框架实现这种架构转变,从理论基础到具体实现,帮助你掌握下一代AI系统的构建方法。
481 0
使用LangGraph从零构建多智能体AI系统:实现智能协作的完整指南
|
2月前
|
人工智能 运维 监控
聚焦“AI+运维”深度融合,龙蜥系统运维联盟 MeetUp 圆满结束
现场 40 多位开发者进行了深入的技术交流,探索 AI 与运维深度融合的未来路径。
|
2月前
|
人工智能 缓存 开发者
MCP协议究竟如何实现RAG与Agent的深度融合,打造更智能AI系统?
本文AI专家三桥君探讨了通过MCP协议实现RAG与Agent系统的深度融合,构建兼具知识理解与任务执行能力的智能系统。文章分析了传统RAG和Agent系统的局限性,提出了MCP协议的核心设计,包括标准化接口、智能缓存和动态扩展性。系统架构基于LlamaIndex和LangGraph实现服务端和客户端的协同工作,并提供了实际应用场景与生产部署指南。未来发展方向包括多模态扩展、增量更新和分布式处理等。
325 0
|
2月前
|
人工智能 开发框架 搜索推荐
AI Agent构建强大外部工具调用能力不足,MCP Server怎样应对?MCP Serve在企业级Agent系统中的关键意义
本文AI产品专家三桥君探讨了MCP Server在企业级AI Agent系统中的关键作用,通过标准化工具接口实现AI与外部服务的无缝集成。三桥君重点阐述了分布式系统中的会话管理、状态持久化等实践方案,强调MCP Server在降低AI决策风险、提升系统可靠性方面的企业价值,为AI产品经理提供了架构设计与优化策略的实践指导。
276 0
|
2月前
|
人工智能 NoSQL Redis
企业级Agent系统中AI决策错误带来损失,如何通过HITL机制解决?
本文AI专家三桥君探讨了企业级Agent系统中Human-in-the-Loop(HITL)机制的关键作用,旨在解决AI在复杂业务场景中“聪明但错误”的决策问题。通过单机模式(LangGraph中断恢复)、工具调用管控(集中看守/自我管理)及分布式架构(FastAPI+Redis)三种方案,实现人类专家在关键节点的精准干预。三桥君还提出故障恢复策略与异步优化等企业级实践,强调HITL能有效降低AI决策风险,提升系统可靠性,为AI产品经理提供技术落地方向。
117 0