Skip to main content
BYOK(自带密钥)是 Kodus 在所有套餐中使用 LLM 的默认方式 — 社区版、团队版和企业版都一样。您连接自己的提供商账号、启用想要的模型,并为每个任务选择运行哪个模型。您直接向提供商付费,Kodus 从不对 token 加价,也从不会以明文形式看到您的密钥。

如何对应到各套餐

BYOK 在社区版免费、在团队版包含(每活跃开发 $10/月,另外支付您自己的 token 费用)、在企业版是两个选项之一(另一个是 Kodus 托管的 API 密钥)。

BYOK 如何工作

BYOK 是提供商优先的:您连接一次提供商,把想要的模型添加到该提供商上,然后将这些模型路由到 Kody 的各个任务。/byok 界面有三个标签页:

提供商

用您的密钥连接提供商,并在每个提供商上启用模型。计数徽章显示您已连接的提供商数量。

路由

选择每个任务运行哪个模型 — 为所有任务设一个默认模型、一个可选的备用模型,以及按 agent 的覆盖。

预算

为您已连接的所有模型设置一个可选的月度开销上限。
谁可以编辑此项。 BYOK 页面仅限 Owner — 连接、测试和删除密钥需要 Owner 角色。其他角色(Billing Manager、Repo Admin、Contributor)无法访问 /byok。参见工作区角色。

连接提供商

1

打开 BYOK 设置

访问 app.kodus.io/byok。在全新的工作区中,您会看到连接您的第一个提供商。
2

选择一个提供商

提供商网格分为两部分:
  • 提供商 — 只需一个 API 密钥即可连接的一等提供商(OpenAI、Anthropic、Google AI Studio、OpenRouter、Novita……)。
  • 自定义 — 指向您自己端点或运行任意模型的提供商:OpenAI-compatible、Anthropic-compatible、Google Vertex AI 和 Amazon Bedrock。它们带有 Custom endpoint 标记。
已经连接的提供商会显示Connected · N models。
3

添加模型

选择一个提供商会打开它的Add a model 表单。粘贴一次 API 密钥(之后添加到该提供商的每个模型都会复用它),然后选择模型:
  • 如果 Kodus 能列出该提供商的模型,您会得到一个下拉菜单。
  • 否则(自定义端点、自托管,或未配置平台密钥时),请输入精确的模型 ID。
自定义端点(OpenAI-compatible / Anthropic-compatible)还会先要求填写一个基础 URL。
4

调整高级设置(可选)

在高级设置下:thinking/reasoning、温度、最大输出 token 数、最大输入 token 数,以及最大并发请求数。对大多数提供商来说默认值都是合理的 — 关于 Kodus 针对每个模型锁定或隐藏的字段,请参见推理和温度。
5

测试并保存

点击测试以探测提供商,或点击测试并保存以运行测试并在成功后持久化。您可以往该提供商上添加任意数量的模型 — 密钥只需粘贴一次。
您可以随时从提供商标签页添加另一个提供商。每个提供商保留自己的密钥;在已连接的提供商上启用更多模型时永远不会再次索要密钥。

保存前先测试

测试按钮会在配置可能破坏真实审查之前先验证它。它的具体行为取决于提供商: 在聊天探测这条路径上,Test 还会根据模型自身的规则验证您配置的调优参数,并返回一个提前的、具体的错误,而不是保存一个模型会静默忽略的配置:
  • 一个 always-thinking 模型不会遵守的温度(它被固定为 1 — 参见温度)。
  • 在一个始终推理且无法禁用推理的模型上把推理设为 Off。
由于聊天类提供商现在会实际调用真实模型,模型 ID 中的拼写错误会在 Test 阶段被捕获,而不是等到您第一次审查时 — 响应会返回 Model not found。

路由:每个任务运行哪个模型

一旦您连接了两个或更多模型,路由标签页就决定每个任务运行什么。路由是扁平的:在您覆盖之前,每个任务都使用默认模型。
1

策略

今天生效的是 Manual · you choose(手动 · 您选择)。Auto · Kodus optimizes(自动 · Kodus 优化)即将推出。
2

默认值

  • Model for all tasks(所有任务的模型) — 除非被覆盖,否则每个任务都使用的那个模型。
  • Fallback(备用,可选) — 一个不同的模型,当任务的模型失败时(密钥错误或过期、没有额度,或提供商宕机,在其自身重试之后),Kody 会在它上面重跑一次调用。
3

按 agent

