kiro-rs

April 18, 2026 · View on GitHub

一个用 Rust 编写的 Anthropic Claude API 兼容代理服务,将 Anthropic API 请求转换为 Kiro API 请求。


特别感谢YesCode 为本项目提供了 AI API 额度赞助, YesCode 作为一家低调务实的 AI API 中转服务商
长期以来提供稳定高可用的服务, 如您有意体验, 请点击链接注册体验 → 立即访问

LINUX DO 讨论帖

免责声明

本项目仅供研究使用, Use at your own risk, 使用本项目所导致的任何后果由使用人承担, 与本项目无关。 本项目与 AWS/KIRO/Anthropic/Claude 等官方无关, 本项目不代表官方立场。

注意!

因 TLS 默认从 native-tls 切换至 rustls,你可能需要专门安装证书后才能配置 HTTP 代理。可通过 config.jsontlsBackend 切回 native-tls。 如果遇到请求报错, 尤其是无法刷新 token, 或者是直接返回 error request, 请尝试切换 tls 后端为 native-tls, 一般即可解决。

Write Failed/会话卡死: 如果遇到持续的 Write File / Write Failed 并导致会话不可用,参考 Issue #22#49 的说明与临时解决方案(通常与输出过长被截断有关,可尝试调低输出相关 token 上限)

功能特性

  • Anthropic API 兼容: 完整支持 Anthropic Claude API 格式
  • 流式响应: 支持 SSE (Server-Sent Events) 流式输出
  • Token 自动刷新: 自动管理和刷新 OAuth Token
  • 多凭据支持: 支持配置多个凭据,按优先级自动故障转移
  • 负载均衡: 支持 priority(按优先级)和 balanced(均衡分配)两种模式
  • 智能重试: 单凭据最多重试 3 次,单请求最多重试 9 次
  • 凭据回写: 多凭据格式下自动回写刷新后的 Token
  • Thinking 模式: 支持 Claude 的 extended thinking 功能
  • 工具调用: 完整支持 function calling / tool use
  • WebSearch: 内置 WebSearch 工具转换逻辑
  • 多模型支持: 支持 Sonnet、Opus、Haiku 系列模型
  • Admin 管理: 可选的 Web 管理界面和 API,支持凭据管理、余额查询等
  • 多级 Region 配置: 支持全局和凭据级别的 Auth Region / API Region 配置
  • 凭据级代理: 支持为每个凭据单独配置 HTTP/SOCKS5 代理,优先级:凭据代理 > 全局代理 > 无代理

开始

1. 编译

PS: 如果不想编辑可以直接前往 Release 下载二进制文件

前置步骤:编译前需要先构建前端 Admin UI(用于嵌入到二进制中):

cd admin-ui && pnpm install && pnpm build
cargo build --release

2. 最小配置

创建 config.json

{
   "host": "127.0.0.1",
   "port": 8990,
   "apiKey": "sk-kiro-rs-qazWSXedcRFV123456",
   "region": "us-east-1"
}

PS: 如果你需要 Web 管理面板, 请注意配置 adminApiKey

创建 credentials.json(从 Kiro IDE 等中获取凭证信息):

PS: 可以前往 Web 管理面板配置跳过本步骤 如果你对凭据地域有疑惑, 请查看 Region 配置

Social 认证:

{
   "refreshToken": "你的刷新token",
   "expiresAt": "2025-12-31T02:32:45.144Z",
   "authMethod": "social"
}

IdC 认证:

{
   "refreshToken": "你的刷新token",
   "expiresAt": "2025-12-31T02:32:45.144Z",
   "authMethod": "idc",
   "clientId": "你的clientId",
   "clientSecret": "你的clientSecret"
}

3. 启动

./target/release/kiro-rs

或指定配置文件路径:

./target/release/kiro-rs -c /path/to/config.json --credentials /path/to/credentials.json

4. 验证

curl http://127.0.0.1:8990/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk-kiro-rs-qazWSXedcRFV123456" \
  -d '{
    "model": "claude-sonnet-4-20250514",
    "max_tokens": 1024,
    "stream": true,
    "messages": [
      {"role": "user", "content": "Hello, Claude!"}
    ]
  }'

Docker

也可以通过 Docker 启动:

docker-compose up

需要将 config.jsoncredentials.json 挂载到容器中,具体参见 docker-compose.yml

配置详解

