# 订阅与额度

Claude OAuth 订阅不需要填写账户 UUID。入口按凭据独立读取并定期更新 5 小时、7 天额度；重复导入同一个 Token 只计一份容量，同名换 Token 会等待新读数。账户关联是可选项，导入不会自动采用执行机器的登录身份。读取失败会标出原因并保留该凭据上一次读数的观察时间；尚未读取时不显示额度。

会话用的是 Claude 或 ChatGPT（Codex）的订阅。订阅的登录凭据只存在入口里；机器只租到短期的一份，用完就换新的，成员自己读不到长期凭据。

## 订阅从哪里来：两种都行

| | 用我们提供的订阅 | 接上你们自己的订阅 |
|---|---|---|
| 适合 | 不想自己买、管订阅 | 已经有 Claude Pro / Max、ChatGPT Plus / Pro |
| 谁加进订阅池 | 我们 | 你 |
| 自托管 | —（自托管只有自己的订阅） | 你 |
| 托管 | 开通时说要几个，我们加好 | 你自己加，见下文 |

两种可以混用：一个订阅池里既有我们提供的，也有你们自己的。每个订阅都显示在「订阅池」页上，谁的就写谁的名字。

## 订阅池

控制台「管理 → 订阅池」。表格里每个订阅一行：5 小时和 7 天两个额度窗口各剩多少、什么时候重置、谁在用、几个会话、状态。

- 新会话开在余量最多的订阅上；任一窗口用到 85% 的订阅先跳过，等它重置。这个比例在「订阅池 → 全局设置 → 订阅用到多少就跳过」里改。
- 订阅满了时，池子自己换：会话的下一次请求就落到别的订阅上，没有开关要拨。
- 成员看不到订阅池，只看到自己的个人上限（下文）。

### 加订阅

管理员在「订阅池」页 → **加订阅** → 选 Claude Code 或 Codex → 起一个名字（字母、数字、点、横线、下划线），全程在浏览器完成：

- **Claude：只收 setup-token**：在登录该 Claude 账号的电脑上运行 `claude setup-token`，在浏览器确认后把输出的 `sk-ant-oat01-…` 整串贴进来。入口先用它向官方 messages 端点实测一次，被拒就不保存。Claude 不再提供网页授权——那条路拿到的是会轮换的短期令牌，和池里其他订阅的长期令牌不是一类。
- **Codex：网页授权（默认）或已有 Refresh Token**：网页授权登录后跳转到 localhost，将地址栏完整地址贴回；该页面无法打开是正常的，授权十分钟内有效。也可直接填 OAuth Refresh Token。

输入隐藏，提交或关闭后清空；服务端验证成功才加密保存。不需要 SSH、操作者令牌或账户 UUID。

成功后直接显示保存结果并读取额度。网络中断可重试；凭据有效但额度暂不可读时显示「额度待读取」，详情的 **刷新额度** 会重新读取后台数据。重复 Token 返回已有订阅；同名更新须在该订阅详情中选 **更新凭据**，验证成功才替换。无法确认的有效期显示「未知」。

表格只列已纳管凭据；历史用量仍在用量统计中。个人订阅带所属人标记，不计入共享池容量。「服务」与「套餐」分列：Max 只有可靠档位信息时才显示 5× / 20×，未知套餐显示「未识别」，详情保留原值、来源和已知观察时间；名字中的 20X 不作为套餐依据。

### 成员自己接订阅

每个成员都能把**自己的** Claude Pro / Max 或 ChatGPT Plus / Pro 接上来：「用量」页 →「我自己的订阅」→ **接上我自己的订阅** → 选 Claude 或 ChatGPT、起个名字 → 在**自己的浏览器**里打开官方登录页、登录并同意授权 → 把页面给的代码（Claude），或跳转后打不开的那一页地址栏里的整条地址（ChatGPT）贴回来。账号密码只在官方页面上输入，不经过入口。

- 接上的订阅**只给他自己用**：凭据存在他名下，别人的会话拿不到；他的会话先用它，用满了再走订阅池。严格模式下入口会把它加进他本人和他自己机器的白名单，不动任何别人的。
- 他在同一块里看两个窗口（5 小时 / 每周）的用量、暂停 / 恢复、断开（输名字确认）；登录失效时一键重新登录。每个动作都记审计。
- 管理员在「订阅池」里看得到这些订阅，标着「某某 自己的」；不能替他暂停，必要时可以吊销。

