Выбор аккаунта для скриптов
Эта страница переведена с английского машинным способом. Исправления приветствуются. Редактировать эту страницу на 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 |
Выбрать, не записывая выбор | выкл. |
Как это работает
- ccam перечисляет аккаунты с входом (у аккаунтов с ключом API нет лимитов, и они не учитываются).
- Он берёт блокировку (
~/.local/state/ccam/picks.lock), поэтому одновременные выборы выполняются по очереди. - Он одновременно запрашивает использование всех аккаунтов так же, как
ccam usage, с кэшем на 60 секунд. - Аккаунты, выбранные за последние 2 минуты (
~/.local/state/ccam/picks/<name>), сначала исключаются, а среди остальных выбирают правила выбораccam next --auto: сначала аккаунты нижеauto_max_usage, по стратегии, и никогда не аккаунт на 100%. - Если все аккаунты с запасом недавно уже выбирались, правила снова выбирают среди всех них, поэтому четвёртый рабочий процесс на трёх аккаунтах делит один из них.
- Выбор записывается, блокировка снимается, и выводится имя.
Окно в 2 минуты нужно потому, что использование нового задания появляется в данных не сразу: без него пять рабочих процессов, запущенных вместе, все увидели бы один и тот же аккаунт как аккаунт с наибольшим запасом.
Безопасность и особые случаи
ccam pickтолько читает использование и записывает время выбора; он никогда не обновляет и не читает токены сверх того, что делаетccam usage.- Выбор не резервирует аккаунт. Через 2 минуты два скрипта всё равно могут запуститься на одном аккаунте; используйте
--fallback, чтобы продолжить, когда этот аккаунт достигнет лимита. - Ожидание с
--waitне держит блокировку, поэтому другие выборы тем временем продолжаются. ccam pickне учитываетccam folder: он выбирает только по использованию.