خصوصیات

جانچ اور مرمت

آخری اپ ڈیٹ 19 اکتوبر، 2026
ccam 0.6.0 اور Claude Code 2.1.302 کے ساتھ جانچا گیا

اس صفحے کا انگریزی سے مشینی ترجمہ کیا گیا ہے۔ اصلاحات کا خیرمقدم ہے۔ اس صفحے میں GitHub پر ترمیم کریں

اس صفحے پر

ccam doctor آپ کی ccam انسٹالیشن جانچتا ہے: Claude Code بائنری، ہر اکاؤنٹ کا فولڈر، لاگ اِن اور شیئر لنکس، شیئر کیے گئے MCP سرورز، usage اینڈ پوائنٹ اور آپ کی شارٹ کٹ کمانڈز۔ ccam doctor --fix وہ ٹھیک کرتا ہے جو ڈیٹا کھوئے بغیر ہو سکے، اور جو فائل بھی وہ بدلتا ہے اسے پہلے ایک بیک اپ فولڈر میں منتقل کرتا ہے۔ اسے تب چلائیں جب ccam <name> کسی شیئر لنک کے مسئلے پر رک جائے، جب آپ نے فائلیں ہاتھ سے بحال کی ہوں، یا Claude Code کی اپ ڈیٹ کے بعد۔

استعمال

ccam doctor                  # check everything, change nothing
ccam doctor --fix            # check, then repair what is safe to repair
ccam --dry-run doctor --fix  # report only: what --fix would repair

ہر نتیجہ ایک لائن ہے جس پر ایک نشان ہوتا ہے: ✓ ٹھیک، · معلومات، ! انتباہ، ✗ غلطی۔ اکاؤنٹ کے نتائج اکاؤنٹ کے نام سے شروع ہوتے ہیں۔

$ ccam doctor
✓ Claude Code 2.1.302 (Claude Code) (/home/me/.local/bin/claude)
! personal: folder permissions are 755 (should be 0700)
! personal: .credentials.json permissions are 644 (should be 0600)
✓ personal: login valid (me@example.com)
✗ personal: /home/me/.local/share/ccam/profiles/personal/settings.json: set to shared but is a real file, not a link
· personal: unknown entries (Claude Code layout may have changed): newthing
! work: not logged in → `ccam login work`
✓ work: share links OK
! missing shortcuts in /home/me/.local/bin: ccp

`ccam doctor --fix` repairs what it can.

--fix کے ساتھ، جو بھی نتیجہ ٹھیک کیا گیا ہو اس کے آخر میں → fixed آتا ہے:

$ ccam doctor --fix
✓ Claude Code 2.1.302 (Claude Code) (/home/me/.local/bin/claude)
! personal: folder permissions are 755 (should be 0700) → fixed
! personal: .credentials.json permissions are 644 (should be 0600) → fixed
✓ personal: login valid (me@example.com)
✗ personal: /home/me/.local/share/ccam/profiles/personal/settings.json: set to shared but is a real file, not a link → fixed
· personal: unknown entries (Claude Code layout may have changed): newthing
! work: not logged in → `ccam login work`
✓ work: share links OK
! missing shortcuts in /home/me/.local/bin: ccp → fixed

آپشنز

آپشن کیا کرتا ہے ڈیفالٹ
--fix وہ ٹھیک کرتا ہے جسے ٹھیک کرنا محفوظ ہو (بدلی گئی فائلوں کا بیک اپ لیا جاتا ہے) بند
--dry-run (گلوبل) ہر جانچ چلاتا ہے لیکن کچھ ٹھیک نہیں کرتا، --fix کے ساتھ بھی بند

ccam doctor کوئی آرگیومنٹ نہیں لیتا۔ یہ --dry-run کو لاگو کرتا ہے: ccam --dry-run doctor --fix وہی نتائج پرنٹ کرتا ہے جو ccam doctor کرتا ہے اور کچھ تبدیل نہیں کرتا۔

