# انتخاب حساب برای اسکریپت‌ها

> ccam pick حسابی را که بیشترین ظرفیت را دارد برای اسکریپت چاپ می‌کند، به کارگرهای هم‌زمان حساب‌های متفاوت می‌دهد و وقتی ظرفیتی نماند با کد 75 خارج می‌شود.

Source: https://ccam.dev/fa/features/pick/ · Updated 2026-10-20

`ccam pick` نام حساب واردشده‌ای را که بیشترین ظرفیت را دارد چاپ می‌کند تا اسکریپت Claude Code را با آن آغاز کند. کارگرهایی که هم‌زمان آغاز می‌شوند، تا وقتی حساب‌های کافی با ظرفیت باشد، هر کدام حساب متفاوتی می‌گیرند؛ پس دسته‌ای از کارهای `claude -p` به جای خالی کردن یک حساب، میان حساب‌های شما پخش می‌شود.

## نحوه استفاده

```sh
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
```

```console
$ 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` | حساب، مصرف ۵ ساعته و هفتگی آن و منبع عددها را چاپ می‌کند | خاموش |
| `--model <model>` | پنجره هفتگی آن مدل را هم در نظر می‌گیرد، مانند `opus` | هیچ |
| `--max-usage <1-100>` | حساب‌هایی را که مصرفشان زیر این مقدار است ترجیح می‌دهد | `auto_max_usage`، وگرنه ۱۰۰ |
| `--strategy headroom\|expiring` | کمترین مصرف ۵ ساعته، یا زودترین بازنشانی ۵ ساعته | `auto_strategy`، وگرنه `headroom` |
| `--wait[=<duration>]` | وقتی هیچ حسابی ظرفیت ندارد، منتظر می‌ماند تا نخستین حساب بازنشانی شود، حداکثر به این مدت | خاموش؛ اگر تنها داده شود `5h` |
| `--dry-run` | انتخاب می‌کند بدون آنکه انتخاب را ثبت کند | خاموش |

## سازوکار

1. ccam حساب‌های واردشده را فهرست می‌کند (حساب‌های کلید API سقفی ندارند و کنار گذاشته می‌شوند).
2. یک قفل می‌گیرد (`~/.local/state/ccam/picks.lock`)، تا انتخاب‌هایی که هم‌زمان اجرا می‌شوند یکی پس از دیگری انجام شوند.
3. مصرف همه حساب‌ها را هم‌زمان می‌پرسد، به همان شکلی که `ccam usage` می‌پرسد، با حافظه نهان ۶۰ ثانیه‌ای.
4. ابتدا حساب‌هایی که در ۲ دقیقه گذشته انتخاب شده‌اند (`~/.local/state/ccam/picks/<name>`) کنار گذاشته می‌شوند و [قواعد انتخاب](https://ccam.dev/fa/features/next.md#auto) `ccam next --auto` از میان بقیه انتخاب می‌کنند: ابتدا حساب‌های زیر `auto_max_usage`، بر اساس راهبرد، و هرگز حسابی که به ۱۰۰٪ رسیده است.
5. اگر همه حساب‌هایی که ظرفیت دارند به‌تازگی انتخاب شده باشند، قواعد دوباره از میان همه آن‌ها انتخاب می‌کنند، پس کارگر چهارم روی سه حساب، یکی از آن‌ها را با دیگری شریک می‌شود.
6. انتخاب ثبت و قفل آزاد می‌شود و سپس نام چاپ می‌شود.

پنجره ۲ دقیقه‌ای اهمیت دارد، چون مدتی طول می‌کشد تا مصرف یک کار تازه در عددها دیده شود: بدون آن، پنج کارگری که با هم آغاز شده‌اند همگی یک حساب را حسابی با بیشترین ظرفیت می‌دیدند.

## ایمنی و موارد خاص

- `ccam pick` فقط مصرف را می‌خواند و زمان انتخاب را می‌نویسد؛ هرگز توکن‌ها را تمدید نمی‌کند و بیش از آنچه `ccam usage` می‌خواند، آن‌ها را نمی‌خواند.
- انتخاب، حساب را رزرو نمی‌کند. دو اسکریپت ممکن است پس از ۲ دقیقه باز هم روی یک حساب آغاز شوند؛ برای بازیابی وقتی آن حساب به سقفش می‌رسد از `--fallback` استفاده کنید.
- انتظار با `--wait` هیچ قفلی نگه نمی‌دارد، پس انتخاب‌های دیگر در این مدت ادامه می‌یابند.
- `ccam pick` به [`ccam folder`](https://ccam.dev/fa/features/folder.md) توجهی نمی‌کند: فقط بر اساس مصرف انتخاب می‌کند.

## مطالب مرتبط

- [جابه‌جایی به حساب بعدی](https://ccam.dev/fa/features/next.md)
- [اجرای دوباره هنگام رسیدن به سقف](https://ccam.dev/fa/features/next.md#run-again-at-the-limit)
- [سقف مصرف](https://ccam.dev/fa/features/usage.md)
- [حساب‌های کلید API](https://ccam.dev/fa/features/api.md)