config.json

字段类型默认值描述
hoststring127.0.0.1服务监听地址
portnumber8080服务监听端口
apiKeystring-自定义 API Key(用于客户端认证,必配)
regionstringus-east-1AWS 区域
authRegionstring-Auth Region(用于 Token 刷新),未配置时回退到 region
apiRegionstring-API Region(用于 API 请求),未配置时回退到 region
kiroVersionstring0.9.2Kiro 版本号
machineIdstring-自定义机器码(64位十六进制),不定义则自动生成
systemVersionstring随机系统版本标识
nodeVersionstring22.21.1Node.js 版本标识
tlsBackendstringrustlsTLS 后端:rustlsnative-tls
countTokensApiUrlstring-外部 count_tokens API 地址
countTokensApiKeystring-外部 count_tokens API 密钥
countTokensAuthTypestringx-api-key外部 API 认证类型:x-api-keybearer
proxyUrlstring-HTTP/SOCKS5 代理地址
proxyUsernamestring-代理用户名
proxyPasswordstring-代理密码
adminApiKeystring-Admin API 密钥,配置后启用凭据管理 API 和 Web 管理界面
loadBalancingModestringpriority负载均衡模式:priority(按优先级)或 balanced(均衡分配)
extractThinkingbooleantrue非流式响应的 thinking 块提取。启用后 <thinking> 标签会被解析为独立的 thinking 内容块
defaultEndpointstringide默认 Kiro 端点。凭据未显式指定 endpoint 时使用。当前支持:ide

完整配置示例:

{
   "host": "127.0.0.1",
   "port": 8990,
   "apiKey": "sk-kiro-rs-qazWSXedcRFV123456",
   "region": "us-east-1",
   "tlsBackend": "rustls",
   "kiroVersion": "0.9.2",
   "machineId": "64位十六进制机器码",
   "systemVersion": "darwin#24.6.0",
   "nodeVersion": "22.21.1",
   "authRegion": "us-east-1",
   "apiRegion": "us-east-1",
   "countTokensApiUrl": "https://api.example.com/v1/messages/count_tokens",
   "countTokensApiKey": "sk-your-count-tokens-api-key",
   "countTokensAuthType": "x-api-key",
   "proxyUrl": "http://127.0.0.1:7890",
   "proxyUsername": "user",
   "proxyPassword": "pass",
   "adminApiKey": "sk-admin-your-secret-key",
   "loadBalancingMode": "priority",
   "extractThinking": true
}

credentials.json

支持单对象格式(向后兼容)或数组格式(多凭据)。

字段说明

