kirolink:基于Go的AWS SSO令牌代理,无缝桥接Claude Code与内部CodeWhisperer

news2026/5/7 18:14:36
1. 项目概述与核心价值如果你和我一样日常开发中重度依赖像 Claude Code 这样的 AI 编程助手但同时又因为公司或项目使用了 Kiro 这类基于 AWS SSO 的内部身份认证平台而头疼那么kirolink这个工具的出现绝对能让你眼前一亮。简单来说它是一个用 Go 语言编写的轻量级命令行工具核心功能是充当一个“翻译官”和“桥梁”。它能自动读取你本地缓存的 Kiro 认证令牌然后在本机启动一个符合 Anthropic API 规范的代理服务器。这样一来所有原本需要直接调用 Anthropic 官方 API 的工具比如 Claude Code现在都可以无缝地、零配置地通过这个本地代理去调用你公司内部的 AWS CodeWhisperer 服务。这解决了什么痛点想象一下你每次打开 IDE 想用 Claude Code都得手动去 AWS 控制台复制临时令牌再设置一堆环境变量不仅繁琐而且令牌过期后还得重复操作严重打断了开发的心流。kirolink的价值就在于自动化这个流程一次登录 Kiro工具帮你搞定令牌的读取、刷新和 API 格式的转换让你能像使用原版 Claude 一样流畅地使用内部的 CodeWhisperer 能力。它尤其适合那些在受控网络环境或使用私有化 AI 模型的企业开发者将复杂的认证和协议转换问题简化为一个./kirolink server命令。2. 核心工作原理与架构拆解要理解kirolink为什么能工作我们需要拆解其背后的几个关键组件和它们之间的协作流程。这不仅仅是“一个脚本启动了服务器”而是一套精巧的、针对特定工作流的自动化方案。2.1 身份认证链从 Kiro 到本地令牌整个流程的起点是 Kiro 的 AWS SSO 认证。Kiro 本质上是一个身份代理当你执行kiro login时它会与公司的身份提供商如 Okta, Azure AD交互完成 OAuth 2.0 或 SAML 流程最终从 AWS SSO 服务获取一组短期有效的访问凭证。这些凭证通常包含一个accessToken用于 API 调用和一个refreshToken用于在accessToken过期后获取新的令牌。kirolink的聪明之处在于它没有尝试重新实现复杂的登录流程而是直接“寄生”在标准的 AWS SSO 缓存机制上。AWS CLI 和 SDK 会将获取到的令牌以 JSON 格式缓存在用户主目录的一个固定路径下~/.aws/sso/cache/。Kiro 兼容这一机制因此也会将令牌写入类似kiro-auth-token.json的文件中。kirolink的read和refresh命令其核心操作就是读写这个文件。这种设计保证了工具的无状态性和安全性——它不存储你的长期密码只操作已经存在的、短期有效的令牌文件。2.2 协议转换层Anthropic API 与 CodeWhisperer API 的“翻译”这是kirolink最核心的技术部分。Anthropic 的 Messages API (/v1/messages) 和 AWS CodeWhisperer 的 API (/generateAssistantResponse) 在请求格式、响应结构以及流式传输Server-Sent Events, SSE的实现上完全不同。请求转换当代理服务器收到一个标准的 Anthropic 格式的 POST 请求时包含model,messages,max_tokens等字段kirolink需要将其“翻译”成 CodeWhisperer 后端能理解的格式。这包括模型映射将 Anthropic 的模型别名如claude-sonnet-4-5映射或忽略因为后端服务可能只认一种内部模型。消息重组将messages数组可能包含system,user,assistant角色转换为 CodeWhisperer 预期的对话历史结构。参数适配将max_tokens转换为maxTokensToSample并处理temperature,top_p等参数的映射关系。响应转换收到 CodeWhisperer 的响应后kirolink再将其包装回 Anthropic API 的标准格式。对于流式响应它需要实时地将后端的数据块转换为 SSE 格式data: {...}这对于实现 Claude Code 中的“打字机”效果至关重要。错误处理它还需要处理并转换两套 API 不同的错误码和消息格式确保客户端如 Claude Code能收到可读的错误提示。2.3 本地代理服务器轻量且专注kirolink使用 Go 的标准库net/http启动一个本地 HTTP 服务器。它的路由设计非常精简只暴露了三个端点完美模拟了 Anthropic API 的最小可用子集POST /v1/messages: 核心的聊天补全端点。GET /v1/models: 返回一个预定义的模型别名列表让客户端认为它在与一个支持多模型的 Anthropic 服务对话。GET /health: 用于健康检查简化了运维和监控。这种极简设计降低了维护成本也减少了攻击面。服务器默认运行在8080端口避免了与常用服务端口的冲突。3. 从零开始的完整部署与配置指南了解了原理我们来一步步实现它。以下操作基于 macOS/Linux 环境Windows 用户只需在命令提示符或 PowerShell 上做对应调整。3.1 环境准备与源码获取首先确保你的系统已经安装了 Go 1.23.3 或更高版本。你可以通过go version来验证。# 克隆项目仓库 git clone https://github.com/alexandephilia/kiro-claude-proxy.git cd kiro-claude-proxy # 检查项目结构 ls -la你应该能看到kirolink.go这个主文件以及可能的go.mod、README.md等。注意由于项目依赖可能变化建议在构建前先运行go mod tidy来同步和清理依赖项确保所有必要的库都已就位。3.2 构建可执行文件Go 的编译过程非常简单直接。在项目根目录下执行go build -o kirolink kirolink.go这条命令会编译kirolink.go及其所有依赖并生成一个名为kirolink的独立可执行文件。这个文件包含了完整的运行时可以随意复制到任何同架构的机器上运行无需额外安装 Go 环境。3.3 前置条件获取 Kiro 认证令牌这是最关键的一步。kirolink本身不负责登录它依赖于已存在的令牌文件。登录 Kiro使用你公司提供的 Kiro CLI 工具完成登录。命令通常类似于kiro login --profile your-profile-name按照提示完成浏览器认证流程。验证令牌文件登录成功后检查令牌文件是否已生成ls -la ~/.aws/sso/cache/ | grep kiro你应该能看到一个类似kiro-auth-token.json的文件。使用kirolink read进行验证运行以下命令确认kirolink能正确读取令牌./kirolink read如果成功你会看到 JSON 格式的输出其中包含accessToken和refreshToken等字段。请务必谨慎处理此命令的输出避免将令牌内容泄露到日志或截图中。3.4 配置客户端环境变量为了让 Claude Code 或其他客户端找到我们的代理需要设置环境变量。kirolink提供了export命令来自动生成设置命令。在 macOS/Linux (bash/zsh) 上最方便的方法是使用命令替换command substitution直接执行输出eval $(./kirolink export)这条命令会执行./kirolink export其输出是类似export ANTHROPIC_BASE_URL...的 shell 命令然后由eval在当前 shell 会话中执行它们。在 Windows 上直接运行./kirolink export它会贴心地同时输出 CMD 和 PowerShell 两种格式的命令你只需复制对应版本的命令行并执行即可。执行后可以通过echo $ANTHROPIC_BASE_URL(Linux/macOS) 或echo %ANTHROPIC_BASE_URL%(Windows CMD) 来验证变量是否已设置。默认情况下ANTHROPIC_BASE_URL会被设置为http://localhost:8080而ANTHROPIC_API_KEY会被设置为当前有效的accessToken。3.5 启动代理服务器并验证现在可以启动代理服务了。启动服务器使用默认端口8080./kirolink server如果 8080 端口被占用可以指定另一个端口例如 9000./kirolink server 9000重要如果使用了自定义端口你必须手动更新ANTHROPIC_BASE_URL环境变量例如export ANTHROPIC_BASE_URLhttp://localhost:9000因为export命令的输出是固定的。验证服务器运行服务器启动后会监听指定端口。你可以通过健康检查端点快速验证curl http://localhost:8080/health如果返回OK说明服务器已就绪。验证模型列表端点测试 Anthropic 兼容的/v1/models端点curl http://localhost:8080/v1/models你应该能收到一个 JSON 响应其中列出了kirolink支持的所有模型别名。3.6 集成 Claude Code 客户端这是最后一步也是收获成果的一步。确保 Claude Code 已安装在你的 IDE如 VS Code中安装 Claude Code 扩展。可选运行配置助手kirolink提供了一个claude子命令可以自动修改 Claude Code 的本地配置文件通常位于~/.claude.json将其标记为已完成初始设置并添加一个kirolinktrue的标志。./kirolink claude注意此命令会直接修改你的配置文件。建议首次运行时使用或者提前备份你的~/.claude.json文件。重启 IDE 或 Reload Window为了让 Claude Code 扩展重新读取环境变量和配置最好重启你的 IDE 或者执行“Reload Window”命令。开始使用现在当你打开一个代码文件使用 Claude Code 的快捷命令如CmdI时它发出的请求将会被发送到你本地运行的kirolink代理进而转发到公司的 CodeWhisperer 服务。你应该能看到和直接使用 Anthropic API 几乎无延迟的代码补全和建议。4. 高级用法与集成场景kirolink的价值不仅在于服务 Claude Code。任何能够配置 HTTP 客户端和 API 密钥的工具理论上都可以通过它来接入内部的 CodeWhisperer。4.1 与 OpenClaw 开源框架集成OpenClaw 是一个支持多后端、可扩展的开源 AI 助手框架。你可以将kirolink配置为 OpenClaw 的一个自定义 Anthropic 提供商。在你的 OpenClaw 配置文件例如openclaw.json中添加如下配置节{ providers: { kiro-claude: { api: anthropic-messages, baseURL: http://localhost:8080, apiKey: your-kiro-access-token-here, defaultModel: claude-sonnet-4-5, timeout: 120 } }, defaultProvider: kiro-claude }配置说明api: 必须指定为anthropic-messages以匹配kirolink实现的协议。baseURL: 指向你本地运行的kirolink服务器地址和端口。apiKey: 这里可以填写从./kirolink read获取的accessToken。更佳实践是让 OpenClaw 从ANTHROPIC_API_KEY环境变量中读取这需要参考 OpenClaw 的文档进行配置。defaultModel: 指定默认使用的模型别名需在kirolink支持的列表内。timeout: 根据网络情况适当调整超时时间。这样配置后你就可以在 OpenClaw 中使用kiro-claude这个提供商来调用内部的 AI 能力。4.2 处理令牌刷新与长期运行AWS SSO 的accessToken有效期通常很短例如1小时。kirolink的refresh命令就是用来解决这个问题的。手动刷新当令牌过期客户端请求开始返回 401 错误时你可以手动执行./kirolink refresh这个命令会使用缓存文件中的refreshToken向认证服务器申请一个新的accessToken并更新本地的缓存文件。之后你需要重启kirolink server或者设计一个更复杂的机制让服务器重载令牌。自动化刷新思路对于需要 7x24 小时运行的场景可以结合cronLinux/macOS或 Task SchedulerWindows创建一个定时任务。例如每 50 分钟运行一次refresh命令。然而更健壮的方式是修改kirolink的服务器代码使其在每次请求前检查令牌的有效期或在收到 401 响应时自动触发刷新流程。这属于进阶改造范畴。4.3 直接调用代理 API 进行测试除了通过 GUI 客户端你也可以直接用curl或任何 HTTP 客户端测试代理功能这对于调试和编写脚本非常有用。# 发送一个简单的非流式请求 curl -X POST http://localhost:8080/v1/messages \ -H Content-Type: application/json \ -H x-api-key: $(cat ~/.aws/sso/cache/kiro-auth-token.json | jq -r .accessToken) \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: 用Python写一个快速排序函数}], max_tokens: 500 } # 发送一个流式请求 (Server-Sent Events) curl -X POST http://localhost:8080/v1/messages \ -H Content-Type: application/json \ -H Accept: text/event-stream \ -d { model: claude-sonnet-4-5, messages: [{role: user, content: 解释一下什么是RESTful API}], max_tokens: 300, stream: true }在流式请求中你会看到以data:开头的行源源不断地输出直到遇到[DONE]事件。5. 故障排查与常见问题实录在实际使用中你可能会遇到一些问题。下面是我在部署和使用过程中遇到的一些典型情况及其解决方法。5.1 令牌相关问题问题现象可能原因解决方案运行./kirolink read时报错file not found1. 未执行kiro login。2. 令牌文件路径非默认。3. Kiro 的缓存文件名不匹配。1. 确保先使用kiro login完成认证。2. 检查~/.aws/sso/cache/目录下是否存在名称包含kiro和token的 JSON 文件。3. 可以尝试grep -l accessToken ~/.aws/sso/cache/*.json查找正确的文件。服务器启动正常但 Claude Code 返回认证错误1. 令牌已过期。2.ANTHROPIC_API_KEY环境变量设置错误或未生效。1. 运行./kirolink refresh刷新令牌并重启kirolink server。2. 在终端中执行echo $ANTHROPIC_API_KEY确认值正确并确保 Claude Code 是在设置了该环境变量的终端中启动的 IDE。对于 macOS 的 App可能需要通过.zprofile或.bash_profile全局设置。./kirolink refresh失败1.refreshToken本身已过期通常有效期更长但可能失效。2. 网络问题或认证服务不可用。1. 这是最麻烦的情况需要重新进行完整的kiro login流程。2. 检查网络连接并确认公司的 SSO 服务状态正常。5.2 网络与服务器问题问题现象可能原因解决方案无法启动服务器提示port already in use默认的 8080 端口被其他进程占用。使用./kirolink server 9000指定另一个空闲端口并相应更新ANTHROPIC_BASE_URL。Claude Code 连接超时或无响应1.kirolink server未运行。2. 防火墙阻止了本地回环地址localhost的端口访问。3. Claude Code 未使用配置的环境变量。1. 在终端确认kirolink server进程正在运行。2. 尝试用curl http://localhost:8080/health从命令行测试如果失败检查系统防火墙设置。3. 彻底关闭 IDE 并重新启动确保环境变量被加载。请求速度慢或响应时间长1. 公司内部 CodeWhisperer 服务端延迟高。2. 本地代理增加了微小开销。3. 网络波动。1. 此问题非kirolink所能解决属于后端服务问题。2. Go 编写的代理开销极低通常可忽略。可通过对比直接调用如果可能和通过代理调用的耗时来定位。5.3 功能与兼容性问题问题现象可能原因解决方案Claude Code 的某些高级功能如“解释代码”不工作kirolink可能只实现了 Anthropic Messages API 的一个子集未完全覆盖 Claude Code 使用的所有参数或端点。检查kirolink项目的 Issue 或源码看是否支持该功能。可以尝试在 Claude Code 设置中禁用某些高级特性或使用更基础的聊天补全功能。流式输出打字机效果不生效1. 请求未设置stream: true。2. 客户端或代理的 SSE 实现有兼容性问题。1. 确保客户端请求正确。2. 使用上文中的curl流式请求示例进行测试如果curl可以收到流式数据则问题在客户端。/v1/models返回的列表与后端实际能力不符kirolink的模型别名列表是硬编码的用于兼容客户端并不代表后端真实支持这么多模型。这是预期行为。选择一个列表中存在的别名使用即可kirolink在转发时可能会将其映射为后端唯一的模型标识符。5.4 实操心得与避坑指南环境变量作用域陷阱在 macOS 上如果你从启动台Launchpad打开 VS Code它不会继承你在终端Terminal里设置的环境变量。最可靠的方法是在~/.zshrc或~/.bash_profile中永久设置ANTHROPIC_*变量或者总是从终端命令行用code .命令启动 VS Code。令牌文件权限确保~/.aws/sso/cache/kiro-auth-token.json的权限是安全的如600防止其他用户读取你的令牌。长期运行与监控对于生产环境或重要工作流考虑将kirolink server包装为一个系统服务如使用systemd或launchd并配置日志轮转和失败重启机制。理解“代理”的局限性kirolink是一个协议转换代理它的功能受限于两方面一是它实现的 Anthropic API 子集的完整度二是后端 CodeWhisperer 服务本身的能力。如果后端不支持某些特性如特定的工具调用kirolink也无法无中生有。参与开源改进如果你发现 bug 或有功能需求可以考虑在项目的 GitHub 仓库提交 Issue 或 Pull Request。例如实现自动令牌刷新、支持更多 Anthropic API 参数、提供 Docker 镜像等都是很有价值的贡献方向。这个工具的精妙之处在于它用很小的代价解决了一个具体的、高频的痛点。它不试图做大而全的网关而是精准地扮演了“适配器”的角色。通过深入理解其工作原理并妥善处理上述常见问题你可以将它无缝地集成到自己的开发工作流中显著提升在内部 AI 基础设施下的开发体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2592254.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…