> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kodus.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 月度支出上限

> 当你的 BYOK 模型支出接近月度上限时收到提醒。仅提醒 —— 审查照常运行。

月度支出上限会监控你在 **BYOK 模型**上的花费,并在该支出接近你设定的上限时通知组织的 Owner。它是一个提前预警信号,而不是硬性阻断。

<Warning>
  **这是通知,不是上限。Kodus 在达到限额时绝不会阻断或暂停审查。** 超过 100% 之后,支出仍会在你的提供商账户上继续累积。要真正停止支出,请在**模型提供商**的控制台(OpenAI、Anthropic、Google 等)中设置硬性限额 —— 只有它能强制执行。请把 Kodus 的限额当作提前预警,好让提供商侧的上限不会突然袭击你。
</Warning>

## 它统计什么

* **仅 BYOK 模型。** 支出是针对你在 [Bring Your Own Key](/how_to_use/zh/byok) 中配置的模型统计的 —— 也就是你直接向提供商付费的那些密钥。Kodus 自己一侧运行的模型不计入。
* **按当前费率、逐模型计价。** 每个模型的 token 按该模型的当前费率计价。不存在快照 —— 如果某个模型的价格发生变化(目录更新或手动修改),该模型当月至今的用量会按新费率重新计算。切换到另一个模型不会重新计价你之前用的模型。
* **按自然月(UTC)。** 统计窗口从当月 1 日到次月 1 日。用量会在每月初自动归零为 \$0 —— 无需手动重置。

<Info>
  为了让数字只反映 Kodus 的部分,我们建议**你给 Kodus 的 API 密钥仅用于 Kodus**。如果同一个密钥还驱动其他工具,提供商侧的用量 —— 以及基于它的任何估算 —— 会把两者混在一起。
</Info>

## 如何配置

该限额位于 BYOK 页面,在你的 Main 和 Fallback 模型下方。

<Steps>
  <Step title="打开 BYOK 设置">
    前往 [app.kodus.io/organization/byok](https://app.kodus.io/organization/byok),滚动到 **Monthly spend limit**。(该区块在你配置了至少一个 BYOK 模型后才会出现。)
  </Step>

  <Step title="核对模型价格">
    每个已配置的模型都会显示其每 token 价格 —— **input、output、cache read、cache write** —— 单位为 **\$ / 1M tokens**。**Catalog** 徽标表示 Kodus 自动找到了价格;**Manual** 徽标表示是你自己填写的。
  </Step>

  <Step title="修正没有价格的模型">
    带 **No price** 徽标的模型无法自动定价(自定义或未收录的模型)。请照着提供商的价格页填写其每 token 价格。在所有模型都有价格之前,你无法启用该限额 —— Kodus 无法定价的模型也无法追踪其支出。
  </Step>

  <Step title="设置月度限额并启用">
    以美元填入你的上限,打开 **Enable spend alerts**,然后点击 **Save spend limit**。
  </Step>
</Steps>

### 模型定价

<AccordionGroup>
  <Accordion title="目录价格 vs. 手动价格">
    Kodus 会在公开的价格目录中查找每个模型,并预填找到的值(**Catalog**)。如果目录有误或缺少该模型,请填入正确的每 token 费率 —— 徽标会变为 **Manual**,并改用你的数值。
  </Accordion>

  <Accordion title="把手动价格恢复为目录价格">
    在你覆盖过的模型上点击 **Revert to catalog price**。输入框会重置为目录值,徽标也变回 **Catalog**。此后该模型将重新跟随实时的目录价格(不存在冻结快照)。
  </Accordion>

  <Accordion title="为什么模型会显示 'No price'">
    自定义端点、自托管模型,或目录尚未收录的模型没有自动价格。手动填入费率即可让它们可被追踪。在此之前,该限额无法启用。
  </Accordion>
</AccordionGroup>

## 提醒

启用后,Kodus 大约**每小时一次**检查你当月至今的支出,并在你跨过每个阈值时,通过**邮件和应用内通知中心**通知组织的 **Owner**:

| 阈值          | 你会收到什么                             |
| ----------- | ---------------------------------- |
| **50%**     | 预警提醒                               |
| **75%**     | 预警提醒                               |
| **90%**     | 预警提醒                               |
| **100%**    | "已达到限额"提醒                          |
| **超过 100%** | 一条最终提示"你已超出限额 —— 本月不会再通知",随后本月保持静默 |

每个阈值**每月最多触发一次**,因此你不会为同一级别收到重复提醒。进入新的月份后会自动重置。

<Note>
  在整个过程中审查都照常运行 —— 50% 时、100% 时,以及超出之后。唯一发生的事情就是这些提醒。
</Note>

你可以在[通知设置](https://app.kodus.io/organization/notifications)的 **Spend Limit** 中管理它们的送达位置(以及哪些角色会收到)。

## 准确性

支出是一个**估算值**。它由你的审查所消耗的 token 以及 BYOK 页面上显示的每 token 价格推算而来 —— 不会与提供商账单精确到分。

<CardGroup cols={2}>
  <Card title="保持价格准确" icon="tags">
    把目录价格与提供商的价格页对照,修正偏差。订阅制/统一费率套餐尤其无法与按 token 的目录定价对上。
  </Card>

  <Card title="密钥只用于 Kodus" icon="key">
    专用密钥意味着 Kodus 看到的用量就是 Kodus 造成的用量 —— 不会有别的东西把数字撑大。
  </Card>
</CardGroup>

<Warning>
  **并发审查可能短暂超出上限。** 在接近限额时同时审查大量 PR,可能会在下一次每小时检查捕捉到之前,把当月支出推过 100% 一点。这是预期行为 —— 这也是真正的上限应该设在提供商那边的又一个理由。
</Warning>

## 常见问题

<AccordionGroup>
  <Accordion title="达到限额会停止我的审查吗?">
    不会。它只是通知。要停止支出,请在你的模型提供商的账单控制台中设置硬性限额。
  </Accordion>

  <Accordion title="哪些内容计入支出?">
    只有你的 **BYOK** 模型上的 token 用量,按 BYOK 页面上显示的当前费率计价。Kodus 托管的模型不计入。
  </Accordion>

  <Accordion title="支出什么时候重置?">
    每个自然月的 1 日(UTC)。当月至今的支出归零为 \$0,所有阈值提醒自动重新武装。
  </Accordion>

  <Accordion title="我在月中切换了模型 —— 支出会跳变吗?">
    不会。支出是**按模型**追踪的:每个模型的 token 按*该模型*的费率计价。如果你在模型 A 上花了 \$50 然后切换到模型 B,模型 A 的用量仍然是 \$50 —— 切换到 B 绝不会把 A 的 token 按 B 的费率重新计价。你的总额只是随着 B 之后的用量而增长。

    唯一会让已发生用量被重新计价的,是**同一个模型的价格**发生变化 —— 当价格目录更新了某个模型的费率,或你在 BYOK 页面编辑了它的手动价格时,该模型当月至今的用量会按新费率重新计算(不存在冻结快照)。
  </Accordion>

  <Accordion title="为什么我无法启用该限额?">
    每个已配置的模型都必须有价格(目录或手动),且月度限额必须大于 \$0。修正所有 **No price** 的模型,设置一个正数金额,然后保存。
  </Accordion>

  <Accordion title="谁会收到提醒?">
    你组织的 Owner,在应用内的通知中心收到。可在通知设置的 **Spend Limit** 中调整路由。
  </Accordion>
</AccordionGroup>
