Можливості

Вибір облікового запису для скриптів

Автор: 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: він вибирає лише за використанням.