jasminnanda/kirogo
GitHub: jasminnanda/kirogo
一个零依赖的 Go 自托管代理,将 Kiro 订阅模型通过 OpenAI/Anthropic 兼容 API 暴露给各类 AI 编程工具使用。
Stars: 0 | Forks: 0
kirogo
在任何 AI 编程工具中使用你的 Kiro 订阅
一个自托管代理,通过 OpenAI 和 Anthropic 兼容的 API 暴露 Kiro (Amazon Q Developer / AWS CodeWhisperer) 模型 ——
因此 Cursor、Claude Code、Cline、Continue、Zed 和 Aider 都能直接使用。单个静态 Go 二进制文件,零依赖。
[](https://github.com/jasminnanda/kirogo/actions/workflows/ci.yml)
[](LICENSE)
[](https://go.dev)
[](go.mod)
[](#-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, 代理服务, 开发工具, 日志审计, 漏洞利用检测, 程序破解