Qoder2API 是社区里一个把 Qoder 的 AI 服务桥接成 OpenAI 兼容 API 的 Python 项目。Qoder-2API-Go 把它完整重写成 Go 实现,保留了全部核心功能,同时换来了更简单的部署方式和更低的资源占用。
核心思路:复用 Qoder 的在线 AI 服务作为后端,对外暴露 OpenAI 兼容的
/v1/chat/completions接口,任何支持 OpenAI API 的客户端都能直接接入,无需为模型单独申请 Key。
为什么重写成 Go
原版 Python 实现功能完整,但对使用者来说有三个痛点:需要 Python 运行时、依赖安装繁琐、多实例部署吃力。Go 版本一次性解决了这些:
- 单文件部署:编译为单一二进制,零外部依赖,复制到服务器就能跑
- 资源占用低:常驻服务更省内存,适合跑在棒子、小主机这类低配设备上
- 交叉编译友好:一条命令即可产出任意平台的二进制
核心特性
- OpenAI API 兼容:支持
/v1/chat/completions和/v1/models端点,可无缝替换 OpenAI API。 - 流式响应:支持 SSE 流式输出,打字机式体验不丢失。
- 多模态支持:支持图片输入。
- Tool Calls:支持函数调用。
- 模型动态加载:自动从网关获取可用模型列表,不用手动维护。
- Web 管理面板:中文界面(支持深浅模式),密码登录,支持 API 密钥管理、PAT 配置、模型查看、请求统计(总量 / 成功失败 / 按模型 / 近 24 小时趋势)。
- 单文件部署:编译为单一二进制,零外部依赖。
支持的模型
| 显示名称 | 内部 Key | 视觉 |
|---|---|---|
| Qwen3.8-Max | qmodel_preview | 支持 |
| Qwen3.7-Max | qmodel_latest | 不支持 |
| Qwen3.7-Plus | qmodel | 支持 |
| Qwen3.6-Flash | q36fmodel | 支持 |
| DeepSeek-V4-Pro | dmodel | 不支持 |
| DeepSeek-V4-Flash | dfmodel | 不支持 |
| GLM-5.2 | gm51model | 不支持 |
| Kimi-K2.7-Code | kmodel | 支持 |
| MiniMax-M2.7 | mmodel | 不支持 |
以上为内置默认列表,实际可用模型以网关动态返回为准。
工作流程
|
|
收到 SIGINT/SIGTERM 会触发优雅关闭:停止接受新连接、等待在途请求(最长 15 秒)并完成统计最终落盘,避免数据丢失。
技术栈
| 项目 | 说明 |
|---|---|
| 语言 | Go 1.22+ |
| 依赖 | 仅 github.com/google/uuid,其余全部标准库 |
| 加密 | RSA + AES 混合加密、MD5 签名 |
| HTTP | 标准库 net/http,SSE 流式响应 |
| 存储 | JSON 文件持久化,线程安全读写 |
| 部署 | 单二进制 / Docker / 预编译 Release |
部署与使用
三种方式任选:直接 go build 编译运行、Docker 部署,或从 Releases 下载预编译二进制。
启动后访问 http://localhost:10081/admin,用默认密码 password 登录,在「令牌」标签页填入 Qoder PAT,再创建 API 密钥即可调用:
|
|
默认密码仅用于首次登录,请立即在「设置」标签页修改。登录失败会按客户端 IP 触发指数退避限流,部署到公网时务必启用 HTTPS 反代。
安全设计
面向内网/个人使用,内置了多项加固措施:HTTP 超时抵御 slowloris、请求体上限防超大 payload 耗尽内存、登录指数退避限流、API Key 与管理密码恒定时间比较(crypto/subtle)、会话 Cookie HttpOnly + SameSite=Lax、XSS 防护、工具调用索引边界保护。
相关链接
- 项目地址:EchoPing07/Qoder-2API-Go
- 原版项目:fengyinxia/qoder2api
本项目不隶属于 Qoder 或其关联公司,仅供学习交流使用。请勿用于绕付费、绕限制或任何可能损害服务提供方利益的行为。