スクリプト用のアカウント選び
このページは英語から機械翻訳されています。修正を歓迎します。 GitHubでこのページを編集
このページの内容
ccam pickは、ログイン済みのアカウントのうち最も余裕があるアカウントの名前を表示します。スクリプトはその名前でClaude Codeを起動できます。余裕のあるアカウントが十分にある間は、同時に起動したワーカーがそれぞれ別のアカウントを受け取るので、claude -pのジョブの一群が1つのアカウントを使い切ることなく、複数のアカウントに分散されます。
使い方
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)を取るので、同時に実行された選択は1つずつ順番に行われます。 ccam usageと同じ方法で、60秒のキャッシュを使い、すべてのアカウントの使用量を一度に問い合わせます。- 直近2分以内に選ばれたアカウント(
~/.local/state/ccam/picks/<name>)をまず除き、残りの中からccam next --autoの選択の規則で選びます。auto_max_usage未満を優先し、戦略に従い、100%のアカウントは決して選びません。 - 余裕のあるアカウントがすべて最近選ばれていた場合は、規則がそれらすべての中からもう一度選びます。そのため、3つのアカウントに対する4つ目のワーカーは、どれか1つを共有します。
- 選択を記録してロックを解放し、名前を表示します。
2分の期間が重要なのは、新しいジョブの使用量が数値に表れるまでに時間がかかるからです。これがないと、同時に起動した5つのワーカーがすべて、同じアカウントを最も余裕があるアカウントと見なしてしまいます。
安全性と特殊なケース
ccam pickは使用量を読み、選択した時刻を書き込むだけです。ccam usageが行う以上に、トークンを更新したり読んだりすることはありません。- 選んでもアカウントが予約されるわけではありません。2分が過ぎれば、2つのスクリプトが同じアカウントで起動することもあります。そのアカウントが上限に達したときに立て直すには、
--fallbackを使います。 --waitで待っている間はロックを持たないので、そのほかの選択はその間も進みます。ccam pickはccam folderを無視し、使用量だけで選びます。