AI桌面应用

一款功能丰富的AI桌面应用程序,支持本地LLM推理、多提供商模型集成、内置工具和语音/媒体工作室,适用于开发者和AI研究人员。

  • by GURSHARN219
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 GURSHARN219/AI-Server-Studio

使用说明

AI服务器工作室

一个现代、功能丰富的AI桌面应用程序,具有本地LLM推理、多提供商支持、内置工具、MCP服务器集成、模型发现、语音/媒体工作室和完整的设置仪表板——所有这些都在一个时尚的Electron UI中。


特性

聊天界面

  • 多标签对话 --同时打开、重命名和管理多个聊天会话
  • 会话搜索 --从侧边栏快速查找过去的对话
  • 流媒体响应 --带有动画打字指示器的实时令牌流
  • Markdown渲染 --完全的markdown支持,语法突出显示代码块、复制到剪贴板和内联代码
  • 思维障碍 --可折叠的AI推理/思维显示
  • 图片附件 --在聊天中直接附加和发送图像
  • 消息操作 --复制、删除或重新生成任何邮件
  • 工具调用显示 --可折叠的工具调用结果内联到对话中

多提供商模型支持

  • 本地引擎 --连接到内置的llama.cpp引擎或任何兼容OpenAI的本地服务器(localhost:1234)
  • 云API提供商 --OpenAI、Anthropic、Google AI、Mistral、Groq、Together AI、OpenRouter或任何自定义端点
  • 实时模型提取 --自动发现每个提供商的可用型号
  • 每条消息模型徽章 --查看每个响应是由哪个模型生成的
  • 模型配置面板 --调整温度、top-p、最大令牌、系统提示等

内置工具(函数调用)

人工智能可以在对话中自主调用这些工具:

工具 说明
JS代码沙盒 在沙盒环境中执行JavaScript
网络搜索 通过DuckDuckGo进行实时网络搜索(Supabase Edge功能)
URL获取器 从任何网页中提取干净的文本
计算器 安全数学表达式计算器
JSON转换 解析、格式化、查询和转换JSON数据
随机发生器 生成UUID、密码、颜色、lorem ipsum、模拟数据
Base64编码/解码 对Base64字符串进行编码或解码
哈希生成器 SHA-256、SHA-1、SHA-384哈希
文件读取器 读取、列出和搜索用户上传的文件(Supabase)
知识库(RAG) 使用全文搜索搜索、添加和列出文档
当前时间 获取当前日期、时间、时区和UNIX时间戳

MCP(模型上下文协议)服务器

  • 自动发现 --启动时自动从启用的MCP服务器中发现工具
  • 本地+远程 --直接调用本地MCP服务器;远程服务器通过Supabase边缘函数进行代理
  • 默认服务器 --预配置的文件系统、Brave Search、GitHub、Puppeteer和SQLite服务器
  • 添加/删除/切换 --从聊天工具栏和“设置”页面管理服务器
  • Supabase已同步 --服务器配置将持久化到您的Supabase数据库中

本地LLM发动机

  • 捆绑羊驼.cpp --CPU(AVX2)、NVIDIA CUDA和Vulkan的预构建后端
  • 兼容OpenAI的API --暴露 localhost:1234 适用于任何与OpenAI兼容的客户端
  • 模型管理 --加载/卸载GGUF模型,扫描模型目录,按路径加载
  • 硬件检测 --侧边栏中带有实时使用小部件的CPU、GPU、RAM信息
  • 下载管理器 --从HuggingFace下载带有进度跟踪的GGUF模型

语音与媒体工作室

  • 语音工作室 --STT/TTS工作流与提供商选择
  • 媒体工作室 --通过云提供商生成图像和视频

Aistlaw企业后端

  • 团队和代理商 --企业级代理与团队管理
  • 工作流自动化 --代理运行、任务和事件驱动组件
  • 本地PostgreSQL --局部RAG的可选pgvector集成
  • 双处理模式 --引擎+Aistclaw在开发中作为单独的进程运行