جب کم از کم ایک ✗ نتیجہ ٹھیک کیے بغیر رہ جائے تو ایگزٹ کوڈ 1 ہوتا ہے، ورنہ 0۔ انتباہات اور معلومات کبھی رن کو ناکام نہیں کرتیں۔ جب رن --fix کے بغیر ناکام ہو تو ccam ایک خالی لائن اور `ccam doctor --fix` repairs what it can. پر ختم ہوتا ہے۔ جو کنفیگ لوڈ نہ ہو سکے وہ بھی 1 اور ایک ccam: غلطی پر ختم ہوتا ہے۔

یہ کیسے کام کرتا ہے

internal/cli/doctor.go، ~/.config/ccam/config.toml لوڈ کرتا ہے اور internal/doctor/doctor.go میں doctor.Run کو کال کرتا ہے، جو جانچیں ایک مقررہ ترتیب میں چلاتا ہے اور نتائج لوٹاتا ہے۔ --fix آگے Options.Fix کے طور پر جاتا ہے، جو ڈرائی رن میں false ہوتا ہے۔

درمیانی حصہ ہر اکاؤنٹ کے لیے ایک بار چلتا ہے۔ جانچیں، اور ہر ایک کے لیے --fix کیا کرتا ہے:

  1. Claude Code کا ورژن (checkClaude)۔ claude بائنری کو اسی طرح تلاش کرتا ہے جیسے لانچر کرتا ہے اور claude --version چلاتا ہے۔ اگر ورژن 2.1.302 سے شروع نہ ہو، جو وہ ورژن ہے جس کے مقابلے میں ccam کے فولڈر کی ترتیب جانچی گئی تھی (doctor.LayoutVersion)، تو یہ · ccam was verified against the folder layout of Claude Code 2.1.302. Any 'unknown entries' below may mean the layout changed شامل کرتا ہے۔ بائنری کا نہ ہونا یا --version کا ناکام ہونا غلطی ہے۔ کوئی مرمت نہیں۔
  2. انوائرنمنٹ میں اسناد (checkAuthEnv)۔ جب CLAUDE_CODE_OAUTH_TOKEN، ANTHROPIC_API_KEY یا ANTHROPIC_AUTH_TOKEN مقرر ہو تو انتباہ دیتا ہے: اس شیل سے لانچ ہونے والا ہر اکاؤنٹ اسے وراثت میں پاتا ہے، اور Claude Code اسے اکاؤنٹ کے اپنے لاگ اِن پر ترجیح دیتا ہے۔ کوئی مرمت نہیں؛ اسے خود ہٹائیں۔
  3. فولڈر (checkProfile)۔ اکاؤنٹ فولڈر کا نہ ہونا غلطی ہے اور اس اکاؤنٹ کی جانچ ختم کر دیتا ہے۔ اگر اجازتوں میں group یا other کا کوئی بٹ مقرر ہو تو انتباہ ہے؛ --fix، chmod 0700 چلاتا ہے۔
  4. لاگ اِن فائل (checkCredentials)۔ .credentials.json کو lstat سے جانچا جاتا ہے۔ symlink غلطی ہے، کیونکہ ہر اکاؤنٹ کا اپنا ٹوکن ہونا چاہیے، اور اسے ٹھیک نہیں کیا جاتا۔ 0600 کے سوا کوئی موڈ انتباہ ہے؛ --fix، chmod 0600 چلاتا ہے۔ پھر لاگ اِن پڑھا جاتا ہے (macOS پر پہلے Keychain سے)۔ لاگ اِن نہ ہونا انتباہ ہے جو ccam login <name> کی طرف رہنمائی کرتا ہے۔ میعاد ختم ہونے والا ریفریش ٹوکن login expired غلطی ہے؛ میعاد ختم ہونے والا ایکسیس ٹوکن صرف معلومات ہے، کیونکہ Claude Code اگلے لانچ پر اس کی تجدید کر دیتا ہے۔ ان میں سے کوئی بھی ٹھیک نہیں کیا جاتا۔
  5. شیئر لنکس (share.Check)۔ share.Layout کے ہر راستے کو اکاؤنٹ کی شیئر سیٹنگز سے موازنہ کرتا ہے، صرف lstat اور readlink استعمال کرتے ہوئے۔ یہ چار قسمیں بتاتا ہے: غائب لنک، کسی اور جگہ اشارہ کرنے والا لنک، جہاں لنک ہونا چاہیے وہاں اصل فائل، اور کسی ایسے آئٹم کا بچا ہوا لنک جو اب لوکل ہے۔ غائب لنک انتباہ ہے، باقی غلطیاں ہیں۔
  6. نامعلوم اینٹریز (checkUnknownEntries)۔ اکاؤنٹ فولڈر میں اوپری سطح کے وہ نام دکھاتا ہے جو ccam نہیں جانتا (share.Known)، اس اشارے کے طور پر کہ Claude Code کی ترتیب بدل گئی ہے۔ صرف معلومات۔
  7. پلگ اِن کے راستے (checkPlugins)۔ پلگ اِن رجسٹریز (installed_plugins.json، known_marketplaces.json) مکمل راستے محفوظ کرتی ہیں۔ ہر گروپ کے plugins/ میں، جو راستے کسی ایک اکاؤنٹ کے فولڈر سے گزرتے ہیں وہ اس اکاؤنٹ کے ہٹائے جانے یا نام بدلنے پر ٹوٹ جاتے ہیں۔ --fix انہیں profile.RewritePluginPaths سے گروپ فولڈر پر دوبارہ لکھتا ہے، جو رجسٹری فائل کی ایٹامک تحریر ہے۔
  8. MCP سرورز (checkMCP)۔ ہر گروپ کی mcp.json ایک بار لوڈ کرتا ہے۔ جو فائل پڑھی نہ جا سکے وہ غلطی ہے؛ جو سرور mcp.Validate میں ناکام ہو وہ انتباہ ہے۔ کوئی مرمت نہیں۔
  9. usage جواب کا فارمیٹ (checkUsageFormat)۔ کیش کے بغیر اور معمول کی 3 سیکنڈ کی حد کے ساتھ، usage اینڈ پوائنٹ سے ایک کے بعد ایک اکاؤنٹ کے لیے پوچھتا ہے یہاں تک کہ کوئی جواب دے۔ اگر جواب اب پارس نہ ہو تو یہ انتباہ دیتا ہے کہ ccam usage اسٹیٹس لائن کیش پر چلا جاتا ہے۔ یہ واحد جانچ ہے جو نیٹ ورک استعمال کرتی ہے۔
  10. شارٹ کٹس (checkShims)۔ صرف تب جب کسی اکاؤنٹ کا شارٹ کٹ ہو۔ ~/.local/bin میں غائب لنکس انتباہ ہیں؛ --fix، shim.Install کو کال کرتا ہے، جو صرف غائب لنکس بناتا ہے اور دوسری فائلوں کو کبھی نہیں چھیڑتا۔ جو bin فولڈر PATH پر نہ ہو وہ انتباہ ہے اور ٹھیک نہیں کیا جاتا۔

