功能特性
多协议支持
Kiro Proxy 支持三种主流 AI API 协议,可以适配不同的客户端:
| 协议 | 端点 | 适用客户端 |
|---|---|---|
| OpenAI | /v1/chat/completions |
Codex CLI, ChatGPT 客户端 |
| Anthropic | /v1/messages |
Claude Code, Claude 客户端 |
| Gemini | /v1/models/{model}:generateContent |
Gemini CLI |
代理会自动将请求转换为 Kiro API 格式,响应转换回对应协议格式。
工具调用支持
完整支持三种协议的工具调用功能:
Anthropic 协议(Claude Code)
tools定义和tool_result响应完整支持tool_choice: required支持(通过 prompt 注入)web_search特殊工具自动识别- 工具数量限制(最多 50 个)
- 描述截断(超过 500 字符自动截断)
OpenAI 协议(Codex CLI)
tools定义(function 类型)tool_calls响应处理tool角色消息转换tool_choice: required/any支持- 工具数量限制和描述截断
Gemini 协议
functionDeclarations工具定义functionCall响应处理functionResponse工具结果toolConfig.functionCallingConfig.mode支持(ANY/REQUIRED)- 工具数量限制和描述截断
历史消息修复
Kiro API 要求消息必须严格交替(user → assistant → user → assistant),代理会自动:
- 检测并修复连续的同角色消息
- 合并重复的 tool_results
- 插入占位消息保持交替
多账号管理
账号轮询
支持添加多个 Kiro 账号,代理会自动轮询使用(默认随机):
- 每次请求随机选择一个可用账号(尽量避免连续命中同一账号)
- 自动跳过冷却中或不健康的账号
- 分散请求压力,降低单账号 RPM 过高导致封禁风险
会话粘性(可选)
为了保持对话上下文的连贯性,在非 random 策略下会启用会话粘性:
- 同一会话 ID 在 60 秒内会使用同一账号
- 超过 60 秒或账号不可用时才切换
- 会话 ID 由请求内容生成;可通过
~/.kiro-proxy/priority.json中的strategy调整策略
账号状态
每个账号有四种状态:
| 状态 | 说明 | 颜色 |
|---|---|---|
| Active | 正常可用 | 绿色 |
| Cooldown | 触发限流,冷却中 | 黄色 |
| Unhealthy | 健康检查失败 | 红色 |
| Disabled | 手动禁用 | 灰色 |
Token 自动刷新
自动检测
- 后台每 5 分钟检查所有账号的 Token 状态
- 检测 Token 是否即将过期(15 分钟内)
自动刷新
- 发现即将过期的 Token 自动刷新
- 支持 Social 认证(Google/GitHub)的 refresh_token
- 刷新失败会标记账号为不健康
手动刷新
- 在账号卡片点击「刷新 Token」
- 或点击「刷新所有 Token」批量刷新
配额管理
429 自动处理
当 Kiro API 返回 429 (Too Many Requests) 时:
- 自动将该账号标记为 Cooldown 状态
- 设置 5 分钟冷却时间
- 立即切换到其他可用账号重试
- 冷却结束后自动恢复
手动恢复
如果需要提前恢复账号:
- 在「监控」页面查看配额状态
- 点击账号旁的「恢复」按钮
流量监控
请求记录
记录所有经过代理的 LLM 请求:
- 请求时间、模型、账号
- 输入/输出 Token 数量
- 响应时间、状态码
- 完整的请求和响应内容
搜索过滤
- 按协议筛选(OpenAI/Anthropic/Gemini)
- 按状态筛选(完成/错误/进行中)
- 关键词搜索
导出功能
- 支持导出为 JSON 格式
- 可选择导出全部或指定记录
登录方式
Google 登录
使用 Google 账号通过 OAuth 授权登录。
GitHub 登录
使用 GitHub 账号通过 OAuth 授权登录。
AWS Builder ID
使用 AWS Builder ID 通过 Device Code Flow 登录:
- 点击 AWS 登录按钮
- 复制显示的授权码
- 在浏览器中打开授权页面
- 输入授权码完成登录
历史消息管理
对话长度限制
Kiro API 有输入长度限制,当对话历史过长时会返回 CONTENT_LENGTH_EXCEEDS_THRESHOLD 错误。
代理内置了多种策略自动处理这个问题:
可用策略
| 策略 | 说明 | 触发时机 |
|---|---|---|
| 自动截断 | 优先保留最新上下文并摘要前文,必要时截断 | 每次请求前 |
| 智能摘要 | 用 AI 生成早期对话摘要 | 超过阈值时 |
| 错误重试 | 遇到长度错误时截断重试 | 收到错误后 |
| 预估检测 | 预估 token 数量,超限预先截断 | 每次请求前 |
配置选项
在「设置」页面可以配置:
- 最大消息数 - 自动截断时保留的消息数量(默认 30)
- 最大字符数 - 自动截断时的字符数限制(默认 150000)
- 重试保留数 - 错误重试时保留的消息数(默认 20)
- 最大重试次数 - 错误重试的最大次数(默认 2)
- 摘要保留数 - 智能摘要时保留的最近消息数(默认 10)
- 摘要阈值 - 触发智能摘要的字符数阈值(默认 100000)
- 添加警告 - 截断时是否在日志中记录
推荐配置
- 默认:只启用「错误重试」,遇到问题时自动处理
- 保守:启用「智能摘要 + 错误重试」,保留关键信息
- 激进:启用「自动截断 + 预估检测」,预防性截断
配置持久化
自动保存
账号配置自动保存到 ~/.kiro-proxy/config.json:
- 账号列表和状态
- 启用/禁用设置
- Token 文件路径
重启恢复
重启代理后自动加载保存的配置,无需重新添加账号。
导入导出
- 「导出配置」下载当前配置
- 「导入配置」从文件恢复