AmazingAng/auth2api

GitHub: AmazingAng/auth2api

将单个 Claude OAuth 账户转换为 OpenAI 兼容 API 的轻量级代理服务。

Stars: 13 | Forks: 1

# auth2api [中文](./README_CN.md) 一个轻量级的单账户 Claude OAuth 转 API 代理,专为 Claude Code 和 OpenAI 兼容客户端设计。 auth2api 体积小巧且专注: - 一个 Claude OAuth 账户 - 一个本地或自托管代理 - 一个简单目标:将 Claude OAuth 访问权限转换为可用的 API 端点 它无意成为多提供商网关或大型路由平台。如果您需要一个紧凑、易懂、易于运行和修改的代理,auth2api 正为此而生。 ## 功能特性 - **设计轻量** — 代码库小,单账户架构,极简组件 - **Claude OAuth 转 API** — 使用一个 Claude OAuth 登录作为 API 支持的代理账户 - **OpenAI 兼容 API** — 支持 `/v1/chat/completions`、`/v1/responses` 和 `/v1/models` - **Claude 原生透传** — 支持 `/v1/messages` 和 `/v1/messages/count_tokens` - **Claude Code 友好** — 同时支持 `Authorization: Bearer` 和 `x-api-key` - **流式传输、工具、图像和推理** — 覆盖主要 Claude 使用模式,无需庞大框架 - **单账户健康处理** — 冷却、重试、Token 刷新和 `/admin/accounts` 状态 - **基础安全默认设置** — 时序安全的 API Key 验证、单 IP 限流、仅限本地浏览器的 CORS ## 系统要求 - Node.js 20+ - 一个 Claude 账户(推荐 Claude Max 订阅) ## 安装 ``` git clone https://github.com/AmazingAng/auth2api cd auth2api npm install npm run build ``` ## 登录 ### 自动模式(需要本地浏览器) ``` node dist/index.js --login ``` 打开一个浏览器 URL。授权后,回调将自动处理。 ### 手动模式(适用于远程服务器) ``` node dist/index.js --login --manual ``` 在浏览器中打开打印出的 URL。授权后,浏览器将重定向到一个无法加载的 `localhost` URL —— 从地址栏复制完整 URL 并将其粘贴回终端。 ## 启动服务器 ``` node dist/index.js ``` 服务器默认在 `http://127.0.0.1:8317` 启动。首次运行时,会自动生成一个 API Key 并保存到 `config.yaml`。 如果配置的 Claude 账户在上游限流后暂时冷却,auth2api 现在返回 `429 Rate limited on the configured account` 而不是通用的 `503`。 ## 配置 复制 `config.example.yaml` 为 `config.yaml` 并根据需要编辑: ``` host: "" # bind address, empty = 127.0.0.1 port: 8317 auth-dir: "~/.auth2api" # where OAuth tokens are stored api-keys: - "your-api-key-here" # clients use this to authenticate cloaking: mode: "auto" # auto | always | never strict-mode: false sensitive-words: [] cache-user-id: false debug: false ``` 如果您运行长时间的 Claude Code 任务,也可以配置超时: ``` timeouts: messages-ms: 120000 stream-messages-ms: 600000 count-tokens-ms: 30000 ``` 默认情况下,流式上游请求允许运行 10 分钟,之后 auth2api 会中止它们。 ## 用法 使用任何指向 `http://127.0.0.1:8317` 的 OpenAI 兼容客户端: ``` curl http://127.0.0.1:8317/v1/chat/completions \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-6", "messages": [{"role": "user", "content": "Hello!"}], "max_tokens": 1024 }' ``` ### 可用模型 | Model ID | Description | |----------|-------------| | `claude-opus-4-6` | Claude Opus 4.6 | | `claude-sonnet-4-6` | Claude Sonnet 4.6 | | `claude-haiku-4-5-20251001` | Claude Haiku 4.5 | | `claude-haiku-4-5` | Claude Haiku 4.5 别名 | auth2api 接受的简短便捷别名: - `opus` -> `claude-opus-4-6` - `sonnet` -> `claude-sonnet-4-6` - `haiku` -> `claude-haiku-4-5-20251001` ### 端点 | Endpoint | Description | |----------|-------------| | `POST /v1/chat/completions` | OpenAI 兼容聊天 | | `POST /v1/responses` | OpenAI Responses API 兼容 | | `POST /v1/messages` | Claude 原生透传 | | `POST /v1/messages/count_tokens` | Claude Token 计数 | | `GET /v1/models` | 列出可用模型 | | `GET /admin/accounts` | 账户健康/状态(需要 API Key)| | `GET /health` | 健康检查 | ## Docker ``` # 构建 docker build -t auth2api . # 运行(挂载您的 config 和 token 目录) docker run -d \ -p 8317:8317 \ -v ~/.auth2api:/data \ -v ./config.yaml:/config/config.yaml \ auth2api ``` 或使用 docker-compose: ``` docker-compose up -d ``` ## 配合 Claude Code 使用 设置 `ANTHROPIC_BASE_URL` 以将 Claude Code 指向 auth2api: ``` ANTHROPIC_BASE_URL=http://127.0.0.1:8317 \ ANTHROPIC_API_KEY= \ claude ``` Claude Code 使用 auth2api 直接透传的原生 `/v1/messages` 端点。同时支持 `Authorization: Bearer` 和 `x-api-key` 身份验证头。 ## 单账户模式 此代理一次仅支持一个 Claude OAuth 账户。 - 再次运行 `--login` 会刷新同一账户的已存储 Token。 - 如果已存储不同账户,auth2api 将拒绝覆盖,并要求您先移除现有 Token。 - 如果 auth 目录中存在多个 Token 文件,auth2api 将报错退出,直到您清理多余文件。 ## 管理状态 使用 `/admin/accounts` 和您配置的 API Key 检查当前账户状态: ``` curl http://127.0.0.1:8317/admin/accounts \ -H "Authorization: Bearer " ``` 响应包含账户可用性、冷却状态、失败计数器、上次刷新时间和基本请求统计信息。 ## 冒烟测试 包含一个最小的自动化冒烟测试套件,使用模拟的上游响应,因此不会调用真实的 Claude 服务: ``` npm run test:smoke ``` ## 灵感来源 - [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) - [sub2api](https://github.com/Wei-Shaw/sub2api) ## 许可证 MIT
标签:AI 开发工具, API 网关, API 转发, API 适配器, Claude API 代理, Claude Code, Function Calling, GNU通用公共许可证, IP 地址批量处理, LLM 中间件, MITM代理, Modbus, Node.js, OAuth 转换, OpenAI 兼容接口, PE 加载器, 单账号代理, 反向代理, 大模型工具, 本地部署, 流式传输, 自动化攻击, 请求拦截, 轻量级代理, 鉴权代理