English | 简体中文
一个 AI 聚合应用,提问一次,自动提交多个 AI 助手回答, 实时对比回答差异
为什么需要 ONE AI?
在浏览器众多标签页中,找到你需要的 AI 应用跟他 chat ,这也太麻烦了! ==> 你需要一个 AI 应用。cmd+tab 一键直达。
这个 AI 回答的不满意,怎么办? ==> 用 ONE AI,一键提交多个 AI 助手对比回答。
这个应用使用很简单,实现也很简单,但足够实用。
我们在最后提供了开发指南,如果有你喜欢的应用我们没有支持,欢迎提 issue,或者 PR.
希望大家喜欢
- 🚀 多 AI 聚合 - 在一个应用内同时使用 DeepSeek、Yuanbao、Kimi、豆包、通义, ChatGPT, Gemini 等 10+ 个主流 AI
- 🔄 一键分屏 - 支持纵向分屏,可自由拖拽调整窗口大小
- 🎯 一键搜索 - 在搜索框输入问题,一键发送到所有已打开的 AI 应用
- 💾 会话持久化 - 使用独立 session,保持各 AI 应用的登录状态
- ⚡ 快速切换 - 点击顶部图标快速打开或切换不同的 AI 应用
- 🧠 布局记忆 - 重启应用还原上次布局,使用更方便
- 📝 搜索历史 - 自动保存搜索记录,方便快速查看和复用历史问题,所有数据都存储在本地
- ⚡ One Command - 预设常用 prompt 模板,输入
/快速搜索并填充到搜索框
| AI 应用 | 支持状态 | 官网 |
|---|---|---|
| DeepSeek | ✅ | https://chat.deepseek.com/ |
| Kimi (月之暗面) | ✅ | https://kimi.moonshot.cn/ |
| 豆包 | ✅ | https://www.doubao.com/chat/ |
| 通义千问 | ✅ | https://www.tongyi.com/ |
| 腾讯元宝 | ✅ | https://yuanbao.tencent.com/chat |
| 智谱清言 | ✅ | https://chatglm.cn/ |
| 百川智能 | ✅ | https://ying.baichuan-ai.com/chat |
| 阶跃星辰 | ✅ | https://stepfun.com |
| 海螺 AI | ✅ | https://chat.minimaxi.com/ |
| Gemini | ✅ | https://gemini.google.com/app |
| Grok | ✅ | https://grok.com |
| ChatGPT | ✅ | https://chatgpt.com/ |
| LmArena ( 可以免费使用 Claude, Gemini 等模型) | ✅ | https://lmarena.ai |
- 框架: Electron + Vue 3 + TypeScript
- UI 组件: Naive UI
- 状态管理: Pinia
- 样式: SCSS + UnoCSS
- 构建工具: Vite + electron-builder
- 包管理: Yarn
💡 请前往 Releases 页面 下载最新版本
Tips: macOS 提示"无法打开,因为无法验证开发者"?
解决方法: 右键点击应用 → 选择"打开" → 在弹出的对话框中点击"打开", 或在终端执行:xattr -cr /Applications/ONEAI.app
- Node.js: >= 18.0.0
- Yarn: >= 1.22.0
- 操作系统: macOS / Windows / Linux
# 克隆项目
git clone https://github.com/zero2one-creator/one-ai.git
cd one-ai
# 安装依赖
yarn
# 启动开发模式(会自动打开应用和 DevTools)
yarn dev
# 打包应用
yarn build # 根据当前平台打包
yarn build:mac # 打包 macOS 版本
yarn build:win # 打包 Windows 版本
yarn build:all # 同时打包 macOS 和 Windows
# 清理缓存
yarn cdev # 清理开发环境缓存
yarn crelease # 清理发布环境缓存one-ai/
├── electron/ # Electron 主进程
│ ├── main.ts # 主进程入口(窗口管理、菜单、快捷键)
│ └── preload.ts # 预加载脚本(IPC 通信桥接)
│
├── src/ # Vue 渲染进程
│ ├── assets/ # 静态资源
│ │ ├── apps/ # AI 应用 logo
│ │ ├── models/ # AI 模型 logo
│ │ └── providers/ # AI 服务商 logo
│ │
│ ├── components/ # 公共组件
│ │ └── Icon/ # 图标组件
│ │ ├── SearchIcon.vue
│ │ └── HorizontalSplitIcon.vue
│ │
│ ├── const/ # 常量配置
│ │ └── defaultConfig.ts # AI 应用列表、搜索配置、默认布局
│ │
│ ├── pages/ # 页面组件
│ │ └── Main/ # 主页面
│ │ ├── components/
│ │ │ ├── AppView.vue # AI 应用视图(webview 容器)
│ │ │ ├── SearchBar.vue # 顶部搜索栏(应用图标列表)
│ │ │ ├── SearchInput.vue # 搜索输入框(支持多行、展开编辑、斜杠命令)
│ │ │ ├── SplitLayout.vue # 分屏布局(支持拖拽调整)
│ │ │ ├── HistoryModal.vue # 历史记录弹窗
│ │ │ ├── PromptPresetModal.vue # One Command 弹窗
│ │ │ └── SettingsDropdown.vue # 设置下拉菜单
│ │ └── index.vue # 主页面入口
│ │
│ ├── store/ # Pinia 状态管理
│ │ └── appStore.ts # 应用状态(标签管理、布局管理、搜索配置)
│ │
│ ├── utils/ # 工具函数
│ │ ├── index.ts # 通用工具函数
│ │ ├── localStorage.ts # localStorage 封装
│ │ ├── promptStore.ts # One Command 存储操作
│ │ └── historyStore.ts # 搜索历史存储操作
│ │
│ ├── App.vue # 根组件
│ ├── main.ts # 入口文件
│ └── style.css # 全局样式
│
├── public/ # 公共资源
│ ├── one.icns # macOS 应用图标
│ ├── one.ico # Windows 应用图标
│ └── one.png # 应用图标源文件
│
├── build/ # 构建生成的图标
├── dist/ # 渲染进程构建输出
├── dist-electron/ # 主进程构建输出
├── release/ # 打包输出目录
├── scripts/ # 脚本工具
│ ├── clean-dev.mjs # 清理开发缓存
│ └── clean-release.mjs # 清理发布缓存
│
├── doc/ # 文档
├── package.json # 项目配置
├── vite.config.ts # Vite 配置
├── electron-builder.json5 # Electron Builder 配置
└── tsconfig.json # TypeScript 配置
- 准备应用 logo(推荐 PNG/WebP 格式)
- 放入
src/assets/apps/目录
# 示例
src/assets/apps/your-ai.png编辑 src/const/defaultConfig.ts:
// 1. 导入 logo
import YourAILogo from "@/assets/apps/your-ai.png?url";
// 2. 添加到 logoMap
export const logoMap: Record<string, string> = {
// ... 其他 logo
"your-ai": YourAILogo,
};
// 3. 添加到 AIAppList
export const AIAppList = [
// ... 其他应用
{
id: "your-ai", // 唯一标识(小写字母、数字、连字符)
name: "Your AI", // 显示名称
url: "https://your-ai.com", // 应用 URL
bodered: false, // 可选:是否显示边框
},
];如果要支持一键搜索功能,在 APP_SEARCH_CONFIGS 中添加:
export const APP_SEARCH_CONFIGS = [
// ... 其他配置
[
"your-ai", // 对应 AIAppList 中的 id
{
// 输入框选择器,支持多个选择器(逗号分隔),会依次尝试
inputSelector: "textarea, input[type='text'], div[contenteditable='true']",
// 提交按钮选择器(仅 click 方式需要)
submitSelector: "button[type='submit'], button.send-button",
// 提交方式:
// - "enter": 按回车键提交(推荐,更稳定)
// - "click": 点击按钮提交
submitMethod: "enter",
},
],
] as const;- 启动开发模式
yarn dev-
打开应用并测试
- 点击顶部图标打开你的 AI 应用
- 在搜索框输入问题
- 点击搜索按钮
- 检查控制台日志确认搜索脚本执行
-
调试搜索配置
-
限制同时打开的应用数量
- 每个 webview 相当于一个独立浏览器进程
- 建议同时打开不超过 4-5 个应用
-
定期清理缓存
yarn cdev
-
关闭不使用的分屏
-
使用生产模式打包
yarn build
A: 这是误报,electron-builder 打包的应用常见问题。可以添加信任或从源码构建。
A:
- 尝试刷新页面(点击刷新按钮)
- 检查网络连接
- 某些 AI 可能需要在浏览器中先登录一次
A:
- 确保已打开对应的 AI 应用
- 某些 AI 的页面结构可能变化,需要更新选择器配置
- 查看控制台日志了解具体错误
A: 这是 Electron 应用的通病,每个 webview 都相当于一个独立浏览器。建议:
- 不要同时打开过多 AI 应用
- 关闭不使用的分屏
- 定期重启应用
- 应用使用独立的 session 存储各 AI 的登录信息
- 开发模式下禁用了部分安全限制以支持跨域请求(仅影响 webview)
- 建议只在信任的网络环境下使用
- 不会收集或上传任何用户数据
