{"id":28417113,"url":"https://github.com/1600822305/aetherlink","last_synced_at":"2026-01-03T14:25:05.588Z","repository":{"id":292874055,"uuid":"982221847","full_name":"1600822305/AetherLink","owner":"1600822305","description":"AetherLink移动应用是一个基于现代Web技术构建的跨平台AI助手应用。该应用支持与多种AI模型（如OpenAI、Google Gemini、Anthropic Claude、Grok、硅基流动、火山方舟等）的交互，提供流畅的对话体验，并支持Android平台部署。应用采用React、TypeScript和Capacitor框架开发，具有高度可定制的模型配置、多主题聊天管理、AI思考过程可视化、语音合成、语音识别、MCP工具支持、知识库管理等特色功能。","archived":false,"fork":false,"pushed_at":"2025-06-20T17:19:51.000Z","size":15408,"stargazers_count":113,"open_issues_count":1,"forks_count":16,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-20T18:29:09.855Z","etag":null,"topics":["android-app","capacitor","chatbot","ios-app","llm","mcp-client","openai"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/1600822305.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-12T14:52:39.000Z","updated_at":"2025-06-20T17:19:55.000Z","dependencies_parsed_at":"2025-05-29T14:51:10.180Z","dependency_job_id":"082341e3-2b26-4ca6-9c72-b33559d03db1","html_url":"https://github.com/1600822305/AetherLink","commit_stats":null,"previous_names":["1600822305/cherry-studio-app2","1600822305/cs-llm-house"],"tags_count":123,"template":false,"template_full_name":null,"purl":"pkg:github/1600822305/AetherLink","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1600822305%2FAetherLink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1600822305%2FAetherLink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1600822305%2FAetherLink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1600822305%2FAetherLink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/1600822305","download_url":"https://codeload.github.com/1600822305/AetherLink/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/1600822305%2FAetherLink/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261962100,"owners_count":23236870,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android-app","capacitor","chatbot","ios-app","llm","mcp-client","openai"],"created_at":"2025-06-04T03:15:03.867Z","updated_at":"2026-01-03T14:25:05.583Z","avatar_url":"https://github.com/1600822305.png","language":"TypeScript","funding_links":[],"categories":["The latest additions 🎉"],"sub_categories":[],"readme":"# AetherLink\n\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/1600822305/CS-LLM-house)\n\n[![](https://img.shields.io/badge/License-AGPLv3-important.svg?style=plastic\u0026logo=gnu)](https://www.gnu.org/licenses/agpl-3.0) [![](https://img.shields.io/badge/License-Commercial-blue.svg?style=plastic\u0026logoColor=white\u0026logo=telegram\u0026color=blue)](mailto:1600822305@qq.com?subject=AetherLink%20Commercial%20License%20Inquiry)\n\n## 项目概述\n\n官方交流群Q群 点击链接加入群聊【AetherLink 官方群】：http://qm.qq.com/cgi-bin/qm/qr?_wv=1027\u0026k=V-b46WoBNLIM4oc34JMULwoyJ3hyrKac\u0026authKey=q%2FSwCcxda4e55ygtwp3h9adQXhqBLZ9wJdvM0QxTjXQkbxAa2tHoraOGy2fiibyY\u0026noverify=0\u0026group_code=930126592\n\nAetherLink移动应用是一个基于现代Web技术构建的跨平台AI助手应用。该应用支持与多种AI模型（如OpenAI、Google Gemini、Anthropic Claude、Grok、硅基流动、火山方舟等）的交互，提供流畅的对话体验，并支持Android平台部署。应用采用React、TypeScript和Capacitor框架开发，具有高度可定制的模型配置、多主题聊天管理、AI思考过程可视化、语音合成、语音识别、MCP工具支持、知识库管理等特色功能。\n\n## 技术栈\n\n- **前端框架**: React 19、Material UI 7\n- **构建工具**: Vite 6、SWC编译器\n- **编程语言**: TypeScript 5.8\n- **移动框架**: Capacitor 7\n- **状态管理**: Redux \u0026 Redux Toolkit 2.8\n- **API集成**: OpenAI、Google Gemini、Anthropic Claude、Grok、硅基流动、火山方舟等AI模型\n- **存储**: IndexedDB (Dexie)、localStorage\n- **样式**: MUI组件 + Tailwind CSS + 自定义CSS\n- **语音技术**: 硅基流动TTS API、OpenAI TTS、Azure TTS、Web Speech API、Capacitor语音识别\n- **代码高亮**: Shiki语法高亮引擎\n- **工具支持**: MCP (Model Context Protocol) 工具集成\n\n## 系统要求\n\n- **Node.js**: v22.x 或更高\n- **npm**: v10.x 或更高\n- **Android Studio**: 用于Android平台开发\n- **JDK**: Java 11 或更高版本\n- **Vite**: 6.x 或更高版本\n- **Capacitor CLI**: 7.x 或更高版本\n- **React**: 19.x\n- **TypeScript**: 5.8.x\n\n\n## 安装指南\n\n1. **克隆仓库**\n\n```bash\ngit clone https://github.com/1600822305/AetherLink.git\ncd AetherLink\n```\n\n2. **安装依赖**\n\n```bash\nnpm install\n```\n\n3. **初始化Capacitor**\n\n```bash\nnpx cap init\n```\n\n## 开发指南\n\n### 启动开发服务器\n\n```bash\nnpm run dev\n```\n\n### 构建选项\n\n```bash\nnpm run build              # 快速构建（推荐）\nnpm run build:ultra        # 完整构建（包含类型检查）\n```\n\n### 移动端开发\n\n```bash\n# 构建并同步到Android\nnpm run build\nnpx cap sync android\nnpx cap open android\n```\n\n### 主要功能\n\n- **多模型AI对话**：支持OpenAI、Claude、Gemini、Grok等主流AI模型\n- **语音交互**：语音识别输入 + TTS语音播放\n- **移动端优化**：原生Android应用体验\n- **知识库管理**：文档上传、智能检索\n- **MCP工具集成**：扩展AI能力的工具生态\n- **React架构**：现代化的React 19应用架构\n\n## 构建与部署\n\n### Android APK构建\n\n```bash\n# 在Android Studio中构建\nnpx cap open android\n# 然后在Android Studio中: Build \u003e Build Bundle(s) / APK(s) \u003e Build APK(s)\n```\n\nAPK将保存在 `android/app/build/outputs/apk/debug/` 目录\n\n## 许可证\n\nAetherLink 采用**分层许可模式**，根据使用者规模提供不同的许可方案：\n\n- **个人用户及8人以下团队**：适用 GNU Affero 通用公共许可证 v3.0 (AGPLv3)\n- **8人以上的组织机构**：必须获取商业使用许可证\n\n### 商业许可\n\n如果您的组织超过8人，或需要规避AGPLv3的开源义务，请联系我们获取商业许可证：\n\n📧 **商业授权联系**：1600822305@qq.com\n\n详细许可条款请查看 [LICENSE](LICENSE) 文件。\n\n## 贡献指南\n\n1. Fork本仓库\n2. 创建功能分支 (`git checkout -b feature/amazing-feature`)\n3. 提交更改 (`git commit -m '添加一些功能'`)\n4. 推送到分支 (`git push origin feature/amazing-feature`)\n5. 创建一个Pull Request\n\n**注意**：所有代码贡献将被视为在AGPLv3许可证下提供。\n\n\n\n## 特色功能\n\n### 🤖 自动获取模型列表\n\nAetherLink支持从各大AI提供商API自动获取可用模型列表：\n\n- 支持OpenAI、Claude (Anthropic)、Gemini (Google)、Grok (xAI)、硅基流动和火山方舟等主流AI提供商\n- 自动处理不同API格式和端点路径\n- 智能适配自定义中转站API\n- 提供优雅的回退机制，当API请求失败时使用预设模型列表\n- 支持的API端点:\n  - OpenAI: `/v1/models`\n  - Claude: `/v1/models`\n  - Gemini: `/v1beta/models`\n  - Grok: `/v1/models`\n  - 硅基流动: `/v1/models`\n  - 火山方舟: `/api/v3/models`\n  - 自定义中转站: 自动检测并适配\n\n### 🎙️ 语音识别功能\n\nAetherLink支持多种语音识别方案：\n\n- **Capacitor语音识别**：移动端原生语音识别，支持实时转录\n- **OpenAI Whisper**：高精度语音转文本，支持多语言\n- **Web Speech API**：浏览器原生语音识别作为备选方案\n- **智能提供商切换**：根据环境自动选择最佳识别方案\n- **实时反馈**：支持部分结果显示和实时状态更新\n- **按住说话**：直观的语音输入交互方式\n\n### 🔊 增强语音合成\n\nAetherLink提供多层级的语音合成解决方案：\n\n- **Azure TTS**：微软Azure认知服务，支持SSML和高质量语音\n- **OpenAI TTS**：OpenAI语音合成，支持流式和非流式输出\n- **硅基流动TTS**：高质量中文语音合成\n- **Web Speech API**：浏览器原生语音合成作为备选\n- **智能降级**：自动尝试多种TTS服务，确保语音播放成功\n- **语音控制**：播放/暂停、语速调整、语音选择等功能\n\n### 🛠️ MCP工具支持\n\n集成Model Context Protocol (MCP)工具生态：\n\n- **Fetch工具**：支持网络请求和数据获取\n- **跨平台兼容**：移动端使用原生HTTP，Web端使用代理\n- **工具块渲染**：可视化工具执行结果\n- **错误处理**：完善的错误处理和重试机制\n\n### 📱 移动端优化\n\nAetherLink针对移动设备进行了多项优化：\n\n- **返回键智能处理**：根据当前页面上下文智能处理Android返回键行为\n  - 在聊天和欢迎页面显示退出确认对话框\n  - 在其他页面返回上一级页面\n  - 防止意外退出应用\n- **WebView版本检测**：自动检测WebView版本并提供升级建议\n- **响应式布局**：自适应不同屏幕尺寸和方向\n- **触摸优化**：针对触摸交互优化的UI元素和手势\n- **性能优化**：减少不必要的渲染和计算，确保在移动设备上流畅运行\n- **原生功能集成**：相机、文件系统、剪贴板等原生功能无缝集成\n\n### 🎨 React架构\n\n- **React主框架**：使用React 19作为主要UI框架\n- **类型安全**：完整的TypeScript支持\n\n### 📚 知识库管理\n\n- **文档管理**：支持多种文档格式的上传和管理\n- **智能检索**：基于AI的语义搜索和内容检索\n\n### 💻 代码编辑器\n\n- **语法高亮**：基于Shiki的高质量语法高亮\n- **多语言支持**：支持主流编程语言\n\n### 🧠 AI思考过程\n\n- 支持显示AI的思考过程（主要支持Grok模型）\n- 可视化思考时间和过程，改善用户体验\n\n### 🛠️ 开发者工具\n\n- 控制台日志查看\n- 网络请求监控\n- API请求和响应分析\n## 项目结构\n\n```\nAetherLink/\n├── android/                # Android平台相关代码和配置\n│   ├── app/                # Android应用主要代码\n│   │   ├── src/            # 源代码目录\n│   │   │   ├── main/       # 主要代码\n│   │   │   │   ├── assets/ # Web资源和配置文件\n│   │   │   │   ├── java/   # Java代码\n│   │   │   │   └── res/    # Android资源文件(布局、图标等)\n│   │   │   └── test/       # 测试代码\n│   │   └── build.gradle    # 应用级构建配置\n│   ├── build.gradle        # 项目级构建配置\n│   ├── capacitor.settings.gradle # Capacitor插件配置\n│   └── variables.gradle    # 全局变量和版本配置\n├── public/                 # 静态资源文件和公共资产\n│   └── assets/             # 图标、图片等公共资源\n├── src/                    # 源代码目录\n│   ├── assets/             # 应用内图片、字体等资源\n│   ├── components/         # 可复用UI组件\n│   │   ├── AIDebateButton.tsx # AI辩论功能按钮组件\n│   │   ├── AppInitializer.tsx # 应用初始化组件\n│   │   ├── BackButtonHandler.tsx # Android返回键处理组件，管理返回键行为\n│   │   ├── ChatInput.tsx   # 聊天输入框组件，处理消息输入和发送\n│   │   ├── ChatToolbar.tsx # 聊天工具栏组件，提供聊天页面顶部操作\n│   │   ├── CitationsList.tsx # 引用列表组件，显示消息引用\n│   │   ├── CodeEditor/     # 代码编辑器组件目录\n│   │   ├── CompactChatInput.tsx # 紧凑型聊天输入框\n│   │   ├── DevTools/       # 开发者工具组件目录\n│   │   ├── EnhancedToast.tsx # 增强型提示组件\n│   │   ├── ExitConfirmDialog.tsx # 退出确认对话框，防止意外退出应用\n│   │   ├── FilePreview.tsx # 文件预览组件\n│   │   ├── ImageGeneration/ # 图像生成功能组件目录\n│   │   ├── IntegratedFilePreview.tsx # 集成文件预览组件\n│   │   ├── KnowledgeManagement/ # 知识库管理组件目录\n│   │   ├── ModelManagementDialog.tsx # 模型管理对话框\n│   │   ├── MultiModelSelector.tsx # 多模型选择器组件\n│   │   ├── RouterWrapper.tsx # 路由包装组件，提供路由转换和动画\n│   │   ├── SearchResultsCollapsible.tsx # 搜索结果折叠组件\n│   │   ├── Sidebar/        # 侧边栏组件目录\n│   │   ├── SystemPromptBubble.tsx # 系统提示气泡组件\n│   │   ├── SystemPromptDialog.tsx # 系统提示对话框\n│   │   ├── TTS/            # 语音合成组件目录\n│   │   ├── ToolsSwitch.tsx # 工具开关组件\n│   │   ├── TopicManagement/ # 话题管理组件，包含分组和拖拽功能\n│   │   │   ├── AssistantTab.tsx # 助手标签页组件\n│   │   │   ├── GroupComponents.tsx # 分组相关组件\n│   │   │   ├── GroupDialog.tsx # 创建/编辑分组对话框\n│   │   │   ├── Sidebar.tsx # 侧边栏主组件\n│   │   │   ├── SidebarTabs.tsx # 侧边栏标签页组件\n│   │   │   ├── TopicTab.tsx # 话题标签页组件\n│   │   │   └── index.ts # 导出组件\n│   │   ├── TopicStats/     # 话题统计组件目录\n│   │   ├── UpdateNoticeDialog.tsx # 更新通知对话框\n│   │   ├── UploadMenu.tsx  # 上传菜单组件\n│   │   ├── UrlScraperStatus.tsx # URL抓取状态组件\n│   │   ├── VoiceRecognition/ # 语音识别组件目录\n\n│   │   ├── WebSearchProviderSelector.tsx # 网络搜索提供商选择器\n│   │   ├── chat/           # 聊天相关子组件\n│   │   ├── common/         # 通用组件目录\n│   │   ├── message/        # 消息相关子组件\n│   │   │   ├── ThinkingProcess/ # AI思考过程展示组件\n│   │   │   └── MessageActions/  # 消息操作按钮组件\n│   │   ├── settings/       # 设置相关组件\n│   │   │   └── ModelCard/  # 模型卡片组件，展示单个模型信息\n│   │   └── test/           # 测试组件目录\n│   ├── pages/              # 页面级组件\n│   │   ├── ChatPage/       # 聊天主界面\n│   │   │   ├── components/ # 聊天页面子组件\n│   │   │   │   ├── ModelSelector.tsx # 模型选择器组件\n│   │   │   │   └── ... # 其他聊天页面子组件\n│   │   │   ├── hooks/      # 聊天页面自定义钩子\n│   │   │   │   ├── useModelSelection.ts # 模型选择逻辑钩子\n│   │   │   │   ├── useChatFeatures.ts # 聊天功能钩子\n│   │   │   │   └── ... # 其他聊天页面钩子\n│   │   │   └── index.tsx   # 聊天页面主组件\n│   │   ├── DevToolsPage.tsx # 开发者调试工具页面，提供日志和API调试\n│   │   ├── KnowledgeBase/  # 知识库管理页面目录\n│   │   ├── Settings/       # 设置相关页面\n│   │   │   ├── AppearanceSettings/ # 外观设置，主题和字体配置\n│   │   │   ├── BehaviorSettings/   # 行为设置，如发送方式和通知\n│   │   │   ├── DefaultModelSettings/ # 默认模型设置页面\n│   │   │   ├── ModelProviderSettings/ # 模型提供商设置页面\n│   │   │   ├── AddProviderPage/ # 添加提供商页面\n│   │   │   ├── DataSettings/ # 数据管理设置，包括备份和恢复\n│   │   │   ├── VoiceSettings/ # 语音设置，TTS和语音识别配置\n│   │   │   ├── index.tsx   # 设置主页面\n│   │   │   └── AboutPage/  # 关于页面，显示应用信息\n│   │   ├── SettingsPage.tsx # 设置页面入口\n\n│   │   └── WelcomePage.tsx # 欢迎/引导页面，首次使用时显示\n│   ├── routes/             # 路由配置和导航逻辑\n│   │   └── index.tsx       # 路由定义和配置\n│   ├── shared/             # 共享代码和业务逻辑\n│   │   ├── api/            # API接口封装\n│   │   │   ├── anthropic/  # Anthropic Claude API集成\n│   │   │   ├── google/     # Google Gemini API集成\n│   │   │   ├── grok/       # Grok API集成\n│   │   │   ├── openai/     # OpenAI API集成\n│   │   │   ├── siliconflow/ # 硅基流动API集成\n│   │   │   ├── volcengine/ # 火山方舟API集成\n│   │   │   └── index.ts    # API统一入口和路由\n│   │   ├── config/         # 配置文件目录\n│   │   ├── constants/      # 常量定义目录\n│   │   ├── data/           # 静态数据和预设配置\n│   │   │   ├── models/     # 预设模型配置\n│   │   │   └── presetModels.ts # 预设模型数据\n│   │   ├── hooks/          # 自定义React Hooks\n│   │   │   ├── useAppState/ # 应用状态管理Hook\n│   │   │   ├── useModels/  # 模型管理Hook\n│   │   │   └── ... # 其他自定义Hook\n│   │   ├── middlewares/    # Redux中间件目录\n│   │   ├── prompts/        # 提示词模板目录\n│   │   ├── providers/      # 提供商相关代码目录\n│   │   ├── services/       # 业务服务层\n│   │   │   ├── APIService.ts # API服务，处理模型获取和消息发送\n│   │   │   ├── AssistantService.ts # 助手服务，管理AI助手配置\n│   │   │   ├── LoggerService.ts # 日志记录服务，统一日志管理\n│   │   │   ├── SystemPromptService.ts # 系统提示词服务\n│   │   │   ├── ThinkingService.ts # AI思考过程处理服务\n│   │   │   ├── TopicService.ts # 话题管理服务\n│   │   │   ├── TTSService.ts # 文本到语音转换服务\n│   │   │   ├── VoiceRecognitionService.ts # 语音识别服务\n│   │   │   ├── VersionService.ts # 版本管理服务\n│   │   │   ├── ImageUploadService.ts # 图片上传服务，处理图片选择和压缩\n│   │   │   ├── assistant/  # 助手相关服务目录\n│   │   │   ├── mcpServers/ # MCP服务器集成目录\n\n│   │   │   └── storageService.ts # 存储服务(IndexedDB/localStorage)\n│   │   ├── store/          # Redux状态管理\n│   │   │   ├── messagesSlice.ts # 消息状态管理\n│   │   │   ├── settingsSlice.ts # 设置状态管理\n│   │   │   ├── slices/     # 其他状态切片\n│   │   │   │   ├── groupsSlice.ts # 分组状态管理\n│   │   │   │   └── ... # 其他状态切片\n│   │   │   └── index.ts    # Store配置和导出\n│   │   ├── styles/         # 样式文件目录\n│   │   ├── types/          # TypeScript类型定义\n│   │   │   ├── Assistant.ts # 助手类型定义\n│   │   │   └── index.ts    # 核心类型定义，包含消息、模型等类型\n│   │   └── utils/          # 工具函数和辅助方法\n│   │       ├── api/        # API相关工具函数\n│   │       ├── format/     # 格式化工具函数\n│   │       ├── storage/    # 本地存储工具函数\n│   │       └── index.ts    # 通用工具函数，如ID生成、Token计算等\n│   ├── App.tsx             # 应用根组件，包含主题和路由配置\n│   ├── main.tsx            # 应用入口文件，渲染根组件\n│   └── index.css           # 全局样式\n├── capacitor.config.ts     # Capacitor移动应用配置，定义应用ID和插件设置\n├── index.html              # 应用入口HTML文件\n├── package.json            # 项目依赖和脚本配置\n├── tsconfig.json           # TypeScript编译配置(引用配置)\n├── tsconfig.app.json       # 应用代码TypeScript配置\n├── tsconfig.node.json      # Node环境TypeScript配置\n├── vite.config.ts          # Vite构建工具配置，包含优化和分包策略\n├── tailwind.config.js      # Tailwind CSS配置\n└── eslint.config.js        # ESLint代码规范配置\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1600822305%2Faetherlink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F1600822305%2Faetherlink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F1600822305%2Faetherlink/lists"}