不同的 Kody 任务(代码审查、Kody Rules、聊天、摘要等等)可以各自运行不同的模型 — 用更贵的模型做深度审查,用更便宜的模型做摘要。无法执行某个任务的模型会在那一行被禁用并带有提示,从而在您保存之前就阻止它。
点击Save routing 以持久化。Reset agents to default 会把每个按 agent 的覆盖都还原为默认,并清除备用(默认模型本身保留)。下方一个只读的Per repository 面板会镜像在代码审查设置中设定的任何按仓库的模型覆盖。
只连接了一个模型时,路由会被跳过 — 每个任务都使用那个模型。请连接第二个模型,让路由变得有意义。

选择模型

您的提供商所提供的任何模型都可用。如果您不确定从哪里开始,以下是代码审查的稳妥选择:

Claude Sonnet / Opus

最佳平衡 / 旗舰质量。 Anthropic 的自适应扩展思考和强大的跨文件分析。密钥:console.anthropic.com。

Gemini Pro

最大上下文。 Google 的旗舰模型 — 在大型 PR 和 monorepo 上最强。密钥:aistudio.google.com/apikey。

GPT(最新)

快速且稳定。 OpenAI 的旗舰产品线 — 低延迟可靠、知识面广。密钥:platform.openai.com/api-keys。

Kimi / GLM(编码方案)

通过订阅最便宜。 Moonshot 的 Kimi 和 Z.ai 的 GLM 提供统一定价的编码方案,可封顶月度开销。参见下方的连接 Kimi 和 GLM。
**我们的默认推荐:**从 Claude Sonnet 开始以获得最佳整体体验。如果成本是优先项,GLM Coding Plan 或 Kimi Code Plan 提供统一月费的订阅。请输入您的提供商所文档化的精确模型 ID — Kodus 会据此推导出显示名称。

连接 Kimi (Moonshot) 和 GLM (Z.ai)

Moonshot 和 Z.ai 都在按 token 付费的开发者 API 之外,各自提供一个位于不同端点上的订阅方案。每个方案都是一个独立的账号,拥有各自的密钥 — 请选择与您手头密钥匹配的基础 URL。
Kimi Code Plan 文档记录的上限为 30 个并发请求 — 请设置 maxConcurrentRequests=30。始终推理的 Kimi 变体(例如 kimi-k2p7-code、kimi-k3)会把温度锁定为 1,且无法关闭推理 — 参见温度。

支持的提供商

**最适合:**最新 GPT 模型和可靠性能。获取 API 密钥:
  1. 访问 OpenAI API Keys
  2. 为 Kodus 创建新密钥
  3. 添加计费信息

推理 / 扩展思考

Add a model 表单在高级设置下提供一个 Thinking 开关(Off / Low / Medium / High / Custom)。可用选项反映模型实际能做什么:
  • 无法推理的模型被锁定为 Off 并带有说明。
  • 仅在某些级别推理的模型(例如 GPT-5 的 medium/high)会禁用无效的级别。
  • 默认推理的模型会以 Medium 作为合理的起点。

预设级别

当您选择 Low / Medium / High 时,Kodus 会自动将该级别转换为每个提供商的原生格式:
Kimi 和 GLM 目前将推理暴露为单一的开/关标志。选择 Low、Medium 或 High 都会发出相同的 payload(启用 thinking)。始终推理的变体(Kimi k2p7-code/k3、GLM-5.3)会无条件推理 — 它们无法被设为 Off,表单会禁用该选项。

自定义 JSON 覆盖

在 Thinking 开关中选择 Custom 会显示一个 JSON 文本框。直接粘贴提供商选项 — Kodus 会自动把它们包裹在当前提供商的命名空间下。您无需了解 Vercel AI SDK 的路由规则。 在以下情况使用:
  • 您需要为 Claude 设置特定的 budgetTokens 值(而不是预设的 effort 映射)
  • 您希望针对 OpenAI-compatible 提供商按模型启用/禁用 thinking
  • 您想设置推理之外的字段 — 缓存、服务档位、安全设置、user 标签等。覆盖会被合并进 providerOptions,因此任何适配器字段都可以透传
  • 提供商发布了一个 Kodus 尚未包裹的新字段

示例(直接粘贴 — 无需命名空间)

将 Claude 的思考预算精确覆盖为 20,000 tokens:
启用提示缓存(非推理示例):

手动指定命名空间(进阶用户)

