跳到正文
博客园· yxybox·· 5 小时前AI 评分22

从 0 到 1:Electron41 + Vite8 + OpenAI SDK 接入 DeepSeek-V4.1-Flash 桌面端 AI 系统

从 0 到 1:Electron41 + Vite8 + OpenAI SDK 接入 DeepSeek-V4.1-Flash 桌面端AI系统 - yxybox

AI 导读

开发者用 Electron 41 + Vue3 + Vite8.3 + Arco 搭配 OpenAI SDK,从 0 到 1 手搓了一个接入 DeepSeek-V4.1-Flash 的桌面端 AI 对话客户端。项目名为 vite8-electron-ai,通过 OpenAI 接口调用 DeepSeek-V4.1 模型,定位为电脑端专属 AI 搭子。

正文

Electron41 + Vite8.3 + Vue3 接入 DeepSeek-V4.1-Flash,手搓客户端 AI 对话,丝滑到离谱

未标题-p8

image

vite8-electron-ai:Electron 41 + Vue3 + Vite8 + Arco + OpenAI 接入 DeepSeek-V4.1,从 0 到 1 打造电脑端专属 AI 搭子 🧠💻

技术栈:

  • Electron 41
  • Vue 3 <script setup>
  • Vite 8
  • Arco Design
  • OpenAI SDK 接入 DeepSeek-V4.1

从项目脚手架开始,从0-1 搭建一个 AI 桌面端:

  1. 流式打字输出
  2. 浅色 / 深色主题
  3. 深度思考(reasoner)
  4. Markdown / 代码块 / 复制 / 下载
  5. KaTeX 数学公式
  6. Mermaid 图表渲染
  7. 多轮对话 + 本地持久化会话

image

image

项目目录结构

基于 electron41+vite8 搭建项目,调用deepseek-v4.1-flash快速大模型, vue3 setup 语法编码页面。

image

electron41-vue3-deepseek已经正式更新到我的原创作品小店。

Electron41+Vite8+DeepSeek桌面版AI流式会话模板Exe

核心特性

🔄 流式对话引擎

能力

说明

SSE 流式输出​

基于 openai sdk ,逐字渲染打字效果,延迟 < 100ms

打字机动画​

类似deepseek打字输出效果

多轮上下文​

维护 messages 数组,自动携带历史对话,支持上下文窗口管理

本地会话存储​

基于 uni.setStorageSync 持久化会话列表

🧠 深度思考链(Reasoning Chain)

能力

说明

思维链展示​

解析 DeepSeek v4.1 的 reasoning_content 字段,以可折叠面板展示推理过程

渐进式渲染​

思考链与正文同步流式输出,思考中显示脉冲动画

状态标识​

区分「思考中 / 已思考 」状态,UI 差异化呈现

📐 数学公式渲染(KaTeX)

能力

说明

行内/块级公式​

支持 $...$ 行内公式与 $$...$$ 块级公式

📊 Mermaid 图表渲染(H5 端)

能力

说明

实时渲染​

识别 ```mermaid 代码块,调用 Mermaid.js 渲染为 SVG

交互支持​

支持缩放、平移,点击节点可触发回调

💻 代码块增强

能力

说明

Sticky 顶部栏​

代码块语言标识 + 复制按钮固定吸顶,滚动不消失

横向滚动​

长代码行横向滚动,不破坏布局

语法高亮​

基于 highlight.js 按需加载语言包,支持 50+ 语言

一键复制​

点击复制按钮,写入系统剪贴板,带成功反馈

🔗 链接与图片

能力

说明

链接跳转​

自动识别 URL,H5 端 _blank 新窗口打开

图片预览​

识别 Markdown 图片,点击预览

image

image

接入最新deepseek-flash大模型

const completion = await openai.chat.completions.create({
  // 单一会话
  /* messages: [
    {role: 'user', content: editorValue}
  ], */
  // 多轮会话
  messages: props.multiConversation ? historySession.value : [{role: 'user', content: editorValue}],
  // 对话模型
  model: 'deepseek-flash',
  // 是否深度思考
  thinking: {'type': chatState.thinkingEnabled ? 'enabled' : 'disabled'},
  // 流式输出
  stream: true,
  // 限制一次请求中模型生成的最大 token 数。取值范围为 1 到 384K(393216)。未设置时,非思考模式默认 8K,思考模式默认 64K
  // max_tokens: 8192,
  // 严谨采样 越低越严谨(默认1) 介于 0 和 2 之间。更高的值,如 0.8,会使输出更随机,而更低的值,如 0.2,会使其更加集中和确定。
  temperature: 0.4,
})

image

image

image

项目布局结构

image

<script setup>
  import { appState } from '@/pinia/modules/app'

  import Titlebar from '@/layouts/components/titlebar/index.vue'
  import Sidebar from '@/layouts/components/sidebar/index.vue'

  const appstate = appState()
</script>

<template>
  <div class="vu__chatbot">
    <div class="vu__container" :style="{'--themeSkin': appstate.config.skin}">
      <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>
  </div>
</template>

image

image

image

image

2026 最硬核实战:Electron41 + Vue3 + Vite8 从 0 到 1 手搓 DeepSeek 桌面 AI 客户端 就分享到这里了,希望以上的项目分享对大家有些启发帮助哈~

来源:博客园 · cnblogs.com