### 谁能用哪个订阅

加好的订阅**不会自动给所有人用**。新使用者和新机器默认一个订阅都不能用，要明确放行：

- 「使用者」页 → 点一个人 → 订阅授权：选「全部订阅」（包括以后新加的），或只勾几个。
- 「服务节点与客户端」页 → 点一台机器 → 同样的授权，管这台机器上所有人（托管客户由我们设好）。

一个人最终能用的 = 订阅池 ∩ 这台机器放行的 ∩ 这个人放行的。改完 30 秒内生效。「检查用户在指定服务节点上的权限」能直接看某人在某台机器上能用哪几个。

### 订阅要重新登录、暂停、移除

- **需重新登录**：订阅卡片上会写。在订阅详情选择 **更新凭据**，重新授权或提交 Token；验证成功后替换。
- **暂停**：新会话不再开在它上面，正在跑的照常跑完。再点 **恢复**。
- **移除**：凭据从入口删掉；正在用它的会话在短期凭据到期时换到别的订阅。

## 每人额度

给一个人设 5 小时和 7 天两个上限（单位：token，可写 `200k`、`2M`）。算的是输入 + 缓存写入 + 输出，不算缓存读取。超了以后，他的下一个请求被拒，会话里看到：

> 已达个人额度：近 5 小时已用 X / 上限 Y token，约 N 后恢复（额度由管理员设置）

只影响他一个人，其他人照常。窗口滚动过去自动恢复，不用你做什么。

设额度用命令行（网页上今天只能看、不能设）：

```sh
fleet hub accounts                                          # 找到他的身份 id，形如 gh:1234567
fleet hub set fleet.person_budget.gh:1234567 "5h=200k,week=2M"
fleet hub set fleet.person_budget.gh:1234567 "week=2M"      # 只限 7 天
fleet hub unset fleet.person_budget.gh:1234567              # 取消上限
```

自托管有操作者令牌时也可以 `fleet config budget`：不带参数列出每个人的用量和上限，`fleet config budget gh:1234567 5h=200k week=2M` 设，`… off` 取消。

**额度只在会话经过凭据代理时才算得上**。托管机器上每个账号都默认开着；自托管机器由管理员执行一次 `fleet cred-proxy enable --machine`，整台机器的账号都接上机器唯一的那个代理；没接上的账号用量不计、也不会被拦。

## 新成员的试用限额

经「申请使用」批准进来的新成员，默认带一组试用限额：**7 天**、共享池 **300 万 tokens**（和个人上限同一种算法：输入 + 缓存写入 + 输出，缓存读取不算）、**同时 1 个会话**。到期或用完后，他的下一个请求被拒，会话里看到「试用期已于 … 结束」或「试用额度已用完：已用 x 万 / 上限 300 万 tokens」，请他找管理员。并发超了，新开会话被拒并说明。

他自己在控制台和对话页顶上随时看得到「试用 · 剩 6 天 · 已用 12 万 / 300 万 tokens · 同时 1 个会话」：剩 1 天以内或用到 80% 变色，到期或用完时说明原因并给「申请转正」；试用正常时，「用量」页额度卡片下面也有一个不显眼的「申请转正」。按下后管理后台「成员」里他那一行标「申请转正」，每位管理员各收到一条通知（关注了服务号走微信，否则邮件；同一人只推一次），点开直达「成员」里他的抽屉，一键转正。管理员在「成员」里看每人的试用限额与用量，点开就能改或转正。

