一个基于 Electron + Vue3 + TypeScript 构建的桌面应用程序,让用户可以在单一界面同时与多个 AI 模型对话,实现高效的多模型对比和协作。支持 DeepSeek、豆包、通义千问、Kimi、Grok、Copilot、GLM、元宝、ChatGPT、Gemini、Mimo 等主流 AI 模型。
- 统一输入:单一输入框,一次输入即可发送到所有选中的 AI 模型
- 并行响应:所有 AI 模型同时处理用户输入,实时返回结果
- 直观对比:并排显示不同 AI 的回答,便于质量对比和分析
- 顺序讨论:多个 AI 模型按顺序依次回答,后一个模型可以基于前一个模型的回答进行补充和讨论
- 讨论面板:侧边栏实时展示讨论过程和结论
- 内容操作:支持复制讨论内容、跳转到对应模型对话
- 卡片视图:以卡片形式并排展示各模型的回答
- 表格视图:以表格形式对比各模型回答的关键差异
- 差异视图:高亮展示各模型回答之间的差异点
- 智能总结:选择特定 AI 模型对其他模型的回答进行总结
- 侧边栏展示:总结结果在侧边栏中展示,不占用主对话区域
- Agent 智能体:选择不同的智能体角色,发送消息时自动拼接角色前缀
- Skill 技能:预设技能模板,快速应用常用提示词模式
- 自动登录保持:首次登录后自动保存会话状态,无需重复登录
- 会话持久化:应用重启后自动恢复所有对话历史
- 状态监控:实时显示每个 AI 模型的连接状态和回答状态
- 响应式网格:根据窗口大小自动调整卡片布局
- 拖拽排序:支持模型选择器的拖拽排序
- 最大化/最小化:单个卡片支持全屏和最小化操作
- 多列布局:可配置 1-6 列布局,适应不同屏幕尺寸
- 通过环境变量
VITE_ENABLE_TOOLSET控制是否构建工具集菜单页面 - 内置 ima、下载狗、smallpdf、MinerU、ai-bot、今日热榜、coze、modelscope 等工具
- 主题切换:支持浅色、深色和跟随系统主题
- 自定义脚本:为每个 AI 提供商自定义 JavaScript 脚本(消息提取、登录检查、发送消息等)
- 代理配置:为每个 AI 模型单独配置网络代理
- Prompt 管理:支持自定义 Prompt 的创建、编辑、分类和快捷应用
| 模型 | 提供商 | 网址 |
|---|---|---|
| DeepSeek | 深度求索 | chat.deepseek.com |
| 豆包 | 字节跳动 | doubao.com |
| 通义千问 | 阿里云 | qianwen.com |
| Kimi | 月之暗面 | kimi.com |
| Grok | xAI | grok.com |
| Copilot | 微软 | copilot.microsoft.com |
| GLM | 智谱AI | chatglm.cn |
| 元宝 | 腾讯 | yuanbao.tencent.com |
| MiroThinker | MiroMind | miromind.ai |
| Gemini | gemini.google.com | |
| ChatGPT | OpenAI | chatgpt.com |
| Mimo | 小米 | aistudio.xiaomimimo.com |
# 克隆项目
git clone https://github.com/chenjinyong66/ChatParty.git
# 安装依赖
npm install
# 启动开发模式(默认打开控制台,原生菜单栏)
npm run dev
# 启动生产模式(自定义菜单栏)
npm run prod
# 构建应用
npm run build
# 构建 Windows 版本
npm run build:win
# 构建 macOS 版本
npm run build:macmacOS 安装后需执行:
sudo xattr -d com.apple.quarantine /Applications/ChatAllAI.app- 选择 AI 模型:在输入区域勾选需要使用的 AI 模型
- 登录账号:首次使用需要登录各个 AI 网站账号
- 开始对话:在统一输入框中输入问题,按 Ctrl+Enter 发送
输入区域从上到下分为三部分:
- 智能体/技能行:Agent 选择器、Skill 栏、Prompt 管理(蓝色底=智能体区,橙色底=提示词区)
- 模型选择器:以芯片样式展示可选模型,支持拖拽排序
- 操作按钮行:工具按钮(灰色底)、分析按钮(绿色底:讨论/总结/对比)、新建对话、发送
- 总结:AI 回答的总结内容
- 讨论:多模型讨论的过程和结论
- 对比:多模型回答的对比视图
每个 AI 卡片包含以下功能:
- 连接状态显示
- 代理设置(支持 HTTP/HTTPS/SOCKS5)
- 开发者工具
- 最大化/最小化
- 刷新
| 层级 | 技术 |
|---|---|
| 前端框架 | Vue3 + Composition API + TypeScript |
| 状态管理 | Pinia |
| UI 组件 | Element Plus |
| 桌面框架 | Electron |
| 构建工具 | Vite + Electron Builder |
src/
├── components/
│ ├── chat/ # 聊天相关组件
│ │ ├── UnifiedInput.vue # 统一输入区(模型选择+输入框+按钮)
│ │ ├── AICard.vue # AI 模型卡片
│ │ ├── AgentSelector.vue # 智能体选择器
│ │ ├── SkillBar.vue # 技能栏
│ │ ├── PromptManager.vue # Prompt 管理器
│ │ ├── DiscussionPanel.vue # 多模型讨论面板
│ │ └── ComparisonPanel.vue # 多模型对比面板
│ ├── layout/ # 布局组件
│ ├── summary/ # 总结侧边栏
│ ├── webview/ # WebView 组件
│ └── toolset/ # 工具集组件
├── services/
│ ├── MessageDispatcher.ts # 消息分发器
│ ├── DiscussionService.ts # 多模型讨论服务
│ └── SummaryService.ts # 总结服务
├── stores/
│ ├── chat.ts # 聊天状态(含 AI 提供商配置)
│ ├── agent.ts # 智能体状态
│ ├── discussion.ts # 讨论状态
│ ├── summary.ts # 总结状态
│ ├── scriptConfig.ts # 自定义脚本配置
│ └── toolset.ts # 工具集配置
├── utils/
│ ├── GetLLMLastMessage.ts # AI 回答提取脚本
│ ├── MessageScripts.ts # 消息发送脚本
│ ├── LoginCheckScripts.ts # 登录检查脚本
│ ├── NewChatScripts.ts # 新建对话脚本
│ └── StatusMonitorScripts.ts # 状态监控脚本
└── types/ # 类型定义
electron/
├── main.ts # 主进程入口
├── preload.ts # 预加载脚本
└── managers/
└── IPCHandler.ts # IPC 通信处理
消息分发器(MessageDispatcher)负责将用户输入同时发送到所有选中的 AI 模型,通过 WebView 的 executeJavaScript 注入脚本实现。
DiscussionService 实现模型间的顺序讨论:
- 按选定顺序依次向每个模型发送消息
- 通过 StatusMonitorScripts 监控每个模型的回答状态
- 收集回答后转发给下一个模型继续讨论
GetLLMLastMessage.ts 为每个 AI 提供商提供定制的 DOM 提取脚本,将 HTML 内容转为 Markdown 格式。采用多选择器降级策略,适配网站 DOM 结构变化。
- 添加模型配置:在
src/stores/chat.ts的 providers 数组中添加配置 - 实现登录检查脚本:在
src/utils/LoginCheckScripts.ts中添加 - 实现消息发送脚本:在
src/utils/MessageScripts.ts中添加 - 实现回答提取脚本:在
src/utils/GetLLMLastMessage.ts中添加 - 实现新建对话脚本:在
src/utils/NewChatScripts.ts中添加 - 实现状态监控脚本:在
src/utils/StatusMonitorScripts.ts中添加 - 添加图标资源:在
public/icons/目录下添加图标文件
- 某个 AI 模型无法保持登录状态:检查网络连接,尝试重新登录,或配置代理
- 消息发送后某个 AI 没有响应:检查该 AI 网站是否正常访问,WebView 是否加载完成
- 某个模型的回答无法被提取:可能是网站 DOM 结构更新导致选择器失效,可在设置中自定义提取脚本
- 同时启用多个 AI 模型导致卡顿:减少同时启用的模型数量,建议 8GB 以上内存
MIT License



