---
title: "claude-rotate：多 Claude Max 账户代理指南"
canonical: https://wavect.io/zh/blog/claude-rotate-multi-account-proxy/
language: zh
description: "配置 claude-rotate 管理多个 Claude Max 账户：按配额故障切换、Tailscale 安全、设备分析、限制、成本与更稳妥的替代方案。"
image: "https://wavect.io/img/blog/headers/header_claude-rotate-multi-account-proxy.png"
---

[**返回**](/zh/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/zh/team/kevin-riedl/)

[Kevin Riedl](/zh/team/kevin-riedl/) https://linkedin.com/in/wsdt

8 分钟 阅读 · 2026年9月4日 最近审核 2026年9月4日

[**下一篇**](/zh/blog/feynman-open-source-ai-research-agent/)

# claude-rotate：一个代理管理多个 Claude Max 账户

要点速览

claude-rotate 是一个 MIT 许可的自托管代理，面向拥有多个付费 Claude 订阅、并在多台设备上使用 Claude Code 的同一位用户。客户端只连接一个私有端点；代理验证设备，注入当前账户 token，读取 Anthropic 返回的五小时与每周配额遥测，并在窗口耗尽时切换账户。consume-first 策略优先消耗最早重置的可用周配额。仓库列出 101 项离线检查，并报告模拟压力测试中 100 个并发请求只触发一次切换。它有意采用单进程和 JSON 文件，不使用数据库。同时，它会集中存放长期 bearer 凭证，给 Claude Code 增加非官方中间层，账户切换时无法复用 prompt cache，而且维护者明确将条款状态称为灰色地带。只使用自己拥有的账户，保持端点私有。共享或商业工作负载应选择 Anthropic usage credits、API 计费、Team 或 Enterprise。

