跳到主要内容
AWS Kiro 账号池管理系统 | 将 Amazon Q Developer API 转换为 OpenAI 兼容格式 | 支持多账号池、OIDC 自动认证、令牌自动刷新、Web 管理控制台 | Go | 极客日志
Python
AWS Kiro 账号池管理系统 | 将 Amazon Q Developer API 转换为 OpenAI 兼容格式 | 支持多账号池、OIDC 自动认证、令牌自动刷新、Web 管理控制台 | Go Claude API - AWS Kiro 账号池管理 | OpenAI 兼容代理服务 项目地址在wget 里面 web页面访问把后缀.git删掉即可 效果图 !在这里插入图片描述 !在这里插入图片描述 !在这里插入图片描述 !在这里插入图片描述 !在这里插入图片描述 **AWS Kiro 账号池管理系统** - 将 Amazon Q Developer (Kiro) API 转换为 OpenAI…
ApiHolic 发布于 2026/4/6 更新于 2026/5/22 53K 浏览Claude API - AWS Kiro 账号池管理 | OpenAI 兼容代理服务
项目地址在wget 里面 web页面访问把后缀.git删掉即可
效果图
AWS Kiro 账号池管理系统 - 将 Amazon Q Developer (Kiro) API 转换为 OpenAI 兼容格式的企业级 Go 代理服务。支持多账号池管理、OIDC 自动认证、令牌自动刷新、流式响应、完整的 Web 管理控制台。
关键词 : AWS Kiro, Amazon Q Developer, Claude API, OpenAI Proxy, 账号池管理, OIDC 认证, Go 代理服务, 多账号管理, API 转换, 企业级代理
📋 目录
✨ 核心特性
🏊 AWS Kiro 账号池管理
多账号池 : 支持最多 100 个 AWS Kiro (Amazon Q Developer) 账号统一管理
OIDC 自动认证 : 完整的 AWS OIDC 设备授权流程,无需手动获取令牌
智能负载均衡 : 自动选择可用账号,均衡分配请求负载
令牌自动刷新 : 后台自动检测并刷新过期的 AWS 令牌,保持账号池持续可用
账号状态监控 : 实时监控每个 Kiro 账号的健康状态、使用次数、最后使用时间
批量导入导出 : 支持批量添加、导入、导出 AWS Kiro 账号配置
🔄 API 格式转换
OpenAI 兼容 : 完全兼容 OpenAI Chat Completions API 格式
Claude 支持 : 支持 Claude Messages API 格式
流式响应 : SSE (Server-Sent Events) 流式输出
工具调用 : 完整支持 Function Calling / Tool Use
模型映射 : Claude 4.5 Opus、Sonnet 4.5、Sonnet 3.5 自动映射到 Amazon Q
🔐 企业级安全
API Key 认证 : 自定义 API Key 保护服务访问
密码保护 : 管理控制台密码保护
IP 黑名单 : 支持封禁/解封特定 IP 地址
频率限制 : 可配置的 IP 和 API Key 双重限流
🖥️ Web 管理控制台
现代化界面 : Vue.js 3 驱动的响应式 Web 控制台
账号池监控 : 实时查看所有 AWS Kiro 账号状态、令牌有效期、使用统计
在线测试 : 内置聊天测试界面,支持流式对话
请求日志 : 完整的 API 请求日志、统计图表、错误追踪
批量操作 : 批量添加、删除、刷新 Kiro 账号
系统设置 : 可视化配置 API Key、限流规则、日志保留策略
🚀 快速开始
方式一:下载预编译版本(推荐) # Linux AMD64wget https://github.com/kkddytd/claude-api/releases/latest/download/claude-server-linux-amd64.tar.gz tar -xzf claude-server-linux-amd64.tar.gz ./claude-server
方式二:从源码编译 # 克隆仓库git clone https://github.com/kkddytd/claude-api.git cd claude-api
访问控制台:http://localhost:62311
默认密码:admin(首次登录后请立即修改)
添加 AWS Kiro 账号:点击"账号管理" → '添加账号' → 完成 OIDC 授权
配置 API Key:点击"系统设置" → 设置自定义 API Key
开始使用:使用 OpenAI SDK 连接到 http://localhost:62311/v1
🔨 编译构建
构建脚本 项目提供了强大的 build.sh 脚本,支持多平台编译:
# 构建当前平台(server + desktop) ./build.sh # 仅构建后端服务 ./build.sh server # 仅构建桌面应用(macOS + Windows) ./build.sh desktop # 构建所有平台 ./build.sh all # 清理构建产物 ./build.sh clean # 指定版本构建 ./build.sh server -v v1.2.0 # 指定平台构建 ./build.sh server -p linux/amd64 # 构建选项 ./build.sh --no-cache # 禁用构建缓存 ./build.sh --verbose # 显示详细日志 ./build.sh -h # 显示帮助信息
支持的平台
Linux: amd64, arm64
macOS: amd64, arm64
Windows: amd64, arm64
macOS: Universal (需要 Wails v2)
Windows: amd64 (需要 Wails v2)
构建产物 dist/ ├── server/ │ ├── claude-server-linux-amd64.tar.gz │ ├── claude-server-linux-arm64.tar.gz │ ├── claude-server-darwin-amd64.tar.gz │ ├── claude-server-darwin-arm64.tar.gz │ ├── claude-server-windows-amd64.zip │ └── claude-server-windows-arm64.zip └── desktop/ ├── Claude-API-Server-macOS.zip └── Claude-API-Server-Windows.zip
手动编译 # 当前平台 go build -o claude-server main.go # 带版本号 go build -ldflags="-X main.Version=v1.0.0" -o claude-server main.go # 跨平台编译GOOS=linux GOARCH=amd64 go build -o claude-server-linux-amd64 main.go GOOS=darwin GOARCH=arm64 go build -o claude-server-darwin-arm64 main.go GOOS=windows GOARCH=amd64 go build -o claude-server-windows-amd64.exe main.go
📦 部署指南
Linux Systemd 服务 创建服务文件 /etc/systemd/system/claude-api.service:
[Unit] Description =Claude API Server After=network.target [Service] Type=simple User=www-data WorkingDirectory=/opt/claude-api ExecStart=/opt/claude-api/claude-server Restart=on -failure RestartSec=5 s
# 部署文件sudomkdir -p /opt/claude-api sudocp claude-server /opt/claude-api/ sudochown -R www-data:www-data /opt/claude-api
Nginx 反向代理 server { listen 80 ; server_name api.example .com ; # 重定向到 HTTPS return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; server_name api.example .com ; # SSL 证书 ssl_certificate /path /to /cert.pem ; ssl_certificate_key /path /to /key.pem ; # SSL 配置 ssl_protocols TLSv1.2 TLSv1.3 ; ssl_ciphers HIGH:!aNULL:!MD5; location / { proxy_pass http://127.0 .0.1 :62311 ; proxy_http_version 1.1 ; # WebSocket 支持 proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; # 代理头 proxy_set_header Host $host; proxy_set_header X -Real-IP $remote_addr; proxy_set_header X -Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X -Forwarded-Proto $scheme; # 流式响应支持 proxy_buffering off; proxy_cache_bypass $http_upgrade; proxy_read_timeout 300s ; proxy_connect_timeout 75s ; } }
sudo nginx -t sudo systemctl reload nginx
进程管理器(PM2) # 安装 PM2npminstall -g pm2 # 创建 ecosystem.config .jscat> ecosystem.config .js <<'EOF' module .exports = { apps: [{ name: 'claude-api' , script: './claude-server' , cwd: '/opt/claude-api' , instances: 1 , autorestart: true , watch: false , max_memory_restart: '500M' , env: { PORT: 62311 } }] } EOF# 启动 pm2 start ecosystem.config .js # 查看状态 pm2 status # 查看日志 pm2 logs claude-api # 开机自启 pm2 startup pm2 save
环境变量配置 # 服务端口exportPORT=62311# 数据目录(桌面应用)exportDATA_DIR=/path/to/data
数据备份 # 备份数据库cp data.sqlite3 data.sqlite3.backup.$(date +%Y%m%d_%H%M%S)# 定时备份(crontab)02 * * * cd /opt/claude-api &&cp data.sqlite3 backups/data.sqlite3.$(date +\%Y\%m\%d)# 保留最近 7 天的备份03 * * * find /opt/claude-api/backups -name "data.sqlite3.*" -mtime +7 -delete
💡 使用示例
Python (OpenAI SDK) from openai import OpenAI client = OpenAI( api_key="your-api-key" , base_url="http://localhost:62311/v1" )# 普通对话 response = client.chat.completions.create ( model="claude-sonnet-4.5" , messages=[{"role" :"user" ,"content" :"你好" }])print (response.choices[0 ].message.content)# 流式对话 stream = client.chat.completions.create ( model="claude-sonnet-4.5" , messages=[{"role" :"user" ,"content" :"写一首诗" }], stream=True)for chunk in stream:if chunk.choices[0 ].delta.content:print (chunk.choices[0 ].delta.content, end ="" )
Node.js (OpenAI SDK) import OpenAI from 'openai';const client =newOpenAI({apiKey:'your-api-key' ,baseURL:'http://localhost:62311/v1' });// 普通对话const response =await client.chat .completions .create ({model:'claude-sonnet-4.5' ,messages:[{role:'user' ,content:'你好' }]}); console.log (response.choices [0] .message .content );// 流式对话const stream =await client.chat .completions .create ({model:'claude-sonnet-4.5' ,messages:[{role:'user' ,content:'写一首诗' }],stream:true});forawait(const chunk of stream){if(chunk.choices [0] ?.delta ?.content ){ process.stdout .write (chunk.choices [0] .delta .content );}}
cURL # 普通请求curl -X POST http://localhost:62311 /v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer your-api-key" \ -d '{ "model" : "claude-sonnet-4.5" , "messages" : [ {"role" : "user" , "content" : "你好" } ] }'# 流式请求curl -X POST http://localhost:62311 /v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer your-api-key" \ -d '{ "model" : "claude-sonnet-4.5" , "messages" : [ {"role" : "user" , "content" : "你好" } ], "stream" : true }'
⚙️ 配置说明
config.yaml database:type : sqlite # 或 mysqlsqlite:path : data.sqlite3 mysql:host: localhost port:3306 user: root password:"" database: claude-api charset: utf8mb4 server:host: 0.0 .0 .0 port:62311 debug :falsetest:false
系统设置(存储在数据库) 设置项 说明 默认值 apiKeyOpenAI API Key 空 adminPassword管理员密码 admindebugLog调试日志 falseenableRequestLog请求日志 truelogRetentionDays日志保留天数 30enableIPRateLimitIP 频率限制 falseipRateLimitWindow限制时间窗口(分钟) 1ipRateLimitMax窗口内最大请求数 100
📡 API 文档
OpenAI 兼容端点 POST /v1/chat/completions Content-Type: application/json Authorization: Bearer YOUR_API_KEY {"model" :"claude-sonnet-4.5" , "messages" :[{"role" :"user" , "content" :"你好" }], "stream" :true }
claude-4.5-opus-high - Claude 4.5 Opus (高性能)
claude-4.5-opus-low - Claude 4.5 Opus (低成本)
claude-sonnet-4.5 - Claude Sonnet 4.5
claude-sonnet-3.5 - Claude Sonnet 3.5
管理端点 # 账号管理 GET / v2/ accounts # 列出账号 POST / v2/ accounts # 创建账号 POST / v2/ accounts/ feed # 批量添加 POST / v2/ accounts/ import # 导入账号 GET / v2/ accounts/ export # 导出账号 DELETE / v2/ accounts/ :id # 删除账号# 设置管理 GET / v2/ settings # 获取设置 PUT / v2/ settings # 更新设置# 日志管理 GET / v2/ logs # 获取日志 GET / v2/ logs/ stats # 统计数据 POST / v2/ logs/ cleanup # 清理日志# IP 管理 GET / v2/ ips/ blocked # 被封禁的 IP POST / v2/ ips/ block # 封禁 IP POST / v2/ ips/ unblock # 解封 IP
🏗️ 项目结构 claude-api/ ├── main.go # 程序入口,HTTP 服务器启动 ├── build.sh # 多平台构建脚本 ├── config.yaml # 配置文件(可选) ├── internal/ # 内部包 │ ├── api/ # API 服务器 │ │ ├── server.go # 服务器核心、中间件、缓存 │ │ ├── routes.go # 路由配置 │ │ ├── handlers.go # 请求处理器(主要逻辑) │ │ └── cache.go # 账号池、设置缓存 │ ├── amazonq/ # Amazon Q 客户端 │ │ ├── client.go # HTTP 客户端 │ │ ├── parser.go # 响应解析 │ │ └── errors.go # 错误处理 │ ├── auth/ # 认证模块 │ │ ├── oidc.go # OIDC 设备授权流程 │ │ ├── kiro.go # Kiro 社交登录 │ │ └── apikey.go # API Key 验证 │ ├── claude/ # 格式转换 │ │ └── converter.go # OpenAI ↔ Amazon Q 格式转换 │ ├── stream/ # 流处理 │ │ ├── parser.go # SSE 流解析 │ │ ├── openai_sse.go # OpenAI 格式流 │ │ ├── claude_sse.go # Claude 格式流 │ │ └── unified_sse.go # 统一流处理 │ ├── database/ # 数据库 │ │ ├── database.go # 数据库初始化 │ │ ├── accounts.go # 账号管理 │ │ ├── users.go # 用户管理 │ │ ├── settings.go # 系统设置 │ │ ├── logs.go # 请求日志 │ │ ├── proxy.go # 代理管理 │ │ └── blocked_ips.go # IP 黑名单 │ ├── models/ # 数据模型 │ │ ├── account.go # 账号模型 │ │ ├── user.go # 用户模型 │ │ ├── settings.go # 设置模型 │ │ ├── openai.go # OpenAI 格式 │ │ ├── claude.go # Claude 格式 │ │ └── amazonq.go # Amazon Q 格式 │ ├── config/ # 配置管理 │ ├── logger/ # 日志系统 │ ├── tokenizer/ # Token 计数 │ ├── compressor/ # 上下文压缩器 │ ├── proxy/ # 代理池管理 │ ├── ratelimit/ # 双重限流器(IP + API Key) │ └── utils/ # 工具函数 ├── frontend/ # Web 前端 │ ├── index.html # 主页面 │ ├── login.html # 登录页面 │ ├── js/ # JavaScript 模块 │ │ ├── app.js # 主应用入口 │ │ ├── accounts.js # 账号管理 │ │ ├── users.js # 用户管理 │ │ ├── settings.js # 系统设置 │ │ ├── chat.js # 聊天界面 │ │ ├── logs.js # 请求日志 │ │ ├── ips.js # IP 管理 │ │ └── api.js # API 封装 │ ├── css/ # 样式文件 │ └── vendor/ # 第三方库(Vue.js、Marked 等) ├── scripts/ # 辅助脚本 │ ├── start.sh # 启动脚本 │ ├── stop.sh # 停止脚本 │ └── setup.sh # 环境配置 └── dist/ # 编译产物(自动生成) └── server/ # 各平台服务端程序
🏗️ 技术架构
技术栈
后端 : Go 1.24+, Gin
数据库 : SQLite (glebarez/sqlite - 纯 Go,无需 CGO) / MySQL
前端 : Vue.js 3
Token 计数 : anthropic-tokenizer-go
项目结构 claude-api/ ├── main.go # 程序入口 ├── build.sh # 构建脚本 ├── config.yaml # 配置文件 ├── internal/ # 内部包 │ ├── api/ # API 服务器 │ │ ├── server.go # 服务器核心 │ │ ├── routes.go # 路由配置 │ │ └── handlers.go # 请求处理器 │ ├── amazonq/ # Amazon Q 客户端 │ ├── auth/ # 认证模块 │ ├── claude/ # 格式转换 │ ├── stream/ # 流处理 │ ├── database/ # 数据库 │ ├── models/ # 数据模型 │ ├── config/ # 配置管理 │ ├── logger/ # 日志系统 │ ├── tokenizer/ # Token 计数 │ └── sync/ # 同步客户端 ├── frontend/ # Web 前端 │ ├── index.html │ ├── js/ │ └── css/ │ ├── server.py │ └── requirements.txt └── dist/ # 编译产物
数据流 客户端 → Gin Router → 认证中间件 → 账号选择器 → 格式转换器 → Amazon Q API ↓ 客户端 ← OpenAI 格式 ← 流解析器 ← SSE 流 ← Amazon Q 响应
🐛 故障排查
常见问题 错误: failed to refresh token 解决: 检查 refreshToken 是否有效,尝试重新授权
错误: context deadline exceeded 解决: 检查网络连接,考虑配置 HTTP_PROXY
错误: database is locked 解决: 确保没有其他进程使用数据库,或重启服务器
健康检查 curl http://localhost:62311/healthz
日志位置
控制台日志 : 直接输出到终端
请求日志 : 存储在数据库 request_logs 表
调试日志 : 启用调试模式后在控制台输出
🔒 安全建议
修改默认密码 : 首次启动后立即修改管理员密码
使用 HTTPS : 生产环境使用 Nginx 反向代理并配置 SSL
限制访问 : 使用防火墙限制管理控制台访问
定期备份 : 定期备份 data.sqlite3 数据库
监控日志 : 定期查看请求日志,发现异常及时处理
⚠️ 免责声明 : 本项目仅供学习和研究使用,请遵守 AWS 服务条款和相关法律法规 本作者只是搬运 有任何问题和本人无关。
目录
Claude API - AWS Kiro 账号池管理 | OpenAI 兼容代理服务 项目地址在wget 里面 web页面访问把后缀.git删掉即可 效果图 📋 目录 ✨ 核心特性 🏊 AWS Kiro 账号池管理 🔄 API 格式转换 🔐 企业级安全 🖥️ Web 管理控制台 🚀 快速开始 方式一:下载预编译版本(推荐) Linux AMD64wget https://github.com/kkddytd/claude-api/releases/latest/download/claude-server-linux-amd64.tar.gz tar -xzf claude-server-linux-amd64.tar.gz ./claude-server # macOS (Apple Silicon)wget https://github.com/kkddytd/claude-api/releases/latest/download/claude-server-darwin-arm64.tar.gz tar -xzf claude-server-darwin-arm64.tar.gz ./claude-server # Windows# 下载 claude-server-windows-amd64.zip 并解压# 双击运行 claude-server.exe 方式二:从源码编译 克隆仓库git clone https://github.com/kkddytd/claude-api.git cd claude-api # 安装 Go 依赖 go mod download # 编译 go build -o claude-server main.go # 运行 ./claude-server 🔨 编译构建 构建脚本 构建当前平台(server + desktop) ./build.sh # 仅构建后端服务 ./build.sh server # 仅构建桌面应用(macOS + Windows) ./build.sh desktop # 构建所有平台 ./build.sh all # 清理构建产物 ./build.sh clean # 指定版本构建 ./build.sh server -v v1.2.0 # 指定平台构建 ./build.sh server -p linux/amd64 # 构建选项 ./build.sh --no-cache # 禁用构建缓存 ./build.sh --verbose # 显示详细日志 ./build.sh -h # 显示帮助信息 支持的平台 构建产物 手动编译 当前平台 go build -o claude-server main.go # 带版本号 go build -ldflags="-X main.Version=v1.0.0" -o claude-server main.go # 跨平台编译GOOS=linux GOARCH=amd64 go build -o claude-server-linux-amd64 main.go GOOS=darwin GOARCH=arm64 go build -o claude-server-darwin-arm64 main.go GOOS=windows GOARCH=amd64 go build -o claude-server-windows-amd64.exe main.go 📦 部署指南 Linux Systemd 服务 部署文件sudomkdir -p /opt/claude-api sudocp claude-server /opt/claude-api/ sudochown -R www-data:www-data /opt/claude-api # 启动服务sudo systemctl daemon-reload sudo systemctl enable claude-api sudo systemctl start claude-api # 查看状态sudo systemctl status claude-api # 查看日志sudo journalctl -u claude-api -f Nginx 反向代理 进程管理器(PM2) 安装 PM2npminstall -g pm2 # 创建 ecosystem.config.jscat> ecosystem.config.js <<'EOF' module.exports = { apps: [{ name: 'claude-api', script: './claude-server', cwd: '/opt/claude-api', instances: 1, autorestart: true, watch: false, maxmemoryrestart: '500M', env: { PORT: 62311 } }] } EOF# 启动 pm2 start ecosystem.config.js # 查看状态 pm2 status # 查看日志 pm2 logs claude-api # 开机自启 pm2 startup pm2 save 环境变量配置 服务端口exportPORT=62311# 数据目录(桌面应用)exportDATADIR=/path/to/data # 禁用浏览器自动打开exportNOBROWSER=true 数据备份 备份数据库cp data.sqlite3 data.sqlite3.backup.$(date +%Y%m%d_%H%M%S)# 定时备份(crontab)02 cd /opt/claude-api &&cp data.sqlite3 backups/data.sqlite3.$(date +\%Y\%m\%d)# 保留最近 7 天的备份03 find /opt/claude-api/backups -name "data.sqlite3.*" -mtime +7 -delete 💡 使用示例 Python (OpenAI SDK) Node.js (OpenAI SDK) cURL 普通请求curl -X POST http://localhost:62311/v1/chat/completions \ -H "Content-Type: application/json"\ -H "Authorization: Bearer your-api-key"\ -d '{ "model": "claude-sonnet-4.5", "messages": [ {"role": "user", "content": "你好"} ] }'# 流式请求curl -X POST http://localhost:62311/v1/chat/completions \ -H "Content-Type: application/json"\ -H "Authorization: Bearer your-api-key"\ -d '{ "model": "claude-sonnet-4.5", "messages": [ {"role": "user", "content": "你好"} ], "stream": true }' ⚙️ 配置说明 config.yaml 系统设置(存储在数据库) 📡 API 文档 OpenAI 兼容端点 管理端点 账号管理 GET /v2/accounts # 列出账号 POST /v2/accounts # 创建账号 POST /v2/accounts/feed # 批量添加 POST /v2/accounts/import # 导入账号 GET /v2/accounts/export # 导出账号 DELETE /v2/accounts/:id # 删除账号# 设置管理 GET /v2/settings # 获取设置 PUT /v2/settings # 更新设置# 日志管理 GET /v2/logs # 获取日志 GET /v2/logs/stats # 统计数据 POST /v2/logs/cleanup # 清理日志# IP 管理 GET /v2/ips/blocked # 被封禁的 IP POST /v2/ips/block # 封禁 IP POST /v2/ips/unblock # 解封 IP 🏗️ 项目结构 🏗️ 技术架构 技术栈 项目结构 数据流 🐛 故障排查 常见问题 健康检查 日志位置 🔒 安全建议 相关免费在线工具 curl 转代码 解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
Base64 字符串编码/解码 将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
Base64 文件转换器 将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
Markdown转HTML 将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
HTML转Markdown 将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
JSON 压缩 通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online