多平台MCP客户端

Aether是一款基于Tauri和Next.js构建的现代化跨平台多客户端协议(MCP)客户端,支持OpenAI和本地大型语言模型,提供实时聊天、对话管理和安全存储等功能。

  • by NoManNayeem
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 NoManNayeem/Aether

使用说明

🌌 Aether - 跨平台MCP客户端

一个基于Tauri和Next.js构建的现代、跨平台的大型语言模型多客户端协议(MCP)客户端。

📊 项目状态

✅ 已完成的功能

  • 桌面应用程序 - 完全功能的 Tauri + Next.js 应用
  • 多供应商支持 - OpenAI与本地大型语言模型(LLM)的集成
  • 实时聊天 - 实时流式响应并显示输入状态指示
  • 对话管理 - 具有持久性的CRUD操作
  • 安全存储 - 存储在操作系统密钥环中的API密钥
  • 响应式移动着陆页 - 专业的GitHub Pages网站
  • CI/CD 流水线 - 自动化构建和发布
  • 跨平台构建 - 支持 macOS、Windows、Linux

🚧(施工中/维修中/禁止通行等,具体含义根据上下文而定) 正在开发中

  • 增强的用户界面组件 - 额外的shadcn/ui集成
  • 插件系统 - 可扩展的提供者架构
  • 高级设置 - 更多配置选项
  • 性能优化 - 内存和速度提升

📋 翻译成中文是:清单 路线图

  • 插件市场 - 第三方提供商支持
  • 团队协作 - 共享对话和工作空间
  • 高级分析 - 使用统计数据和见解
  • 手机应用程序 - React Native 伴侣应用

✨ 特点/功能

🚀 表示火箭或快速上升、加速的意象,常用于比喻或象征快速的发展、进步或行动。 核心能力

  • 跨平台桌面应用程序 - 使用Tauri构建,实现原生性能
  • 多供应商支持 - OpenAI,本地大型语言模型(Ollama,LM Studio,vLLM)
  • 实时流媒体 - 带有打字指示器的实时聊天回复
  • 安全API密钥管理 - 与操作系统原生密钥环的集成
  • 对话管理 - 具备持久化的完整CRUD(创建、读取、更新、删除)操作
  • 模型跟踪 - 记住每场对话中使用了哪个模型

📱 移动响应式着陆页

  • GitHub Pages 网站 - 带有动画效果的专业着陆页
  • 移动优先设计 - 在所有设备上均能良好响应(或自适应)
  • 交互式演示 - 桌面应用程序的实时预览
  • 下载按钮 - 直接链接到特定平台的发布版本
  • 设置说明 - 本地大语言模型(LLM)设置的全面指南

🎨(颜料/艺术创作相关) 用户体验

  • 漂亮的用户界面 - 采用shadcn/ui组件的现代设计
  • 动画启动画面 - 优雅的加载体验
  • 深色/浅色主题 - 支持自适应主题
  • 响应式设计 - 适用于所有屏幕尺寸
  • 键盘快捷键 - 高效的工作流程导航

🔧(扳手或修理工具的符号,无具体文字含义) 技术特性

  • TypeScript - 栈中全面的类型安全
  • Rust 后端 - 高性能系统集成
  • Next.js 前端 - 使用SSG优化的现代React
  • 安全存储 加密API密钥存储
  • 离线支持 - 无需互联网即可工作(针对本地大型语言模型)
  • 热重载 - 快速开发经验

🏗️ 建筑学

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   Next.js UI    │    │   Tauri Core    │    │   LLM Providers │
│                 │    │                 │    │                 │
│ • React Components│◄──►│ • Rust Backend  │◄──►│ • OpenAI API    │
│ • State Management│    │ • IPC Commands   │    │ • Local Ollama  │
│ • UI Components  │    │ • Secure Storage │    │ • Custom APIs   │
└─────────────────┘    └─────────────────┘    └─────────────────┘

🚀 快速入门

先决条件

  • Node.js 20+ 版本及 npm(Next.js 16 所需)
  • Rust(一种编程语言) 1.70+(适用于Tauri)
  • Git(一种分布式版本控制系统) 用于克隆仓库

安装

  1. 克隆仓库

    git clone https://github.com/NoManNayeem/Aether.git
    cd Aether
    
  2. 安装依赖项

    npm install
    
  3. 以开发模式运行

    npm run tauri:dev
    

为生产构建(或:准备生产环境)

# Build the desktop application
npm run tauri:build

# Build only the web version
npm run build

下载预构建版本

预构建的桌面应用程序可供下载,下载地址为 GitHub 发布版 页面:

  • macOS英特尔与苹果硅芯片(DMG)
  • Windowsx64 与 ARM64(微星)
  • Linuxx64 和 ARM64(AppImage 和 DEB)

🔄 持续集成/持续交付 (CI/CD) 与自动化

GitHub Actions 工作流

该项目包含了用于自动化CI/CD的全面GitHub Actions工作流:

CI 工作流 (.github/workflows/ci.yml)

  • 触发器推送到 main 分支,拉取请求
  • 行动代码检查、构建和测试
  • Node.js20.x(修复了Next.js 16的兼容性问题)

页面工作流 (.github/workflows/pages.yml)

