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

# 配置说明

> SteadyRenew 的环境变量和功能开关，覆盖本地优先、托管、支付、提醒、AI 录入和开放 API 部署。

# 配置说明

核心应用不需要环境变量。只在需要启用某个可选服务时添加对应变量。

## 环境变量

| 变量 | 用于 | 作用域 |
| - | - | - |
| `VITE_SUPABASE_URL` | Supabase 登录和云同步 | 浏览器 |
| `VITE_SUPABASE_ANON_KEY` | Supabase 登录和云同步 | 浏览器 |
| `SUPABASE_URL` | Functions 使用的 Supabase URL | 仅服务端 |
| `SUPABASE_PUBLISHABLE_KEY` | Functions 验证用户 access token | 仅服务端 |
| `SUPABASE_SECRET_KEY` | 定时通知、付费激活、开放 API 和 AI 录入配额 | 仅服务端 |
| `SUPABASE_SERVICE_ROLE_KEY` | `SUPABASE_SECRET_KEY` 的旧版兼容名 | 仅服务端 |
| `VITE_STRIPE_PUBLISHABLE_KEY` | 启用支付界面，不作为 checkout 授权依据 | 浏览器 |
| `STRIPE_SECRET_KEY` | 创建 Stripe checkout session | 仅服务端 |
| `STRIPE_WEBHOOK_SECRET` | 校验 Stripe webhook | 仅服务端 |
| `STRIPE_PRICE_ID` | 服务端允许购买的唯一 Stripe Price | 仅服务端 |
| `VITE_SITE_URL` | 首页、博客和 canonical 域名 | 浏览器/构建 |
| `VITE_APP_URL` | 应用入口；预览环境使用 `/app` | 浏览器/构建 |
| `VITE_DOCS_URL` | 多语言文档站点域名 | 浏览器/构建 |
| `SITE_URL` | Checkout 成功和取消回调地址 | 仅服务端 |
| `URL` | Netlify function 回调 URL | Netlify 提供 |
| `API_RATE_LIMIT_PER_MINUTE` | 两档相同，每账户每分钟请求数，默认 `60` | 仅服务端 |
| `API_MAX_ACTIVE_KEYS` | 两档相同，有效密钥数，默认 `5` | 仅服务端 |
| `API_FAILED_AUTH_RATE_LIMIT_PER_HOUR` | 每个客户端身份每小时失败 API Key 鉴权次数，默认 `300` | 仅服务端 |
| `API_RATE_LIMIT_RETENTION_HOURS` | 限流窗口定时清理前的保留时长，默认 `48` | 仅服务端 |
| `OPENROUTER_API_KEY` | 通过 OpenRouter 启用 AI 录入 | 仅服务端 |
| `ANTHROPIC_API_KEY` | 通过 Anthropic 启用 AI 录入 | 仅服务端 |
| `AI_PROVIDER` | 可选 provider 覆盖：`openrouter` 或 `anthropic` | 仅服务端 |
| `AI_MODEL` | AI 录入模型覆盖 | 仅服务端 |
| `AI_FALLBACK_MODELS` | OpenRouter fallback 模型，逗号分隔 | 仅服务端 |
| `OPENROUTER_SITE_URL` | 可选 OpenRouter referer；默认回退到 `SITE_URL` 或 `URL` | 仅服务端 |
| `OPENROUTER_APP_TITLE` | 可选 OpenRouter app title header | 仅服务端 |
| `AI_FREE_MONTHLY_PARSES` | 普通用户每月 AI 录入次数（仅成功解析计次），默认 `10`。旧名 `AI_FREE_DAILY_PARSES` 仍可作回退。 | 仅服务端 |
| `AI_PREMIUM_MONTHLY_PARSES` | Premium 用户每月 AI 录入次数（仅成功解析计次），默认 `300`。旧名 `AI_PREMIUM_DAILY_PARSES` 仍可作回退。 | 仅服务端 |
| `AI_MAX_INPUT_CHARS` | AI 录入文本长度上限，默认 `20000` | 仅服务端 |
| `AI_MAX_IMAGE_BYTES` | AI 录入图片大小上限，默认 `4194304` | 仅服务端 |
| `AI_MONTHLY_BUDGET_USD` | 工作区级月度 AI 录入预算，默认 `50` | 仅服务端 |
| `AI_INPUT_USD_PER_MTOK` | 每百万 input token 的成本估算 | 仅服务端 |
| `AI_OUTPUT_USD_PER_MTOK` | 每百万 output token 的成本估算 | 仅服务端 |

## 浏览器变量

以 `VITE_` 开头的变量会被打包进浏览器代码。不要把密钥放进这些变量。

浏览器变量只适合公开配置，例如 Supabase URL、Supabase anon key 和 Stripe publishable key。

## 服务端变量

仅服务端使用的变量需要配置在托管平台中，例如 Netlify environment variables。不要提交 service role key、Stripe secret key、webhook secret 或 AI provider key。

Functions 优先读取不带 `VITE_` 的服务端变量，并在迁移期兼容现有的 `VITE_SUPABASE_URL`、`VITE_SUPABASE_ANON_KEY`、`SUPABASE_SERVICE_ROLE_KEY` 和 `VITE_STRIPE_PRICE_ID`。其中 `VITE_STRIPE_PRICE_ID` 只作为旧版服务端回退值，浏览器代码不再读取它。

## 功能检测

应用会在运行时检查环境变量：

* Supabase 变量启用登录和云同步。
* Stripe 变量启用支付流程。
* 开放 API Key 依赖 Supabase 和 Netlify Functions；API 配额变量只用于覆盖默认值。
* AI 录入依赖 Supabase、Netlify Functions、AI 录入迁移，以及 `OPENROUTER_API_KEY` 或 `ANTHROPIC_API_KEY`。
* 缺少可选变量时，应用保持本地优先模式。

## Bark 设置

Bark 通知设置在应用界面中配置。用户需要提供 Bark server URL、device key 和提醒时间。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.