لانچ کا راستہ غائب لنک فوراً بنا دیتا ہے، لیکن جس چیز سے ڈیٹا کھو سکتا ہو اس پر رک جاتا ہے اور یہاں کی طرف رہنمائی کرتا ہے:

$ ccam work
ccam: stopped because of share link problems:
  /home/me/.local/share/ccam/profiles/work/CLAUDE.md: set to shared but is a real file, not a link
Repair them with `ccam doctor --fix`, then run again

شیئر لنک کے کسی بھی مسئلے کے لیے --fix، اکاؤنٹ کی شیئر سیٹنگز کو موجودہ اور مطلوبہ دونوں حالتوں کے طور پر دے کر share.Build کو کال کرتا ہے، پھر Plan.Apply کو۔ Build ہر قدم ڈسک پر موجود چیزوں سے دوبارہ اخذ کرتا ہے، وہی منصوبہ جو ccam share استعمال کرتا ہے، اس لیے مرمت انہی اصولوں پر چلتی ہے جن پر شیئرنگ آن کرنا۔

یہاں settings.json ایک اصل فائل ہے۔ چونکہ گروپ کے پاس پہلے سے ایک مختلف settings.json ہے، ٹکراؤ اپنا ڈیفالٹ انتخاب KeepGroup لیتا ہے، اس لیے گروپ کی کاپی برقرار رہتی ہے۔ اکاؤنٹ کی فائل اکاؤنٹ فولڈر کے اندر .ccam-backup/<time>/settings.json میں منتقل ہو جاتی ہے، اور os.Symlink اس راستے کو گروپ سے لنک کر دیتا ہے۔ دوسری صورتیں:

  • اگر گروپ کے پاس ابھی کوئی کاپی نہ ہو تو اکاؤنٹ کی فائل گروپ میں منتقل ہو کر اس کا پہلا مواد بن جاتی ہے۔
  • فولڈر کے لیے، جو فائلیں گروپ میں نہیں ہیں وہ گروپ میں منتقل ہو جاتی ہیں؛ باقی بیک اپ میں جاتی ہیں۔
  • history.jsonl کے لیے ڈیفالٹ merge by line ہے: پہلے گروپ کی لائنیں، پھر آپ کی نئی لائنیں۔ گروپ کی پچھلی کاپی .ccam-backup/<time>/group/ میں محفوظ ہوتی ہے۔
  • کسی دوسرے گروپ کا لنک بدل دیا جاتا ہے۔ ccam سے باہر کسی فولڈر کا لنک بیک اپ میں جاتا ہے، اور اگر گروپ خالی ہو تو اس کا مواد گروپ کا ابتدائی مواد بن جاتا ہے۔
  • کسی ایسے آئٹم کا بچا ہوا لنک جو اب لوکل ہے ہٹا دیا جاتا ہے، اور اکاؤنٹ کو گروپ کے مواد کی ایک کاپی مل جاتی ہے۔

