claude-swap — Переключатель аккаунтов Claude Code

· 2 мин чтения
claude-code account-switcher rate-limiting cli tui
📂 Исходный код на GitHub

Multi-account switcher for Claude Code с автоматическим переключением перед лимитами, дашбордом использования и параллельными сессиями

claude-swap — Переключатель аккаунтов Claude Code

При работе с Claude Code возникает проблема: лимиты на один аккаунт быстро заканчиваются, а ручное переключение между аккаунтами утомляет. claude-swap решает эту задачу — он автоматически переключает аккаунты перед достижением лимита, показывает дашборд использования и позволяет запускать несколько аккаунтов параллельно в разных терминалах.

Инструмент написан на Python, работает через CLI, а также предоставляет TUI-дашборд и опциональное меню для macOS. Установка — одна команда через uv или pipx.

Установка и начало работы

# Рекомендуемый способ
uv tool install claude-swap

# Или через pipx
pipx install claude-swap

После установки залогиньтесь в Claude Code с первым аккаунтом и выполните:

cswap add

Затем повторите для каждого дополнительного аккаунта — залогиньтесь в Claude Code другим аккаунтом и снова cswap add. Важно: не делайте /logout перед переключением — текущий Claude Code может отозвать refresh token.

Основные команды

Команда Описание
cswap add Добавить текущий аккаунт
cswap switch Переключиться на следующий аккаунт
cswap switch 2 Переключиться на конкретный аккаунт
cswap list Дашборд со всеми аккаунтами и статусом
cswap status Текущий активный аккаунт
cswap run 2 Запустить Claude Code как аккаунт 2 в текущем терминале
cswap auto Автоматическое переключение при приближении к лимиту

Переключение работает по номеру, email или алиасу:

cswap switch 2
cswap switch user@example.com
cswap alias 2 dev
cswap switch dev

Автоматическое переключение

claude-swap может следить за использованием и переключать аккаунт автоматически, когда использование достигает порога (по умолчанию 90% от лимита):

cswap auto                     # фоновый цикл, проверка каждые 60 секунд
cswap auto --threshold 80      # переключаться раньше
cswap auto --once              # однократная проверка (для cron)
cswap auto --strategy best     # выбрать аккаунт с максимальным остатком
cswap auto --strategy consume-first  # сначала расходовать аккаунт с ранним сбросом

Стратегия best ждёт, пока текущий аккаунт почти исчерпается, и переключает на тот, где больше всего остатка. Стратегия consume-first проактивно использует аккаунт, чей недельный лимит сбрасывается раньше — чтобы полезная квота не пропадала.

Инструмент безопасно работает рядом с Claude Code: переключение использует те же блокировки credential, что и сам Claude Code, поэтому swap никогда не пересекается с обновлением токена. Cooldown (по умолчанию 5 минут) и гистерезис предотвращают ping-pong между аккаунтами на границе порога.

Для cron-расписаний доступен --once с JSON-выводом:

*/5 * * * * cswap auto --once --json >> ~/.cswap-auto.log 2>&1

Параллельные сессии

Режим cswap run запускает Claude Code с конкретным аккаунтом только в текущем терминале — остальные терминалы и VS Code extension продолжают работать с аккаунтом по умолчанию:

cswap run 2                     # запустить как аккаунт 2, только здесь
cswap run user@example.com      # по email
cswap run 2 -- --resume         # передать аргументы в claude
cswap run 2 --share-history     # делиться историей чатов

Сессия использует настройки из ~/.claude (settings, CLAUDE.md, skills, MCP servers), но каждый аккаунт хранит свою историю чатов. С --share-history сессии разных аккаунтов видят общую историю.

Привязка аккаунтов к директориям

Можно привязать директорию к аккаунту — тогда cswap run в этой директории автоматически запустит нужный аккаунт:

cswap map 2 ~/work/client-app
cd ~/work/client-app
cswap run                       # → аккаунт 2

Поддиректории наследуют ближайшую привязанную родительскую директорию.

TUI-дашборд

Запуск cswap (или cswap tui) открывает полноэкранный интерактивный дашборд с живым отображением использования по каждому аккаунту. cswap watch сразу открывает страницу мониторинга. Работает на macOS, Linux и Windows.

Меню для macOS

Опциональное меню в menu bar показывает использование всех аккаунтов и позволяет переключаться кликом:

uv tool install 'claude-swap[menubar]'
cswap menubar

Для запуска в фоне без терминала:

cswap menubar --install-service     # запустить сейчас и при каждом входе
cswap menubar --service-status      # статус сервиса
cswap menubar --uninstall-service   # остановить и удалить

Резервное копирование и миграция

Экспорт и импорт данных аккаунтов между машинами:

cswap export backup.cswap                    # Все аккаунты
cswap export backup.cswap --account 2        # Один аккаунт
cswap export backup.cswap --full             # Полный бэкап (включая ~/.claude.json)
cswap import backup.cswap                    # Импорт (пропускает существующие)
cswap import backup.cswap --force            # Перезаписать существующие

Файл экспорта — обычный JSON, по умолчанию содержит только login каждого аккаунта. Для шифрования можно пропустить через gpg: cswap export - | gpg -c > backup.gpg.

Добавление по токену

Если есть setup-token или API-ключ, можно добавить аккаунт без браузерного логина:

cswap add-token sk-ant-oat01-...             # OAuth setup-token
cswap add-token sk-ant-api03-...             # managed API key
cswap add-token - --slot 3                   # из stdin

Тип токена определяется автоматически. API-ключи не имеют квоты подписки, поэтому usage-стратегии их не пропускают.

Как это работает

  • При добавлении аккаунта бэкапит OAuth token и конфиг
  • При переключении меняет только account-specific Claude login, сохраняя общее OAuth-состояние (например, MCP server logins)
  • Credential хранятся платформо-специфично: macOS Keychain, Linux/Windows — файлы
  • Переключение (ручное и автоматическое) использует блокировки credential Claude Code
  • Auto-switch обновляет токен целевого аккаунта перед активацией
  • Usage обновляется каждые несколько минут; для неактивных аккаунтов — реже

Требования

  • Python 3.12+
  • Claude Code установлен и залогинен

Лицензия

MIT

Источник: https://github.com/realiti4/claude-swap