**claude-rotate 在你拥有的多个 Claude Max 或 Pro 账户前放置一个私有端点。当当前账户没有可用配额时，它会把 Claude Code 流量切到下一个账户。**这样，笔记本、工作站和个人智能体 pod 不再需要退出登录、浏览器换号、重启终端。 [claude-rotate 开源仓库](https://github.com/doxaras/claude-rotate) 采用 MIT 许可，并刻意保持精简：一个 Python 代理进程、一份配置、JSON 状态与审计日志，不需要数据库。

这不是让 Claude 无限使用的技巧。每个账户仍受 Anthropic 配额约束，工具只决定下一次请求由哪个付费账户处理。同时，它把长期凭证集中到一个位置，并自动执行 Anthropic 尚未明确批准的消费者订阅池化操作。仓库也把条款状态称为灰色地带。复制配置前，请先读风险部分。

本文针对一个中文搜索结果仍很稀缺的具体问题：如何在多台 Claude Code 机器上使用多个 Claude Max 账户，而不手动切换登录。若你在做产品采购，请阅读独立的 [Claude Code 与 OpenCode 团队成本对比](/zh/blog/claude-code-vs-opencode-team-cost-2026/) 。若 gateway 服务于公司而非单个所有者，请先看 [生产级 LLM gateway 对比](/zh/blog/llm-gateway-router-comparison-2026/) 。

## 快速结论：什么时候适合 claude-rotate？

| 你的情况 | 更合适的选择 | 原因 |
| --- | --- | --- |
| 同一个人拥有多个付费 Claude 账户，并在多台私人设备工作 | 可以评估 claude-rotate | 一个私有端点取代手动登录，并显示整个设备群的配额。 |
| 一个付费账户只是偶尔触顶 | 等待、换模型或开启 usage credits | 代理会增加安全与运维工作，却不会增加单个账户的配额。 |
| 多名员工或客户需要共享容量 | 使用 Team、Enterprise 或按量 API | 消费者凭证不适合作为身份、治理与计费边界。 |
| 需要每用户预算、SSO、审计导出或合同支持 | 使用生产 gateway 与商业套餐 | claude-rotate 提供设备分析，不是企业控制平面。 |

## 为什么三个 Claude Max 订阅仍会让一个会话停下

独立订阅不会自动合成一个配额池。每次登录都有自己的额度和重置时间。Anthropic 的 [当前 Max 套餐说明](https://support.claude.com/en/articles/11049741-what-is-the-max-plan) 称，会话用量每五小时重置一次，每周限额则在分配给该账户的固定时间重置。此外还可能有周度、月度、模型或功能限额。因此，一群高负载的 [AI 智能体](/zh/glossary/ai-agents/) 可能耗尽所有机器当前登录的账户，而另一个付费账户仍有额度即将过期。

手动轮换可以工作，但操作成本高。你必须中断任务、退出登录、用另一个账户完成浏览器 OAuth、核对身份，再在每台机器上重复。面对远程 Mac、类似 CI 的个人任务与长时间 loop，注意力损耗往往比登录动作本身更贵。

## claude-rotate 如何工作

1. 每个 Claude Code 客户端通过 `ANTHROPIC_BASE_URL` 指向代理，并使用独立的内部设备 key 验证。
2. 代理将设备 key 替换为当前付费账户的 setup token，再把请求转发给 Anthropic。
3. 代理读取响应中的 `anthropic-ratelimit-unified-*` header，保存观测到的五小时与每周使用率。
4. 当前配额耗尽时，一次同步决策选择下一个可用账户。短时突发限流会在同一账户等待重试，避免浪费热缓存。
5. 面板按设备、模型与账户聚合审计记录，并计算 API 标价等价值。该金额只是可比 API 用量估算，不是 Anthropic 的订阅配额算法。

Anthropic 官方记录了连接所需的两个基础能力。 [Claude Code 身份验证文档](https://code.claude.com/docs/en/team) 说明，可用 `ANTHROPIC_BASE_URL` 设置自定义端点，也可用 `claude setup-token` 为脚本或 CI 生成长期订阅 OAuth token。但它没有记录或批准多账户池化。两者不能混为一谈。

## consume-first 优先保护即将过期的付费容量

Round robin 看似公平，却忽略重置时间。假设账户 A 剩余 15%，今晚重置；账户 B 剩余 70%，六天后才重置。下一次请求发给 B，可能让 A 的剩余额度白白过期。默认 consume-first 策略优先选择最早重置的可用周窗口。直白地说，它先花掉最容易过期的容量。

代理也会区分配额耗尽与短时突发限制。配额拒绝可以触发换号。带 `retry-after` 的每分钟 429 通常应该在同一账户暂停重试，因为换号只会转移突发压力，还会丢掉 prompt cache 的局部性。阈值、cooldown 与 hysteresis 可减少硬拒绝前的来回切换。

## 101 项检查证明了什么，又没有证明什么

仓库的 test runner 目前列出 101 项离线检查，覆盖轮换逻辑、分析、HTTP 代理行为与压力场景。其公开的模拟上游结果包括：处理 300 个并发请求，逐字节转发 50 条并行 SSE stream，以及在 100 个请求同时进行时遭遇配额失败，只触发一次账户切换。一个 lock 会串行化 failover 决策，避免整个设备群同时把账户池推进到底。

这些工程主张有价值，因为代码与测试命令都是公开的。但它们不是生产可用性 benchmark。上游是模拟的，测试测量代理开销而非 Anthropic 延迟，设计也只支持单进程。请在准备部署的 commit 上运行 `python3 tests/run_all.py`，并审查身份验证、streaming、header 与日志处理。

## 最小化私有部署

```
git clone https://github.com/doxaras/claude-rotate.git
cd claude-rotate
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
./setup.sh
./setup.sh add-account max-1
./setup.sh add-account max-2
./setup.sh add-device macbook
python3 rotator.py
```

setup 脚本要求时，为每个付费账户分别运行 `claude setup-token`。部署前核对你所安装 commit 对应的仓库说明。每台设备使用 `add-device` 输出的端点与设备凭证：

```
export ANTHROPIC_BASE_URL=http://private-host:8484
export CLAUDE_CODE_OAUTH_TOKEN=device-key
claude
```

开始重要工作前先检查 `/rotate/status`。然后从每台设备发送一个小请求，确认预期的设备与账户仪表发生变化。不要把 8484 端口公开到互联网。

## Tailscale 与凭证安全清单

- 将代理绑定到 Tailscale 地址，或绑定 `127.0.0.1` 后放在 Tailscale Serve 后面。在公网或共享网络使用明文 HTTP 会暴露设备 key 与 prompt。
- 每台机器或 pod 使用独立设备 key。这样单个客户端泄露时可以单独撤销。
- 把每个 setup token 当作长期 bearer 凭证。token 文件应保持 `0600` 权限，不进入 Git，也不进入你无法控制的备份。
- 限制实时面板访问。它会显示设备名、模型、用量与账户状态。
- 只在必要时间内保留日志。即使不记录 prompt body，审计 JSON 仍可能包含运营元数据。
- 固定经过审查的 commit，运行离线测试，监控上游变化，并定义回滚到 Claude Code 直连的路径。

自托管代理改变了信任路径。prompt 仍会到达 Anthropic，但代理主机也能看到凭证与流量。若这一层将成为面向客户的 AI 产品的一部分，我们的 [AI 产品工程服务](/zh/services/artificial-intelligence/) 可以帮助设计受支持的 gateway、身份、可观测性与故障边界。

## 条款边界是产品决策，不是脚注

claude-rotate 维护者明确表示，消费者订阅之间的自动轮换处于灰色地带，并警告不要用消费者套餐支撑共享或商业服务。Anthropic 的 [Claude Code 法律与合规页面](https://code.claude.com/docs/en/legal-and-compliance) 要求用户遵守适用的 Consumer 或 Commercial Terms，并单独对待第三方集成。官方记录自定义 base URL 或 setup token，不代表批准所有路由模式。

只使用你本人拥有的订阅，不要与他人共享凭证，部署前重新阅读现行条款。员工、客户 workload、全天候自主生产任务，以及任何向下游销售访问权限的系统，都应使用为该目的设计的账户类型与计费路径。若条款解释会影响业务，请向 Anthropic 获取书面确认或咨询法律专业人士。

## 如果真正的问题是限额，还有哪些更稳妥的选择

Anthropic 的 [usage credits 文档](https://support.claude.com/en/articles/12429409-manage-usage-credits-for-paid-claude-plans) 称，Pro 与 Max 用户开启 credits 后，可以在套餐额度用完时按标准 API 价格继续使用。这是单个用户最简单的官方 overflow 路径。你也可以减少上下文、把工作拆成边界清晰的 session、在合适任务上选择成本更低的模型，或等待界面显示的重置时间。

| 选择 | 运维投入 | 更适合 | 主要代价 |
| --- | --- | --- | --- |
| 等待或减少用量 | 低 | 偶尔触顶 | 工作暂停或模型质量变化。 |
| Usage credits | 低 | 不可预测的个人溢出 | 按 API 标价产生浮动支出。 |
| claude-rotate | 中 | 单一所有者、多个付费账户和私人设备 | 条款不确定性、secret 与代理运维。 |
| 直连 API 加生产 gateway | 高 | 团队、产品与受治理自动化 | 按量成本与平台工程。 |
| Team 或 Enterprise | 中 | 受管用户与组织控制 | 需要核实合同、seat 与用量经济性。 |

## 结论

claude-rotate 很好地解决了一个具体的个人基础设施问题：多个已经付费的账户，多台自己控制的设备，以及一个希望获得配额感知 failover 与统一可见性的所有者。consume-first 调度与串行化 failover 比盲目 round robin 更周全，公开压力测试也提供了可以复现的证据。

它的风险同样明确。代理会变成凭证库，prompt cache 不能跨账户迁移，单进程是一个运营依赖，API 成本估算不等于订阅配额真相，而且自动消费者账户池化没有得到 provider 明确批准。部署应保持私人、仅限本人。商业系统应购买受支持的商业边界，并把 gateway 当作生产基础设施。

## 常见问题

### claude-rotate 是什么？

claude-rotate 是一个 MIT 许可的自托管代理，面向拥有多个付费 Claude 订阅的单一所有者。Claude Code 客户端连接一个私有端点，由它根据配额遥测选择账户，并记录每台设备的用量。

### claude-rotate 能提供无限 Claude Max 用量吗？

不能。每个账户仍受 Anthropic 的会话、每周、模型及其他适用限额约束。当前账户不可用时，代理只会选择另一个仍有资格的付费账户。

### 可以把 claude-rotate 用于团队或 SaaS 吗？

仓库警告不要用消费者订阅支撑共享或商业服务。应使用 Team、Enterprise 或按量 API 与适当的生产 gateway，并核实现行 provider 条款。

### 为什么用 consume-first 而不是 round robin？

Consume-first 优先选择最早重置的可用周配额，减少付费额度未用即过期的概率。Cooldown 与 hysteresis 则避免无必要切换。

### API 价格等价值等于 Claude Max 配额吗？

不等于。它按配置的 API 标价估算已记录 token 的价值。Anthropic 的订阅配额是独立的 provider 端系统，路由判断应使用响应返回的配额遥测。

智能体工程

## 继续浏览此集群

编程智能体、MCP、上下文系统、评估与可靠自动化控制。

[从核心文章开始**AI 智能体的图工程：知识图谱什么时候值得做？**](/zh/blog/graph-engineering-ai-agents/)

- [Feynman 评测：这款开源 AI 研究 Agent 适合团队吗？](/zh/blog/feynman-open-source-ai-research-agent/)
- [Obscura 浏览器评测：性能主张、限制与生产适用性](/zh/blog/obscura-rust-browser-ai-agents/)
- [Claude Code 设计系统：用 4 个部分保持品牌一致](/zh/blog/claude-code-design-system-files/)
- [ChatGPT 能登录网站，而且模型看不到密码](/zh/blog/chatgpt-cloud-browser-secure-login/)
- [AI 智能体 Harness 图解：LLM 周围的可靠性层](/zh/blog/agent-harness-engineering/)

[**返回**](/zh/blog/overview/)

[![Kevin Riedl](/img/team/kevin.webp)](/zh/team/kevin-riedl/)

[Kevin Riedl](/zh/team/kevin-riedl/) https://linkedin.com/in/wsdt

8 分钟 阅读 · 2026年9月4日 最近审核 2026年9月4日

[**下一篇**](/zh/blog/feynman-open-source-ai-research-agent/)

## Structured Data

```json
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@id": "https://wavect.io/#organization",
      "@type": [
        "Organization",
        "ProfessionalService",
        "LocalBusiness"
      ],
      "employee": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "founder": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "legalRepresentative": [
        {
          "@id": "https://wavect.io/team/kevin-riedl/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Kevin Riedl",
          "url": "https://wavect.io/team/kevin-riedl/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        },
        {
          "@id": "https://wavect.io/team/christof-jori/#person",
          "@type": "Person",
          "jobTitle": "Managing Director",
          "name": "Christof Jori",
          "url": "https://wavect.io/team/christof-jori/",
          "worksFor": {
            "@id": "https://wavect.io/#organization",
            "@type": [
              "Organization",
              "ProfessionalService",
              "LocalBusiness"
            ]
          }
        }
      ],
      "name": "Wavect GmbH",
      "subjectOf": {
        "@id": "https://wavect.io/verified-claims.json#dataset",
        "@type": "Dataset",
        "creator": {
          "@id": "https://wavect.io/#organization",
          "@type": [
            "Organization",
            "ProfessionalService",
            "LocalBusiness"
          ]
        },
        "description": "A machine-readable registry of quantitative and qualitative claims published by Wavect, with review dates, localized page appearances and public third-party citations where available.",
        "inLanguage": "en",
        "isAccessibleForFree": true,
        "license": "https://creativecommons.org/licenses/by/4.0/",
        "name": "Wavect verified publication claims",
        "url": "https://wavect.io/verified-claims.json"
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/team/kevin-riedl/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Kevin Riedl",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796365",
        "https://www.linkedin.com/in/wsdt",
        "https://github.com/wsdt"
      ],
      "url": "https://wavect.io/team/kevin-riedl/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/team/christof-jori/#person",
      "@type": "Person",
      "jobTitle": "Managing Director",
      "name": "Christof Jori",
      "sameAs": [
        "https://www.wikidata.org/wiki/Q139796367",
        "https://www.linkedin.com/in/jocr77/",
        "https://github.com/jo-chris"
      ],
      "url": "https://wavect.io/team/christof-jori/",
      "worksFor": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      }
    },
    {
      "@id": "https://wavect.io/#website",
      "@type": "WebSite",
      "inLanguage": [
        "en",
        "de",
        "es",
        "zh"
      ],
      "name": "Wavect",
      "potentialAction": {
        "@type": "SearchAction",
        "query-input": "required name=search_term_string",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://wavect.io/search/?q={search_term_string}"
        }
      },
      "publisher": {
        "@id": "https://wavect.io/#organization",
        "@type": [
          "Organization",
          "ProfessionalService",
          "LocalBusiness"
        ]
      },
      "url": "https://wavect.io/"
    },
    {
      "@id": "https://wavect.io/zh/blog/claude-rotate-multi-account-proxy/#webpage",
      "@type": "WebPage",
      "dateModified": "2026-09-04",
      "inLanguage": "zh",
      "isPartOf": {
        "@id": "https://wavect.io/#website",
        "@type": "WebSite"
      },
      "lastReviewed": "2026-09-04",
      "url": "https://wavect.io/zh/blog/claude-rotate-multi-account-proxy/"
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "abstract": "claude-rotate 是一个 MIT 许可的自托管代理，面向拥有多个付费 Claude 订阅、并在多台设备上使用 Claude Code 的同一位用户。客户端只连接一个私有端点；代理验证设备，注入当前账户 token，读取 Anthropic 返回的五小时与每周配额遥测，并在窗口耗尽时切换账户。consume-first 策略优先消耗最早重置的可用周配额。仓库列出 101 项离线检查，并报告模拟压力测试中 100 个并发请求只触发一次切换。它有意采用单进程和 JSON 文件，不使用数据库。同时，它会集中存放长期 bearer 凭证，给 Claude Code 增加非官方中间层，账户切换时无法复用 prompt cache，而且维护者明确将条款状态称为灰色地带。只使用自己拥有的账户，保持端点私有。共享或商业工作负载应选择 Anthropic usage credits、API 计费、Team 或 Enterprise。",
  "articleBody": " 博客概览/AI 与智能体/智能体工程 claude-rotate：一个代理管理多个 Claude Max 账户 要点速览 claude-rotate 是一个 MIT 许可的自托管代理，面向拥有多个付费 Claude 订阅、并在多台设备上使用 Claude Code 的同一位用户。客户端只连接一个私有端点；代理验证设备，注入当前账户 token，读取 Anthropic 返回的五小时与每周配额遥测，并在窗口耗尽时切换账户。consume-first 策略优先消耗最早重置的可用周配额。仓库列出 101 项离线检查，并报告模拟压力测试中 100 个并发请求只触发一次切换。它有意采用单进程和 JSON 文件，不使用数据库。同时，它会集中存放长期 bearer 凭证，给 Claude Code 增加非官方中间层，账户切换时无法复用 prompt cache，而且维护者明确将条款状态称为灰色地带。只使用自己拥有的账户，保持端点私有。共享或商业工作负载应选择 Anthropic usage credits、API 计费、Team 或 Enterprise。 claude-rotate 在你拥有的多个 Claude Max 或 Pro 账户前放置一个私有端点。当当前账户没有可用配额时，它会把 Claude Code 流量切到下一个账户。这样，笔记本、工作站和个人智能体 pod 不再需要退出登录、浏览器换号、重启终端。claude-rotate 开源仓库采用 MIT 许可，并刻意保持精简：一个 Python 代理进程、一份配置、JSON 状态与审计日志，不需要数据库。 这不是让 Claude 无限使用的技巧。每个账户仍受 Anthropic 配额约束，工具只决定下一次请求由哪个付费账户处理。同时，它把长期凭证集中到一个位置，并自动执行 Anthropic 尚未明确批准的消费者订阅池化操作。仓库也把条款状态称为灰色地带。复制配置前，请先读风险部分。 本文针对一个中文搜索结果仍很稀缺的具体问题：如何在多台 Claude Code 机器上使用多个 Claude Max 账户，而不手动切换登录。若你在做产品采购，请阅读独立的 Claude Code 与 OpenCode 团队成本对比。若 gateway 服务于公司而非单个所有者，请先看生产级 LLM gateway 对比。 快速结论：什么时候适合 claude-rotate？ 你的情况更合适的选择原因 同一个人拥有多个付费 Claude 账户，并在多台私人设备工作可以评估 claude-rotate一个私有端点取代手动登录，并显示整个设备群的配额。 一个付费账户只是偶尔触顶等待、换模型或开启 usage credits代理会增加安全与运维工作，却不会增加单个账户的配额。 多名员工或客户需要共享容量使用 Team、Enterprise 或按量 API消费者凭证不适合作为身份、治理与计费边界。 需要每用户预算、SSO、审计导出或合同支持使用生产 gateway 与商业套餐claude-rotate 提供设备分析，不是企业控制平面。 为什么三个 Claude Max 订阅仍会让一个会话停下 独立订阅不会自动合成一个配额池。每次登录都有自己的额度和重置时间。Anthropic 的当前 Max 套餐说明称，会话用量每五小时重置一次，每周限额则在分配给该账户的固定时间重置。此外还可能有周度、月度、模型或功能限额。因此，一群高负载的 AI 智能体可能耗尽所有机器当前登录的账户，而另一个付费账户仍有额度即将过期。 手动轮换可以工作，但操作成本高。你必须中断任务、退出登录、用另一个账户完成浏览器 OAuth、核对身份，再在每台机器上重复。面对远程 Mac、类似 CI 的个人任务与长时间 loop，注意力损耗往往比登录动作本身更贵。 claude-rotate 如何工作 每个 Claude Code 客户端通过 ANTHROPIC_BASE_URL 指向代理，并使用独立的内部设备 key 验证。 代理将设备 key 替换为当前付费账户的 setup token，再把请求转发给 Anthropic。 代理读取响应中的 anthropic-ratelimit-unified-* header，保存观测到的五小时与每周使用率。 当前配额耗尽时，一次同步决策选择下一个可用账户。短时突发限流会在同一账户等待重试，避免浪费热缓存。 面板按设备、模型与账户聚合审计记录，并计算 API 标价等价值。该金额只是可比 API 用量估算，不是 Anthropic 的订阅配额算法。 Anthropic 官方记录了连接所需的两个基础能力。Claude Code 身份验证文档说明，可用 ANTHROPIC_BASE_URL 设置自定义端点，也可用 claude setup-token 为脚本或 CI 生成长期订阅 OAuth token。但它没有记录或批准多账户池化。两者不能混为一谈。 consume-first 优先保护即将过期的付费容量 Round robin 看似公平，却忽略重置时间。假设账户 A 剩余 15%，今晚重置；账户 B 剩余 70%，六天后才重置。下一次请求发给 B，可能让 A 的剩余额度白白过期。默认 consume-first 策略优先选择最早重置的可用周窗口。直白地说，它先花掉最容易过期的容量。 代理也会区分配额耗尽与短时突发限制。配额拒绝可以触发换号。带 retry-after 的每分钟 429 通常应该在同一账户暂停重试，因为换号只会转移突发压力，还会丢掉 prompt cache 的局部性。阈值、cooldown 与 hysteresis 可减少硬拒绝前的来回切换。 101 项检查证明了什么，又没有证明什么 仓库的 test runner 目前列出 101 项离线检查，覆盖轮换逻辑、分析、HTTP 代理行为与压力场景。其公开的模拟上游结果包括：处理 300 个并发请求，逐字节转发 50 条并行 SSE stream，以及在 100 个请求同时进行时遭遇配额失败，只触发一次账户切换。一个 lock 会串行化 failover 决策，避免整个设备群同时把账户池推进到底。 这些工程主张有价值，因为代码与测试命令都是公开的。但它们不是生产可用性 benchmark。上游是模拟的，测试测量代理开销而非 Anthropic 延迟，设计也只支持单进程。请在准备部署的 commit 上运行 python3 tests/run_all.py，并审查身份验证、streaming、header 与日志处理。 最小化私有部署 git clone https://github.com/doxaras/claude-rotate.git cd claude-rotate python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt ./setup.sh ./setup.sh add-account max-1 ./setup.sh add-account max-2 ./setup.sh add-device macbook python3 rotator.py setup 脚本要求时，为每个付费账户分别运行 claude setup-token。部署前核对你所安装 commit 对应的仓库说明。每台设备使用 add-device 输出的端点与设备凭证： export ANTHROPIC_BASE_URL=http://private-host:8484 export CLAUDE_CODE_OAUTH_TOKEN=device-key claude 开始重要工作前先检查 /rotate/status。然后从每台设备发送一个小请求，确认预期的设备与账户仪表发生变化。不要把 8484 端口公开到互联网。 Tailscale 与凭证安全清单 将代理绑定到 Tailscale 地址，或绑定 127.0.0.1 后放在 Tailscale Serve 后面。在公网或共享网络使用明文 HTTP 会暴露设备 key 与 prompt。 每台机器或 pod 使用独立设备 key。这样单个客户端泄露时可以单独撤销。 把每个 setup token 当作长期 bearer 凭证。token 文件应保持 0600 权限，不进入 Git，也不进入你无法控制的备份。 限制实时面板访问。它会显示设备名、模型、用量与账户状态。 只在必要时间内保留日志。即使不记录 prompt body，审计 JSON 仍可能包含运营元数据。 固定经过审查的 commit，运行离线测试，监控上游变化，并定义回滚到 Claude Code 直连的路径。 自托管代理改变了信任路径。prompt 仍会到达 Anthropic，但代理主机也能看到凭证与流量。若这一层将成为面向客户的 AI 产品的一部分，我们的 AI 产品工程服务可以帮助设计受支持的 gateway、身份、可观测性与故障边界。 条款边界是产品决策，不是脚注 claude-rotate 维护者明确表示，消费者订阅之间的自动轮换处于灰色地带，并警告不要用消费者套餐支撑共享或商业服务。Anthropic 的 Claude Code 法律与合规页面要求用户遵守适用的 Consumer 或 Commercial Terms，并单独对待第三方集成。官方记录自定义 base URL 或 setup token，不代表批准所有路由模式。 只使用你本人拥有的订阅，不要与他人共享凭证，部署前重新阅读现行条款。员工、客户 workload、全天候自主生产任务，以及任何向下游销售访问权限的系统，都应使用为该目的设计的账户类型与计费路径。若条款解释会影响业务，请向 Anthropic 获取书面确认或咨询法律专业人士。 如果真正的问题是限额，还有哪些更稳妥的选择 Anthropic 的 usage credits 文档称，Pro 与 Max 用户开启 credits 后，可以在套餐额度用完时按标准 API 价格继续使用。这是单个用户最简单的官方 overflow 路径。你也可以减少上下文、把工作拆成边界清晰的 session、在合适任务上选择成本更低的模型，或等待界面显示的重置时间。 选择运维投入更适合主要代价 等待或减少用量低偶尔触顶工作暂停或模型质量变化。 Usage credits低不可预测的个人溢出按 API 标价产生浮动支出。 claude-rotate中单一所有者、多个付费账户和私人设备条款不确定性、secret 与代理运维。 直连 API 加生产 gateway高团队、产品与受治理自动化按量成本与平台工程。 Team 或 Enterprise中受管用户与组织控制需要核实合同、seat 与用量经济性。 结论 claude-rotate 很好地解决了一个具体的个人基础设施问题：多个已经付费的账户，多台自己控制的设备，以及一个希望获得配额感知 failover 与统一可见性的所有者。consume-first 调度与串行化 failover 比盲目 round robin 更周全，公开压力测试也提供了可以复现的证据。 它的风险同样明确。代理会变成凭证库，prompt cache 不能跨账户迁移，单进程是一个运营依赖，API 成本估算不等于订阅配额真相，而且自动消费者账户池化没有得到 provider 明确批准。部署应保持私人、仅限本人。商业系统应购买受支持的商业边界，并把 gateway 当作生产基础设施。 常见问题 claude-rotate 是什么？ claude-rotate 是一个 MIT 许可的自托管代理，面向拥有多个付费 Claude 订阅的单一所有者。Claude Code 客户端连接一个私有端点，由它根据配额遥测选择账户，并记录每台设备的用量。 claude-rotate 能提供无限 Claude Max 用量吗？ 不能。",
  "articleSection": "Engineering",
  "author": {
    "@id": "https://wavect.io/team/kevin-riedl/#person",
    "@type": "Person",
    "name": "Kevin Riedl",
    "sameAs": [
      "https://www.wikidata.org/wiki/Q139796365",
      "https://www.linkedin.com/in/wsdt",
      "https://github.com/wsdt"
    ],
    "url": "https://wavect.io/team/kevin-riedl/"
  },
  "citation": [
    {
      "@type": "WebPage",
      "name": "claude-rotate 开源仓库",
      "url": "https://github.com/doxaras/claude-rotate"
    },
    {
      "@type": "WebPage",
      "name": "当前 Max 套餐说明",
      "url": "https://support.claude.com/en/articles/11049741-what-is-the-max-plan"
    },
    {
      "@type": "WebPage",
      "name": "Claude Code 身份验证文档",
      "url": "https://code.claude.com/docs/en/team"
    },
    {
      "@type": "WebPage",
      "name": "Claude Code 法律与合规页面",
      "url": "https://code.claude.com/docs/en/legal-and-compliance"
    },
    {
      "@type": "WebPage",
      "name": "usage credits 文档",
      "url": "https://support.claude.com/en/articles/12429409-manage-usage-credits-for-paid-claude-plans"
    }
  ],
  "dateModified": "2026-09-04",
  "datePublished": "2026-09-04",
  "description": "claude-rotate 是一个 MIT 许可的自托管代理，面向拥有多个付费 Claude 订阅、并在多台设备上使用 Claude Code 的同一位用户。客户端只连接一个私有端点；代理验证设备，注入当前账户 token，读取 Anthropic 返回的五小时与每周配额遥测，并在窗口耗尽时切换账户。consume-first 策略优先消耗最早重置的可用周配额。仓库列出 101 项离线检查，并报告模拟压力测试中 100 个并发请求只触发一次切换。它有意采用单进程和 JSON 文件，不使用数据库。同时，它会集中存放长期 bearer 凭证，给 Claude Code 增加非官方中间层，账户切换时无法复用 prompt cache，而且维护者明确将条款状态称为灰色地带。只使用自己拥有的账户，保持端点私有。共享或商业工作负载应选择 Anthropic usage credits、API 计费、Team 或 Enterprise。",
  "headline": "claude-rotate：一个代理管理多个 Claude Max 账户",
  "image": "https://wavect.io/img/blog/headers/header_claude-rotate-multi-account-proxy.svg",
  "inLanguage": "zh",
  "keywords": "Claude Code, AI 智能体",
  "mainEntityOfPage": {
    "@id": "https://wavect.io/zh/blog/claude-rotate-multi-account-proxy/",
    "@type": "WebPage"
  },
  "publisher": {
    "@id": "https://wavect.io/#organization",
    "@type": [
      "Organization",
      "ProfessionalService",
      "LocalBusiness"
    ]
  },
  "url": "https://wavect.io/zh/blog/claude-rotate-multi-account-proxy/",
  "wordCount": 501
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/",
      "name": "首页",
      "position": 1
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/blog/overview/",
      "name": "博客概览",
      "position": 2
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/blog/topics/ai-agents/",
      "name": "AI 与智能体",
      "position": 3
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/blog/clusters/agent-engineering/",
      "name": "智能体工程",
      "position": 4
    },
    {
      "@type": "ListItem",
      "item": "https://wavect.io/zh/blog/claude-rotate-multi-account-proxy/",
      "name": "claude-rotate：多 Claude Max 账户代理指南",
      "position": 5
    }
  ]
}
```

```json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "claude-rotate 是一个 MIT 许可的自托管代理，面向拥有多个付费 Claude 订阅的单一所有者。Claude Code 客户端连接一个私有端点，由它根据配额遥测选择账户，并记录每台设备的用量。"
      },
      "name": "claude-rotate 是什么？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不能。每个账户仍受 Anthropic 的会话、每周、模型及其他适用限额约束。当前账户不可用时，代理只会选择另一个仍有资格的付费账户。"
      },
      "name": "claude-rotate 能提供无限 Claude Max 用量吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "仓库警告不要用消费者订阅支撑共享或商业服务。应使用 Team、Enterprise 或按量 API 与适当的生产 gateway，并核实现行 provider 条款。"
      },
      "name": "可以把 claude-rotate 用于团队或 SaaS 吗？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Consume-first 优先选择最早重置的可用周配额，减少付费额度未用即过期的概率。Cooldown 与 hysteresis 则避免无必要切换。"
      },
      "name": "为什么用 consume-first 而不是 round robin？"
    },
    {
      "@type": "Question",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "不等于。它按配置的 API 标价估算已记录 token 的价值。Anthropic 的订阅配额是独立的 provider 端系统，路由判断应使用响应返回的配额遥测。"
      },
      "name": "API 价格等价值等于 Claude Max 配额吗？"
    }
  ]
}
```
