خصوصیات
Claude Code شروع کرنا
اس صفحے کا انگریزی سے مشینی ترجمہ کیا گیا ہے۔ اصلاحات کا خیرمقدم ہے۔ اس صفحے میں GitHub پر ترمیم کریں
ccam work، Claude Code کو اکاؤنٹ work کے طور پر شروع کرتا ہے، اور نام کے بعد سب کچھ جوں کا توں claude کو جاتا ہے۔ اسے ہر اس جگہ استعمال کریں جہاں آپ claude ٹائپ کرتے: ٹرمینل میں، اسکرپٹ میں، یا pipe سے آنے والے اِن پٹ کے ساتھ۔
استعمال
ccam work # Claude Code as the account work
ccam 2 # the account with number 2 (see ccam list)
ccam work --resume # claude --resume, as work
ccam work -p "fix the tests" --output-format json
cat log.txt | ccam work -p "find the cause"
ccam -p "summarise" # no name: the default account
ccam use work # make work the default account
ccam run work --continue # same as ccam work --continue
ccam # the picker on a terminal, the list otherwise
ccam --dry-run work -p hi # print the command instead of running itاکاؤنٹ کا نام یا ccam list سے اس کا نمبر دیں۔ ccam نام کے بعد والے آرگیومنٹس نہیں پڑھتا، اس لیے ccam work --help، Claude Code کی مدد دکھاتا ہے۔ نام کے بعد -- اختیاری ہے۔ اسٹینڈرڈ اِن پٹ، ایگزٹ کوڈ اور سگنلز ویسے ہی کام کرتے ہیں جیسے claude کے ساتھ۔
جب پہلا آرگیومنٹ - سے شروع ہو اور ccam کا اپنا کوئی فلیگ نہ ہو، تو ccam تمام آرگیومنٹس کے ساتھ ڈیفالٹ اکاؤنٹ شروع کرتا ہے۔ ڈیفالٹ وہ اکاؤنٹ ہے جو ccam use سے مقرر کیا گیا ہو، یا اگر آپ نے کوئی مقرر نہ کیا ہو تو سب سے کم نمبر والا اکاؤنٹ۔
انتخابی مینو
بغیر آرگیومنٹس کے ccam انتخابی مینو کھولتا ہے جب اسٹینڈرڈ اِن پٹ اور آؤٹ پٹ ٹرمینل ہوں، ورنہ ccam list پرنٹ کرتا ہے۔ یہ ہر اکاؤنٹ کا نمبر، ای میل، 5 گھنٹے کا استعمال، آخری استعمال اور شیئر کیے گئے آئٹمز دکھاتا ہے؛ استعمال ہر اکاؤنٹ کے جواب دینے پر بھرتا جاتا ہے۔
| کی | کیا کرتی ہے |
|---|---|
Enter |
منتخب اکاؤنٹ کے طور پر Claude Code شروع کرتی ہے |
1 سے 9 |
اس نمبر والا اکاؤنٹ شروع کرتی ہے |
Up/Down، k/j |
انتخاب کو اوپر نیچے کرتی ہے |
a |
مینو بند کر کے ccam add کا وزرڈ چلاتی ہے |
s |
منتخب اکاؤنٹ کے شیئر کیے گئے آئٹمز میں ترمیم (Space یا x بدلتی ہے، Enter لاگو کرتی ہے، Esc واپس جاتی ہے) |
d |
منتخب اکاؤنٹ کو ڈیفالٹ بناتی ہے |
r |
مختصر کیش کے بغیر استعمال دوبارہ حاصل کرتی ہے |
q، Esc، Ctrl+C |
باہر نکلتی ہے |
مینو کوئی عمل کرنے سے پہلے بند ہو جاتا ہے، اس لیے Claude Code شروع ہونے سے پہلے ٹرمینل بحال ہو جاتا ہے۔ d یا شیئرنگ کی تبدیلی کے بعد یہ دوبارہ کھلتا ہے۔ شیئرنگ کی تبدیلی پہلے منصوبہ دکھاتی ہے اور پوچھتی ہے، جیسے ccam share کرتا ہے۔
آپشنز
| آپشن | کیا کرتا ہے | ڈیفالٹ |
|---|---|---|
--dry-run |
وہ انوائرنمنٹ اور کمانڈ پرنٹ کرتا ہے جو ccam چلاتا، پھر باہر نکل جاتا ہے | بند |
-v، --version |
ccam <version> پرنٹ کرتا ہے (صرف پہلے آرگیومنٹ کے طور پر) |
|
-h، --help |
ccam کی مدد، ccam --help یا ccam run --help کے طور پر |
آرگیومنٹس کے اصول:
- ccam اپنے فلیگز صرف اکاؤنٹ کے نام سے پہلے پڑھتا ہے۔ نام کے بعد ہر آرگیومنٹ Claude Code کا ہے، بشمول
--dry-runاور--help۔ --dry-run،ccam --dry-run work،ccam run --dry-run workاورccam --dry-run(ڈیفالٹ اکاؤنٹ) کے طور پر کام کرتا ہے۔ یہ لاگو ہوتا ہے، مسترد نہیں ہوتا۔ccam run <name|number> [claude args]،ccam <name>کی لمبی شکل ہے۔ نام کے بغیرccam runڈیفالٹ اکاؤنٹ استعمال کرتا ہے۔- اکاؤنٹس کے نام
add،list،runیاusageجیسے ccam کمانڈز کے نام نہیں ہو سکتے، اس لیےccam <word>کبھی مبہم نہیں ہوتا۔
ڈرائی رن ایک لائن پرنٹ کرتا ہے جسے آپ شیل میں چسپاں کر سکتے ہیں:
$ ccam --dry-run work -p "fix the tests"
CLAUDE_CONFIG_DIR=/home/me/.local/share/ccam/profiles/work /home/me/.local/bin/claude --mcp-config=/home/me/.local/share/ccam/groups/default/mcp.json -p 'fix the tests'یہ کیسے کام کرتا ہے
ہر لانچ کمانڈ لائن سے exec تک وہی مراحل اٹھاتا ہے:
ہر خانہ اپنا مرحلہ چلنے پر روشن ہوتا ہے، اور نیچے کی لائنیں وہ انوائرنمنٹ اور آرگیومنٹس ہیں جن کے ساتھ Claude Code شروع ہوتا ہے۔
cmd/ccam/main.go،app.Mainکو کال کرتا ہے۔ اگر ccam کسی اور نام سے شروع ہوا ہو تو یہ ایک شارٹ کٹ ہے اور سیدھا لانچر پر جاتا ہے۔app.parse، cobra کے شامل ہونے سے پہلےos.Argsدیکھتا ہے۔ صرف اکیلاccam(انتخابی مینو)، ccam کمانڈ کا نام (config.Reserved)،-h/--helpاور-v/--version،cli.Executeپر جاتے ہیں۔ باقی سب کچھ لانچ ہے۔launcher.Launch،~/.config/ccam/config.tomlپڑھتا ہے، جو واحد فائل ہے جسے یہ پارس کرتا ہے۔launcher.Prepareاکاؤنٹ کو نام یا نمبر سے تلاش کرتا ہے، شروع کا ایک--ہٹاتا ہے، اورResolveClaudeسےclaudeقابلِ عمل فائل تلاش کرتا ہے۔ PATH کی تلاش فائل کے ترمیم کے وقت کے ساتھ~/.local/state/ccam/claude-pathمیں کیش ہوتی ہے، اس لیے ccam ہر لانچ پرPATHتلاش نہیں کرتا۔ بدلی ہوئی یا غائب فائل نئی تلاش شروع کرتی ہے۔config.tomlمیںclaude_binکا راستہ جوں کا توں استعمال ہوتا ہے۔ ccam ایساclaudeمسترد کرتا ہے جو خود ccam ہو، inode سے موازنہ کر کے، کیونکہ اس سے لوپ بن جائے گا۔checkLinksاکاؤنٹ فولڈر~/.local/share/ccam/profiles/<name>/کو اس کی شیئرنگ سیٹنگز سےshare.Checkکے ذریعے موازنہ کرتا ہے، جو صرفlstatاورreadlinkکال کرتا ہے، ہر آئٹم کے لیے ایک یا دو سسٹم کالز۔ غائب لنک فوراً بنا دیا جاتا ہے۔ جس چیز سے ڈیٹا کھو سکتا ہو وہ لانچ روک دیتی ہے۔applyMCPشیئر کیے گئے MCP سرورز شامل کرتا ہے (نیچے دیکھیں)۔session.Registerسیشن ریکارڈ کرتا ہے۔ ccam اپنے PID کے نام سے ایک نشان، جس میں پروسیس کے شروع ہونے کا وقت ہوتا ہے،$XDG_RUNTIME_DIR/ccam/profile-<name>/<pid>میں لکھتا ہے (یاXDG_RUNTIME_DIRکے بغیر~/.local/state/ccam/locks/میں)۔ گفتگو کی ہسٹری شیئر کرنے والے اکاؤنٹ کے لیے،historyCheckپہلےhistory-<group>-<hash>میں کوئی چلتا ہوا سیشن تلاش کرتا ہے، جہاں hash موجودہ فولڈر کا ہوتا ہے، اور وہاں بھی رجسٹر کرتا ہے۔exec، PID برقرار رکھتا ہے، اس لیے نشان پھر خود Claude Code پروسیس کا نام بتاتا ہے۔ پکڑا ہوا لاک نہیں بلکہ نشان، کیونکہ Claude Code جو پروسیس شروع کرتا ہے وہ لاک وراثت میں پا کر سیشن ختم ہونے کے بعد بھی اسے رکھے رہیں گے۔Plan.Execٹرمینل کا عنوانclaude · <name>مقرر کرتا ہے (جب اسٹینڈرڈ ایرر ٹرمینل ہو)، لانچ کا وقتfsyncکے بغیر~/.local/state/ccam/last-used/<name>میں لکھتا ہے، اورsyscall.Execکال کرتا ہے۔
Claude Code اس طرح چلتا ہے کہ CLAUDE_CONFIG_DIR اکاؤنٹ فولڈر پر اور CCAM_PROFILE اکاؤنٹ کے نام پر مقرر ہوتا ہے۔ ccam ان کی وہ قدریں ہٹا دیتا ہے جو اسے وراثت میں ملی ہوں۔ macOS پر ccam import سے رجسٹر کیے گئے ~/.claude فولڈر کے لیے یہ CLAUDE_SECURESTORAGE_CONFIG_DIR کو بھی خالی قدر پر مقرر کرتا ہے، تاکہ اکاؤنٹ اور سادہ claude ایک ہی Keychain لاگ اِن استعمال کریں۔
exec کیوں
syscall.Exec، ccam پروسیس کی جگہ claude لے آتا ہے، اس لیے ccam میموری میں نہیں رہتا، کی اسٹروکس، سگنلز اور ایگزٹ کوڈ Claude Code کے اپنے ہوتے ہیں، اور آرگیومنٹس ایک array رہتے ہیں، کبھی شیل اسٹرنگ نہیں بنتے۔ سیشن کے بعد کا کام، جیسے claude mcp add سے شامل کیے گئے سرورز کو نوٹ کرنا، اگلے لانچ پر ہوتا ہے: ccam، .claude.json کے ترمیم کے وقت کو ~/.local/state/ccam/mcp/<name>/seen سے موازنہ کرتا ہے اور فائل صرف تب پارس کرتا ہے جب وہ بدلی ہو۔
کمانڈ لائن کس راستے پر جاتی ہے
تین کمانڈ لائنیں، internal/app سے گزرنے کے تین راستے:
شارٹ کٹ argv[0] پر، اور ccam <name> پہلے آرگیومنٹ پر پہچانا جاتا ہے، اور دونوں syscall.Exec پر ختم ہوتے ہیں۔ صرف ccam usage جیسی ccam کمانڈ cobra تک پہنچتی ہے۔
شیئر کیے گئے MCP سرورز
ڈیفالٹ flag حکمتِ عملی کے ساتھ، ccam گروپ کے MCP سرورز Claude Code کو ایک آرگیومنٹ کے طور پر دیتا ہے، جو آپ کے آرگیومنٹس سے پہلے رکھا جاتا ہے:
mcp.FlagArgs آرگیومنٹ صرف تب لوٹاتا ہے جب گروپ کی mcp.json موجود ہو، اور Plan.InsertArgs اسے claude کے فوراً بعد رکھتا ہے۔ آپ کا اپنا --mcp-config یا --strict-mcp-config پھر بھی اس کے اوپر لاگو ہوتا ہے۔ یہ ایک ہی آرگیومنٹ ہے، --mcp-config=<path>، کیونکہ Claude Code کا --mcp-config کئی قدریں لیتا ہے: دو آرگیومنٹس کے طور پر لکھا جائے تو یہ بعد میں آنے والے پرامپٹ کو بھی کنفیگ فائل سمجھ کر پڑھے گا۔
config.toml میں mcp_strategy = "sync" کے ساتھ، ccam اس کے بجائے سرورز اکاؤنٹ کی .claude.json میں لکھتا ہے، اور اگر اکاؤنٹ پہلے سے چل رہا ہو تو یہ چھوڑ دیتا ہے۔
10 ms کا بجٹ
ccam، Claude Code شروع ہونے سے پہلے زیادہ سے زیادہ 10 ms (p95) شامل کرتا ہے۔ لانچ کا راستہ کبھی cobra کمانڈ ٹری نہیں بناتا، Bubble Tea شروع نہیں کرتا اور نیٹ ورک کنکشن نہیں کھولتا، اور اگر پیکیجز کے init() فنکشنز کل ملا کر 5 ms سے زیادہ لیں تو TestPackageInitIsCheap ناکام ہوتا ہے۔ scripts/perf-check.sh، hyperfine سے ccam --dry-run work، ccam work اور ایک شارٹ کٹ کو ناپتا ہے اور 10 ms سے اوپر ناکام ہوتا ہے، اور internal/launcher میں BenchmarkLaunchPath مراحل کو لوپ میں چلاتا ہے۔ ہر مرحلے کا وقت دیکھنے کے لیے CCAM_TRACE=1 مقرر کریں:
$ CCAM_TRACE=1 ccam --dry-run work >/dev/null
ccam trace: start 2.830ms (total 2.830ms)
ccam trace: load config 0.397ms (total 3.227ms)
ccam trace: prepare 0.112ms (total 3.339ms)
ccam trace: check links 0.238ms (total 3.578ms)
ccam trace: prelaunch 0.083ms (total 3.661ms)حفاظت اور خاص صورتیں
- نامعلوم نام یا نمبر
no account "<name>"کے ساتھ رک جاتا ہے اورccam listکی طرف رہنمائی کرتا ہے۔ اگر کوئی اکاؤنٹ ہی نہ ہو تو ccam کہتا ہے کہccam add <name>سے ایک شامل کریں۔ - اگر کوئی شیئر کیا گیا راستہ عام فائل بن گیا ہو یا غلط جگہ اشارہ کرتا ہو، تو ccam،
stopped because of share link problems:کے ساتھ رک جاتا ہے، ان کی فہرست دیتا ہے، اورccam doctor --fixچلانے کو کہتا ہے۔ یہ لانچ کے راستے پر ڈیٹا منتقل نہیں کرتا۔ - اگر کوئی دوسرا Claude Code جو اس اکاؤنٹ کے ساتھ گفتگو کی ہسٹری شیئر کرتا ہو (ایک ہی گروپ) اسی فولڈر میں چل رہا ہو، تو ccam انتباہ دیتا ہے کہ ہسٹری آپس میں مل سکتی ہے اور
Run anyway? [y/N]پوچھتا ہے۔ ٹرمینل کے بغیر یہ انتباہ دکھا کر جاری رکھتا ہے۔ --dry-run، MCP sync، نئے سرور کی اطلاع، ہسٹری کی جانچ، سیشن کا نشان، عنوان اور آخری استعمال کا وقت چھوڑ دیتا ہے، اور exec نہیں کرتا۔ یہ پھر بھی شیئر لنکس جانچتا ہے، اور عام لانچ کی طرح غائب لنک بنا دیتا ہے۔mcp_strategy = "sync"کے ساتھ، ناکام sync،ccam: MCP sync failed (launching anyway): …پرنٹ کرتا ہے اور Claude Code ان سرورز کے ساتھ شروع ہوتا ہے جو اس کے پاس پہلے سے تھے۔