electron39-vue3ai电脑端AI模板|electron39+deepseek+vite7聊天ai应用
2026最新研发Electron39.2+Vue3.5+DeepSeek-R1桌面客户端AI流式会话小帮手。
electron-vue3-deepseek:跨平台ai实战electron39+vite7.2+vue3+arco调用deepseek-v3.2接口搭建流式输出ai模板。支持暗黑+浅色界面、深度思考、latex公式、mermaid图表解析、本地存储对话等功能。


2026款:uniapp+deepseek流式ai助理|uniapp+vue3对接deepseek三端Ai问答模板
2026款:Vite7+DeepSeek网页版Ai助手|vue3+arco网页web流式生成ai聊天问答系统
🚀技术栈
- 开发工具:vscode
- 跨平台框架:electron^39.2.7
- 技术框架:vite^7.2.4+vue^3.5.24+vue-router^4.6.4
- AI模型框架:DeepSeek-V3.2 + OpenAI
- UI组件库:arco-design^2.57.0
- 状态插件:pinia^3.0.4
- 会话缓存:pinia-plugin-persistedstate^4.7.1
- 高亮插件:highlight.js^11.11.1
- markdown渲染插件:markdown-it^14.1.0
- 打包工具:electron-builder^26.0.12


🤖项目特性
- 最新跨平台Electron39框架,接入DeepSeek-V3.2,流式对话更丝滑
- 支持各种代码高亮/复制代码、便于分享代码片段
- 支持暗黑+浅色主题、深度思考、上下文多轮对话、本地存储对话
- 支持katex数学公式
- 支持mermaid甘特图/流程图/类图等图表
- 支持新窗口打开对话里面的链接
- 采用arco-design组件库,保证风格一致性

👽项目框架目录
基于 electron39+vite7 创建项目模板,对接 deepseek-v3.2 api大模型,采用 vue3 setup 语法糖编码开发。

Electron39-Vue3AI桌面版ai对话已经更新到我的原创作品小铺,感谢支持!

项目配置.env
去deepseek网站申请一个apikey,替换掉项目根目录.env文件里的key字段,即可体验丝滑般ai流式对话。
# 项目名称 VITE_APPNAME = 'Electron39-DeepSeek' # 运行端口 VITE_PORT = 3003 # 是否加载调试工具devtools VITE_DEVTOOLS = true # 是否打开调试工具devtools VITE_OPEN_DEVTOOLS = true # 是否删除生产环境console VITE_DROP_CONSOLE = true # DeepSeek API配置 VITE_DEEPSEEK_API_KEY = 替换为你的 API Key VITE_DEEPSEEK_BASE_URL = https://api.deepseek.com
入口配置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')
})





项目通用布局

项目整体结构如下图:

<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>
















electron39+vue3对接deepseek深度思考


