# vortex
**Repository Path**: shaipe/vortex
## Basic Information
- **Project Name**: vortex
- **Description**: Vortex 不只是 AI 网关——它是你的免费额度情报站、Key 保险柜、协议翻译官。
- **Primary Language**: Rust
- **License**: MIT
- **Default Branch**: main
- **Homepage**: https://ht-shaipe.github.io/vortex/
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-09-12
- **Last Updated**: 2026-10-23
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Vortex AI Gateway
> 统一的 AI 网关 — 将多家 AI 提供商聚合为 OpenAI / Anthropic 兼容 API
Vortex 是一个基于 **Rust (Actix-Web) + Vue 3** 构建的 AI 网关应用。它在本地启动一个 OpenAI 兼容的 API 服务器,将请求路由到多个 AI 提供商(OpenAI、Anthropic、Google Gemini、DeepSeek 等),支持弹性重试、API 密钥管理和用量统计。
> **使用须知**:本项目定位为**技术研究项目**,仅供技术研究与个人学习使用,不具备任何商业服务资质。个人使用者请在使用前**认真阅读并充分理解** [免责申明](#免责申明) 及所涉平台的服务条款等法律相关信息;其中「网页版账号」功能可能违反第三方平台服务条款,不接受条款请勿使用该功能。
支持两种运行模式:
- **桌面模式** — 基于 Tauri 2 的桌面应用,内嵌 HTTP 服务器 + 系统托盘 + IPC 命令
- **Web 模式** — 纯 actix-web 服务器(`vortex-server`),不依赖 Tauri,适合服务器部署
## 特性
- **多家内置 AI 提供商** — OpenAI、Anthropic、Google Gemini、DeepSeek、Groq、xAI、Mistral、OpenRouter、NVIDIA NIM、Cloudflare AI、Ollama、SiliconFlow、HuggingFace、Qwen、MiniMax、Z.AI (GLM)、火山方舟、商汤日日新,以及自定义 OpenAI 兼容端点
- **OpenAI / Anthropic 双协议入口** — `/v1/chat/completions` 与 `/v1/messages` 两套端点,无需修改客户端代码,直接替换 `base_url` 即可
- **本地 HTTPS 双端口** — 设置页一键开启,在保留 HTTP 的同时另开 HTTPS 端口(默认 10169);首次启用自动生成本地 CA 与服务器证书(SAN 含 localhost / 127.0.0.1 / ::1 / 主机名),macOS 自动装入钥匙串,支持外部证书覆盖;HTTPS 端口被占用时自动降级仅 HTTP,不影响主服务
- **智能体一键接入** — 自动检测本机已安装的 AI 编程智能体(Claude Code、Codex、OpenCode、Qwen Code 等 12 种),预览将要写入的配置变更后一键接入 Vortex 网关;写入前自动备份,支持一键恢复到配置前状态
- **网页版账号转 API** — 「网页版账号」页拉起本地 Chrome 完成平台登录(豆包 / DeepSeek / 通义千问 / Kimi / ChatGPT / Claude,扫码 / 验证码均可),登录凭证自动导入网关并持久化,重启免登录;网页版对话被包装成标准 API,与 API 提供商一样参与路由、熔断与统计,模型名即平台名(如 `doubao`)。**该功能可能违反相关平台的服务条款,使用前请务必阅读 [免责申明](#免责申明)**
- **跨格式转换** — 自动将 Anthropic/Gemini 请求和响应转换为 OpenAI 格式,包括 SSE 流式响应
- **弹性机制** — 连接级与模型级双层熔断器 + 指数退避重试:连接连续失败 5 次熔断 60 秒,单个模型连续失败 3 次独立熔断(下线/无权限等确定性故障更快隔离);熔断期间下游收到 503 与友好提示,冷却后自动探测恢复
- **上游错误透传** — 上游返回 4xx/5xx 时原样透传状态码与错误响应体,客户端可直接看到上游真实报错,便于排查
- **运行日志落盘** — 日志双写终端与数据目录 `logs/vortex.log`,单文件超 5MB 自动截断;设置页「存储维护」展示运行日志与数据库占用,一键清空日志、执行数据库预算清理(VACUUM 收缩文件)
- **模型映射 + 故障转移** — 自定义虚拟模型名映射到多个真实模型目标,按优先级自动故障转移,免费额度组成"永动机"
- **auto 自动路由** — 模型名填 `auto` 即可:网关按连接优先级与历史成功率(bandit)排序所有可用模型,单个模型失败自动切换下一个,直到成功返回内容;整体时间预算 15 秒,粘性会话优先复用上次成功的模型;失败模型立即标记熔断,10 分钟内直接跳过不再尝试;不包含网页版账号模型(网页版模型可通过显式模型名或模型映射使用)
- **模型自动归纳** — 按模型家族自动将同族模型(如 gpt-4o、gpt-4o-2024-08-06、glm-5.3-flash:free)归纳为虚拟名,单模型家族同样生成同名别名保证全覆盖;开启「隐藏已映射的真实模型」后 `/v1/models` 仅输出虚拟模型列表,减少使用者选择负担
- **安全存储** — API 密钥使用 AES-256-GCM 加密存储
- **访问令牌开箱即用** — 首次启动默认开启 Token 鉴权并自动生成访问令牌,接入指南页一键复制并代入示例代码;多数客户端要求 API Key 字段非空才能发起请求,无需额外配置即可接入
- **用量统计** — 按提供商、模型、时间维度记录请求数、Token 用量和成本;缓存创建/读取与推理 Token 从上游真实提取落库,不再恒为 0;上游未返回用量时自动按文本长度估算(中文 1 字 ≈ 1 token,其他 4 字符 ≈ 1 token),日志与统计中标记估算请求数,区分估算值与真实值
- **免费 Token 目录** — 内置 43 个可申请免费额度的 AI 平台(国内 / 海外 / 本地部署),标注是否支持 API、是否需绑卡与实名,支持自行提交推荐并保存到本地
- **内置对话** — 应用内直接对话测试,支持会话分支树、模型选择、流式输出,数据持久化到 localStorage
- **模型选择对话框** — 获取远程模型后弹出对话框,checkbox 多选批量管理,支持搜索与全选
- **自动更新** — 基于 tauri-plugin-updater,启动时静默检查 GitHub Releases,运行期间每 6 小时自动复查(同一版本不重复提醒),发现新版本提示下载安装
- **通知系统** — 从远程通知中心拉取站内通知,未读通知弹出桌面提示,已读状态持久化到本地
- **桌面应用** — 系统托盘常驻(显示窗口 / 启动代理 / 停止代理 / 退出),Vue 3 管理界面,多窗口支持(主窗口 + 状态面板小窗口)
## 快速开始
### 直接下载
预编译安装包发布在 [GitHub Releases](https://github.com/ht-shaipe/vortex/releases/latest):
| 平台 | 产物 |
|---|---|
| Windows 10 / 11 · x64 | `Vortex_<版本>_x64-setup.exe`(NSIS)、`Vortex_<版本>_x64_en-US.msi` |
| macOS · Apple 芯片 | `Vortex_<版本>_aarch64.dmg` |
| macOS · Intel | `Vortex_<版本>_x64.dmg` |
| Linux · x64 | `Vortex_<版本>_amd64.AppImage`、`Vortex_<版本>_amd64.deb` |
产物由 `.github/workflows/release.yml` 在推送 `v*` tag(或手动触发 workflow_dispatch)时构建并发布。
官网的下载区会在运行时拉取最新 Release,把按钮直接指向上述文件,因此**文件名带版本号不需要手工维护**。
> macOS 产物未做 Apple 公证,首次打开需右键 → 打开;Windows 若弹 SmartScreen 提示,选「更多信息 → 仍要运行」。
#### macOS 提示「已损坏,无法打开」
从浏览器下载的 `.dmg` 安装后,macOS Gatekeeper 会给应用打上隔离属性(`com.apple.quarantine`),导致打开时提示 **「"Vortex"已损坏,无法打开。你应该将它移到废纸篓。」**。应用本身没有损坏,清除隔离属性即可:
```bash
xattr -cr /Applications/Vortex.app
```
在终端中执行上述命令后,再双击打开 Vortex 即可正常运行。如果仍无法打开,前往 **系统设置 → 隐私与安全性**,在底部找到关于 Vortex 的提示,点击「仍要打开」。
### 环境要求
- [Rust](https://rustup.rs/) 1.70+ (stable)
- [Bun](https://bun.sh/)(仓库带 `bun.lock`,推荐)或 [Node.js](https://nodejs.org/) 20.19+ / 22.12+
- [Tauri 2 CLI](https://v2.tauri.app/) 前置依赖(参见 [Tauri 官方文档](https://v2.tauri.app/start/prerequisites/))
### 从源码安装与运行
```bash
# 安装前端依赖
bun install # 或 npm install / pnpm install
# 开发模式(同时启动前端和 Rust 后端)
bun run tauri dev
# 构建生产版本
bun run tauri build
```
开发模式下:
- 前端开发服务器:`http://localhost:1420`
- API 网关服务器:`http://localhost:10168`
### Web 模式部署
不依赖 Tauri,纯 actix-web 服务器,适合服务器/无桌面环境部署:
```bash
# 编译并运行
cargo run -p vortex-gateway --bin vortex-server
# 或先编译再运行
cargo build -p vortex-gateway --bin vortex-server --release
./target/release/vortex-server
```
启动后监听 `0.0.0.0:10168`,提供 `/api/*` 管理端点和 `/v1/*` 代理端点。按 `Ctrl+C` 优雅关闭。
> Web 模式下前端需单独部署(如 nginx 托管 `vite build` 产物),通过 `runtime.kind === 'web'` 自动切换到 HTTP API 通道。
### 使用网关
启动后,将你的 AI 客户端的 `base_url` 指向 Vortex:
```
http://localhost:10168/v1
```
**示例 — 使用 OpenAI Python SDK:**
```python
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:10168/v1",
api_key="vx-4f2a9c1e8b7d4a6f9c3e2b1a8d5f7c40" # 通过 POST /api/keys 创建的网关密钥
)
response = client.chat.completions.create(
model="openai/gpt-4o", # 使用 provider/model 格式
messages=[{"role": "user", "content": "Hello!"}]
)
```
**示例 — 使用 cURL:**
```bash
curl http://localhost:10168/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer vx-4f2a9c1e8b7d4a6f9c3e2b1a8d5f7c40" \
-d '{
"model": "deepseek/deepseek-chat",
"messages": [{"role": "user", "content": "Hello!"}]
}'
```
### 模型指定方式
| 格式 | 示例 | 说明 |
|------|------|------|
| `provider/model` | `openai/gpt-4o` | 显式指定提供商和模型 |
| `alias-model` | `ds-deepseek-chat` | 使用提供商别名前缀 |
| `auto` | `auto` | 自动路由:按优先级与历史成功率排序所有可用模型(不含网页版账号模型),单个失败自动切换下一个,直到某个模型成功返回内容;整体时间预算最高 15 秒,预算内未成功则返回最后错误 |
## 内置提供商
| 提供商 | 别名 | API 格式 | 服务类型 | 免费层 |
|--------|------|----------|----------|--------|
| OpenAI | `oa` | openai | llm, embedding, image | - |
| Anthropic | `an` | anthropic | llm | - |
| Google Gemini | `gm` | gemini | llm, embedding | ✓ |
| DeepSeek | `ds` | openai | llm | ✓ |
| Groq | `gq` | openai | llm | ✓ |
| xAI (Grok) | `xa` | openai | llm | - |
| Mistral | `ml` | openai | llm, embedding | - |
| OpenRouter | `or` | openai | llm, image | ✓ |
| NVIDIA NIM | `nv` | openai | llm, embedding | ✓ |
| Cloudflare AI | `cf` | cloudflare | llm, embedding, image | ✓ |
| Ollama (Local) | `ol` | openai | llm, embedding | ✓ (无认证) |
| SiliconFlow | `sf` | openai | llm, image | ✓ |
| HuggingFace | `hf` | openai | llm, embedding | ✓ |
| Qwen (通义千问) | `qw` | openai | llm, embedding | ✓ |
| MiniMax | `mm` | openai | llm | - |
| Z.AI (GLM) | `zi` | openai | llm | - |
| 火山方舟 Code Plan | `vc` | openai | llm | - |
| 火山方舟 Agent Plan | `va` | openai | llm | - |
| 商汤日日新 | `sn` | openai | llm | - |
| 豆包 (网页版) | `db` | web | llm | ✓ (网页版额度) |
| DeepSeek (网页版) | `wd` | web | llm | ✓ (网页版额度) |
| 千问 (网页版) | `wq` | web | llm | ✓ (网页版额度) |
| Kimi (网页版) | `wk` | web | llm | ✓ (网页版额度) |
| ChatGPT (网页版) | `wg` | web | llm | ✓ (网页版额度) |
| Claude (网页版) | `wc` | web | llm | ✓ (网页版额度) |
| Custom | `cx` | openai | llm, embedding | - |
> **网页版提供商**(API 格式为 `web`):通过本地浏览器(CDP)登录平台网页版后,把网页版对话包装成 API,不走官方 API 端点。授权入口在「网页版账号」页,详见 [免责申明](#免责申明)。
## 配置
### 环境变量
| 变量 | 默认值 | 说明 |
|------|--------|------|
| `VORTEX_PORT` | `10168` | API 服务器端口 |
| `VORTEX_DATA_DIR` | 系统数据目录/vortex | 数据存储目录 |
| `VORTEX_ENCRYPTION_KEY` | 自动生成 | API 密钥加密密钥(32 字节十六进制) |
| `VORTEX_REQUIRE_API_KEY` | `false` | 是否要求客户端提供 API Key |
| `VORTEX_FREE_TOKENS_REMOTE` | `https://hub.htui.cc/api/cms/token_site` | 免费 Token 提交 / 删除接口地址 |
| `VORTEX_FREE_TOKENS_PAGE_URL` | `https://hub.htui.cc/api/cms/token_site/page` | 免费 Token 分页列表接口(POST) |
| `VORTEX_HUB_TOKEN` | 空 | hub 管理接口认证令牌(可选,Bearer 方式携带) |
| `VORTEX_LOG_LEVEL` | `info` | 日志级别 |
| `VORTEX_TLS` | `false` | 启用本地 HTTPS(双端口,见下方 [HTTPS 访问](#https-访问)) |
| `VORTEX_TLS_HTTPS_PORT` | `VORTEX_PORT + 1` | HTTPS 监听端口(双端口模式) |
| `VORTEX_TLS_CERT` / `VORTEX_TLS_KEY` | 自动生成 | 外部证书 / 私钥 PEM 路径(设置后跳过自动生成) |
### HTTPS 访问
同一端口只能承载一种协议,因此 Vortex 采用**双端口并存**:主端口(默认 10168)始终提供 HTTP,兼容全部客户端;开启 HTTPS 后另在 `主端口 + 1`(默认 10169)提供 HTTPS,两者同时可用。
启用方式二选一:
1. **设置页开关**(推荐):设置 → 通用 → 「HTTPS 访问」,保存后按提示重启应用生效,开关持久化到本地数据库;
2. **环境变量**:启动时设置 `VORTEX_TLS=1`(显式设置时优先于数据库开关),临时调试用。
证书管理:
- 未提供外部证书时,首次启用自动生成本地 CA(10 年有效期)+ 服务器证书(SAN 覆盖 `localhost` / `127.0.0.1` / `::1` / 本机主机名),持久化到 `<数据目录>/tls/`(私钥 0600);
- macOS 上启动后自动尝试将 CA 装入用户登录钥匙串(可能弹出系统授权确认);若自动安装未完成,可手动信任:
```bash
security add-trusted-cert -r trustRoot -k ~/Library/Keychains/login.keychain-db \
~/Library/Application\ Support/vortex/tls/ca.pem
```
- 需要使用正式证书时设置 `VORTEX_TLS_CERT` / `VORTEX_TLS_KEY` 指向 PEM 文件即可;
- 客户端兼容性提示:部分 CLI(如基于 Node.js 的工具)只信任内置根证书、不读系统钥匙串,连不上 HTTPS 时改用 HTTP 主端口即可。
### 管理界面
打开桌面应用可访问以下页面(左侧导航,从上到下):
| 页面 | 路由 | 说明 |
|------|------|------|
| 接入指南 | `/guide` | 客户端接入示例与模型指定方式,展示 HTTP / HTTPS 双协议地址与访问令牌(均可复制)并代入示例代码;下方自动检测本机 AI 编程智能体并支持一键接入 / 恢复配置 |
| 实时路由 | `/live-routing` | 网关拓扑、Base URL、API 端点一览(默认首页) |
| 订阅 | `/subscriptions` | 提供商连接管理 —— 添加 API Key、测试连接;含新建 / 自定义 / 编辑子页 |
| 网页版账号 | `/web-providers` | 网页版平台登录态管理与 CDP 浏览器授权 —— 拉起本地 Chrome 登录后凭证自动导入并持久化,授权成功自动创建对应连接;登录态 30 秒巡检,过期 / 掉登录及时发现 |
| 模型映射 | `/model-aliases` | 虚拟模型名与多目标故障转移配置 |
| 免费 Token | `/free-tokens` | 免费额度站点目录 —— 卡片 / 表格双视图、按区域与「是否支持 API」筛选、提交与删除本地推荐 |
| 请求日志 | `/request-log` | 请求流水与用量明细 |
| 统计 | `/statistics` | 端点统计(KPI / 热力图 / 趋势 / 端点表)、用量统计(应用来源 / 日模型明细) |
| 同步 | `/sync` | cc-switch 迁移、WebDAV 云备份、本地配置导出与导入 |
| 对话 | `/chat` | 内置对话客户端 —— 会话分支树、模型选择、流式输出 |
| 设置 | `/settings` | 通用设置(含 HTTPS 开关)/ 安全与访问(Token 鉴权、访问令牌、CORS)/ 高级设置 |
| 关于 | `/about` | 版本与项目信息、检查更新 |
> **同步页现状**:cc-switch 迁移与本地配置导出 / 导入已可用;WebDAV 的测试、备份、恢复与云端备份列表需要后端命令支持,当前 UI 已就绪,调用会提示「后端未接入」。适配层位于 `src/api/sync.ts`,接入后只需替换其中的桩函数。
## API 端点
浏览器直接访问网关根路径(`/` 及任意未匹配路径)返回纯文本版本标识 `vortex vX.Y.Z`,可作连通性确认。
### OpenAI 兼容端点 (`/v1`)
| 方法 | 路径 | 说明 |
|------|------|------|
| POST | `/v1/chat/completions` | 聊天补全(支持流式) |
| POST | `/v1/messages` | Anthropic Messages 兼容(协议转换,支持流式) |
| GET | `/v1/models` | 模型列表 |
| POST | `/v1/embeddings` | 文本嵌入 |
| POST | `/v1/images/generations` | 图像生成 |
### 管理端点 (`/api`)
| 方法 | 路径 | 说明 |
|------|------|------|
| GET/POST | `/api/providers` | 提供商连接列表/创建 |
| GET/PATCH/DELETE | `/api/providers/{id}` | 单个提供商连接操作 |
| POST | `/api/providers/{id}/test` | 测试提供商连接 |
| GET | `/api/providers/{id}/apikey` | 获取解密后的真实 API 密钥(用于前端复制) |
| POST | `/api/providers/preview-models` | 预览远程可用模型列表(无需先保存连接) |
| GET/POST | `/api/keys` | API 密钥列表/创建 |
| GET/DELETE | `/api/keys/{id}` | 单个 API 密钥操作 |
| GET | `/api/usage` | 用量记录 |
| GET | `/api/usage/stats` | 用量统计 |
| GET/PATCH | `/api/settings` | 设置 |
| GET/POST | `/api/free-tokens` | 免费 Token 站点列表 / 提交推荐 |
| DELETE | `/api/free-tokens/{id}` | 删除用户提交的推荐(内置条目不可删) |
| GET/POST | `/api/model-aliases` | 模型别名列表/创建 |
| GET/PATCH/DELETE | `/api/model-aliases/{id}` | 单个模型别名操作 |
| GET | `/api/system/status` | 系统运行状态快照 |
| POST | `/api/system/proxy/start` | 启动代理服务器 |
| POST | `/api/system/proxy/stop` | 停止代理服务器 |
| GET | `/api/agents/detect` | 检测已安装智能体 |
| POST | `/api/agents/preview` | 预览智能体配置变更 |
| POST | `/api/agents/apply` | 应用智能体配置 |
| POST | `/api/agents/restore` | 恢复智能体配置 |
| GET | `/api/agents/backups` | 列出配置备份 |
| GET | `/api/web-providers` | 网页版平台列表与登录态(worker 启用状态 + CDP 会话) |
| POST/GET | `/api/web-providers/{platform}/login/cdp` | 发起 CDP 浏览器授权 / 查询授权进度 |
| POST | `/api/web-providers/{platform}/login/cdp/finish` | 确认完成登录并收集导入凭证 |
| POST | `/api/web-providers/{platform}/login/cdp/cancel` | 取消授权 |
| GET | `/api/web-providers/{platform}/debug` | 平台调试信息 |
| POST | `/api/web-providers/{platform}/reset` | 重置平台会话 |
| POST | `/api/chat/cancel` | 取消流式对话 |
| GET | `/api/health` | 健康检查 |
详细架构与内部实现参见 [ARCHITECTURE.md](./ARCHITECTURE.md)。
## 技术栈
### 后端 (Rust)
- **Workspace 5 crate** — `vortex-store`(数据层)← `vortex-router`(路由引擎)← `vortex-gateway`(HTTP 网关 + services)← `src-tauri`(Tauri 桌面应用);另含 `ai-web-provider`(网页版平台桥接:CDP 授权 + 浏览器自动化对话,由 `vortex-gateway` 按需调用)
- Actix-Web 4 — HTTP 服务器(桌面模式内嵌 / Web 模式独立 `vortex-server` binary)
- rusqlite + r2d2 — SQLite 数据库(WAL 模式,连接池)
- awc + openssl — 统一 HTTP 客户端(管理链路与上游链路共用,OpenSSL 3 指纹兼容 + HTTP/2)
- aes-gcm — API 密钥加密
- tokio — 异步运行时
- Tauri 2 — 桌面应用框架(仅 `src-tauri`,Web 模式不依赖)
- tauri-plugin-updater — 自动更新
- tauri-plugin-process — 进程管理(重启应用)
- tauri-plugin-autostart — 开机自启
### 前端 (Vue 3)
- Vue 3.5 + TypeScript (strict) — UI 框架
- Element Plus — UI 组件库
- Ant Design Vue — 辅助组件库(a-card、a-timeline 等)
- UnoCSS — 原子化 CSS
- Pinia — 状态管理
- Vue Router — 路由(Web 端 hash / Tauri 端 history 模式)
- ECharts 6 + vue-echarts — 图表可视化
- highlight.js — 语法高亮
- Vite — 构建工具
## 项目结构
```
vortex/
├── crates/ # Rust workspace crates
│ ├── vortex-store/ # 数据层 — config / db / encryption / migrations / error
│ ├── vortex-router/ # 路由引擎 — proxy / providers / routing / translator / context
│ ├── vortex-gateway/ # HTTP 网关 — api / services / agent_integrations / AppState
│ │ └── src/bin/vortex-server.rs # Web 模式独立 binary(不依赖 Tauri)
│ └── ai-web-provider/ # 网页版平台桥接 — CDP 授权 / cookie 导入 / 浏览器自动化对话(豆包 / DeepSeek / 千问 / Kimi / ChatGPT / Claude)
├── src-tauri/ # Tauri 桌面应用(薄壳)— tauri_cmds 薄包装 + run() + main
├── src/ # 前端源代码 (Vue 3 + TypeScript)
│ ├── api/ # 请求层与双通道适配 (client / providers / keys / usage / settings / stats / chat / sync / freeTokens / notifications / system / agents)
│ ├── components/ # Vue 组件 (layout / chat / stats / sync / ui)
│ ├── composables/ # 组合式函数 (useTheme / useThemeColors / useUpdater / useNotifications)
│ ├── lib/ # 工具函数 (range / dateRange / format / usageChart / runtime)
│ ├── router/ # 路由配置
│ ├── stores/ # Pinia 状态管理
│ ├── styles/ # 设计系统 (cc-theme.css / cc-components.css)
│ ├── types/ # 类型定义
│ └── views/ # 页面视图 (16 个 .vue 文件)
├── docs/ # 项目官网与文档
│ ├── index.html # 官网落地页(原生 HTML/CSS/JS 零依赖)
│ ├── wechat/ # 公众号系列文章
│ └── promo/ # 视频脚本等宣传材料
├── Cargo.toml # workspace 根配置
├── package.json # 前端配置
└── src-tauri/Cargo.toml # Tauri 桌面应用配置
```
依赖链:`vortex-store ← vortex-router ← vortex-gateway ← src-tauri`;`ai-web-provider` 由 `vortex-gateway` 按需调用(网页版账号功能)。Web 项目复用前三个 crate,不需要 `src-tauri`。
详细架构参见 [ARCHITECTURE.md](./ARCHITECTURE.md)。
## 开发
```bash
# 前端开发
bun run dev # Vite 开发服务器 (http://localhost:1420)
bun run build # 类型检查 (vue-tsc) + 构建
bun run preview # 预览构建产物
# 后端开发(workspace)
cargo build # 编译所有 crate
cargo check # 快速类型检查
cargo clippy # 代码检查
cargo test # 运行测试
# 单 crate 操作
cargo build -p vortex-store # 仅编译数据层
cargo build -p vortex-router # 仅编译路由引擎
cargo build -p vortex-gateway # 仅编译 HTTP 网关
# Web 模式(独立 binary,不依赖 Tauri)
cargo run -p vortex-gateway --bin vortex-server
cargo build -p vortex-gateway --bin vortex-server --release
# 桌面模式(完整开发)
bun run tauri dev # 同时启动前端 + Tauri 后端
bun run tauri build # 构建桌面安装包
```
> **类型检查的已知问题**:`bun run build` 会先跑 `vue-tsc --noEmit`。当前 `typescript@7` 与 `vue-tsc@3` 组合会抛 `ERR_PACKAGE_PATH_NOT_EXPORTED: './lib/tsc' is not defined by "exports"`,属于依赖版本兼容问题而非代码错误。需要验证构建产物时直接执行 `npx vite build`(跳过类型检查)。
## 官网
`docs/index.html` 是项目的独立静态落地页,原生 HTML/CSS/JS 实现、零构建依赖,配色沿用应用主题(`src/styles/cc-theme.css`)的深紫强调色。
```bash
# 直接打开
open docs/index.html
# 或起一个本地静态服务
python3 -m http.server 8080 --directory docs
```
页面结构:Hero → 数据概览 → 接入范围 → 特性 → 界面预览 → 快速开始 → 请求流程 → 下载安装 → FAQ → 免责申明。
截图位于 `docs/assets/screens/`,取自本机开发实例,更新 UI 后可重新截取替换。
> 下载区的按钮由 `docs/assets/app.js` 在运行时请求 `api.github.com` 解析最新 Release 的产物地址,
> 静态 HTML 里只放「指向 Releases 页面」的兜底链接 —— 因为安装包文件名带版本号,写死必然过期。
> 官网刻意不逐个列出上游平台的厂商名:站点只讲接入能力(云端 API / 聚合中转 / 本地推理 / 自定义端点)与协议兼容性,具体清单以应用内「订阅」页和本 README 的「内置提供商」表为准,避免站点与注册表脱节。
## 免责申明
Vortex 提供「网页版账号」功能:通过本地浏览器(CDP)登录第三方 AI 平台的**网页版**,收集登录凭证(cookie / session)并保存在本机,把网页版对话包装成 API 供网关调用。
**本应用定位为技术研究项目,仅供技术研究与个人学习使用。个人使用者请在使用前认真阅读并充分理解本申明全部条款,以及所涉平台服务条款等法律相关信息;对条款含义有疑问时,应先咨询专业法律意见再决定是否使用。**以下条款适用于「网页版账号」功能:
1. **仅供技术研究与个人学习**。本功能仅面向技术研究、个人学习与个人效率工具场景,是对「你已经拥有合法账号」的网页会话做本地封装,**不是**任何平台官方 API 的替代品,也不构成平台服务的正式接入方式。
2. **遵守平台服务条款**。以程序化方式使用网页版会话,可能违反相关平台(含其关联公司)的服务条款(Terms of Service)。用户应在使用前自行阅读并评估所涉及平台的条款;**因违反平台条款引发的一切后果(包括但不限于账号警告、功能限制、封禁),由用户自行承担**。
3. **账号与数据风险自担**。登录凭证仅保存在本机、不上传任何服务器,但会话行为发生在你的平台账号上,平台可能将非浏览器标准的调用行为识别为异常。请合理控制调用频率与并发,**严禁**用于批量注册、账号出租、额度转售、对外提供商业服务或其他规模化滥用。
4. **非官方、无关联**。Vortex 是独立开源项目,与 OpenAI、Anthropic、字节跳动(豆包)、DeepSeek、阿里巴巴(通义千问)、月之暗面(Kimi)等任何平台均无关联,未获得其授权、合作或背书;项目中出现的平台名称与商标归各自权利人所有。
5. **不提供保证**。本软件按「现状」基于 MIT 许可证提供,不对可用性、稳定性、适销性或特定用途适用性作任何明示或默示的保证;对因使用或无法使用本软件(包括「网页版账号」功能)造成的任何直接或间接损失,作者不承担责任。
6. **合规使用**。你承诺遵守所在司法辖区的适用法律法规及平台规则,不将本软件用于任何违法违规用途。
**如果你不接受上述条款,请勿使用「网页版账号」相关功能(不授权、不调用 `web-*` 提供商即可,其余功能不受影响);一旦使用,即视为你已充分阅读、理解并同意全部条款。**
## 许可证
本项目基于 [MIT 许可证](./LICENSE) 开源。你可以自由使用、修改、分发和商用本软件,但须保留版权声明与许可证文本。
> Copyright (c) 2026 Vortex