قابلیت‌ها

جابه‌جایی به حساب بعدی

آخرین به‌روزرسانی: ۲۷ مهر ۱۴۰۵
بررسی‌شده با ccam 0.6.0 و Claude Code 2.1.302

این صفحه به‌صورت ماشینی از انگلیسی ترجمه شده است. پیشنهاد اصلاح را با کمال میل می‌پذیریم. ویرایش این صفحه در GitHub

در این صفحه

ccam next بدون آنکه نام حسابی را بدهید، Claude Code را با حساب دیگری باز می‌کند. وقتی حسابی به سقف مصرف خود رسید از آن استفاده کنید: ccam next ساده حساب پس از حسابی را که آخرین بار استفاده کردید برمی‌دارد، --auto حسابی را که بیشترین جا را در پنجره ۵ ساعته خود دارد برمی‌دارد و --continue آخرین گفتگو را در حساب جدید ادامه می‌دهد.

نحوه استفاده

ccam next                       # the account after the one you used last
ccam next --auto                # the account with the lowest 5-hour usage
ccam next --continue            # the next account that shares history, with claude --continue
ccam next -c --auto             # both: lowest usage among accounts sharing history
ccam next -- -p "summarize"     # pass arguments to claude after --
ccam --dry-run next --auto      # print the choice and the command, start nothing
$ ccam --dry-run next
→ personal → work
CLAUDE_CONFIG_DIR=/home/you/.local/share/ccam/profiles/work /usr/local/bin/claude

ccam جابه‌جایی را به شکل → <from> → <to> در خطای استاندارد چاپ می‌کند و سپس Claude Code را با حساب جدید به همان شکلی آغاز می‌کند که ccam <name> انجام می‌دهد. <from> حسابی است که آخرین بار استفاده کردید. آرگومان‌های پس از -- بدون تغییر به claude می‌روند.

گزینه‌ها

گزینه کاری که انجام می‌دهد پیش‌فرض
--auto حساب واردشده‌ای را که کمترین مصرف ۵ ساعته را دارد انتخاب می‌کند و از حساب‌های ۱۰۰٪ می‌گذرد خاموش
-c، --continue فقط حساب‌هایی را در نظر می‌گیرد که تاریخچه گفتگو را با حسابی که آخرین بار استفاده کردید به اشتراک می‌گذارند، و claude --continue را آغاز می‌کند خاموش
-- <claude args> آرگومان‌هایی که پس از آرگومان‌های خود ccam به claude داده می‌شوند هیچ
--dry-run پشتیبانی می‌شود: → <from> → <to> و خط فرمانی را که اجرا می‌کرد چاپ می‌کند، بدون آغاز Claude Code یا ثبت یک اجرا خاموش

--auto و --continue با هم کار می‌کنند. با --continue، گزینه --continue پیش از آرگومان‌های خود شما قرار می‌گیرد.

سازوکار

هر اجرا از طریق ccam زمان را در ~/.local/state/ccam/last-used/<name> می‌نویسد. ccam next این فایل‌ها را می‌خواند، بررسی می‌کند کدام حساب‌ها وارد شده‌اند و انتخاب می‌کند.

  1. cli.candidates برای هر حساب در config.toml یک next.Candidate می‌سازد: حساب، زمان آخرین اجرای آن (launcher.LastUsed) و اینکه ورود دارد یا نه (creds.Has: یک .credentials.json قابل خواندن، یا در macOS یک مورد در Keychain).
  2. بدون --auto، next.Rotate حساب‌ها را بر اساس شماره جایگاه مرتب می‌کند و حسابی را که اخیراً از همه اجرا شده پیدا می‌کند. این همان حسابی است که از آن جابه‌جا می‌شوید. اگر هنوز هیچ حسابی اجرا نشده باشد، پایین‌ترین جایگاه است.
  3. از آنجا به ترتیب جایگاه جلو می‌رود، از آخرین جایگاه دوباره به نخستین برمی‌گردد و نخستین حساب واردشده را برمی‌گرداند.
  4. launcher.LaunchWith حساب انتخاب‌شده را دقیقاً مانند ccam <name> آماده و اجرا می‌کند: پیوندهای حساب را بررسی می‌کند، اشتراک‌گذاری MCP را اعمال می‌کند، نشست را ثبت می‌کند و ccam را از طریق syscall.Exec با claude جایگزین می‌کند.