字段类型描述
idnumber凭据唯一 ID(可选,仅用于 Admin API 管理;手写文件可不填)
accessTokenstringOAuth 访问令牌(可选,可自动刷新)
refreshTokenstringOAuth 刷新令牌
profileArnstringAWS Profile ARN(可选,登录时返回)
expiresAtstringToken 过期时间 (RFC3339)
authMethodstring认证方式:socialidc
clientIdstringIdC 登录的客户端 ID(IdC 认证必填)
clientSecretstringIdC 登录的客户端密钥(IdC 认证必填)
prioritynumber凭据优先级,数字越小越优先,默认为 0
regionstring凭据级 Auth Region, 兼容字段
authRegionstring凭据级 Auth Region,用于 Token 刷新, 未配置时回退到 region
apiRegionstring凭据级 API Region,用于 API 请求
machineIdstring凭据级机器码(64位十六进制)
emailstring用户邮箱(可选,从 API 获取)
proxyUrlstring凭据级代理 URL(可选,特殊值 direct 表示不使用代理)
proxyUsernamestring凭据级代理用户名(可选)
proxyPasswordstring凭据级代理密码(可选)
endpointstring凭据级端点名称(可选,未配置时使用 config.defaultEndpoint

说明:

  • IdC / Builder-ID / IAM 在本项目里属于同一种登录方式,配置时统一使用 authMethod: "idc"
  • 为兼容旧配置,builder-id / iam 仍可被识别,但会按 idc 处理

单凭据格式(旧格式,向后兼容)

{
   "accessToken": "请求token,一般有效期一小时,可选",
   "refreshToken": "刷新token,一般有效期7-30天不等",
   "profileArn": "arn:aws:codewhisperer:us-east-1:111112222233:profile/QWER1QAZSDFGH",
   "expiresAt": "2025-12-31T02:32:45.144Z",
   "authMethod": "social",
   "clientId": "IdC 登录需要",
   "clientSecret": "IdC 登录需要"
}

多凭据格式(支持故障转移和自动回写)

[
   {
      "refreshToken": "第一个凭据的刷新token",
      "expiresAt": "2025-12-31T02:32:45.144Z",
      "authMethod": "social",
      "priority": 0
   },
   {
      "refreshToken": "第二个凭据的刷新token",
      "expiresAt": "2025-12-31T02:32:45.144Z",
      "authMethod": "idc",
      "clientId": "xxxxxxxxx",
      "clientSecret": "xxxxxxxxx",
      "region": "us-east-2",
      "priority": 1,
      "proxyUrl": "socks5://proxy.example.com:1080",
      "proxyUsername": "user",
      "proxyPassword": "pass"
   },
   {
      "refreshToken": "第三个凭据(显式不走代理)",
      "expiresAt": "2025-12-31T02:32:45.144Z",
      "authMethod": "social",
      "priority": 2,
      "proxyUrl": "direct"
   }
]

多凭据特性:

  • priority 字段排序,数字越小优先级越高(默认为 0)
  • 单凭据最多重试 3 次,单请求最多重试 9 次
  • 自动故障转移到下一个可用凭据
  • 多凭据格式下 Token 刷新后自动回写到源文件

Region 配置

支持多级 Region 配置,分别控制 Token 刷新和 API 请求使用的区域。

Auth Region(Token 刷新)优先级: 凭据.authRegion > 凭据.region > config.authRegion > config.region

API Region(API 请求)优先级: 凭据.apiRegion > config.apiRegion > config.region

代理配置

支持全局代理和凭据级代理,凭据级代理会覆盖该凭据产生的所有出站连接(API 请求、Token 刷新、额度查询)。

代理优先级凭据.proxyUrl > config.proxyUrl > 无代理

凭据 proxyUrl行为
具体 URL(如 http://proxy:8080socks5://proxy:1080使用凭据指定的代理
direct显式不使用代理(即使全局配置了代理)
未配置(留空)回退到全局代理配置

凭据级代理示例:

[
   {
      "refreshToken": "凭据A:使用自己的代理",
      "authMethod": "social",
      "proxyUrl": "socks5://proxy-a.example.com:1080",
      "proxyUsername": "user_a",
      "proxyPassword": "pass_a"
   },
   {
      "refreshToken": "凭据B:显式不走代理(直连)",
      "authMethod": "social",
      "proxyUrl": "direct"
   },
   {
      "refreshToken": "凭据C:使用全局代理(或直连,取决于 config.json)",
      "authMethod": "social"
   }
]

认证方式

客户端请求本服务时,支持两种认证方式:

  1. x-api-key Header

    x-api-key: sk-your-api-key
    
  2. Authorization Bearer

    Authorization: Bearer sk-your-api-key
    

环境变量

可通过环境变量配置日志级别:

RUST_LOG=debug ./target/release/kiro-rs

API 端点

标准端点 (/v1)

端点方法描述
/v1/modelsGET获取可用模型列表
/v1/messagesPOST创建消息(对话)
/v1/messages/count_tokensPOST估算 Token 数量

Claude Code 兼容端点 (/cc/v1)

端点方法描述
/cc/v1/messagesPOST创建消息(缓冲模式,确保 input_tokens 准确)
/cc/v1/messages/count_tokensPOST估算 Token 数量(与 /v1 相同)

/cc/v1/messages/v1/messages 的区别

  • /v1/messages:实时流式返回,message_start 中的 input_tokens 是估算值
  • /cc/v1/messages:缓冲模式,等待上游流完成后,用从 contextUsageEvent 计算的准确 input_tokens 更正 message_start,然后一次性返回所有事件
  • 等待期间会每 25 秒发送 ping 事件保活

Thinking 模式

支持 Claude 的 extended thinking 功能:

{
  "model": "claude-sonnet-4-20250514",
  "max_tokens": 16000,
  "thinking": {
    "type": "enabled",
    "budget_tokens": 10000
  },
  "messages": [...]
}

工具调用

完整支持 Anthropic 的 tool use 功能:

{
  "model": "claude-sonnet-4-20250514",
  "max_tokens": 1024,
  "tools": [
    {
      "name": "get_weather",
      "description": "获取指定城市的天气",
      "input_schema": {
        "type": "object",
        "properties": {
          "city": {"type": "string"}
        },
        "required": ["city"]
      }
    }
  ],
  "messages": [...]
}

模型映射

Anthropic 模型Kiro 模型
*sonnet*claude-sonnet-4.5
*opus*(含 4.5/4-5)claude-opus-4.5
*opus*(其他)claude-opus-4.6
*haiku*claude-haiku-4.5

Admin(可选)

config.json 配置了非空 adminApiKey 时,会启用:

  • Admin API(认证同 API Key)

    • GET /api/admin/credentials - 获取所有凭据状态
    • POST /api/admin/credentials - 添加新凭据
    • DELETE /api/admin/credentials/:id - 删除凭据
    • POST /api/admin/credentials/:id/disabled - 设置凭据禁用状态
    • POST /api/admin/credentials/:id/priority - 设置凭据优先级
    • POST /api/admin/credentials/:id/reset - 重置失败计数
    • GET /api/admin/credentials/:id/balance - 获取凭据余额
  • Admin UI

    • GET /admin - 访问管理页面(需要在编译前构建 admin-ui/dist

注意事项

  1. 凭证安全: 请妥善保管 credentials.json 文件,不要提交到版本控制
  2. Token 刷新: 服务会自动刷新过期的 Token,无需手动干预
  3. WebSearch 工具: 当 tools 列表仅包含一个 web_search 工具时,会走内置 WebSearch 转换逻辑

项目结构

kiro-rs/
├── src/
│   ├── main.rs                 # 程序入口
│   ├── http_client.rs          # HTTP 客户端构建
│   ├── token.rs                # Token 计算模块
│   ├── debug.rs                # 调试工具
│   ├── test.rs                 # 测试
│   ├── model/                  # 配置和参数模型
│   │   ├── config.rs           # 应用配置
│   │   └── arg.rs              # 命令行参数
│   ├── anthropic/              # Anthropic API 兼容层
│   │   ├── router.rs           # 路由配置
│   │   ├── handlers.rs         # 请求处理器
│   │   ├── middleware.rs       # 认证中间件
│   │   ├── types.rs            # 类型定义
│   │   ├── converter.rs        # 协议转换器
│   │   ├── stream.rs           # 流式响应处理
│   │   └── websearch.rs        # WebSearch 工具处理
│   ├── kiro/                   # Kiro API 客户端
│   │   ├── provider.rs         # API 提供者
│   │   ├── token_manager.rs    # Token 管理
│   │   ├── machine_id.rs       # 设备指纹生成
│   │   ├── model/              # 数据模型
│   │   │   ├── credentials.rs  # OAuth 凭证
│   │   │   ├── events/         # 响应事件类型
│   │   │   ├── requests/       # 请求类型
│   │   │   ├── common/         # 共享类型
│   │   │   ├── token_refresh.rs # Token 刷新模型
│   │   │   └── usage_limits.rs # 使用额度模型
│   │   └── parser/             # AWS Event Stream 解析器
│   │       ├── decoder.rs      # 流式解码器
│   │       ├── frame.rs        # 帧解析
│   │       ├── header.rs       # 头部解析
│   │       ├── error.rs        # 错误类型
│   │       └── crc.rs          # CRC 校验
│   ├── admin/                  # Admin API 模块
│   │   ├── router.rs           # 路由配置
│   │   ├── handlers.rs         # 请求处理器
│   │   ├── service.rs          # 业务逻辑服务
│   │   ├── types.rs            # 类型定义
│   │   ├── middleware.rs       # 认证中间件
│   │   └── error.rs            # 错误处理
│   ├── admin_ui/               # Admin UI 静态文件嵌入
│   │   └── router.rs           # 静态文件路由
│   └── common/                 # 公共模块
│       └── auth.rs             # 认证工具函数
├── admin-ui/                   # Admin UI 前端工程(构建产物会嵌入二进制)
├── tools/                      # 辅助工具
├── Cargo.toml                  # 项目配置
├── config.example.json         # 配置示例
├── docker-compose.yml          # Docker Compose 配置
└── Dockerfile                  # Docker 构建文件

技术栈

License

MIT

致谢

本项目的实现离不开前辈的努力:

本项目部分逻辑参考了以上的项目, 再次由衷的感谢!