设置仪表板

  • 个人资料和安全 --显示名称、头像、密码更改、活动会话信息
  • API提供商 -添加、编辑、切换和删除API提供程序配置(加密密钥)
  • MCP服务器 --带连接/测试、导入/导出JSON的完整CRUD
  • 工具 --启用/禁用内置和自定义工具,编辑模式
  • 服务器应用程序接口 -配置本地服务器端口、域、CORS和API密钥
  • 路径 --配置模型、日志和缓存目录
  • 基础 --主题、语言、字体大小、导航栏位置、聊天风格
  • 高级 --GPU加速、上下文长度、调试日志记录、实验功能
  • 运行时和硬件 --系统监控面板、后端浏览器

键盘快捷键

  • Ctrl + N --新聊天
  • Ctrl + , --打开设置
  • Ctrl + J --跳转到聊天
  • Ctrl + M --跳转到模型
  • Ctrl + Shift + R --运行时面板
  • Ctrl + Shift + H --硬件面板

建筑

open-studio-main/
├── electron/                   # Electron main process + preload
├── src/
│   ├── pages/                  # Application pages (one per route)
│   │   ├── Index.tsx           # Root layout, routing, global state
│   │   ├── ChatPage.tsx        # Main chat interface
│   │   ├── SettingsPage.tsx    # Full settings dashboard
│   │   ├── ModelsPage.tsx      # Local + API model management
│   │   ├── ServerPage.tsx      # Local server management
│   │   ├── DiscoverPage.tsx    # HuggingFace model browser
│   │   ├── ApiGatewayPage.tsx  # API key & endpoint management
│   │   ├── VoicePage.tsx       # Voice studio (STT/TTS)
│   │   ├── MediaPage.tsx       # Media generation
│   │   ├── AuthPage.tsx        # Authentication (Supabase Auth)
│   │   ├── AccountPage.tsx     # User account page
│   │   └── ClawUiPage.tsx      # Aistclaw enterprise UI host
│   ├── components/
│   │   ├── IconSidebar.tsx     # Navigation sidebar (vertical/horizontal, role-filtered)
│   │   ├── WindowTitleBar.tsx  # Custom Electron titlebar + theme toggle
│   │   ├── ModelConfigPanel.tsx# Model parameter configuration drawer
│   │   ├── DownloadManager.tsx # Download queue UI
│   │   ├── KeyboardShortcuts.tsx
│   │   ├── chat/               # Chat UI components
│   │   ├── server/             # Server monitor components
│   │   ├── settings/           # Settings tab panels
│   │   ├── discover/           # Model discovery components
│   │   ├── api-gateway/        # API gateway components
│   │   ├── voice/              # Voice studio components
│   │   └── ui/                 # shadcn/ui primitives
│   ├── stores/
│   │   ├── chatStore.ts        # Zustand: chat tabs, messages → localStorage
│   │   └── settingsStore.ts    # Zustand: all app settings → localStorage
│   ├── hooks/
│   │   ├── useLocalEngine.ts   # Engine status polling + load/unload
│   │   ├── useDownloadManager.ts # GGUF download queue
│   │   ├── useAuth.ts          # Auth session management
│   │   └── useHardwareInfo.ts  # CPU/GPU/RAM polling
│   ├── lib/
│   │   ├── api.ts              # Backend HTTP client
│   │   ├── localEngine.ts      # Local engine HTTP client
│   │   ├── toolExecutor.ts     # Tool execution (parallel, retry, timeout)
│   │   ├── builtInTools.ts     # Built-in tool implementations
│   │   └── mcpOperations.ts    # MCP server discovery + tool execution
│   └── backend/                # Go backend source
│       ├── engine/             # llama.cpp wrapper + hardware detection
│       ├── aistclaw/           # Enterprise backend (teams, agents, workflows)
│       └── server/             # HTTP route handlers
├── extensions/
│   └── backends/               # Pre-built llama.cpp binaries (CPU, CUDA, Vulkan)
├── data/                       # Runtime JSON data files
├── supabase/
│   └── functions/
│       ├── api-proxy/          # OpenAI-compatible API proxy
│       ├── mcp-proxy/          # MCP server proxy for remote servers
│       └── tool-execute/       # Edge function for web-search & url-fetch
├── index.html
├── tailwind.config.ts
├── vite.config.ts
└── vitest.config.ts

