资讯动态

Kiro 基于 Code OSS(VS Code 开源版本)构建,采用“规范驱动开发“(Spec-Driven Development)理念

发布时间:2026/10/22 7:29:46 来源:尧图企业网站定制
首先需要澄清一点Claude 接入 Kiro 鬼点子计划并不是指 Anthropic 的 Claude 模型官方接入了某个名为鬼点子计划的项目。实际情况是Kiro 鬼点子计划是亚马逊云科技AWS面向开发者发起的一项创意编程活动鼓励开发者使用 Kiro IDE 做出看似荒诞、实则惊艳的 Demo冠军最高可获得价值 $2400 的 Kiro 订阅权益报名截止日期为 2026 年 10 月 22 日。而 Kiro 本身是 AWS 于 2025 年 7 月推出的 Agentic IDE内置了 Anthropic Claude 全系列模型包括 Opus 4.7、Sonnet 4 等因此开发者可以通过 Kiro 间接使用 Claude 模型进行 AI 辅助编程。社区中广泛讨论的Claude 接入 Kiro实质是指通过反向代理或 API 转换的方式将 Kiro 内置的 Claude 模型额度暴露为标准 API 接口从而在 Claude Code、Cursor 等第三方工具中调用 Kiro 的模型能力。本报告将从技术原理、Python 实现、代码解析与亮点四个维度展开分析。二、技术架构与核心原理2.1 Kiro 的模型生态Kiro 基于 Code OSSVS Code 开源版本构建采用规范驱动开发Spec-Driven Development理念核心能力包括Spec 模式将自然语言需求转化为结构化需求文档、系统设计和任务清单适合复杂项目Vibe 模式对话式即时编码适合快速原型开发多模型支持内置 Claude Opus 4.7、Sonnet 4、Titan、Llama 等模型支持自动路由MCP 协议通过 Model Context Protocol 连接外部工具和数据源Kiro 采用 Credit 额度池计费Free 套餐每月 50 creditsPro 套餐 $20/月含 1000 credits。2.2 反向代理接入的核心思路社区方案的通用架构如下Claude Code / Cursor / 其他工具 ↓ 反向代理层AIClient-2-API / kiro2api / Kiro Router Desktop ↓ Kiro APIOAuth 凭证认证 ↓ Claude 模型Opus / Sonnet / Haiku核心原理是Kiro IDE 内置了 Claude 模型的 API 访问权限通过 OAuth 凭证认证。开源反向代理工具负责将 Kiro 的私有协议转换为标准的 Anthropic API 格式或 OpenAI API 格式使得任何支持标准接口的客户端都能透明调用。2.3 技术挑战协议转换Kiro 使用私有 API 协议需转换为 Anthropic/v1/messages或 OpenAI/v1/chat/completions格式流式响应Claude Code 等工具依赖 SSEServer-Sent Events流式输出代理层需正确处理凭证管理Kiro 使用 OAuth Token需实现自动刷新机制多账号池化支持多账号轮询以突破单账号额度限制三、Python 实现Kiro-Claude 代理服务器以下是一个简化的 Python 反向代理实现演示核心思路 Kiro-Claude 反向代理服务器 将 Kiro 内置的 Claude 模型能力转换为标准 Anthropic API 格式 importasyncioimportjsonimportloggingfromtypingimportAsyncGenerator,Dict,List,OptionalimporthttpxfromfastapiimportFastAPI,Header,HTTPException,Requestfromfastapi.responsesimportStreamingResponse# 配置日志logging.basicConfig(levellogging.INFO)loggerlogging.getLogger(__name__)appFastAPI(titleKiro-Claude Proxy)# 配置区 KIRO_API_BASEhttps://api.kiro.dev/v1# Kiro API 基地址示意KIRO_OAUTH_TOKENyour_kiro_oauth_token# Kiro OAuth TokenPROXY_PORT8080# 模型映射Anthropic 模型名 - Kiro 内部模型标识MODEL_MAPPING{claude-opus-4-7:kiro-opus-4.7,claude-sonnet-4:kiro-sonnet-4,claude-haiku-4:kiro-haiku-4,}# 核心类 classKiroClient:Kiro API 客户端负责与 Kiro 后端通信def__init__(self,oauth_token:str):self.oauth_tokenoauth_token self.clienthttpx.AsyncClient(base_urlKIRO_API_BASE,timeouthttpx.Timeout(60.0,connect10.0),headers{Authorization:fBearer{oauth_token},Content-Type:application/json,},)asyncdefcheck_token_valid(self)-bool:验证 OAuth Token 是否有效try:respawaitself.client.get(/auth/me)returnresp.status_code200exceptExceptionase:logger.error(fToken 验证失败:{e})returnFalseasyncdefcreate_completion(self,model:str,messages:List[Dict[str,str]],stream:boolFalse,max_tokens:Optional[int]None,temperature:float0.7,)-Dict: 调用 Kiro API 生成回复非流式 Args: model: 模型名称Anthropic 格式 messages: 消息列表 stream: 是否流式输出 max_tokens: 最大输出 token 数 temperature: 温度参数 Returns: 标准 Anthropic API 格式的响应 # 模型名转换kiro_modelMODEL_MAPPING.get(model)ifnotkiro_model:raiseValueError(f不支持的模型:{model})# 构建 Kiro API 请求体payload{model:kiro_model,messages:self._convert_messages(messages),stream:stream,max_tokens:max_tokensor4096,temperature:temperature,}logger.info(f请求模型:{model}-{kiro_model})respawaitself.client.post(/chat/completions,jsonpayload)resp.raise_for_status()# 转换为 Anthropic 格式returnself._convert_response(resp.json(),model)asyncdefcreate_completion_stream(self,model:str,messages:List[Dict[str,str]],max_tokens:Optional[int]None,temperature:float0.7,)-AsyncGenerator[str,None]: 流式调用 Kiro API Yields: SSE 格式的数据片段 kiro_modelMODEL_MAPPING.get(model)ifnotkiro_model:raiseValueError(f不支持的模型:{model})payload{model:kiro_model,messages:self._convert_messages(messages),stream:True,max_tokens:max_tokensor4096,temperature:temperature,}asyncwithself.client.stream(POST,/chat/completions,jsonpayload)asresp:resp.raise_for_status()asyncforlineinresp.aiter_lines():ifline.startswith(data: ):# 转换 Kiro 流式格式为 Anthropic SSE 格式try:chunkjson.loads(line[6:])sse_chunkself._convert_stream_chunk(chunk,model)yieldfdata:{json.dumps(sse_chunk)}\n\nexceptjson.JSONDecodeError:continue# 发送结束标记yielddata: [DONE]\n\n# 格式转换工具方法 staticmethoddef_convert_messages(messages:List[Dict])-List[Dict]:将 Anthropic 消息格式转换为 Kiro 内部格式converted[]formsginmessages:rolemsg.get(role,user)contentmsg.get(content,)# Anthropic 使用 user/assistantKiro 可能使用 user/modelkiro_roleuserifroleuserelseassistantconverted.append({role:kiro_role,content:content})returnconvertedstaticmethoddef_convert_response(kiro_resp:Dict,original_model:str)-Dict:将 Kiro 响应转换为 Anthropic API 格式return{id:fkiro-{kiro_resp.get(id,unknown)},object:chat.completion,created:kiro_resp.get(created),model:original_model,choices:[{index:0,message:{role:assistant,content:kiro_resp[choices][0][message][content],},finish_reason:kiro_resp[choices][0].get(finish_reason,stop),}],usage:kiro_resp.get(usage,{}),}staticmethoddef_convert_stream_chunk(kiro_chunk:Dict,original_model:str)-Dict:转换流式响应片段return{id:fkiro-{kiro_chunk.get(id,stream)},object:chat.completion.chunk,created:kiro_chunk.get(created),model:original_model,choices:[{index:0,delta:{role:assistantifkiro_chunk.get(is_first)elseNone,content:kiro_chunk.get(content,),},finish_reason:kiro_chunk.get(finish_reason),}],}# FastAPI 路由 kiro_clientKiroClient(oauth_tokenKIRO_OAUTH_TOKEN)app.get(/health)asyncdefhealth_check():健康检查端点validawaitkiro_client.check_token_valid()return{status:okifvalidelsetoken_invalid}app.post(/v1/messages)asyncdefanthropic_messages(request:Request): 兼容 Anthropic /v1/messages 接口 这是 Claude Code 等工具使用的标准接口 bodyawaitrequest.json()modelbody.get(model,claude-sonnet-4)messagesbody.get(messages,[])streambody.get(stream,False)max_tokensbody.get(max_tokens,4096)temperaturebody.get(temperature,0.7)try:ifstream:# 流式响应asyncdefevent_generator():asyncforchunkinkiro_client.create_completion_stream(modelmodel,messagesmessages,max_tokensmax_tokens,temperaturetemperature,):yieldchunkreturnStreamingResponse(event_generator(),media_typetext/event-stream,headers{Cache-Control:no-cache,Connection:keep-alive,X-Accel-Buffering:no,# 禁用 Nginx 缓冲},)else:# 非流式响应resultawaitkiro_client.create_completion(modelmodel,messagesmessages,streamFalse,max_tokensmax_tokens,temperaturetemperature,)returnresultexceptValueErrorase:raiseHTTPException(status_code400,detailstr(e))excepthttpx.HTTPStatusErrorase:logger.error(fKiro API 错误:{e.response.status_code}-{e.response.text})raiseHTTPException(status_codee.response.status_code,detailfKiro API 错误:{e.response.text},)exceptExceptionase:logger.error(f服务器内部错误:{e},exc_infoTrue)raiseHTTPException(status_code500,detailstr(e))app.post(/v1/chat/completions)asyncdefopenai_chat_completions(request:Request): 兼容 OpenAI /v1/chat/completions 接口 方便 Cursor、Continue 等支持 OpenAI 格式的工具接入 bodyawaitrequest.json()modelbody.get(model,claude-sonnet-4)messagesbody.get(messages,[])streambody.get(stream,False)# 复用 Anthropic 接口的逻辑内部做格式适配anthropic_messages[]formsginmessages:anthropic_messages.append({role:msg[role],content:msg[content]})# 构造 Anthropic 格式请求并转发fake_requestRequest(scoperequest.scope)fake_request._bodyjson.dumps({model:model,messages:anthropic_messages,stream:stream,max_tokens:body.get(max_tokens,4096),temperature:body.get(temperature,0.7),}).encode()returnawaitanthropic_messages(fake_request)# 启动入口 if__name____main__:importuvicorn uvicorn.run(app,host0.0.0.0,portPROXY_PORT)四、代码解析4.1 架构设计亮点分层设计代码采用清晰的三层架构Client 层KiroClient封装与 Kiro API 的通信细节包括认证、请求构建、响应转换Adapter 层格式转换方法负责 Anthropic/OpenAI/Kiro 三种协议之间的双向转换API 层FastAPI 路由暴露标准接口处理 HTTP 请求/响应这种设计使得各层职责单一便于独立测试和扩展。4.2 双协议兼容代码同时实现了/v1/messagesAnthropic 原生接口Claude Code 直接使用/v1/chat/completionsOpenAI 兼容接口Cursor、Continue 等工具可直接接入这意味着一套代理服务可以同时服务多种客户端降低部署成本。4.3 流式响应处理流式输出是 AI 编程工具的核心体验。代码中使用httpx.AsyncClient.stream()建立长连接逐行解析 Kiro 的 SSE 输出实时转换为 Anthropic 格式并通过StreamingResponse返回设置X-Accel-Buffering: no防止 Nginx 缓冲导致延迟4.4 可扩展性设计模型映射表MODEL_MAPPING新增模型只需添加一行配置Token 验证check_token_valid()方法可用于健康检查和自动告警多账号池化可扩展KiroClient为连接池实现多账号轮询和故障转移五、技术亮点总结亮点说明协议桥接将 Kiro 私有协议转换为行业标准 API 格式实现一次接入多端复用零侵入集成客户端无需修改代码只需更换 API Base URL 即可使用流式低延迟异步流式处理确保首字响应时间TTFT接近原生体验成本优化利用 Kiro 订阅额度替代按 Token 计费的 Anthropic 官方 API日常编码场景性价比更高安全可控OAuth Token 本地管理请求日志可审计适合企业内网部署六、注意事项与合规提醒服务条款使用反向代理方案需仔细阅读 Kiro 和 Anthropic 的服务条款确保不违反使用限制区域限制自 2026 年 5 月 1 日起中国区用户无法使用 Kiro 中的 Claude 模型和 Auto agent稳定性风险社区方案依赖 Kiro 内部 API接口变更可能导致代理失效官方替代方案AWS 已推出官方的 Agent Plugin for AWS Serverless支持在 Claude Code 中直接安装使用企业用户建议优先考虑官方方案七、结语Claude 接入 Kiro本质上是开发者生态中常见的能力复用与协议桥接实践。Kiro 鬼点子计划则体现了 AWS 鼓励开发者探索 AI 编程边界的开放态度。无论是通过社区反向代理方案还是官方插件体系核心目标都是让开发者更高效地利用 AI 能力。对于技术研究而言理解其背后的协议转换、流式处理和架构设计思路比单纯白嫖额度更有价值。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