Skip to content

Latest commit

 

History

History
358 lines (268 loc) · 13.6 KB

File metadata and controls

358 lines (268 loc) · 13.6 KB
Kiro Proxy

Kiro Proxy

本地代理,将 Kiro 账号转换为兼容 OpenAI / Anthropic 的接口。

Go Docker SQLite License

概览界面预览功能特性快速开始配置使用方法思考模式出站代理安全须知

English中文


🌟 概览

Kiro Proxy 是一个轻量级 Go 服务,将一个或多个已授权的 Kiro 账号转换为本地 API 端点,支持 OpenAIAnthropic 协议格式:

  1. 多账号池化,按轮询方式分发请求。
  2. 在 Anthropic /v1/messages、OpenAI /v1/chat/completions 与 OpenAI /v1/responses 与 Kiro 上游之间双向翻译。
  3. 自动刷新访问令牌,端到端转发 Server-Sent Events 流。
  4. 自带精致的 Web 管理面板,提供账号管理、可观测性与请求审计。

Important

单二进制本地代理。托管服务,隶属于 Amazon、AWS 或 Kiro。账号必须由你本人持有或经过合法授权方可加入账号池。

如果项目对你有帮助,欢迎点个 Star 鼓励一下。


🖼 界面预览

登录
登录 — 简洁、随主题切换
实时监控
实时监控 — RPM、错误率、流量热力图
账号池
账号池 — 多账号、轮询、自动刷新令牌
请求日志
请求日志 — 分页搜索、状态筛选、完整审计
API 测试台
API 测试台 — 面板内直接调试接口
备份
备份 — 快照、定时备份、一键恢复
出站代理
出站代理 — SOCKS5 / HTTP,无需重启热切换
设置
设置 — 思考模式、主题、多语言、管理员

✨ 功能特性

🛰 API 接口

  • Anthropic /v1/messages,原生工具调用与流式输出。
  • OpenAI /v1/chat/completions,工具调用结构完全对齐。
  • OpenAI /v1/responses,支持 previous_response_id 链式调用与已存响应回查。
  • 全部端点支持 SSE 流式输出,上游瞬时错误时可在流中切换账号继续。
  • 支持请求体解压(gzip / deflate),方便预压缩负载的客户端接入。

👥 账号池

  • 多个 Kiro 账号按模型粒度轮询。
  • OAuth 令牌过期前自动刷新。
  • 支持多种鉴权方式:AWS Builder ID、IAM Identity Center(企业 SSO)、SSO Token、本地缓存、凭证 JSON。
  • 单账号导入导出与批量操作。

🛡 管理面板

  • 实时可观测性:RPM、错误率、模型分布、流量热力图。
  • 请求日志支持分页搜索、状态/API Key 筛选、脱敏 API Key 列、排序,SQLite 持久化存档。
  • 托管客户端 API Key:可自定义 Key 值、启用/禁用、设置独立 Token/Credit 限额,并支持重置用量。
  • 仪表盘区分 Kiro 账号服务器配额用量与本代理产生的请求用量。
  • 内置 API 测试台,无需离开面板即可调试接口。
  • 快照与定时备份,支持一键恢复。
  • 主题感知 UI(浅色 / 深色 / 跟随系统),具备友好的缓存头。
  • 内建 i18n:英文与简体中文同源同步。

🌐 网络

  • 出站代理支持 SOCKS5 与 HTTP,热切换无需重启。
  • 思考模式后缀可配置,Anthropic thinking 配置直通透传。

🧩 存储

  • 单文件 SQLite(modernc.org/sqlite)数据库 kiro.db,使用 DELETE journal 模式。
  • 最终请求行是仪表盘请求数、Token、Credit、成功数与失败数的统计来源。
  • 已存响应保留 30 天,写盘异步进行,不阻塞请求主路径。

⚙️ 环境要求

组件 版本
Go 1.25+
操作系统 Linux / macOS
容器 Docker 24+(可选)
存储 本地磁盘卷

🚀 快速开始

🐳 Docker Compose(推荐)

git clone https://github.com/tanu360/kiro-reverse-api.git
cd kiro-reverse-api
docker-compose up -d

🐳 Docker Run

docker run -d \
  --name kiro-proxy \
  -p 8080:8080 \
  -e ADMIN_PASSWORD=your_secure_password \
  -v /path/to/kiro-proxy-state:/app/state \
  --restart unless-stopped \
  ghcr.io/tanu360/kiro-reverse-api:latest

🛠 源码编译

git clone https://github.com/tanu360/kiro-reverse-api.git
cd kiro-reverse-api
go build -o kiro-proxy .
./kiro-proxy

Tip

首次运行会自动创建 kiro.db。可通过 DATA_DIR 指定存储目录;Docker 使用 /app/state。默认管理密码为 changeme,对外暴露前请通过 ADMIN_PASSWORD 环境变量或管理面板进行修改。