看 结构.md 查看完整目录细分和 建筑.md 查看详细的图表和数据流。


技术栈

层 技术
桌面外壳 Electron 34(主+预加载)
前端框架 React 18+TypeScript 5.8
构建工具 Vite 5.4(SWC插件)
造型 顺风CSS 3.4+自定义HSL设计标记
UI组件 shadcn/UI(基本UI图元)
动画 Framer Motion 12
路由 React路由器DOM v6
客户端状态 Zustand+localStorage持久化
服务器状态 TanStack查询(React查询)
后端数据库 Supabase(身份验证、PostgreSQL、边缘函数)
通过Go包装器+预构建的.dll二进制文件进行本地推理 llama.cpp
企业后端 Go(Aistclaw--代理、团队、工作流)
包管理器 Bun
Linting ESLint
测试 Vitest

入门指南

先决条件

  • 包子 >=1.0(推荐)或 Node.js >= 18
  • 去 >=1.21(构建引擎和Aistclaw后端所需)
  • Windows x86_64 (预构建的后端仅适用于Windows;其他平台需要从源代码构建)
  • Supabase项目 --用于身份验证、数据库和边缘功能(仅本地模式可选)

安装

# 1. Clone the repository
git clone https://github.com/your-username/open-studio.git
cd open-studio

# 2. Install dependencies
bun install

环境变量

创建一个 .env 项目根目录中的文件:

VITE_SUPABASE_URL=https://your-project.supabase.co
VITE_SUPABASE_ANON_KEY=your-anon-key-here

# Required for Aistclaw backend features in Electron mode
AISTCLAW_POSTGRES_DSN=postgres://postgres:postgres@localhost:5432/aistclaw?sslmode=disable

.env.local 覆盖 .env 并且是合法的。

发展

# Start the dev server (web UI only, no engine)
bun run dev

# Start desktop app with Electron (builds Go engine first)
bun run dev:electron

# Force single-engine mode in development
npx cross-env AIST_SINGLE_ENGINE=1 bun run dev:electron

# Force dual-process mode explicitly
npx cross-env AIST_SINGLE_ENGINE=0 bun run dev:electron

# Run engine standalone
bun run dev:engine

# Run engine with CUDA GPU layers
bun run dev:engine:cuda

# Run tests (single run)
bun run test

# Run tests in watch mode
bun run test:watch

# Lint the codebase
bun run lint

# Build for production
bun run build

# Build full Electron app
bun run build:electron

可用脚本

脚本 描述
bun run dev Vite开发服务器(仅限网络)
bun run dev:electron 完整的电子开发(首先构建Go引擎)
bun run dev:engine 独立运行Go引擎
bun run dev:engine:cuda 使用CUDA GPU层运行引擎
bun run build Vite生产大楼
bun run build:electron 全电子生产大楼
bun run build:engine:dev 编译Go引擎 engine.exe
bun run build:aistclaw:dev 编译Aistclaw后端 aistclaw.exe
bun run lint 埃斯林特
bun run test Vitest(单次运行)

运行时笔记(2026年4月)

运行时拓扑

模式 命令 运行什么
仅限Web用户界面 bun run dev 仅支持Vite+React UI(无本地引擎进程)
桌面开发 bun run dev:electron Vite+Electron主进程+Go引擎后端
桌面打包 bun run build:electron 带有捆绑后端二进制文件的Production Electron应用程序