如果您的 JSON 顶层已经以一个已知的命名空间键开头(即下方映射表中的任意键),Kodus 会保持原样不动。当您想混合多个提供商命名空间或希望显式书写时很有用:
在底层,Kodus 使用以下命名空间映射:

注意事项

  • 仅支持有效的 JSON。 遗漏逗号或尾随逗号会破坏解析,Kodus 会忽略覆盖。
  • 优先级:JSON 覆盖会完全替换 effort 预设对应的命名空间块 — 如果您覆盖了 anthropic.thinking 但漏掉 anthropic.effort,那个字段就不会被发送。OpenRouter routing(固定提供商 / 允许回退)是唯一例外:它会与您在 openrouter 下的覆盖进行深度合并。
  • 未知提供商 = 不自动包裹。 如果您的 BYOK 提供商不在上表中,Kodus 会原样透传 JSON。

温度

温度位于高级设置下,该字段会根据模型的规则自适应 — 规则由提供商设定,而非表单猜测:
在聊天探测类提供商上,Test 会根据这些规则验证您设置的温度,并在保存前返回错误 — 这样您就永远不会持久化一个模型不会遵守的值。

固定 OpenRouter 上游提供商

OpenRouter 是一个路由器 — 当您请求某个模型(例如 moonshotai/kimi-k2)时,它会将调用转发到若干上游提供商之一(Moonshot 直连、Together、Groq、Fireworks、Novita……)。每次调用都可能落到不同的后端。这很方便,但会引入隐性的差异:
  • 质量漂移 — 上游以不同精度运行(FP8、INT4、完整),对相同提示会给出微妙不同的输出
  • 工具调用不一致 — 一些后端对函数调用的支持方式不同,会导致格式错误的工具使用
  • 推理格式差异 — 一个上游支持 reasoning_effort,另一个只支持 thinking.enabled,还有的两者都忽略
  • 延迟波动 — 随着路由变化,p50 可能在两次调用之间从 800ms 跳到 4s
  • 速率限制意外 — 您会在自己未显式选择的后端上撞到配额

如何固定

当您的 BYOK 提供商是 OpenRouter 时,Advanced settings 面板会显示一个 OpenRouter routing 区块,包含两个字段:
  • Pin providers (in order) — 上游名称的逗号分隔列表(例如 moonshot, together)。OpenRouter 会按顺序尝试,并使用第一个可用的。
  • Allow fallbacks — 关闭时,若没有任何被固定的提供商可用,请求会硬失败。开启时(默认),OpenRouter 可以回退到任意其他服务该模型的上游。
为了获得稳定的配置,请只固定一个提供商并关闭回退(Pin: moonshot、Allow fallbacks: off)。请求将始终命中同一个上游,或响亮地失败 — 不会有隐性的质量变化。代价是一旦那个上游宕机就完全没有韧性;请搭配一个不同的路由备用模型(例如 Anthropic)来吸收中断。
上游名称必须与 OpenRouter 的目录一致。请在 openrouter.ai/docs/features/provider-routing 上查看提供商标签 — 常见值包括 moonshot、together、groq、fireworks、novita。
在底层,Kodus 会把以下内容发送到 Vercel AI SDK 的调用中:

进阶:原始 JSON 覆盖

如果您需要 order 和 allow_fallbacks 之外的字段(例如 ignore、data_collection、require_parameters),请在 Advanced settings 中将 Thinking 切换到 Custom,并粘贴完整的路由 payload — 它会与任何推理配置一起被合并进 providerOptions:

并发与速率限制

maxConcurrentRequests 字段(高级设置下)限制 Kodus 并行向您的提供商发送的未完成请求数。多数情况下默认值即可 — 但有严格并发限制的订阅方案需要显式设置。

应设置的值

何时调整

上调

  • Moonshot/OpenRouter 上有高档位充值,并希望在大型 PR 上获得更高吞吐
  • 把 GLM Coding Plan 升到了 Max 并希望用满 30 并发预算
  • 多文件 PR 上审查感觉被串行化,而您并未看到 429

下调

  • 您在审查日志中看到 429 或 Too much concurrency 错误
  • 提供商仪表板提示速率限制警告
  • 希望在更多 PR 之间节省 Coding Plan 窗口(5 小时/每周)
