Funzionalità

Scegliere un account per gli script

Di jhyunwoo
Ultimo aggiornamento: 20 ottobre 2026
Verificato con ccam 0.8.0 e Claude Code 2.1.302

Questa pagina è stata tradotta automaticamente dall'inglese. Le correzioni sono benvenute. Modifica questa pagina su GitHub

In questa pagina

ccam pick stampa il nome dell'account con login che ha più margine, perché uno script ci avvii Claude Code. I worker avviati nello stesso momento ricevono ciascuno un account diverso finché ci sono abbastanza account con margine, così un gruppo di job claude -p si distribuisce sui tuoi account invece di esaurirne uno.

Utilizzo

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"
}

Codici di uscita: 0 con un nome sullo standard output, 75 (EX_TEMPFAIL) quando nessun account ha margine o nessuno ha il login, 1 per gli altri errori, come un'opzione non valida.

Opzioni

Opzione Cosa fa Predefinito
--json Stampa l'account, il suo utilizzo su 5 ore e settimanale e la provenienza dei numeri disattivata
--model <model> Conta anche la finestra settimanale di quel modello, come opus nessuno
--max-usage <1-100> Preferisce gli account sotto questo utilizzo auto_max_usage, altrimenti 100
--strategy headroom|expiring L'utilizzo su 5 ore più basso, oppure l'azzeramento su 5 ore più vicino auto_strategy, altrimenti headroom
--wait[=<duration>] Quando nessun account ha margine, attende l'azzeramento del primo, al massimo per questo tempo disattivata; 5h se indicata da sola
--dry-run Sceglie senza registrare la scelta disattivata

Come funziona

  1. ccam elenca gli account con login (gli account con chiave API non hanno limiti e vengono esclusi).
  2. Acquisisce un lock (~/.local/state/ccam/picks.lock), così le scelte eseguite nello stesso momento avvengono una dopo l'altra.
  3. Consulta l'utilizzo di tutti gli account contemporaneamente, come fa ccam usage, con la cache di 60 secondi.
  4. Gli account scelti negli ultimi 2 minuti (~/.local/state/ccam/picks/<name>) vengono esclusi per primi, e le regole di scelta di ccam next --auto scelgono tra i restanti: prima quelli sotto auto_max_usage, secondo la strategia, mai un account al 100%.
  5. Se ogni account con margine è stato scelto di recente, le regole scelgono di nuovo tra tutti, così un quarto worker su tre account ne condivide uno.
  6. La scelta viene registrata e il lock rilasciato, poi viene stampato il nome.

La finestra di 2 minuti conta perché l'utilizzo di un nuovo job impiega un po' a comparire nei numeri: senza di essa, cinque worker avviati insieme vedrebbero tutti lo stesso account come quello con più margine.

Sicurezza e casi limite

  • ccam pick legge solo l'utilizzo e scrive l'ora della scelta; non rinnova né legge mai i token oltre a quanto fa ccam usage.
  • Una scelta non riserva l'account. Due script possono comunque partire sullo stesso account dopo 2 minuti; usa --fallback per recuperare quando quell'account raggiunge il limite.
  • L'attesa con --wait non tiene alcun lock, quindi nel frattempo le altre scelte proseguono.
  • ccam pick ignora ccam folder: sceglie solo in base all'utilizzo.