发布工作流程 (.github/workflows/release.yml)

  • 触发器版本标签(例如。, v1.0.0)
  • 行动为所有平台构建桌面应用程序
  • 输出DMG、MSI、AppImage 和 DEB 软件包

创建一个发布版本

创建一个新的桌面版本:

# Tag a new version
git tag v1.0.0
git push origin v1.0.0

# GitHub Actions will automatically:
# 1. Build for all platforms
# 2. Create a GitHub release
# 3. Upload all artifacts

📖 使用方法

添加大型语言模型(LLM)提供商

  1. 打开设置 - 点击侧边栏中的设置图标
  2. 添加提供商 - 点击“添加提供者”按钮
  3. 配置 - 输入提供商详细信息:
    • 名字您的提供商名称
    • 类型OpenAI 或 本地
    • **终端(或端点)**API终端URL
    • 模型使用的默认模型
    • API密钥您的安全API密钥

开启对话

  1. 选择提供商 - 从侧边栏中选择
  2. 开始聊天 - 输入您的信息并按回车键
  3. 管理对话 - 使用侧边栏来整理聊天记录

本地LLM设置

使用Ollama(推荐)

  1. 安装Ollama

    # macOS
    brew install ollama
    
    # Linux
    curl -fsSL https://ollama.ai/install.sh | sh
    
  2. 运行Ollama

    ollama serve
    
  3. 添加模型

    ollama pull phi3
    
  4. 在Aether中进行配置

    • 提供商类型:本地
    • 终端/端点: http://localhost:11434/v1/chat/completions
    • 模型: phi3

使用 Docker

# Run Ollama in Docker
docker run -d -p 11434:11434 --name ollama ollama/ollama

# Pull a model
docker exec -it ollama ollama pull phi3

🛠️ 开发

项目结构

Aether/
├── src/                    # Next.js frontend
│   ├── app/               # App Router pages
│   ├── components/        # React components
│   ├── hooks/            # Custom React hooks
│   ├── lib/              # Utilities and types
│   └── store/            # State management
├── src-tauri/            # Tauri backend
│   ├── src/              # Rust source code
│   └── Cargo.toml        # Rust dependencies
├── public/               # Static assets
└── docs/                 # Documentation

可用脚本

# Development
npm run dev              # Next.js dev server
npm run tauri:dev       # Tauri development
npm run tauri:build     # Build desktop app

# Production
npm run build           # Build web version
npm run start           # Start production server

# Utilities
npm run lint            # Run ESLint
npm run tauri           # Tauri CLI commands

添加新的大型语言模型(LLM)提供商

  1. 创建提供者结构 在 src-tauri/src/llm/
  2. 实现 LLMProvider 特性(或接口)
  3. 添加到工厂 在 src-tauri/src/llm/factory.rs
  4. 更新前端类型 在 src/lib/types.ts

示例:

// src-tauri/src/llm/custom.rs
pub struct CustomProvider {
    client: Client,
    api_key: String,
    endpoint: String,
}

#[async_trait]
impl LLMProvider for CustomProvider {
    async fn stream_chat_completion(
        &self,
        messages: Vec<ChatMessage>,
        channel: Channel<ChatResponseChunk>,
    ) -> Result<(), LLMError> {
        // Implementation here
    }
}

🔒 安全

  • API密钥 存储在操作系统密钥环中(macOS上的密钥链,Windows上的凭据管理器)
  • 无网络调用 来自前端的所有API调用都通过Tauri进行
  • 安全进程间通信(Secure IPC) - Tauri 内置的安全模型
  • 本地存储 - 默认情况下,对话存储在本地

🐛 故障排除

常见问题

应用程序无法启动

# Clear cache and reinstall
rm -rf node_modules package-lock.json
npm install

Tauri 构建失败

# Update Rust
rustup update

# Clean Tauri cache
npm run tauri build -- --verbose

本地LLM无法连接

# Check if Ollama is running
curl http://localhost:11434/api/tags

# Check Docker container
docker ps | grep ollama

GitHub Actions 构建失败

# Ensure Node.js 20+ is used
# The workflows are configured to use Node.js 20.x
# Check the workflow files in .github/workflows/

Node.js版本问题

# Next.js 16 requires Node.js >=20.9.0
# Update your Node.js version:
nvm install 20
nvm use 20

调试模式

启用调试日志记录:

RUST_LOG=debug npm run tauri:dev

🤝 贡献(或“参与贡献”)

我们欢迎投稿!请参阅我们的 贡献指南 详情如下。

开发环境设置

  1. 为仓库创建分支(或:克隆仓库)
  2. 创建一个特性分支: git checkout -b feature/amazing-feature
  3. 进行你的更改
  4. 运行测试: npm run lint
  5. 提交更改: git commit -m 'Add amazing feature'
  6. 推送到分支: git push origin feature/amazing-feature
  7. 提交一个拉取请求

📄 许可证

此项目遵循MIT许可协议 - 详见 许可证 文件中有关于详情。

👨‍💻 作者与开发者

奈伊姆·伊斯兰 - 全栈开发者及Aether的创造者

利用现代网络技术开发创新的跨平台应用程序。热衷于构建安全、高效且用户友好的桌面应用程序。

🙏 致谢

🌐 网站与文档

着陆页

文档

📞 支持


Built with ❤️ by Nayeem Islam
Creating the future of cross-platform AI applications