ฟีเจอร์

การเลือกบัญชีสำหรับสคริปต์

โดย jhyunwoo
อัปเดตล่าสุด 20 ตุลาคม 2569
ตรวจสอบกับ ccam 0.8.0 และ Claude Code 2.1.302

หน้านี้แปลด้วยเครื่องจากภาษาอังกฤษ ยินดีรับการแก้ไข แก้ไขหน้านี้บน GitHub

ในหน้านี้

ccam pick พิมพ์ชื่อของบัญชีที่เข้าสู่ระบบแล้วซึ่งเหลือโควตามากที่สุด เพื่อให้สคริปต์ใช้เริ่ม Claude Code worker ที่เริ่มพร้อมกันจะได้บัญชีคนละบัญชีตราบใดที่มีบัญชีที่เหลือโควตามากพอ งาน 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 key ไม่มีขีดจำกัดจึงไม่ถูกนับรวม)
  2. ccam ล็อก (~/.local/state/ccam/picks.lock) เพื่อให้การเลือกที่รันพร้อมกันเกิดขึ้นทีละรายการ
  3. ccam สอบถามการใช้งานของทุกบัญชีพร้อมกันแบบเดียวกับ ccam usage โดยใช้แคช 60 วินาที
  4. บัญชีที่ถูกเลือกภายใน 2 นาทีที่ผ่านมา (~/.local/state/ccam/picks/<name>) จะถูกตัดออกก่อน แล้วกฎการเลือกของ ccam next --auto จะเลือกจากบัญชีที่เหลือ: บัญชีที่ต่ำกว่า auto_max_usage มาก่อน ตามกลยุทธ์ และไม่เลือกบัญชีที่อยู่ที่ 100% เด็ดขาด
  5. หากทุกบัญชีที่เหลือโควตาเพิ่งถูกเลือกไป กฎจะเลือกจากบัญชีทั้งหมดอีกครั้ง worker ตัวที่สี่บนสามบัญชีจึงใช้บัญชีร่วมกับตัวอื่นหนึ่งบัญชี
  6. ccam บันทึกการเลือกและปลดล็อก จากนั้นจึงพิมพ์ชื่อ

ช่วง 2 นาทีมีความสำคัญ เพราะการใช้งานของงานใหม่ต้องใช้เวลาสักพักกว่าจะปรากฏในตัวเลข หากไม่มีช่วงนี้ worker ห้าตัวที่เริ่มพร้อมกันจะเห็นบัญชีเดียวกันว่าเป็นบัญชีที่เหลือโควตามากที่สุดทั้งหมด

ความปลอดภัยและกรณีพิเศษ

  • ccam pick อ่านแค่การใช้งานและเขียนเวลาที่เลือก ไม่เคยต่ออายุหรืออ่านโทเค็นเกินกว่าที่ ccam usage ทำ
  • การเลือกไม่ได้จองบัญชีไว้ สคริปต์สองตัวอาจยังเริ่มบนบัญชีเดียวกันหลังผ่านไป 2 นาที ใช้ --fallback เพื่อกู้คืนเมื่อบัญชีนั้นถึงขีดจำกัด
  • การรอด้วย --wait ไม่ถือล็อกไว้ การเลือกอื่นจึงดำเนินต่อไปได้ระหว่างนั้น
  • ccam pick ไม่สนใจ ccam folder โดยเลือกตามการใช้งานเท่านั้น