AI 录入
AI 录入允许已登录用户用自然语言描述订阅变更,或上传账单/截图。模型只返回一个待确认的结构化操作;应用会展示核对界面,只有用户确认后才写入数据。用户可以做什么
- 从一句话、收据、账单片段或截图中添加一个或多个订阅。
- 通过名称或 id 修改已有订阅。
- 一次请求批量修改多个订阅。
- 在核对后删除已有订阅。
- 在应用内确认、编辑、丢弃或撤销 AI 产生的操作。
必需托管服务
- Supabase auth,因为 AI 录入只对已登录用户开放。
- Supabase migrations 至少执行到
20260625000100_ai_budget_reservations.sql,因为每日配额和月度预算 RPC 必不可少。 - Netlify Functions,因为模型供应商 Key 只能放在服务端。
- OpenRouter 或 Anthropic 的 AI provider key。
Provider 变量
设置OPENROUTER_API_KEY 时,默认走 OpenRouter 低成本路径:
AI_PROVIDER 可省略。不设置时,服务端会在存在 OPENROUTER_API_KEY 时推断为 openrouter;否则使用 Anthropic 路径。
护栏变量
这些变量都只应配置在服务端:隐私边界
用户粘贴的文本或上传的截图只会为了本次识别发送给配置的模型供应商一次。Subscription Manager 不存储、不记录这些内容。数据库只保留:- 每个用户每日 AI 录入次数。
- 工作区级月度聚合 token 计数。
错误与回退
/.netlify/functions/ai-parse-subscriptions 常见错误码:
| Code | 含义 |
|---|---|
ai_unavailable | 未配置 provider key |
ai_quota_exceeded | 当前登录用户今日额度已用完 |
ai_budget_exceeded | 工作区月度预算已用完 |
input_too_large | 文本超过 AI_MAX_INPUT_CHARS |
image_too_large | 图片超过 AI_MAX_IMAGE_BYTES |
ai_provider_unavailable | provider 请求因网络或供应商可用性失败 |
ai_parse_failed | provider 有响应,但没有生成可用命令 |