🔧 配置

变量 用途 默认值
DATA_DIR kiro.db 所在目录 .
ADMIN_PASSWORD 管理面板密码(覆盖配置文件)

Warning

kiro.db 包含 OAuth 令牌与管理员凭证。请按敏感信息处理,切勿提交到 git、截图或聊天记录中。数据库目录请挂载为私有卷。


🕹 使用方法

打开 http://localhost:8080/admin,登录后添加账号即可调用 API:

# Anthropic — Claude
curl http://localhost:8080/v1/messages \
  -H "Content-Type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"claude-sonnet-4.5","max_tokens":1024,"messages":[{"role":"user","content":"你好!"}]}'

# OpenAI — Chat Completions
curl http://localhost:8080/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer any" \
  -d '{"model":"gpt-4o","messages":[{"role":"user","content":"你好!"}]}'

# OpenAI — Responses
curl http://localhost:8080/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer any" \
  -d '{"model":"gpt-4o","input":"你好!"}'

📌 端点速查

方法 路径 说明
POST /v1/messages Anthropic 协议的 Claude 补全
POST /v1/chat/completions OpenAI 协议的对话补全
POST /v1/responses OpenAI Responses 接口(支持存储与链式调用)
GET /v1/responses/{id} 读取已存储的响应
DELETE /v1/responses/{id} 删除已存储的响应
GET /v1/models 列出可用模型
GET /v1/stats 代理使用聚合统计
GET /admin Web 管理面板

🔑 托管 API Key

可在「设置 → API 设置」中启用 API Key 验证。每个客户端 Key 都可以单独设置限额:

  • 自定义 Key 留空时自动生成安全的 sk-... Key;也可以手动输入自己的 Key 值。
  • 列表与请求日志中会显示脱敏格式,例如 sk-clb****e4yo;完整 Key 仍会用于鉴权,并可在详情中复制。
  • Token 与 Credit 限额检查使用原始精确数值;界面上的四舍五入或 K/M/B 仅用于显示。
  • Token 或 Credit 限额为 0 表示该维度不限制。

📊 统计口径

仪表盘与账号卡片回答的是不同问题:

  • 账号卡片:当前配置的 Kiro 账号,使用 Kiro 服务器返回的配额字段(usage_current / usage_limit)。
  • 请求卡片:本代理的 SQLite requests 历史:COUNT(*)SUM(total_tokens)SUM(credits)
  • 成功 / 失败卡片:同一个 requests 表中的最终代理请求结果。
  • 账号列表卡片:当前可见账号记录里保存的计数器(requestCounttotalTokenstotalCredits)。

如果旧账号或已删除账号在 requests 表中仍有历史行,仪表盘的 App Credits 可能高于当前可见账号卡片的 Credit 总和。需要清空历史时,可使用「重置统计」或进行一次性数据库清理。

Token 标签可能显示为紧凑格式(如 54.5M476.5K),但后端计算与限额检查始终使用原始数值。


🧠 思考模式

在模型名后追加后缀(默认 -thinking)即可启用推理,例如 claude-sonnet-4.5-thinking

Claude 兼容请求如果带有顶层 thinking 配置,也会自动启用:

{ "type": "enabled", "budget_tokens": 2048 }
{ "type": "adaptive" }

输出格式可在管理面板「设置 → 思考模式」中配置。


🛰 出站代理

如果你的网络受限,可在管理面板「设置 → 出站代理设置」中配置出站代理。

类型 示例
SOCKS5 socks5://127.0.0.1:1080
HTTP http://127.0.0.1:8888

Tip

设置保存后即时生效,无需重启服务。


🔐 环境变量

变量 说明 默认值
DATA_DIR kiro.db 所在目录 .
ADMIN_PASSWORD 管理面板密码(覆盖配置文件)
+ kiro.db                # 本地状态:配置、凭据、SQLite 历史、备份 BLOB

Caution

kiro.db 是敏感文件,账号令牌与管理员凭证以明文形式落盘存储,请严加保护。


🙏 项目致谢

本项目是 Quorinex/Kiro-Go 的延续。原始项目的贡献与功劳归原作者所有;我在此基础上继续维护和推进。


🛡 安全须知

  • ✅ 仅用于你有权限操作的账号。
  • 不得用于批量账号爬取或绕过服务条款。
  • 不得叠加 CAPTCHA 绕过、身份伪造、限流绕过等行为。
  • 🔐 kiro.db 切勿出现在 git、公开备份与截图中。
  • 🧯 若上游持续返回鉴权错误,代理会快速失败,请先排查再重试。

Important

本项目仅供学习与研究使用,与 Amazon、AWS 或 Kiro 无关联。用户需自行确保符合相关服务条款与法律法规,使用风险自负。


📄 开源许可

MIT


用 ❤️ 与 Go 构建 · 如果项目帮你省了时间,请回仓库点个 ⭐