桌面模式下的执行行为

  • 前端与本地Go后端通信 http://localhost:{enginePort}/v1.
  • 在开发过程中,Electron默认为 双加工 (AIST_SINGLE_ENGINE=0):引擎进程+独立的Aistclaw进程。
  • 在打包构建中,Electron默认为 单引擎监控 (AIST_SINGLE_ENGINE=1).
  • 后端从以下位置选择自由端口 1234,然后通过stdout将其发送到Electron(engine:port).

本地数据持久性(桌面)

桌面模式将应用程序数据保存在本地JSON文件中 data/ (或 AI_SERVER_DATA_DIR 如果设置):

  • data/users.json
  • data/auth_sessions.json
  • data/providers.json
  • data/provider_model_prefs.json
  • data/mcp_servers.json
  • data/documents.json

开发先决条件 bun run dev:electron

  • Go工具链 必须可用(predev构建后端二进制文件)。
  • 如果 AISTCLAW_POSTGRES_DSN 指向 localhost:5433Docker Desktop用于自动启动/停止 aistclaw-pgvector 集装箱。
  • 如果Docker不可用,则跳过pgvector自动启动,启动取决于您的DSN配置。

导航页面

页面 路线 所需角色 描述
聊天 /chat 用户 通过工具调用进行多会话聊天
AistLaw /aistclaw/* 高级用户 企业代理、团队、工作流
语音工作室 /voice 高级用户 STT/TTS工作流程
媒体工作室 /media 高级用户 图像/视频生成
我的模特 /models poweruser 本地+API模型管理
发现 /discover 高级用户 HuggingFace模型浏览器+下载器
API网关 /api 高级用户 密钥管理、使用日志
服务器 /server 高级用户 引擎监视器、日志、端点
设置 (模态) 用户 外观、聊天、高级、关于

Supabase设置

Supabase支持云工作流和边缘功能集成,但桌面模式只能使用本地后端存储运行。

对于启用了Supabase的部署,请配置以下资源:

数据库表

表 目的
profiles 用户显示名称、头像
api_providers 加密的API提供程序配置
mcp_servers MCP服务器配置
api_keys 用户生成的API密钥
api_usage_logs 请求/令牌使用跟踪
user_files 上传文件存储
documents 知识库文档(RAG)

边缘功能

功能 目的
api-proxy 代理外部API提供商的聊天完成
mcp-proxy 将JSON-RPC调用代理到远程MCP服务器
tool-execute 在服务器端执行web搜索和url获取工具

部署边缘功能

supabase functions deploy api-proxy
supabase functions deploy mcp-proxy
supabase functions deploy tool-execute

安全说明

  • 桌面模式将提供程序密钥存储在本地后端数据文件中 (data/providers.json)并通过本地经过身份验证的API为其提供服务
  • Supabase RLS 应在所有表上启用(行级安全),以确保用户只能访问自己的数据
  • 本地工具执行 (JS Sandbox、Calculator)在浏览器中运行——请谨慎对待
  • 边缘功能 处理外部网络调用(网络搜索、URL获取、MCP代理)以避免CORS问题
  • SSRF保护 在 url-fetch 内置工具阻止私有IP范围
  • 远程MCP服务器 在脱机执行模式下被阻止

贡献

  1. 分叉 存储库
  2. 创建一个 功能分支: git checkout -b feature/my-feature
  3. 承诺 您的更改: git commit -m "feat: add my feature"
  4. 推 到分行: git push origin feature/my-feature
  5. 打开A 拉取请求

代码风格

  • 具有宽松严格模式的TypeScript(noImplicitAny: false)
  • 带有React Hooks和React Refresh插件的ESLint
  • 适用于所有样式的顺风CSS(没有内联样式)
  • 组件遵循shadcn/ui模式
  • 路径别名: @/* 为了 src/*, @aistclaw/* 适用于Aistclaw模块

许可证

该项目根据 Apache许可证2.0。参见 许可证 了解详情。


Built with ❤️ using React, Electron, Go, llama.cpp, and the power of open AI models.