jwadow/kiro-gateway

GitHub: jwadow/kiro-gateway

将 Kiro IDE/CLI 提供的免费 Claude 模型通过 OpenAI/Anthropic 兼容 API 暴露,让各类 AI 编程工具无需额外付费即可调用。

Stars: 1316 | Forks: 315

# 👻 Kiro Gateway **Kiro API (Amazon Q Developer / AWS CodeWhisperer) 的代理网关** 🇬🇧 English • [🇷🇺 Русский](docs/ru/README.md) • [🇨🇳 中文](docs/zh/README.md) • [🇪🇸 Español](docs/es/README.md) • [🇮🇩 Indonesia](docs/id/README.md) • [🇧🇷 Português](docs/pt/README.md) • [🇯🇵 日本語](docs/ja/README.md) • [🇰🇷 한국어](docs/ko/README.md) 由 [@Jwadow](https://github.com/jwadow) 用 ❤️ 打造 [![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0) [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.100+-green.svg)](https://fastapi.tiangolo.com/) [![赞助](https://img.shields.io/badge/💖_Sponsor-Support_Development-ff69b4)](#-支持本项目) *通过 Claude Code、OpenCode、OpenClaw、Claw Code、Codex app、Cursor、Cline、Roo Code、Kilo Code、Obsidian、OpenAI SDK、LangChain、Continue 以及其他兼容 OpenAI 或 Anthropic 的工具使用来自 Kiro 的 Claude 模型* [模型](#-supported-models) • [功能](#-features) • [快速开始](#-quick-start) • [配置](#%EF%B8%8F-configuration) • [💖 赞助](#-support-the-project)
## 🤖 可用模型 (免费列表) 🚀 **Claude Sonnet 4.5** — 性能均衡。非常适合编码、写作和通用任务。 ⚡ **Claude Haiku 4.5** — 极速响应。非常适合快速响应、简单任务和聊天。 📦 **Claude Sonnet 4** — 上一代模型。在大多数用例中依然强大且可靠。 📦 **Claude 3.7 Sonnet** — 旧版模型。提供用于向后兼容。 💤 **GLM-5** — 开源 MoE 模型 (744B 参数,40B 激活)。专为复杂系统工程和长期代理任务设计的先进模型。 🐋 **DeepSeek-V3.2** — 开源 MoE 模型 (685B 参数,37B 激活)。在编码、推理和通用任务中表现均衡。 🧩 **MiniMax M2.5** — 开源 MoE 模型 (230B 参数,10B 激活)。具有增强推理和任务处理能力的增强版本。 🧩 **MiniMax M2.1** — 开源 MoE 模型 (230B 参数,10B 激活)。非常适合复杂任务、规划和多步骤工作流。 🤖 **Qwen3-Coder-Next** — 开源 MoE 模型 (80B 参数,3B 激活)。专注于编码。在开发和大型项目中表现出色。 ## ✨ 功能 | 功能 | 描述 | |---------|-------------| | 🔌 **兼容 OpenAI 的 API** | 适用于任何兼容 OpenAI 的工具 | | 🔌 **兼容 Anthropic 的 API** | 原生 `/v1/messages` 端点 | | 🔀 **多账户支持** | 多个账户之间的智能故障转移 | | 🌐 **VPN/代理支持** | 用于受限网络的 HTTP/SOCKS5 代理 | | 🧠 **扩展思考 (Extended Thinking)** | 推理功能为本项目独有 | | 👁️ **视觉支持** | 将图像发送给模型 | | 🔍 **网络搜索** | 搜索网络获取最新信息 | | 🛠️ **工具调用 (Tool Calling)** | 支持函数调用 | | 💬 **完整消息历史** | 传递完整的对话上下文 | | 📡 **流式传输** | 完整的 SSE 流式传输支持 | | 🔄 **重试逻辑** | 出错时自动重试 (403、429、5xx) | | 📋 **扩展模型列表** | 包括带版本号的模型 | | 🔐 **智能 token 管理** | 过期前自动刷新 | ## 🚀 快速开始 **选择您的部署方式:** - 🐍 **原生 Python** - 完全控制,易于调试 - 🐳 **Docker** - 隔离环境,易于部署 → [跳转到 Docker](#-docker-deployment) ### 前置条件 - Python 3.10+ - 以下之一: - 已登录账户的 [Kiro IDE](https://kiro.dev/),或者 - 带有 AWS SSO (AWS IAM Identity Center, OIDC) 的 [Kiro CLI](https://kiro.dev/cli/) - 免费的 Builder ID 或企业账户 ### 安装 ``` # 克隆仓库(需要 Git) git clone https://github.com/Jwadow/kiro-gateway.git cd kiro-gateway # 或者下载 ZIP:Code → Download ZIP → 解压 → 打开 kiro-gateway 文件夹 # 安装依赖 pip install -r requirements.txt # 配置(参见 Configuration 部分) cp .env.example .env # 复制并编辑 .env 文件以填入你的凭据 # 启动服务器 python main.py # 或者使用自定义端口(如果 8000 端口被占用) python main.py --port 9000 ``` 服务器将在 `http://localhost:8000` 上可用 ## ⚙️ 配置 ### 方式 1:JSON 凭证文件 (Kiro IDE / 企业版) 指定凭证文件的路径: 适用于: - **Kiro IDE** (标准版) - 用于个人账户 - **企业版** - 用于带有 SSO 的企业账户 ``` KIRO_CREDS_FILE="~/.aws/sso/cache/kiro-auth-token.json" # 用于保护你的代理服务器的密码(请编造任意安全的字符串) # 在连接到你的 gateway 时,你将把它作为 api_key 使用 PROXY_API_KEY="my-super-secret-password-123" ```
📄 JSON 文件格式 ``` { "accessToken": "eyJ...", "refreshToken": "eyJ...", "expiresAt": "2025-01-12T23:00:00.000Z", "profileArn": "arn:aws:codewhisperer:us-east-1:...", "region": "us-east-1", "clientIdHash": "abc123..." // Optional: for corporate SSO setups } ```
### 方式 2:环境变量 (.env 文件) 在项目根目录下创建一个 `.env` 文件: ``` # 必填 REFRESH_TOKEN="your_kiro_refresh_token" # 用于保护你的代理服务器的密码(请编造任意安全的字符串) PROXY_API_KEY="my-super-secret-password-123" # 可选 PROFILE_ARN="arn:aws:codewhisperer:us-east-1:..." KIRO_REGION="us-east-1" ``` ### 方式 3:AWS SSO 凭证 (kiro-cli / 企业版) 如果您使用 `kiro-cli` 或带有 AWS SSO (AWS IAM Identity Center) 的 Kiro IDE,网关将自动检测并使用适当的身份验证。 同时支持免费的 Builder ID 账户和企业账户。 ``` KIRO_CREDS_FILE="~/.aws/sso/cache/your-sso-cache-file.json" # 用于保护你的代理服务器的密码 PROXY_API_KEY="my-super-secret-password-123" # 注意:AWS SSO(Builder ID 和企业账户)不需要 PROFILE_ARN # gateway 无需此配置即可运行 ```
📄 AWS SSO JSON 文件格式 AWS SSO 凭证文件 (来自 `~/.aws/sso/cache/`) 包含: ``` { "accessToken": "eyJ...", "refreshToken": "eyJ...", "expiresAt": "2025-01-12T23:00:00.000Z", "region": "us-east-1", "clientId": "...", "clientSecret": "..." } ``` **注意:** AWS SSO (Builder ID 和企业账户) 用户不需要 `profileArn`。网关在没有它的情况下也能正常工作(如果指定了,将被忽略)。
🔍 工作原理 网关根据凭证文件自动检测身份验证类型: - **Kiro 桌面端认证** (默认):当 `clientId` 和 `clientSecret` 不存在时使用 - 端点:`https://prod.{region}.auth.desktop.kiro.dev/refreshToken` - **AWS SSO (OIDC)**:当 `clientId` 和 `clientSecret` 存在时使用 - 端点:`https://oidc.{region}.amazonaws.com/token` 无需额外配置——只需指向您的凭证文件即可!
### 方式 4:kiro-cli SQLite 数据库 如果您使用 `kiro-cli` 并且更喜欢直接使用其 SQLite 数据库: ``` KIRO_CLI_DB_FILE="~/.local/share/kiro-cli/data.sqlite3" # 用于保护你的代理服务器的密码 PROXY_API_KEY="my-super-secret-password-123" # 注意:AWS SSO(Builder ID 和企业账户)不需要 PROFILE_ARN # gateway 无需此配置即可运行 ```
📄 数据库位置 | CLI 工具 | 数据库路径 | |----------|---------------| | kiro-cli | `~/.local/share/kiro-cli/data.sqlite3` | | amazon-q-developer-cli | `~/.local/share/amazon-q/data.sqlite3` | 网关从 `auth_kv` 表中读取凭证,该表存储: - `kirocli:odic:token` 或 `codewhisperer:odic:token` — 访问 token、刷新 token、过期时间 - `kirocli:odic:device-registration` 或 `codewhisperer:odic:device-registration` — 客户端 ID 和密钥 支持两种密钥格式,以兼容不同版本的 kiro-cli。
### 获取凭证 **对于 Kiro IDE 用户:** - 登录到 Kiro IDE 并使用上面的方式 1 (JSON 凭证文件) - 登录后会自动创建凭证文件 **对于 Kiro CLI 用户:** - 使用 `kiro-cli login` 登录,并使用上面的方式 3 或方式 4 - 无需手动提取 token!
🔧 进阶:手动提取 token 如果您需要手动提取刷新 token (例如,用于调试),您可以拦截 Kiro IDE 流量: - 查找发往以下地址的请求:`prod.us-east-1.auth.desktop.kiro.dev/refreshToken`
## 🔀 账户系统 (进阶) 账户系统是一种管理多个 Kiro 账户并提供自动故障转移的方法。未来,此系统将取代用于凭证配置的 `.env` 文件,但目前它是可选的,面向希望使用多个账户的用户。 ### 为什么需要这个 如果您有多个 Kiro 账户,当一个账户暂时不可用时,网关可以自动切换到另一个账户。 该系统也适用于单个账户——只是不会发生切换。 ### 如何启用 添加到您的 `.env` 文件中: ``` ACCOUNT_SYSTEM=true ``` **会发生什么:** - 首次启动时,您在 `.env` 中的凭证会自动迁移到 `credentials.json` (一次性操作) - 之后,`.env` 中所有与账户和区域相关的设置将被忽略 - 仅通过 `credentials.json` 管理账户
📄 配置示例 **单账户:** ``` [ { "type": "json", "path": "~/.aws/sso/cache/kiro-auth-token.json" } ] ``` **多账户:** ``` [ { "type": "json", "path": "~/.aws/sso/cache/kiro-auth-token.json" }, { "type": "sqlite", "path": "~/.local/share/kiro-cli/data.sqlite3" }, { "type": "refresh_token", "refresh_token": "eyJhbGc...", "profile_arn": "arn:aws:codewhisperer:us-east-1:..." } ] ``` **文件文件夹:** ``` [ { "type": "json", "path": "C:\\MyAccs\\kiro67" } ] ``` 网关将扫描文件夹中的所有文件并将它们作为单独的账户添加。
### 故障转移的工作原理 当一个账户返回错误 (429 速率限制、402 配额超限) 时,网关会自动尝试列表中的下一个账户。如果一个账户连续失败多次,网关会暂时停止使用它,并定期检查它是否已恢复。 对于单个账户,故障转移不起作用——您将收到来自 Kiro API 的原始错误。 有关完整的配置示例 (包括按账户划分的区域设置),请参阅 [`credentials.json.example`](credentials.json.example)。 ## 🐳 Docker 部署 ### 快速开始 ``` # 1. 克隆并配置 git clone https://github.com/Jwadow/kiro-gateway.git cd kiro-gateway cp .env.example .env # 使用你的凭据编辑 .env # 2. 使用 docker-compose 运行 docker-compose up -d # 3. 检查状态 docker-compose logs -f curl http://localhost:8000/health ``` ### Docker Run (不使用 Compose)
🔹 使用环境变量 ``` docker run -d \ -p 8000:8000 \ -e PROXY_API_KEY="my-super-secret-password-123" \ -e REFRESH_TOKEN="your_refresh_token" \ --name kiro-gateway \ ghcr.io/jwadow/kiro-gateway:latest ```
🔹 使用凭证文件 **Linux/macOS:** ``` docker run -d \ -p 8000:8000 \ -v ~/.aws/sso/cache:/home/kiro/.aws/sso/cache:ro \ -e KIRO_CREDS_FILE=/home/kiro/.aws/sso/cache/kiro-auth-token.json \ -e PROXY_API_KEY="my-super-secret-password-123" \ --name kiro-gateway \ ghcr.io/jwadow/kiro-gateway:latest ``` **Windows (PowerShell):** ``` docker run -d ` -p 8000:8000 ` -v ${HOME}/.aws/sso/cache:/home/kiro/.aws/sso/cache:ro ` -e KIRO_CREDS_FILE=/home/kiro/.aws/sso/cache/kiro-auth-token.json ` -e PROXY_API_KEY="my-super-secret-password-123" ` --name kiro-gateway ` ghcr.io/jwadow/kiro-gateway:latest ```
🔹 使用 .env 文件 ``` docker run -d -p 8000:8000 --env-file .env --name kiro-gateway ghcr.io/jwadow/kiro-gateway:latest ```
### Docker Compose 配置 编辑 `docker-compose.yml` 并取消注释适用于您操作系统的卷挂载: ``` volumes: # Kiro IDE credentials (choose your OS) - ~/.aws/sso/cache:/home/kiro/.aws/sso/cache:ro # Linux/macOS # - ${USERPROFILE}/.aws/sso/cache:/home/kiro/.aws/sso/cache:ro # Windows # kiro-cli database (choose your OS) - ~/.local/share/kiro-cli:/home/kiro/.local/share/kiro-cli # Linux/macOS # - ${USERPROFILE}/.local/share/kiro-cli:/home/kiro/.local/share/kiro-cli # Windows # Debug logs (optional) - ./debug_logs:/app/debug_logs ``` ### 管理命令 ``` docker-compose logs -f # View logs docker-compose restart # Restart docker-compose down # Stop docker-compose pull && docker-compose up -d # Update ```
🔧 从源代码构建 ``` docker build -t kiro-gateway . docker run -d -p 8000:8000 --env-file .env kiro-gateway ```
## 🌐 VPN/代理支持 **适用于中国、企业网络或连接 AWS 服务存在问题的地区的用户。** 网关支持通过 VPN 或代理服务器路由所有 Kiro API 请求。如果您在连接 AWS 端点时遇到问题或需要使用企业代理,这必不可少。 ### 配置 添加到您的 `.env` 文件中: ``` # HTTP 代理 VPN_PROXY_URL=http://127.0.0.1:7890 # SOCKS5 代理 VPN_PROXY_URL=socks5://127.0.0.1:1080 # 带认证(企业代理) VPN_PROXY_URL=http://username:password@proxy.company.com:8080 # 不带协议(默认为 http://) VPN_PROXY_URL=192.168.1.100:8080 ``` ### 支持的协议 - ✅ **HTTP** — 标准代理协议 - ✅ **HTTPS** — 安全代理连接 - ✅ **SOCKS5** — 高级代理协议 (常见于 VPN 软件) - ✅ **身份验证** — 嵌入在 URL 中的用户名/密码 ### 何时需要此功能 | 情况 | 解决方案 | |-----------|----------| | 连接 AWS 超时 | 使用 VPN/代理路由流量 | | 企业网络限制 | 配置您公司的代理 | | 区域连接问题 | 使用支持代理的 VPN 服务 | | 隐私要求 | 通过您自己的代理服务器路由 | ### 支持代理的热门 VPN 软件 大多数 VPN 客户端都会提供一个您可以使用的本地代理服务器: - **Sing-box** — 支持 HTTP/SOCKS5 代理的现代 VPN 客户端 - **Clash** — 通常运行在 `http://127.0.0.1:7890` - **V2Ray** — 可配置的 SOCKS5/HTTP 代理 - **Shadowsocks** — SOCKS5 代理支持 - **企业 VPN** — 请咨询您的 IT 部门获取代理设置 如果您不需要代理支持,请将 `VPN_PROXY_URL` 留空 (默认)。 ## 📡 API 参考 ### 端点 |
标签:AI编程助手, Amazon Q Developer, Anthropic, API网关, API转发, AV绕过, AWS CodeWhisperer, CIS基准, Claude Haiku 4.5, Claude Sonnet 4.5, Claude模型, Cline, Codex, Cursor, DeepSeek-V3.2, DLL 劫持, FastAPI, GLM-5, IDE插件, IP 地址批量处理, Kiro IDE, LangChain, LLM代理, OpenAI SDK兼容, Petitpotam, Proxy, Python, 云资产清单, 代理网关, 代码补全, 免费Claude, 大语言模型, 威胁情报, 开发者工具, 开源, 无后门, 模型转换, 深度求索, 请求拦截, 轻量级, 逆向工具, 逆向工程