const completion = await openai.chat.completions.create({ // 单一会话 /* messages: [ {role: 'user', content: editorValue} ], */ // 多轮会话 messages: props.multiConversation ? historySession.value : [{role: 'user', content: editorValue}], // deepseek-chat对话模型 deepseek-reasoner推理模型 model: sessionstate.thinkingEnabled ? 'deepseek-reasoner' : 'deepseek-chat', stream: true, // 流式输出 max_tokens: 8192, // 一次请求中模型生成 completion 的最大 token 数(默认使用 4096) temperature: 0.4, // 严谨采样 })
集成katex公式及mermaid图表
import { katex } from "@mdit/plugin-katex"; // 支持数学公式
import 'katex/dist/katex.min.css'
// 渲染mermaid图表
import { markdownItMermaidPlugin } from '@/components/markdown/plugins/mermaidPlugin'
渲染解析markdown流数据
<Markdown :source="item.content" :html="true" :linkify="true" :typographer="true" :plugins="[ [katex, {delimiters: 'all'}], [markdownItMermaidPlugin, { ... }] ]" @copy="onCopy" />


AI编辑对话框



<template> <div class="v3ai__inputbox flexbox flex-col"> <!-- 编辑器 --> <div class="v3ai__editor flexbox"> <a-textarea v-model="editorText" :auto-size="autoSize" :spellcheck="false" placeholder="给 DeepSeek 发送消息" @input="handleInput" /> </div> <!-- 操作栏 --> <div class="v3ai__tools flexbox flex-alignc"> <div class="option flex1 flexbox"> <a-tooltip content="先思考后回答,解决推理问题" position="top" mini> <div class="btn" :class="{'active': sessionstate.thinkingEnabled}" @click="sessionstate.thinkingEnabled =! sessionstate.thinkingEnabled"><i class="iconfont ai-deepthink"></i><span>深度思考</span></div> </a-tooltip> <div class="btn" :class="{'active': sessionstate.searchEnabled}" @click="sessionstate.searchEnabled =! sessionstate.searchEnabled"><i class="iconfont ai-network"></i><span>联网</span></div> <!-- 技能栏 --> <a-dropdown v-if="skillbar" position="tl" :content-style="{'min-width': '120px'}" @select="handleSkill"> <div class="btn"><icon-command size="16" /><span>技能</span></div> <template #content> <a-doption v-for="(item, index) in skills" :key="index" :value="item"><template #icon><i class="iconfont" :class="item.icon"></i></template>{{item.text}}</a-doption> </template> </a-dropdown> </div> <a-dropdown trigger="hover" :show-arrow="false" position="lb" :content-style="{'min-width': '200px'}"> <a-button class="icon-btn" 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="[5, 5]" value="option-1" :content-style="{'min-width': '120px'}"> <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 class="icon-btn" shape="circle"><icon-scissor size="18" @click="handleCut" /></a-button> </a-tooltip> <a-dropdown :show-arrow="false" position="top" :content-style="{'min-width': '160px'}"> <a-button class="icon-btn" 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 15px 0 10px; height: 15px;" /> <a-button class="btn-submit" v-if="!sessionstate.loading" type="primary" shape="circle" :disabled="!editorText?.trim() || sessionstate.loading" @click="handleSubmit"> <icon-arrow-up size="20" /> </a-button> <a-button class="btn-submit" v-else type="primary" shape="circle" @click="handleStopStream"> <div style="background:#fff;border-radius:2px;height:10px;width:10px;"></div> </a-button> </div> </div> </template>
electron39+vue3调用deepseek api
// 调用deepseek接口 const completion = await openai.chat.completions.create({ // 单一会话 // messages: [{role: 'user', content: editorValue}], // 多轮会话 messages: props.multiConversation ? historySession.value : [{role: 'user', content: editorValue}], // deepseek-chat对话模型 deepseek-reasoner推理模型 model: sessionstate.thinkingEnabled ? 'deepseek-reasoner' : 'deepseek-chat', stream: true, // 流式输出 max_tokens: 8192, temperature: 0.4 }) // 处理流式返回结果 for await (const chunk of completion) { // 检查是否已终止 if(sessionstate.aborted) break const content = chunk.choices[0]?.delta?.content || '' // 获取推理内容 const reasoningContent = chunk.choices[0]?.delta?.reasoning_content || '' if(content || reasoningContent) { answerText += content reasoningText += reasoningContent // 限制更新频率:每100ms最多更新一次 const now = Date.now() if(now - lastUpdate > 100) { lastUpdate = now requestAnimationFrame(() => { // ... }) } } if(chunk.choices[0]?.finish_reason === 'stop') { // ... } }

Ok,基于electron39+vue3接入deepseek搭建客户端ai聊天对话系统就分享到这里,希望对大家有点帮助!
推荐几个最新实战项目
Vite7+DeepSeek网页版Ai助手|vue3+arco网页web流式生成ai聊天问答系统
Uniapp-DeepSeek跨三端AI助手|uniapp+vue3+deepseek-v3流式ai聊天模板
vite7+deepseek流式ai模板|vue3.5+deepseek3.2+markdown打字输出ai助手
Electron38-Vue3OS客户端OS系统|vite7+electron38+arco桌面os后台管理
electron38-admin桌面端后台|Electron38+Vue3+ElementPlus管理系统
Electron38-Wechat电脑端聊天|vite7+electron38仿微信桌面端聊天系统
最新版Flutter3.38+Dart3.10仿写抖音APP直播+短视频+聊天应用程序
flutter3-deepseek流式AI模板|Flutter3.27+Dio+DeepSeeek聊天ai助手
最新版uniapp+vue3+uv-ui跨三端短视频+直播+聊天【H5+小程序+App端】
最新版uni-app+vue3+uv-ui跨三端仿微信app聊天应用【h5+小程序+app端】
Flutter3-MacOS桌面OS系统|flutter3.32+window_manager客户端OS模板


浙公网安备 33010602011771号