- 默认值：`fleet hub set fleet.apply.trial "days=7,tokens=3000000,sessions=1"`（也可写 `3M`、`3000k`）；`off` = 批准即正式成员，不带限额。
- 批准时逐个改：批准请求的 body 带 `{"limits": "days=14,tokens=3M,sessions=2"}`，或 `"off"`。
- 批准后：`fleet hub set fleet.member_limits.<身份 id> "until=2026-11-01T00:00:00Z,tokens=3M,sessions=2"` 改（或在「成员」里改）；`fleet hub unset fleet.member_limits.<身份 id>` = 转正，什么都不限。
- 早先按美元写的 `usd=` 由库迁移 6 换成 tokens（每美元 15 万）。
- 再批准一次不会重置已有的限额。
- 试用到期（`until` 过了、还没转正）：当时就停掉他登录上的会话；到期后第 23、27 天经服务号（不行就邮件）提醒他数据哪天删；第 30 天删掉他登录的家目录（登录洗净、过检查后回备用池）、hub 上的对话镜像和上传文件，只在审计里留一行不含内容的 `trial.purge`。保留天数 `fleet hub set fleet.trial.retain_days 30`（默认 30，0 = 到期立即删、不提醒；提醒总在删除前 7 天和 3 天）。转正（`unset` 上面的键）就什么都不删。

## 试用二维码：扫码关注即试用

运营台「人」下面的 **试用二维码**：新建一张码，写个渠道名（只有管理员看得到），试用方案默认取上面的 `fleet.apply.trial`、可以改，再填这张码最多发多少人（默认 200，0 = 不限）、用到哪天、要不要审批（默认不要）。码分两种：**永久码**（默认，不过期，停用由这里管；服务号全号共 10 万张，和公司其他产品共用）和**临时码**（最长 30 天，到期作废）。生成后直接下载图片，印到海报、PPT 或发到群里。要直接发给朋友，点码旁边的 **生成海报**（列表里的「海报」也行）：一张 1080×1440 的图，二维码、一句话介绍、这张码给的试用和三步怎么用都在上面，中文或英文二选一；手机上长按图片保存或转发，电脑上点「下载 PNG」。

官网首页的扫码卡片用的也是这里的码：建一张渠道名叫 `site`、不要审批的码，首页就发它（扫码的人记在这张码的漏斗里）；没有这张码，首页照旧自己取码。

有人用微信扫码并关注服务号（已经关注的扫一下也算），服务号立刻回一张「试用已开通」的卡片，点开就在微信里进入对话，不用登录、不用申请；他和经「申请使用」批准进来的人一样上名单、带这张码的试用限额和订阅，审批记录里记作这张码通过的。

- **每个微信号一辈子只发一次**：同一个微信换一张码再扫，回「你的试用还在进行」或「你已经试用过」（点开申请转正）；已经是成员的回「点开继续用」。
- **每张码有上限**，发完回「名额已经发完」；停用、过期的码各回一句说明并指向「申请使用」。
- **全站每天自动开通的上限**：`fleet hub set fleet.qr.daily 100`（默认 100，北京时间按天）；过了回「明天再扫」。
- **机器或订阅池忙时排队**：扫码的人先收到「排队中 · 前面还有 n 位」，轮到时服务号再推一条「轮到你了」。
- **刷号告警**：一张码 10 分钟内开通超过 `fleet.qr.burst`（默认 30）人，这张码自动暂停，每位管理员收到一条通知；看过后在运营台恢复或停用。
- **试用卡住会推给你**：有人排队超过 10 分钟（`queue_long`）、15 分钟内开会话失败 3 次以上（`start_failed`，不分是谁）、机器掉线（`node_lost`）——这些和其他所有 Tokenman 告警都推到管理员的微信（hub 的 `FLEET_NOTIFY_KF_*`）；同一类 `fleet.alert.quiet_mins`（默认 30）分钟内只推一次，没推的照样记在 `GET /v1/fleet/fleet_alerts`。
- **需要审批的码**：扫码只在「申请」里留一条待审，批准时用这张码的试用方案。

列表里每张码一行：已发放 / 上限，扫码 › 关注 › 开通 › 首句 › 转正 的漏斗和状态；顶上是近 7 天的总数和「扫码到发出第一句」的中位数。点开一张码看扫过的人，单个人在「成员」里照常停用。

## 看谁用了多少

- **按人用量**（管理员）：每人今天、7 天的用量，个人上限，主要在做什么，几个会话；点开看他用了哪些订阅、在哪些机器上。
- **我的用量**（每个成员自己）：自己的用量和上限。
- **订阅池**：每个订阅的两个窗口。
- **审计**：加、暂停、移除订阅，改授权、改额度，每一笔都有记录（[谁能看到什么](access.md)）。
