Kilo Gateway 提供商集成设计
概述
本文档概述了将“Kilo Gateway”集成为 OpenClaw 的一流提供商的设计方案,参考现有的 OpenRouter 实现。Kilo Gateway 使用兼容 OpenAI 的 completions API,但基地址不同。设计决策
1. 提供商命名
建议:kilocode
理由:
- 与用户配置示例中使用的
kilocode提供商键吻合 - 与现有提供商命名惯例保持一致(如
openrouter、opencode、moonshot) - 简短且易记
- 避免与通用的 “kilo” 或 “gateway” 术语混淆
kilo-gateway — 拒绝,因为代码库中较少使用带连字符的名称,且 kilocode 更精简。
2. 默认模型引用
建议:kilocode/anthropic/claude-opus-4.6
理由:
- 基于用户配置示例
- Claude Opus 4.5 是一款功能强大的默认模型
- 明确指定模型避免依赖自动路由
3. 基地址配置
建议:使用硬编码默认值且允许配置覆盖- 默认基地址:
https://api.kilo.ai/api/gateway/ - 可配置: 通过
models.providers.kilocode.baseUrl实现
4. 模型扫描
建议:初期不设专门模型扫描端点 理由:- Kilo Gateway 作为 OpenRouter 的代理,模型动态变化
- 用户可手动在配置中设置模型
- 若日后 Kilo Gateway 开放
/models端点,可再添加扫描支持
5. 特殊处理
建议:继承 OpenRouter 对 Anthropic 模型的处理逻辑 由于 Kilo Gateway 代理于 OpenRouter,适用相同特殊处理规则:anthropic/*模型适用缓存 TTL 资格anthropic/*模型附加参数(如 cacheControlTtl)- 转录策略遵循 OpenRouter 模式
需修改文件
核心凭证管理
1. src/commands/onboard-auth.credentials.ts
新增:
2. src/agents/model-auth.ts
在 resolveEnvApiKey() 的 envMap 中添加:
3. src/config/io.ts
在 SHELL_ENV_EXPECTED_KEYS 中添加:
配置应用
4. src/commands/onboard-auth.config-core.ts
新增函数:
认证选项系统
5. src/commands/onboard-types.ts
将 AuthChoice 类型中添加:
OnboardOptions 中添加:
6. src/commands/auth-choice-options.ts
向 AuthChoiceGroupId 添加:
AUTH_CHOICE_GROUP_DEFS 添加:
buildAuthChoiceOptions() 中添加:
7. src/commands/auth-choice.preferred-provider.ts
添加映射:
认证选项应用
8. src/commands/auth-choice.apply.api-providers.ts
添加导入:
kilocode-api-key 的处理:
CLI 注册
9. src/cli/program/register.onboard.ts
新增 CLI 选项:
非交互式引导
10. src/commands/onboard-non-interactive/local/auth-choice.ts
新增对 kilocode-api-key 的支持:
导出更新
11. src/commands/onboard-auth.ts
新增导出:
特殊处理(可选)
12. src/agents/pi-embedded-runner/cache-ttl.ts
为 Anthropic 模型添加 Kilo Gateway 支持:
13. src/agents/transcript-policy.ts
新增 Kilo Gateway 处理(同 OpenRouter):
配置结构
用户配置示例
认证配置结构
测试考虑
-
单元测试:
- 测试
setKilocodeApiKey()是否写入正确的 profile - 测试
applyKilocodeConfig()是否设置正确默认值 - 测试
resolveEnvApiKey("kilocode")返回正确的环境变量
- 测试
-
集成测试:
- 测试使用
--auth-choice kilocode-api-key的引导流程 - 测试非交互式引导支持
--kilocode-api-key - 测试以
kilocode/前缀选择模型
- 测试使用
-
端到端测试:
- 通过 Kilo Gateway 进行实际 API 调用(在线测试)
迁移说明
- 现有用户无需迁移
- 新用户可直接使用
kilocode-api-key认证选项 - 现有使用
kilocode提供商的手动配置继续工作
未来考虑
-
模型目录: 如果 Kilo Gateway 开放
/models端点,添加类似scanOpenRouterModels()的扫描支持 - OAuth 支持: 若 Kilo Gateway 支持 OAuth,则扩展认证系统
- 速率限制: 如有需要,考虑添加特定于 Kilo Gateway 的限流处理
-
文档: 在
docs/providers/kilocode.md添加设置和使用说明
变更汇总
| 文件 | 变更类型 | 说明 |
|---|---|---|
src/commands/onboard-auth.credentials.ts | 新增 | KILOCODE_DEFAULT_MODEL_REF、setKilocodeApiKey() |
src/agents/model-auth.ts | 修改 | 在 envMap 中添加 kilocode |
src/config/io.ts | 修改 | 增加 KILOCODE_API_KEY 到 shell 环境变量键 |
src/commands/onboard-auth.config-core.ts | 新增 | applyKilocodeProviderConfig()、applyKilocodeConfig() |
src/commands/onboard-types.ts | 修改 | 在 AuthChoice 中添加 kilocode-api-key,在选项中添加 kilocodeApiKey |
src/commands/auth-choice-options.ts | 修改 | 新增 kilocode 组和选项 |
src/commands/auth-choice.preferred-provider.ts | 修改 | 添加 kilocode-api-key 映射 |
src/commands/auth-choice.apply.api-providers.ts | 修改 | 添加 kilocode-api-key 的处理 |
src/cli/program/register.onboard.ts | 修改 | 添加 --kilocode-api-key 选项 |
src/commands/onboard-non-interactive/local/auth-choice.ts | 修改 | 添加非交互式处理 |
src/commands/onboard-auth.ts | 修改 | 新增导出函数 |
src/agents/pi-embedded-runner/cache-ttl.ts | 修改 | 增加 kilocode 支持 |
src/agents/transcript-policy.ts | 修改 | 添加 kilocode Gemini 处理 |