AWS Kiro 账号池管理系统 | 将 Amazon Q Developer API 转换为 OpenAI 兼容格式 | 支持多账号池、OIDC 自动认证、令牌自动刷新、Web 管理控制台 | Go

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 兼容格式的企业级 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、限流规则、日志保留策略

🚀 快速开始

方式一:下载预编译版本(推荐)

Releases 下载对应平台的压缩包:

# 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 

首次使用

  1. 访问控制台:http://localhost:62311
  2. 默认密码:admin(首次登录后请立即修改)
  3. 添加 AWS Kiro 账号:点击"账号管理" → “添加账号” → 完成 OIDC 授权
  4. 配置 API Key:点击"系统设置" → 设置自定义 API Key
  5. 开始使用:使用 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=5s # 环境变量(可选) Environment="PORT=62311" [Install] WantedBy=multi-user.target 

启动服务:

# 部署文件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 反向代理

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; } } 

重载 Nginx:

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 # 禁用浏览器自动打开exportNO_BROWSER=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)

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:3306user: root password:""database: claude-api charset: utf8mb4 server:host: 0.0.0.0 port:62311debug:falsetest:false

系统设置(存储在数据库)

设置项说明默认值
apiKeyOpenAI API Key
adminPassword管理员密码admin
debugLog调试日志false
enableRequestLog请求日志true
logRetentionDays日志保留天数30
enableIPRateLimitIP 频率限制false
ipRateLimitWindow限制时间窗口(分钟)1
ipRateLimitMax窗口内最大请求数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 响应 

🐛 故障排查

常见问题

1. 令牌刷新失败

错误: failed to refresh token 解决: 检查 refreshToken 是否有效,尝试重新授权 

2. 连接超时

错误: context deadline exceeded 解决: 检查网络连接,考虑配置 HTTP_PROXY 

3. 数据库锁定

错误: database is locked 解决: 确保没有其他进程使用数据库,或重启服务器 

健康检查

curl http://localhost:62311/healthz # 预期响应: {"status":"ok"}

日志位置

  • 控制台日志: 直接输出到终端
  • 请求日志: 存储在数据库 request_logs
  • 调试日志: 启用调试模式后在控制台输出

🔒 安全建议

  1. 修改默认密码: 首次启动后立即修改管理员密码
  2. 使用 HTTPS: 生产环境使用 Nginx 反向代理并配置 SSL
  3. 限制访问: 使用防火墙限制管理控制台访问
  4. 定期备份: 定期备份 data.sqlite3 数据库
  5. 监控日志: 定期查看请求日志,发现异常及时处理

⚠️ 免责声明: 本项目仅供学习和研究使用,请遵守 AWS 服务条款和相关法律法规 本作者只是搬运 有任何问题和本人无关。

Read more

Qwen3-VL-WEBUI实战记录|Web端体验最强多模态推理

Qwen3-VL-WEBUI实战记录|Web端体验最强多模态推理 1. 引言 随着多模态大模型的快速发展,视觉-语言理解能力已成为AI系统智能化的重要标志。阿里推出的 Qwen3-VL-WEBUI 镜像,集成了迄今为止Qwen系列中最强大的视觉语言模型——Qwen3-VL-4B-Instruct,为开发者提供了一键部署、开箱即用的Web交互式体验环境。 本文将基于实际部署经验,完整记录从镜像拉取到Web端访问的全过程,重点解析部署过程中的关键配置、常见问题及解决方案,帮助开发者快速搭建本地多模态推理服务,实现图像理解、GUI操作、文档解析等高级功能。 💡 本文适用于希望在Web界面中快速体验Qwen3-VL强大多模态能力的技术人员和研究者,内容涵盖环境准备、依赖处理、模型加载与远程访问全流程。 2. 技术背景与核心价值 2.1 Qwen3-VL 模型架构升级 Qwen3-VL 在前代基础上进行了全面优化,具备以下六大核心增强能力: * 视觉代理能力:可识别PC/移动端GUI元素,调用工具完成自动化任务(如点击按钮、填写表单)。 * 视觉编码生成:支持从图像或视

By Ne0inhk
基于Java和高德开放平台的WebAPI集成实践-以搜索POI2.0为例

基于Java和高德开放平台的WebAPI集成实践-以搜索POI2.0为例

目录 前言 一、高德搜索API简介 1、高德开放平台 2、搜索功能介绍  3、部分API介绍 二、Uniapi集成高德API 1、API集成流程 2、访问接口的定义 3、业务调用集成 三、常见问题与优化 四、总结 前言         在当今数字化时代,地理信息系统(GIS)和位置服务(LBS)已成为许多应用程序的核心组成部分。无论是导航、物流、社交网络还是电子商务,位置数据的获取和处理都显得尤为重要。高德开放平台作为国内领先的地理信息服务提供商,提供了丰富的WebAPI接口,帮助开发者快速集成地图、导航、搜索等功能。其中,POI(Point of Interest)搜索是许多应用场景中的关键功能,它能够帮助用户快速找到附近的兴趣点,如餐馆、酒店、加油站等。         Java作为一种广泛使用的编程语言,因其跨平台性、

By Ne0inhk

从零搭建SpringBoot+Vue+Netty+WebSocket+WebRTC视频聊天系统

在实时通信场景中,音视频聊天是最核心的需求之一,比如在线会议、远程面试、社交视频等。本文将手把手教你搭建一套基于SpringBoot+Vue+Netty+WebSocket+WebRTC的全栈视频聊天系统,全程保留完整可运行代码,无需修改即可直接部署测试,同时拆解核心技术原理,让你不仅能“跑通项目”,更能“理解底层逻辑”。 本文适合有一定Java和Vue基础的开发者,核心目标是实现“两端内网设备实时视频通话”,无需第三方音视频SDK,完全基于原生技术栈开发,兼顾实用性与可扩展性。 一、核心技术栈原理铺垫 在动手开发前,我们先理清核心技术的作用,尤其是WebRTC相关的关键概念——很多开发者踩坑,本质是没搞懂NAT穿透和信令交互的逻辑。 1.1 WebRTC:浏览器原生的实时通信“利器” WebRTC(Web Real-Time Communication)是浏览器内置的实时通信技术标准,无需安装任何插件,就能让网页直接实现音视频采集、编码、传输和渲染。简单说,它帮我们搞定了“音视频流怎么从本地设备传到对方设备”的核心问题,是整个视频聊天的“核心引擎”

By Ne0inhk
【Actix Web】Rust Web开发实战:Actix Web框架全面指南

【Actix Web】Rust Web开发实战:Actix Web框架全面指南

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,ZEEKLOG全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Rust开发,Python全栈,Golang开发,云原生开发,PyQt5和Tkinter桌面开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生K8S,linux,shell脚本等实操经验,网站搭建,数据库等分享。 所属的专栏:Rust语言通关之路 景天的主页:景天科技苑 文章目录 * Rust Web开发 * 一、Actix Web框架概述 * 1.1 Actix Web的特点 * 1.2 Actix Web与其他Rust框架比较

By Ne0inhk