[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80434":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},80434,"juhe-ai","huanmin123\u002Fjuhe-ai","huanmin123","面向个人与团队的轻量级聚合 AI 中转与账号管理系统，聚焦 OpenAI 兼容接入，支持多账户统一管理、授权分组、API Key 绑定与自动切换，降低账号调度和权限管理复杂度，让 AI 服务更稳定不中断。","",null,"TypeScript",78,6,56,0,14,16,21,42,2.54,"Apache License 2.0",false,"master",true,[],"2026-06-12 02:04:02","# 聚合 AI（juhe-ai）\n\n> 轻量级 OpenAI 账号稳定调度后台。  \n> 让 Codex、OpenAI SDK、Cherry Studio、NextChat 等客户端固定一个 `\u002Fv1` 入口，把多账号、高并发调度、授权、审计和排障收进一个本地后台。\n\n聚合 AI 解决的不是“再转发一次请求”，而是把 OpenAI 账号池变成一套 **可管理、可授权、可观测、可恢复** 的稳定服务。\n\n客户端只需要一组配置：\n\n```text\nBase URL: http:\u002F\u002F你的服务器:3000\u002Fv1\nAPI Key : 聚合 AI 后台生成的本地 sk-... 密钥\n```\n\nOpenAI OAuth、OpenAI API Key、代理、分组、额度、高并发策略、失败切换、统计和审计都留在后台。账号换了、限流了、过期了、代理波动了，客户端尽量不用跟着改。\n\n![聚合 AI 控制台入口预览](resources\u002Fimages\u002Fhome-page.png)\n\n![聚合 AI 管理后台统计预览](resources\u002Fimages\u002Fstatistics-page.png)\n\n![聚合 AI 管理后台 AI账户](resources\u002Fimages\u002Faiuser-page.png)\n\n## 为什么需要它\n\n很多 OpenAI 中转只解决“能不能转发”。真正用起来，更麻烦的是这些事：\n\n- 客户端里散落着上游 Key，换账号就要到处改。\n- 多个 OpenAI 账号靠人工记状态，哪个限流、哪个到期、哪个代理慢，很难看清。\n- 多人共享账号池时，权限、额度、分组和用量容易混在一起。\n- Codex \u002F OpenAI-compatible 客户端遇到断流、EOF、429 或上游异常时，很难判断问题来自客户端、网关、代理还是上游账号。\n- 出问题后只有几行运行日志，缺少请求、账号命中、Token、耗时、错误摘要和原始链路审计。\n\n聚合 AI 的重点是：**让客户端入口稳定，让账号池后台可控，让故障链路查得明白。**\n\n## 核心优势\n\n| 能力 | 聚合 AI 怎么做 |\n| --- | --- |\n| 固定入口 | 客户端长期连接同一个根路径或 `\u002Fv1`，不用感知后台账号变化 |\n| 账号池调度 | 按分组、授权、状态、并发、优先级、冷却、到期、代理和质量选择账号 |\n| 高并发分组 | 个人分组保持稳定亲和，高并发分组支持软并发、分组短队列、每 Key 队列和可选单 IP 保护 |\n| 双账号形态 | 同时支持 OpenAI OAuth 账号和 OpenAI API Key 账号 |\n| 流式稳定 | 按 SSE 事件和可见输出边界处理失败，避免盲目重试破坏客户端状态 |\n| 统一授权 | 系统账户、系统团队、AI 账户、分组和 API Key 形成清晰使用边界 |\n| 可观测排障 | 使用记录、统计趋势、AI 性能、模型检测、运行日志、操作日志和原始审计分层追踪 |\n| 轻量部署 | Node.js + SQLite 即可运行，不强制 Redis、Kafka 或 PostgreSQL |\n\n## 和普通中转的差别\n\n普通中转更像一根管道：把客户端请求送到上游。\n\n聚合 AI 更像一个账号稳定层：\n\n- **上游凭据不散落**：客户端拿本地 API Key，上游 OAuth token 和 OpenAI API Key 留在后台。\n- **账号池不是轮询表**：账号启停、代理、优先级、冷却、到期、错误策略和复测恢复都进入管理闭环。\n- **授权不是发一个 Key 就完事**：分组承接账号池，API Key 可绑定一个或多个调用方自有分组号池，用户和团队通过统一授权获得使用权。\n- **失败不是只看状态码**：请求异常、上游错误、未知失败、流式中断和 Codex 客户端策略分层处理。\n- **排障不是猜**：从使用记录到原始审计，可以追到哪个客户端、哪个 Key、哪个分组、哪个账号、哪个上游响应。\n\n## 功能总览\n\n### 账号与调度\n\n- OpenAI OAuth 账号、OpenAI API Key 账号统一管理。\n- 支持账号启停、优先级、并发、代理、到期时间、冷却和错误策略。\n- API Key 可绑定一个或多个调用方自有分组号池，并按优先级路由到可承接账号池，请求进入后自动选择可调度账号。\n- 支持个人分组和高并发分组；高并发分组可配置最大单账户排队阈值、最大等待时间和单 IP 并发保护。\n- OAuth token 支持请求前懒刷新和后台 worker 保活。\n\n### 授权与隔离\n\n- 支持系统账户、系统团队和普通用户侧资源视图。\n- AI 账户或分组可以授权给用户 \u002F 团队使用。\n- 授权只传递使用权，不暴露上游凭据管理权。\n- 支持 API Key 和统一授权维度的本地额度控制与消耗统计。\n\n### 稳定与排障\n\n- 支持 OpenAI 兼容协议透传和 SSE 流式响应。\n- 流式失败按可见输出边界处理，减少重复输出、工具调用错乱和上下文分叉。\n- 使用记录保存模型、Token、成本估算、耗时、错误摘要和账号命中。\n- 模型检测复用本地网关链路，对 AI 账户执行可信度诊断，并保存脱敏、有界摘要。\n- 原始审计记录客户端请求、网关处理、上游请求、上游响应和最终返回，便于定位复杂问题。\n\n### 轻量后台\n\n- Vue 3 + TypeScript + Ant Design Vue 中文管理后台。\n- SQLite 本地存储，按业务库、统计数据集域和统计结果库三类职责拆分；统计数据集域由数据集目录库和 usage shard 文件组成，默认适合单机、小服务器、家用主机或轻量云主机。\n- Web\u002F网关主进程、background worker、本地 DB service 分离，减少统计、日志和高频 SQLite 访问对主链路的影响。\n\n## 适合谁\n\n- 想给 Codex、OpenAI SDK 或 OpenAI-compatible 客户端提供稳定入口的个人用户。\n- 有多个 OpenAI 账号，需要统一调度、代理、分组和排障的小团队。\n- 想把上游 Key 收回后台，只给成员发本地 API Key 的工作室。\n- 需要查看 Token、成本、耗时、错误、账号命中和原始链路的运维者。\n- 想轻量部署，不想先搭 Redis、Kafka、PostgreSQL 和复杂网关集群的人。\n\n## 不适合谁\n\n- 你需要全供应商、多模型、充值支付和公开售卖平台。\n- 你需要多实例分布式网关、跨机房队列或强一致计费系统。\n- 你希望一个项目同时深度覆盖 OpenAI、Claude、Gemini、Realtime、支付、工单和渠道市场。\n\n聚合 AI 当前选择更窄的路线：聚焦 OpenAI 账号接入、OpenAI 兼容网关、账号池调度、统一授权、统计审计和排障闭环。\n\n## 最快启动\n\n环境要求：\n\n- Node.js 官方 LTS：`22.x >= 22.13.0` 或 `24.x >= 24.11.0`，且内置 SQLite 支持 FTS5\n- pnpm `>= 9.0.0`\n- Windows 推荐使用 PowerShell 7\n\n在项目根目录执行：\n\n```powershell\npnpm install\nCopy-Item backend\u002F.env.example backend\u002F.env\nCopy-Item frontend\u002F.env.example frontend\u002F.env\npnpm dev\n```\n\n启动后访问：\n\n- 管理后台：`http:\u002F\u002F127.0.0.1:5173\u002F__aisys__\u002F`\n- 后端系统 API：`http:\u002F\u002F127.0.0.1:3000\u002F__aisys__\u002Fapi`\n- OpenAI 兼容入口：`http:\u002F\u002F127.0.0.1:3000\u002Fv1`\n\n默认管理员：\n\n```text\n用户名：admin\n密码：admin\n```\n\n首次登录后请立刻修改默认密码。\n\n## 最快接入客户端\n\n1. 登录后台。\n2. 在 `AI 账户管理` 或 `我的 AI 账户` 添加 OpenAI OAuth 账号或 OpenAI API Key 账号。\n3. 在 `API Key 管理` 或 `我的 API Key` 创建一个本地 API Key，并绑定一个或多个可用分组号池。\n4. 在客户端里填写：\n\n```text\nBase URL: http:\u002F\u002F127.0.0.1:3000\u002Fv1\nAPI Key : `API Key 管理` 或 `我的 API Key` 页面生成的本地 sk-... 密钥\n```\n\n注意：客户端填写的是聚合 AI 生成的本地 API Key，不是上游 OpenAI API Key。\n\n## 最快部署\n\n先在构建机器打包：\n\n```powershell\npnpm install\npnpm package:release:windows\n```\n\n会生成：\n\n```text\nrelease\u002Fjuhe-ai-release.zip\nrelease\u002Fjuhe-ai-release.tar.gz\n```\n\n部署到 Windows：\n\n```powershell\nExpand-Archive .\\juhe-ai-release.zip -DestinationPath . -Force\nSet-Location .\\juhe-ai-release\npwsh .\\start.ps1\n```\n\n部署到 macOS \u002F Linux：\n\n```bash\ntar -xzf juhe-ai-release.tar.gz\ncd juhe-ai-release\nbash .\u002Fstart.sh\n```\n\n启动后访问：\n\n```text\nhttp:\u002F\u002F服务器IP:3000\u002F__aisys__\u002F\n```\n\n公网访问、反向代理、端口调整、开机自启和数据迁移见 [部署指南](docs\u002Fdeploy\u002F部署指南.md)。\n\n## 常用命令\n\n```powershell\n# 开发启动\npnpm dev\n\n# 类型检查\npnpm typecheck\n\n# 构建\npnpm build\n\n# 打包发布包\npnpm package:release:windows\n\n# 真实网关烟测\npnpm test:smoke\n```\n\n## 技术栈\n\n- 前端：Vue 3 + TypeScript + Vite + Ant Design Vue + ECharts\n- 后端：Node.js + TypeScript + Express + Zod\n- 存储：SQLite（`node:sqlite`）\n- 日志：Pino + SQLite 搜索索引\n- 包管理：pnpm workspace\n\n## 文档\n\n- [开发安装说明](docs\u002Fdevelop\u002F安装指南.md)\n- [开发运行说明](docs\u002Fdevelop\u002F运行说明.md)\n- [测试与验证说明](docs\u002Fdevelop\u002F测试与验证说明.md)\n- [构建指南](docs\u002Fdeploy\u002F构建指南.md)\n- [部署指南](docs\u002Fdeploy\u002F部署指南.md)\n- [整体架构](docs\u002Farchitecture\u002F架构总览.md)\n- [核心功能设计](docs\u002Ffunctions\u002F核心功能设计.md)\n- [高并发分组调度设计](docs\u002Ffunctions\u002F高并发分组调度设计.md)\n- [模型检测设计](docs\u002Ffunctions\u002F模型检测设计.md)\n- [客户端稳定性竞品对比](docs\u002Ffunctions\u002F客户端稳定性竞品对比.md)\n- [SQLite 存储说明](docs\u002Ffunctions\u002FSQLite存储说明.md)\n- [接口契约与权限矩阵](docs\u002Ffunctions\u002F接口契约与权限矩阵.md)\n\n## 当前边界\n\n- 当前主要支持 OpenAI 供应商，其他供应商保留扩展空间。\n- 当前定位是单机轻量部署，不默认引入 Redis、Kafka 或分布式任务队列。\n- 默认使用 SQLite，业务库、统计数据集目录库、usage shard 目录和统计结果库位于 `backend\u002Fdata\u002F`；旧记录库不作为运行时回退入口。\n- 管理后台和网关由同一个后端服务承载，前端静态资源在发布包中由后端托管。\n- 当前没有公益榜外部集成 API，也没有持久 IP 封禁管理页面；IP 级能力只包含短 TTL 来源错误熔断、单 IP 并发保护和账号回避。\n- 本项目不是支付平台、公开售卖平台或全供应商多模型资产平台；它优先服务 OpenAI 账号池稳定调度和可观测运维。\n\n## Star 支持\n\n如果这个项目对你有帮助，欢迎点一个 Star：\n\n- GitHub：[https:\u002F\u002Fgithub.com\u002Fhuanmin123\u002Fjuhe-ai](https:\u002F\u002Fgithub.com\u002Fhuanmin123\u002Fjuhe-ai)\n- Gitee：[https:\u002F\u002Fgitee.com\u002Fhuanminabc\u002Fjuhe-ai](https:\u002F\u002Fgitee.com\u002Fhuanminabc\u002Fjuhe-ai)\n\n","聚合 AI 是一个面向个人与团队的轻量级 OpenAI 账号管理与中转系统，旨在通过统一管理和调度多个 OpenAI 账号来提升服务稳定性。该项目的核心功能包括多账户统一管理、授权分组、API Key 绑定及自动切换等，支持 OpenAI OAuth 和 API Key 两种账号形式，并具备高并发处理能力与详细的统计审计功能。特别适用于需要为 Codex、OpenAI SDK 或其他兼容客户端提供稳定入口的场景，以及希望简化账号调度和权限管理的小型团队或工作室。此外，其基于 Node.js 和 SQLite 的轻量部署方案也适合那些追求快速启动且资源有限的用户。",2,"2026-06-11 04:00:45","CREATED_QUERY"]