kiroproxy / kiro_proxy /docs /02-features.md
KiroProxy User
chore: repo cleanup and maintenance
0edbd7b

功能特性

多协议支持

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) 时:

  1. 自动将该账号标记为 Cooldown 状态
  2. 设置 5 分钟冷却时间
  3. 立即切换到其他可用账号重试
  4. 冷却结束后自动恢复

手动恢复

如果需要提前恢复账号:

  1. 在「监控」页面查看配额状态
  2. 点击账号旁的「恢复」按钮

流量监控

请求记录

记录所有经过代理的 LLM 请求:

  • 请求时间、模型、账号
  • 输入/输出 Token 数量
  • 响应时间、状态码
  • 完整的请求和响应内容

搜索过滤

  • 按协议筛选(OpenAI/Anthropic/Gemini)
  • 按状态筛选(完成/错误/进行中)
  • 关键词搜索

导出功能

  • 支持导出为 JSON 格式
  • 可选择导出全部或指定记录

登录方式

Google 登录

使用 Google 账号通过 OAuth 授权登录。

GitHub 登录

使用 GitHub 账号通过 OAuth 授权登录。

AWS Builder ID

使用 AWS Builder ID 通过 Device Code Flow 登录:

  1. 点击 AWS 登录按钮
  2. 复制显示的授权码
  3. 在浏览器中打开授权页面
  4. 输入授权码完成登录

历史消息管理

对话长度限制

Kiro API 有输入长度限制,当对话历史过长时会返回 CONTENT_LENGTH_EXCEEDS_THRESHOLD 错误。

代理内置了多种策略自动处理这个问题:

可用策略

策略 说明 触发时机
自动截断 优先保留最新上下文并摘要前文,必要时截断 每次请求前
智能摘要 用 AI 生成早期对话摘要 超过阈值时
错误重试 遇到长度错误时截断重试 收到错误后
预估检测 预估 token 数量,超限预先截断 每次请求前

配置选项

在「设置」页面可以配置:

  • 最大消息数 - 自动截断时保留的消息数量(默认 30)
  • 最大字符数 - 自动截断时的字符数限制(默认 150000)
  • 重试保留数 - 错误重试时保留的消息数(默认 20)
  • 最大重试次数 - 错误重试的最大次数(默认 2)
  • 摘要保留数 - 智能摘要时保留的最近消息数(默认 10)
  • 摘要阈值 - 触发智能摘要的字符数阈值(默认 100000)
  • 添加警告 - 截断时是否在日志中记录

推荐配置

  • 默认:只启用「错误重试」,遇到问题时自动处理
  • 保守:启用「智能摘要 + 错误重试」,保留关键信息
  • 激进:启用「自动截断 + 预估检测」,预防性截断

配置持久化

自动保存

账号配置自动保存到 ~/.kiro-proxy/config.json

  • 账号列表和状态
  • 启用/禁用设置
  • Token 文件路径

重启恢复

重启代理后自动加载保存的配置,无需重新添加账号。

导入导出

  • 「导出配置」下载当前配置
  • 「导入配置」从文件恢复