پیمایش از حسابی که آخرین بار استفاده شده آغاز می‌شود و در نخستین حساب واردشده پس از آن متوقف می‌شود:

work اخیراً از همه اجرا شده، پس پیمایش پس از آن آغاز می‌شود. side ورود ندارد و رد می‌شود و lab انتخاب می‌شود. اگر lab هم از حساب خارج شده بود، پیمایش دور می‌زد و به personal می‌رسید (% len در نمودار). چرخش هرگز حسابی را که از آن شروع کرده‌اید برنمی‌گرداند: اگر حساب واردشده دیگری نباشد، با خطا متوقف می‌شود.

--auto

--auto به‌جای ترتیب جایگاه، بر اساس مصرف تصمیم می‌گیرد. cli.pickAuto حساب‌های واردشده را نگه می‌دارد، مصرف همه آن‌ها را هم‌زمان با همان Fetcher.FetchAll که ccam usage استفاده می‌کند می‌پرسد و انتخاب را به usage.Best() می‌سپارد:

usage.Best() کمترین درصد ۵ ساعته را برمی‌دارد و از حساب‌هایی که به ۱۰۰٪ رسیده‌اند یا مصرف ۵ ساعته‌شان نامعلوم است می‌گذرد. این پرس‌وجو از قواعد ccam usage پیروی می‌کند: عددهایی که کمتر از ۶۰ ثانیه از عمرشان گذشته دوباره استفاده می‌شوند، هر حساب ۳ ثانیه فرصت دارد و حسابی که پاسخ ندهد یا ورودش منقضی شده باشد، بر اساس عددهای ذخیره‌شده‌اش سنجیده می‌شود. پنجره ذخیره‌شده‌ای که زمان بازنشانی‌اش گذشته باشد ۰٪ حساب می‌شود، پس حسابی که پنجره‌اش از آن زمان بازنشانی شده نادیده گرفته نمی‌شود. --auto هرگز توکن‌ها را تمدید نمی‌کند. برخلاف چرخش ساده، --auto می‌تواند همان حسابی را که آخرین بار استفاده کردید انتخاب کند، اگر هنوز بیشترین جا را داشته باشد.

--continue

گزینه --continue در Claude Code تازه‌ترین گفتگو در پوشه فعلی را باز می‌کند، که فقط وقتی کار می‌کند که حساب جدید بتواند آن گفتگو را ببیند. بنابراین با --continue، ccam فقط حساب‌هایی را در نظر می‌گیرد که در همان گروه history حسابی هستند که آخرین بار استفاده کردید، و سپس --continue را پیش از آرگومان‌های شما قرار می‌دهد. حساب‌هایی که تاریخچه‌شان local است با هیچ حسابی به اشتراک نمی‌گذارند، پس --continue از چنین حسابی همیشه ناموفق است. ابتدا اشتراک‌گذاری را با ccam share <name> --history on روشن کنید (اشتراک‌گذاری را ببینید).

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

  • حساب‌های بدون ورود هرگز انتخاب نمی‌شوند. اگر حساب واردشده دیگری نباشد، ccam next ساده با no logged-in account other than <name> متوقف می‌شود.
  • با --continue و بدون حسابی که تاریخچه را به اشتراک بگذارد: no other account shares conversation history with <name>. Turn it on with `ccam share <name> --history on`.
  • با --auto و بدون حساب واردشده: no logged-in account to pick. وقتی همه حساب‌ها پر هستند یا مصرفشان نامعلوم است: no account with known usage and headroom (see `ccam usage`).
  • --auto حتی با --dry-run درخواست شبکه می‌فرستد. فقط می‌خواند و هرگز در فایل‌های توکن نمی‌نویسد.
  • حساب انتخاب‌شده از همان مسیر ccam <name> آغاز می‌شود، پس همان بررسی‌ها اعمال می‌شوند، از جمله هشداری که وقتی Claude Code دیگری با همان تاریخچه مشترک از قبل در این پوشه در حال اجراست داده می‌شود.
  • last-used فقط وقتی نوشته می‌شود که Claude Code واقعاً آغاز شود. --dry-run به آن دست نمی‌زند، پس اجرای آزمایشی چرخش را جلو نمی‌برد.