Возможности

Выбор аккаунта для скриптов

Автор: jhyunwoo
Обновлено 20 октября 2026 г.
Проверено с ccam 0.8.0 и Claude Code 2.1.302

Эта страница переведена с английского машинным способом. Исправления приветствуются. Редактировать эту страницу на GitHub

На этой странице

ccam pick выводит имя аккаунта с входом и наибольшим запасом, чтобы скрипт запустил с ним Claude Code. Рабочие процессы, запущенные одновременно, получают разные аккаунты, пока аккаунтов с запасом хватает, поэтому пакет заданий claude -p распределяется по вашим аккаунтам, а не исчерпывает один.

Использование

ccam "$(ccam pick)" -p "fix the failing tests"
for task in parse lint docs; do
  ccam "$(ccam pick)" -p "do the $task task" > "$task.json" &
done; wait
ccam pick --json                      # the account and its usage
ccam pick --model opus                # also count the Opus weekly limit
ccam pick --max-usage 80 --strategy expiring
ccam pick --wait=2h                   # nobody has room: wait for a reset
ccam --fallback "$(ccam pick)" -p "…" # also switch if this account hits its limit mid-job
$ ccam pick --json
{
  "name": "work",
  "slot": 2,
  "email": "dev@company.com",
  "five_hour": { "percent": 12, "resets_at": "2026-10-20T15:10:00Z", "known": true },
  "weekly": { "percent": 41, "resets_at": "2026-10-24T09:00:00Z", "known": true },
  "source": "live"
}

Коды выхода: 0 с именем в стандартном выводе, 75 (EX_TEMPFAIL), когда ни у одного аккаунта нет запаса или ни в одном не выполнен вход, 1 для других ошибок, например неверного флага.

Параметры

Параметр Действие По умолчанию
--json Вывести аккаунт, его использование за 5 часов и за неделю и источник данных выкл.
--model <model> Учитывать также недельное окно этой модели, например opus нет
--max-usage <1-100> Предпочитать аккаунты ниже этого использования auto_max_usage, иначе 100
--strategy headroom|expiring Наименьшее использование за 5 часов или ближайший сброс 5-часового окна auto_strategy, иначе headroom
--wait[=<duration>] Если ни у одного аккаунта нет запаса, ждать сброса первого из них, но не дольше этого времени выкл.; 5h, если указан без значения
--dry-run Выбрать, не записывая выбор выкл.

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

  1. ccam перечисляет аккаунты с входом (у аккаунтов с ключом API нет лимитов, и они не учитываются).
  2. Он берёт блокировку (~/.local/state/ccam/picks.lock), поэтому одновременные выборы выполняются по очереди.
  3. Он одновременно запрашивает использование всех аккаунтов так же, как ccam usage, с кэшем на 60 секунд.
  4. Аккаунты, выбранные за последние 2 минуты (~/.local/state/ccam/picks/<name>), сначала исключаются, а среди остальных выбирают правила выбора ccam next --auto: сначала аккаунты ниже auto_max_usage, по стратегии, и никогда не аккаунт на 100%.
  5. Если все аккаунты с запасом недавно уже выбирались, правила снова выбирают среди всех них, поэтому четвёртый рабочий процесс на трёх аккаунтах делит один из них.
  6. Выбор записывается, блокировка снимается, и выводится имя.

Окно в 2 минуты нужно потому, что использование нового задания появляется в данных не сразу: без него пять рабочих процессов, запущенных вместе, все увидели бы один и тот же аккаунт как аккаунт с наибольшим запасом.

Безопасность и особые случаи

  • ccam pick только читает использование и записывает время выбора; он никогда не обновляет и не читает токены сверх того, что делает ccam usage.
  • Выбор не резервирует аккаунт. Через 2 минуты два скрипта всё равно могут запуститься на одном аккаунте; используйте --fallback, чтобы продолжить, когда этот аккаунт достигнет лимита.
  • Ожидание с --wait не держит блокировку, поэтому другие выборы тем временем продолжаются.
  • ccam pick не учитывает ccam folder: он выбирает только по использованию.