jasminnanda/kirogo

GitHub: jasminnanda/kirogo

一个零依赖的 Go 自托管代理,将 Kiro 订阅模型通过 OpenAI/Anthropic 兼容 API 暴露给各类 AI 编程工具使用。

Stars: 0 | Forks: 0

kirogo

在任何 AI 编程工具中使用你的 Kiro 订阅

一个自托管代理,通过 OpenAIAnthropic 兼容的 API 暴露 Kiro (Amazon Q Developer / AWS CodeWhisperer) 模型 ——
因此 Cursor、Claude Code、Cline、Continue、Zed 和 Aider 都能直接使用。单个静态 Go 二进制文件,零依赖。

[![CI](https://img.shields.io/github/actions/workflow/status/jasminnanda/kirogo/ci.yml?branch=main&style=for-the-badge&label=CI)](https://github.com/jasminnanda/kirogo/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge)](LICENSE) [![Go](https://img.shields.io/badge/Go-1.24%2B-00ADD8?style=for-the-badge&logo=go&logoColor=white)](https://go.dev) [![Dependencies](https://img.shields.io/badge/dependencies-0-success?style=for-the-badge)](go.mod) [![Tests](https://img.shields.io/badge/tests-1082%20passing-brightgreen?style=for-the-badge)](#-development) 快速开始 · 模型 · 客户端 · 推理 · 配置 · 内部机制
``` Cursor ─┐ ┌─ Claude Opus 5 Claude Code├─┐ ┌─┤ GPT 5.6 Cline ─┘ │ OpenAI / Anthropic JSON │ │ Qwen3 Coder ├──────────► kirogo :8000 ──────────┤ │ GLM 5 Zed ─┐ │ vnd.amazon │ │ DeepSeek Aider ─┴─┘ .eventstream └─┤ MiniMax └─ + whatever your plan adds ```
你的 Kiro 订阅已经包含了 Claude、GPT、Qwen、GLM、DeepSeek 和 MiniMax 模型 —— 但仅在 Kiro 自己的编辑器中可用。kirogo 将相同的模型目录置于所有其他工具已经通用的两种 API 背后,通过读取 Kiro IDE 或 `kiro-cli` 已经在你机器上写入的凭据来工作。除了你已经在进行的调用外,不会有任何数据离开你的机器。 ## ✨ 功能 | | | |:--|:--| | 🔌 **两种 API** | OpenAI `/v1/chat/completions` 和 Anthropic `/v1/messages`,支持流式和非流式 | | 📦 **零依赖** | 仅使用 Go 标准库。`go.mod` 没有 `require` 块 | | ⚡ **单一静态二进制文件** | 7.5 MB,无需 runtime,无需解释器,无需 Docker | | 🛠️ **完整的工具调用** | 支持往返、并行调用、流式参数增量,同时支持两种 API | | 🧠 **原生推理** | 真实的 thinking 块及签名重放,非模拟 | | 👁️ **视觉** | 两种 API 均支持图像输入 | | 🎚️ **模型名称中的 effort** | `claude-opus-5:max` —— 大多数客户端选择 effort 的唯一方式 | | 🔄 **实时目录** | 模型来自*你的*账户,因此当你获得新模型时当天即可使用 | | ✂️ **强制执行 `max_tokens`** | 后端没有此类参数,因此 kirogo 自行应用上限 | | 🔐 **零配置认证** | 自动查找你的 Kiro 登录信息。只读读取 kiro-cli 的 SQLite | ## 🤖 模型 无论你的计划包含什么 —— 没有任何内容是硬编码的。当今典型账户包含: | 模型 | Context | 倍率 | 推理 effort | |:--|--:|--:|:--| | `claude-opus-5` | 1M | 2.2x | low → max, 默认 high | | `claude-opus-4.8` | 1M | 2.2x | low → max, 默认 high | | `claude-opus-4.7` | 1M | 2.2x | low → max, 默认 xhigh | | `claude-opus-4.6` | 1M | 2.2x | low → max, 默认 high | | `claude-opus-4.5` | 200K | 2.2x | — | | `claude-sonnet-5` | 1M | 1.3x | low → max, 默认 high | | `claude-sonnet-4.6` | 1M | 1.3x | low → max, 默认 high | | `claude-sonnet-4.5` | 200K | 1.3x | — | | `claude-sonnet-4` | 200K | 1.3x | — | | `claude-haiku-4.5` | 200K | 0.4x | — | | `gpt-5.6-sol` | 272K | 2.4x | none → max, 默认 high | | `gpt-5.6-terra` | 272K | 1.2x | none → max, 默认 high | | `gpt-5.6-luna` | 272K | 0.6x | none → max, 默认 high | | `qwen3-coder-next` | 256K | **0.05x** | — | | `glm-5` | 200K | 0.5x | — | | `deepseek-3.2` | 164K | 0.25x | — | | `minimax-m2.5` | 196K | 0.25x | — | | `minimax-m2.1` | 196K | 0.15x | — | | `auto` | 1M | 1x | — | ## 🚀 快速开始 **1** · 安装 [Kiro](https://kiro.dev),登录一次,然后关闭它。这将生成一个 kirogo 能够自动找到的 token。 **2** · 使用 Go 1.24 或更高版本安装它: ``` go install github.com/jasminnanda/kirogo/cmd/kirogo@latest ```
没有 Go 工具链,或者喜欢从源码构建?
从 [Releases](https://github.com/jasminnanda/kirogo/releases) 获取预构建的二进制文件 —— 支持 Linux、macOS 和 Windows 的 amd64 和 arm64 架构,静态编译,无需安装任何东西。 或者自己构建: ``` git clone https://github.com/jasminnanda/kirogo.git && cd kirogo CGO_ENABLED=0 go build -trimpath -ldflags="-s -w" -o kirogo ./cmd/kirogo ``` 交叉编译通常是常规的单行命令,并且 CI 会在每次推送时构建所有五个目标: ``` GOOS=darwin GOARCH=arm64 go build -o kirogo-macos-arm64 ./cmd/kirogo GOOS=windows GOARCH=amd64 go build -o kirogo.exe ./cmd/kirogo ```
**3** · 运行它: ``` PROXY_API_KEY=pick-a-long-random-string kirogo ``` ``` INFO credentials loaded source="auto-discovered credentials file" flow=kiro-desktop INFO model catalog loaded models=19 default_model=auto INFO kirogo listening addr=127.0.0.1:8000 models=19 ``` **4** · 将你的编辑器指向 `http://127.0.0.1:8000`,大功告成。 ## 🔌 连接你的编辑器
Cursor
Settings → Models → 添加一个 OpenAI 兼容的 provider。 - **Base URL** · `http://127.0.0.1:8000/v1` - **API key** · 你的 `PROXY_API_KEY` 手动添加带有 `:level` 后缀的模型名称,例如 `claude-opus-5:max`。请使用 `auto-kiro` 而不是 `auto`。
Claude Code
``` export ANTHROPIC_BASE_URL=http://127.0.0.1:8000 export ANTHROPIC_AUTH_TOKEN=your-proxy-api-key export ANTHROPIC_MODEL=claude-opus-5 claude ``` 端到端使用 Anthropic 接口:`count_tokens`、带有签名重放的 thinking 块,以及 `input_json_delta` 工具流式传输。
Cline / Roo Code
选择 **OpenAI Compatible** provider。 - **Base URL** · `http://127.0.0.1:8000/v1` - **API key** · 你的 `PROXY_API_KEY` - **Model** · `claude-opus-5:xhigh`
Continue
``` models: - name: Kiro Opus 5 provider: openai model: claude-opus-5:xhigh apiBase: http://127.0.0.1:8000/v1 apiKey: your-proxy-api-key ```
Zed
``` { "language_models": { "openai": { "api_url": "http://127.0.0.1:8000/v1", "available_models": [{ "name": "claude-opus-5:max", "max_tokens": 1000000 }] } } } ```
Aider
``` export OPENAI_API_BASE=http://127.0.0.1:8000/v1 export OPENAI_API_KEY=your-proxy-api-key aider --model openai/claude-opus-5:xhigh ```
curl
``` curl http://127.0.0.1:8000/v1/chat/completions \ -H "Authorization: Bearer $PROXY_API_KEY" -H 'Content-Type: application/json' \ -d '{"model":"claude-opus-5:max","messages":[{"role":"user","content":"hi"}]}' ```
## 🧠 推理 effort Kiro 使用命名的 effort 级别,而不是 token 预算。有三种方式可以选择,按优先级从高到低排列: ``` claude-opus-5:max # in the model name — works with any client reasoning_effort: "max" # OpenAI requests thinking.budget_tokens # Anthropic requests, bucketed to a level KIRO_EFFORT_LEVEL=max # default for everything ``` `/v1/models` 会为每个受支持的级别公布一个 `model:level` id,因此它们会显示在你编辑器的模型选择器中。如果模型不提供某个级别,它将被限制为该模型的默认值,而不是被拒绝。 ## 📡 Endpoints | | Path | | |:--|:--|:--| | `GET` | `/` · `/health` | 存活状态和状态检查。无需认证。 | | `GET` | `/v1/models` | 带有元数据和 effort 变体的模型列表。 | | `POST` | `/v1/chat/completions` | OpenAI chat。 | | `POST` | `/v1/messages` | Anthropic messages。 | | `POST` | `/v1/messages/count_tokens` | 本地估算,无上游调用。 | OpenAI 路由读取 `Authorization: Bearer`,Anthropic 路由读取 `x-api-key`。CORS 是开放的,因此浏览器工具可以正常工作。 ## 🔧 配置 优先级:Flags → 环境变量 → `.env` → 默认值。你实际会接触到的配置: | 变量 | 默认值 | | |:--|:--|:--| | `PROXY_API_KEY` | `kirogo` | 客户端密钥。如果保留默认值会发出警告。 | | `SERVER_HOST` · `SERVER_PORT` | `127.0.0.1` · `8000` | 监听地址。 | | `KIRO_CREDS_FILE` | 自动 | 凭据 JSON。`~` 会被展开。 | | `KIRO_EFFORT_LEVEL` | — | 默认推理 effort。 | | `KIRO_EXPOSE_EFFORT_VARIANTS` | `true` | 公布 `model:level` id。 | | `LOG_LEVEL` | `INFO` | `DEBUG` 会记录确切的上游 payload。 | Flags:`-host` `-port` `-dump-models` `-version`。所有 22 项设置都在 [`.env.example`](.env.example) 中;凭据来源和调优在 [docs/INTERNALS.md](docs/INTERNALS.md) 中。 ## 🧪 开发 ``` go build ./... # compile go test -race ./... # 520 test functions, 1082 cases go vet ./... && gofmt -l . ``` 测试**不会发起网络调用** —— 后端、凭据存储和时钟全都被替换了,因此测试套件可以离线且确定性地运行。大约 1 万行源代码对应 1.5 万行测试代码,分布在 9 个 package 中。 欢迎贡献 —— 参见 [CONTRIBUTING.md](CONTRIBUTING.md)。简短版本:测试是必须的,更改必须同时应用于两种 API 和两种流式模式,标识符使用英语。 ## 🔒 安全 kirogo 处理实时 AWS 凭据。请不要为安全问题公开提 issue —— 参见 [SECURITY.md](SECURITY.md)。 ## 📄 许可证 [MIT](LICENSE) © 2026 [Jasmin](https://github.com/jasminnanda) 一个独立的、从零开始的实现。该协议是通过逆向工程 Kiro IDE bundle 并针对实时服务验证行为得出的。 不隶属于 Amazon Web Services,也未获得其认可。"Kiro"、"Amazon Q" 和 "CodeWhisperer" 是 Amazon.com, Inc. 或其附属公司的商标。使用 kirogo 必须遵守你的 Kiro 或 AWS 服务条款。
标签:AI代理, API网关, EVTX分析, Go语言, LLM接入, OpenAI兼容, Petitpotam, SOC Prime, 代理服务, 开发工具, 日志审计, 漏洞利用检测, 程序破解