لنکس ہٹانے کے سوا، ہر قدم ڈیٹا کو گروپ یا بیک اپ فولڈر میں منتقل کرتا ہے۔ کچھ بھی حذف نہیں ہوتا۔

حفاظت اور خاص صورتیں

  • سادہ ccam doctor کبھی کچھ تبدیل نہیں کرتا۔ اسکرپٹس میں یقینی بنانے کے لیے --fix کے ساتھ --dry-run استعمال کریں۔
  • doctor --fix یہ نہیں جانچتا کہ کوئی اکاؤنٹ چل رہا ہے یا نہیں۔ کسی اکاؤنٹ کے شیئر لنکس کی مرمت سے پہلے اس کا Claude Code بند کریں، کیونکہ سیشن ان فائلوں میں لکھتا رہتا ہے۔
  • اگر شیئر کی مرمت ناکام ہو تو ccam اس اکاؤنٹ کے لیے could not repair share links: <error> بتاتا ہے اور اس کی نامعلوم اینٹریز کی جانچ چھوڑ دیتا ہے۔ دوسرے اکاؤنٹس پھر بھی جانچے جاتے ہیں۔
  • اگر ccam share آدھے راستے میں ناکام ہو تو یہ پہلے مطلوبہ سیٹنگز محفوظ کرتا ہے اور بتاتا ہے کہ ccam doctor --fix سے مکمل کریں۔
  • symlink والی .credentials.json، میعاد ختم ہونے والا لاگ اِن اور انوائرنمنٹ کی اسناد بتائی جاتی ہیں لیکن کبھی تبدیل نہیں کی جاتیں۔
  • پلگ اِن رجسٹری کی دوبارہ تحریریں ایٹامک طور پر لکھی جاتی ہیں لیکن .ccam-backup/ میں کاپی نہیں ہوتیں۔