并发 vs. RPM vs. TPM。 maxConcurrentRequests 仅限制并行在途请求。许多提供商还另行强制 RPM(每分钟请求数)和 TPM(每分钟 token 数)限制。如果并发看起来没问题但您在撞 RPM/TPM,通常解法是升级档位或跨时间分散负载 — 而不是调 maxConcurrentRequests。
与备用模型的交互。 当任务的模型撞到 429 并且 Kody 故障转移到路由备用模型时,备用模型自身的 maxConcurrentRequests 生效。将备用配置到不同提供商上并设一个宽松的值,是在主模型使用紧张订阅时吸收突发流量的好办法。

最佳实践

安全

专用密钥

为 Kodus 创建独立的 API 密钥,便于审计使用情况和轮换密钥。

定期轮换

定期轮换密钥,并在 BYOK 设置中更新。

监控使用

检查您的提供商仪表板是否有异常模式。

安全存储

切勿将密钥提交到代码仓库。Kodus 对密钥进行静态和传输中加密存储。

路由策略

  • 为默认和备用使用不同的提供商(例如默认用 Anthropic,备用用 Google)。可防止提供商特定的中断。
  • 带有紧张并发限制的订阅(GLM Coding Plan Lite/Pro、Kimi Code Plan)不适合单独使用 — 请配对一个按 token 付费的备用,避免突发 PR 把资源吃光。
  • 在按 agent 下,把繁重任务(深度代码审查)路由到您最强的模型,把轻量任务(摘要、聊天)路由到更便宜的模型。

故障排查

  • 复制密钥时不要带多余的空格、引号或尾随换行。
  • 确认计费已启用且账户有余额。
  • 对于 GLM Coding Plan / Kimi Code Plan 密钥,请确认基础 URL 与方案匹配 — 订阅密钥不适用于开发者 API 端点,反之亦然。
  • 对于聊天探测类提供商(Anthropic-compatible、OpenAI-compatible、Novita),Test 会向模型发送一次真实请求,因此错误或拼写有误的模型 ID 会在这里失败 — 这是预期行为,也比在审查时才失败更好。
  • 请从提供商的仪表板复制精确的模型 ID。有些提供商使用深层路径(例如 Fireworks accounts/fireworks/models/kimi-k2p7-code)或对版本有不同拼法(k2p7 与 k2.7)。
  • 验证基础 URL 与提供商完全匹配(对某些提供商来说,尾部斜杠很重要)。
  • 对于 OpenAI-compatible 提供商,端点通常是 {baseURL}/chat/completions(Kodus 会补上该路径)。
  • 有些模型固定温度或始终推理(Kimi k2p7-code/k3、GLM-5.3;Claude 4.7+/GPT-5 则完全移除温度)。Test 会根据模型的规则验证您的调优参数并返回具体消息 — 请照做(让温度保持未设置或使用要求的值;不要在始终推理的模型上把推理设为 Off)。参见温度。
  • 在高级设置中降低最大并发请求数。
  • 在 GLM Coding Plan Lite/Pro 上,保持 1 个并发。如果需要更高吞吐,升级到 Max(30 并发)。
  • 在 Kimi Code Plan 上,文档上限为 30 并发。
  • 如果 Kodus 通过 .env(自托管固定模式)配置,BYOK 界面会显示一个蓝色信息横幅,标明当前活动的提供商/模型 — 出于安全考虑,密钥不会显示。
  • 连接一个模型并保存会覆盖 .env 配置。
  • 推理会增加 token 消耗。如果成本飙升,将 Thinking 从 Medium 降到 Low,或在按 agent 下把繁重任务路由到更便宜的模型。
  • 查看提供商仪表板中的按模型分解,并在预算标签页下设置上限。

常见问题

可以。更改会在下一次审查生效 — 无需重新部署。
如果配置了路由备用模型,审查会自动切换到备用。没有备用时审查会失败并返回错误。请始终配置备用模型。
每个任务都使用默认模型,除非您在路由中按 agent 覆盖它。如果任务的模型失败(速率限制、5xx、超时、密钥错误),Kody 会在备用模型上重试一次。您只为真正处理调用的那个提供商付费。
可以 — 这正是路由 → 按 agent 的用途。把深度代码审查路由到强模型,把摘要或聊天路由到更便宜的模型。要让路由有意义,您至少需要连接两个模型。
是的。密钥在静态和传输中加密,从不以明文记录。BYOK 状态端点从不返回原始密钥。
可以 — 通过 OpenAI Compatible 提供商(位于自定义下)。输入端点的基础 URL、它暴露的模型 ID,以及占位 API 密钥(多数自托管运行时忽略密钥请求头,但仍要求提供)。