qwengate
通义千问的OpenAI兼容API网关,支持多账号轮换、函数调用、流式SSE响应和Web管理后台
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
通义千问的OpenAI兼容API网关,支持多账号轮换、函数调用、流式SSE响应和Web管理后台
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你手里有一张"免费的自助餐券"——阿里云的通义千问模型每天免费调用额度,但每次都要打开特定的餐厅(chat.qwen.ai 网页)才能用餐。更麻烦的是,你习惯用的餐具(Claude Code、Cursor、VS Code Copilot)只能接受"西餐菜单格式"(OpenAI API),根本不认识这张中餐自助餐券。
Qwen Gate 就是这个问题的终极解决方案。 它扮演一个精通双语的侍者角色:一方面用浏览器自动化技术"帮你登录通义千问网页端",另一方面把你的"西餐菜单格式请求"自动翻译成通义千问能理解的语言,然后把模型的回复再翻译回标准 OpenAI API 格式,让你的所有开发工具都能用上免费的通义千问模型——全程无感,就像真的在使用 OpenAI API 一样。
这不是一个概念项目。截至 2025 年,该项目已支持 Qwen3-7-Max、Qwen3-Max、Qwen3-Plus、Qwen3-Coder 等多个最新模型,支持函数调用(Function Calling)、流式 SSE 响应、文件上传,甚至支持多账号轮换来规避频率限制。
通义千问(Qwen)是阿里巴巴开源的大语言模型家族,在 Hugging Face 和 GitHub 上都有极高的热度。然而,通义千问的网页端(chat.qwen.ai)虽然免费,但并没有提供标准化的 API 接口。开发者想要在本地 IDE(如 Cursor、VS Code Copilot)或自动化工具中使用这些模型,面临两个选择:支付阿里云 API 费用,或者放弃。
开发者 Youssef Adel 在实际使用中遇到了这个痛点后,选择了第三条路——用浏览器自动化技术"模拟"用户在网页端的操作,将请求转化为 API 格式。Qwen Gate 由此诞生,并在 GitHub 上获得了 AI 爱好者社区的广泛关注。
这个项目的技术思路并不新鲜(此前已有 LLM-API 等类似项目),但 Qwen Gate 的实现更加成熟:它不仅处理简单的聊天请求,还支持函数调用、流式传输、多账号轮换、会话池管理等高级功能,真正做到生产级别的稳定性。
Qwen Gate 的核心价值在于实现了与 OpenAI Chat Completions API 的高度兼容。开发者只需要把 API 地址从 https://api.openai.com/v1 换成 http://localhost:26405/v1,就可以在任意支持 OpenAI 格式的客户端中使用通义千问模型。
支持的客户端包括:Claude Code、OpenCode、Qwen Code、Cursor IDE、所有 OpenAI SDK(Python、Node.js)、LangChain、以及任何接受 OpenAI 格式的 HTTP 客户端。
通义千问网页端对每个账号有请求频率限制。使用单一账号时,高频调用很快就会触发冷却(cooldown)。Qwen Gate 内置账号管理器和会话池,支持配置多个通义千问账号,请求按轮询(round-robin)策略分发,自动跳过处于冷却状态的账号。
项目文档建议配置 3 个以上账号以获得最佳效果。在实践中,多账号轮换机制使得 Qwen Gate 可以在不支付任何费用的情况下支撑相当规模的并发请求。
Qwen Gate 完整实现了 OpenAI 风格的函数调用规范,支持 JSON Schema 格式的工具定义和结果回传。这意味着开发者可以让通义千问执行代码、搜索信息、调用外部 API 等操作,就像在使用 GPT-4 一样。项目中内置了"spam guard"(垃圾信息防护)机制,防止函数调用结果被模型误用于生成垃圾内容。
传统的 API 代理方案在流式响应中经常遇到内容截断、thinking 标签泄露等问题。Qwen Gate 构建了一套完整的内容过滤管道:自动剥离模型输出的 <think> 标签,过滤内部生成的 artifacts,确保流式传输的完整性。SSE 心跳保活机制保证了长连接的稳定性。
Qwen Gate 提供了一个功能完整的 Web Dashboard,包含 5 个页面:
长文本上下文会自动作为附件上传到通义千问。当上下文超出模型限制时,超出部分写入 context.txt,最新用户消息保留在行内以保证低延迟。
Qwen Gate 的技术架构可以用"双轨制"来理解:
轨道一:Playwright 浏览器自动化 — 仅用于账号认证和登录环节。程序启动时通过 Playwright 启动无头 Chromium 浏览器,模拟用户登录通义千问,提取认证 token,并将其存入 token 缓存池。之后浏览器可以关闭,不再占用资源。
轨道二:wreq-js 纯 Node.js HTTP 请求 — API 调用的主力传输层。在认证完成后,所有对通义千问的请求都通过 wreq-js 发起纯 HTTP 请求,无需浏览器参与,性能与标准 API 调用无异。
这种"浏览器仅用于认证"的架构是 Qwen Gate 区别于其他浏览器自动化 AI 代理的核心创新。它避免了传统方案(如 Puppeteer-based proxies)中每个请求都需要启动浏览器的性能开销。
服务端框架:项目使用 Hono(轻量级 Web 框架,类 Express)构建 API 层,TypeScript 代码直接通过 Bun 运行(无需编译),生产环境通过 bun dist/index.js 提供优化后的性能。
会话池管理:src/services/sessionPool.ts 负责维护多个浏览器会话的复用;src/services/accountManager.ts 管理多账号的添加、删除、状态追踪;src/services/tokenRefresh.ts 处理 token 的自动刷新。
模型路由:src/services/modelRouter.ts 将 OpenAI 格式的模型名称(如 qwen3-max)映射为通义千问的实际模型标识符,并处理不同模型的参数差异。
部署架构:项目提供了完整的 systemd service 配置和 PM2 进程管理器配置,支持多实例集群(pm2 start -i max),充分利用多核 CPU。
Qwen Gate 支持三种安装方式:
一键脚本(推荐):Linux/macOS 用户只需运行 curl -sSL https://raw.githubusercontent.com/youssefvdel/qwen-gate/main/install.sh | bash,脚本会自动完成仓库克隆、依赖安装、配置文件生成和 CLI 命令注册。Windows 用户有对应的 install.ps1 PowerShell 脚本。
Docker 部署:Dockerfile 采用多阶段构建,基础镜像使用 oven/bun:alpine,生产镜像包含完整的 Chromium 浏览器环境(通过 apk add chromium 安装),非 root 用户运行,安全性有保障。镜像暴露端口 26405,内置健康检查(HEALTHCHECK 指令),可直接配合任意容器编排工具使用。
手动安装:克隆仓库后执行 bun install 安装依赖,运行 qg 或 bun start 启动服务。
初始配置:启动后访问 http://localhost:26405/dashboard/accounts,添加至少一个通义千问账号(建议 3 个以上)。之后 API 即可通过 POST http://localhost:26405/v1/chat/completions 调用。
部署注意点:Chromium 依赖是最大的部署门槛——纯 Node.js 环境无需额外安装,但 Docker 镜像已内置 Chromium(约 150MB),本地裸机安装时需要确认系统有 Chromium 或 Chrome 可用。项目默认端口 26405,如需修改可通过环境变量 QWEN_GATE_PORT 调整。
Qwen Gate 的代码质量在同类开源项目中属于较高水准:
测试覆盖:项目使用 Bun 内置测试框架,测试文件分散在 src/ 各目录(如 auth.test.ts、chatStreamingHelpers.test.ts),覆盖认证、聊天辅助函数等核心模块。
代码规范:使用 Biome(代码格式化 + lint)和 Oxlint(TypeScript 专项检查)双重质量门禁,src/ 目录强制格式化和 lint 检查,CI 中集成质量门禁(npm run quality)。
文档体系:项目维护了详尽的文档体系——README.md 面向终端用户,docs/ 目录包含 ARCHITECTURE.md(架构设计)、DEPLOYMENT.md(部署指南)、DEVELOPMENT.md(开发指南)、AUDIT.md(审计日志)、RESEARCH_FINDINGS.md(技术调研)等专业文档,ARCHITECTURE.md 超过 21000 字,堪比小型技术书籍。
依赖管理:使用 Bun lockfile,依赖版本锁定;使用 Knip 检测未使用依赖和无效导出。
TypeScript 严格模式:项目使用 TypeScript 6.0,配置了严格类型检查,tsconfig.build.json 用于生产构建,tsconfig.json 用于开发。
必须直面的问题是:Qwen Gate 处于一个法律和道德的灰色地带。它通过浏览器自动化技术"模拟"用户行为来调用通义千问的免费网页端,这本质上绕过了通义千问官方提供的付费 API 渠道。
免责声明:项目 README 明确标注 "This project is for educational and study purposes. Not affiliated with Alibaba Group or Qwen. Users must comply with chat.qwen.ai's terms of service."(本项目仅用于教育和学习目的,与阿里巴巴集团或通义千问无关。用户必须遵守 chat.qwen.ai 的服务条款)。这说明作者本身也意识到潜在风险。
潜在风险:
因此,Qwen Gate 适合的场景是:个人学习研究、小规模实验性项目,而非生产环境商业使用。对于有实际商业需求的用户,直接使用阿里云通义千问的官方付费 API 才是合规且可靠的选择。
Qwen Gate 的出现折射出当前 AI 领域一个有趣的现象:开源社区对"免费获取 AI 能力"的强烈需求与商业 AI 服务商的收费策略之间存在持续的博弈。
类似的"API 转换层"项目在 GitHub 上屡见不鲜——从早期的 GPT-4 Free 到后来的各种逆向 API 代理,每一代都有代表性的作品。这些项目的生命周期往往不长(一旦官方改版就失效),但它们的存在本身就说明了市场需求的真实存在。
从技术角度看,Qwen Gate 代表了 Browserless Automation(无头浏览器自动化)技术的一种巧妙应用。相比于传统的"每个请求开一个浏览器"方案,它创新的"认证用浏览器,调用用 HTTP"双轨架构,对同类项目有很强的借鉴意义。
| 维度 | 评分 | 说明 |
|---|---|---|
| 功能完整性 | ★★★★★ | API 兼容、多账号、流式、函数调用、管理后台一应俱全 |
| 部署体验 | ★★★★☆ | 一键脚本 + Docker 降低门槛,但 Chromium 依赖是隐性门槛 |
| 代码质量 | ★★★★☆ | TypeScript 严格模式、双 lint 门禁、详尽测试,优于同类项目 |
| 文档质量 | ★★★★★ | 文档体系极其完善,ARCHITECTURE.md 堪称范例 |
| 稳定性 | ★★★☆☆ | 依赖网页端接口,前端改版可能导致失效 |
| 道德合规 | ★★☆☆☆ | 处于服务条款灰色地带,不适合商业用途 |
推荐人群:AI 爱好者用于学习和实验、开发者用于本地开发测试、研究人员用于低成本大模型实验。不推荐:商业项目、追求稳定生产环境、需要合规保障的场景。