اکثر آموزش‌های فارسی، Claude Code را «autocomplete پیشرفته در ترمینال» معرفی می‌کنند. این توصیف از ریشه غلط است. کسی که Claude Code را به‌عنوان چت‌بات ترمینالی یاد بگیرد، هرگز به معماری loop-based، الگوی delegation ladder یا اکوسیستم MCP نمی‌رسد — و همین سه ستون، Claude Code را از هر ابزار دیگری جدا می‌کنند.

Claude Code دقیقاً چیست و چه فرقی با چت کردن با Claude دارد؟#

Claude Code یک ایجنت ترمینال‌محور (terminal-based agentic loop) است که به‌جای برگرداندن یک پاسخ متنی، خودش ابزار اجرا می‌کند، خروجی را می‌خواند و تصمیم بعدی را می‌گیرد. تفاوت بنیادین با چت Claude در معماری loop-based است، نه در مدل زبانی.

معماری loop-based در برابر turn-based: چرا یک پرامپت خوب در chat ممکن است در Claude Code بی‌اثر باشد#

در چت معمولی Claude، شما یک پیام می‌فرستید، مدل یک پاسخ متنی برمی‌گرداند و نوبت تمام می‌شود. معماری turn-based. در Claude Code، مدل خودش تصمیم می‌گیرد کدام ابزار را صدا بزند — فایل بخواند، دستور بزند، خروجی را تحلیل کند — و بر اساس نتیجه، قدم بعدی را برمی‌دارد. یک حلقه (loop) خودگردان.

پیامد عملی این تفاوت، پرهزینه‌تر از آن است که به‌نظر می‌رسد. پرامپتی که در چت عالی کار می‌کند، در Claude Code ممکن است بی‌اثر باشد چون مدل در حالت loop انتظار دارد شما یک هدف بدهید نه یک دستور. «فایل auth.ts را بنویس» در چت جواب می‌دهد، اما در Claude Code باید بگویید «سیستم احراز هویت JWT را پیاده‌سازی کن» — مدل خودش فایل‌ها را می‌سازد، تست می‌نویسد و اجرا می‌کند.

الگوی delegation ladder: از تک‌پرامپت تا workflow چندمرحله‌ای#

Delegation ladder (نردبان تفویض) الگویی است که در آن به‌تدریج مسئولیت بیشتری به ایجنت می‌سپارید:

  1. مرحله 1 — تک‌پرامپت: یک درخواست ساده، یک پاسخ. مثل چت.
  2. مرحله 2 — پرامپت هدف‌محور: مدل خودش چند ابزار صدا می‌زند و حلقه می‌زند.
  3. مرحله 3 — workflow چندمرحله‌ای: شما یک نقشه‌ی کلی می‌دهید، مدل subagentها را spawn می‌کند.
  4. مرحله 4 — orchestration کامل: CLAUDE.md + MCP + subagentها. ایجنت عملاً یک senior developer مستقل است.

الگوی تکرارشونده در کلاس‌های آموزش Claude Code: بیشتر کاربران در مرحله 1 یا 2 متوقف می‌شوند و فکر می‌کنند همین است. درحالی‌که آموزش Claude Code در سطح واقعی یعنی فهمیدن اینکه چطور از مرحله 2 به 3 و 4 برسید.

پیش‌نیازهای فنی و نحوهٔ نصب اولیه#

Claude Code از طریق npm نصب می‌شود و به Node.js و Git نیاز دارد. پس از نصب، در ترمینال پروژه دستور claude را می‌زنید و یک session ایجنتی شروع می‌شود. جزئیات دقیق نصب و تنظیمات API key در مستندات رسمی Anthropic موجود است.

نکته‌ی عملی که در آموزش‌های عمومی نمی‌بینید: اگر در پروژه‌ی monorepo کار می‌کنید، قبل از شروع session، در CLAUDE.md مشخص کنید که build و test فقط در package فعلی اجرا شود. بدون این محدودسازی، ایجنت ممکن است کل پروژه را build کند و وقت قابل‌توجهی تلف شود.

فایل CLAUDE.md: تصمیم‌های پروژه را به ایجنت منتقل کنید#

فایل CLAUDE.md یک system prompt پروژه‌محور است که رفتار ایجنت را در هر session مشخص می‌کند. ارزش واقعی آن در ثبت تصمیم‌های معماری است، نه نوشتن template خالی. این فایل در ریشه‌ی پروژه قرار می‌گیرد و Claude Code آن را در ابتدای هر session می‌خواند.

ساختار و الگوی نگارش برای پروژه‌های واقعی#

الگوی مؤثر: به‌جای نوشتن «این پروژه یک اپ React است»، بنویسید «state management با Zustand، نه Redux. هر component جدید باید در پوشه‌ی features/ قرار بگیرد. lint با ESLint و prettier انجام می‌شود. testها فقط در __tests__/».

مثال عملی از پروژه‌ی monorepo:

  • Build scope: فقط package فعلی و وابستگی‌هایش.
  • Test command: pnpm --filter ./packages/auth test.
  • Lint rule: از any استفاده نکن؛ اگر لازم بود، unknown بده.
  • Commit convention: conventional commits با scope package.

اشتباهات رایج: نوشتن توضیحات عمومی به‌جای محدودسازی‌های عملی#

رایج‌ترین اشتباه: نوشتن توضیحاتی که هر developer تازه‌واردی هم می‌فهمد. «این پروژه از TypeScript استفاده می‌کند» بی‌فایده است چون ایجنت خودش از tsconfig.json می‌فهمد. آنچه ارزش دارد، تصمیم‌هایی است که در کد قابل استخراج نیست: چرا Zustand نه Redux؟ چرا این پوشه‌بندی؟ چه چیزی ممنوع است؟

یک قضاوت صریح: نوشتن CLAUDE.md عمومی بدتر از نبودنش است. ایجنت فکر می‌کند شما راهنمایی داده‌اید و وقت context window را صرف اطلاعاتی می‌کند که خودش از فایل‌ها استخراج می‌کرد.

CLAUDE.md در سطح پروژه در برابر سطح global#

Claude Code دو سطح CLAUDE.md می‌شناسد: فایل در ریشه‌ی پروژه (scoped) و فایل در ~/.claude/CLAUDE.md (global). سطح global برای ترجیحات شخصی است — مثلاً «همیشه از pnpm استفاده کن» یا «توضیحات کد را به فارسی بنویس». سطح پروژه برای محدودسازی‌های معماری. اگر هر دو وجود داشته باشند، هر دو خوانده می‌شوند.

Claude Code بهتر است یا Cursor؟ مقایسهٔ معماری نه فیچر#

انتخاب بین Claude Code و Cursor به معماری workflow شما بستگی دارد: اگر delegation و tool use اولویت دارید، Claude Code؛ اگر inline editing و context IDE محوریت دارد، Cursor. این دو ابزار رقیب مستقیم نیستند چون در لایه‌های متفاوتی کار می‌کنند.

جدول مقایسه‌ای معماری#

ابزارمعماریمدل تعاملبهترین برای
Claude CodeTerminal-based agentic loopDelegation + tool useپروژه‌های بزرگ، refactoring چندفایلی
CursorIDE-integrated inlineChat + autocomplete + inline editPrototyping سریع، ویرایش موضعی
GitHub CopilotIDE pluginAutocomplete + chatتک‌فایلی، خطوط کوتاه
WindsurfIDE-integrated agenticFlow-based multi-stepWorkflowهای چندمرحله‌ای در IDE
AiderTerminal-basedGit-aware chatتغییرات کوچک با commit خودکار
OpenHandsContainerized agenticFull autonomous loopتحقیق و خودکارسازی کامل

کدام برای کدام نوع پروژه؟#

مشاهده‌ی مکرر در پروژه‌های اعضای کامیونیتی: اگر task شما «فایل X را ویرایش کن و تست بنویس» است، Cursor سریع‌تر جواب می‌دهد چون inline است و context IDE را دارد. اگر task شما «سیستم احراز هویت را از scratch پیاده‌سازی کن، migration بنویس، endpoint بساز و test بده» است، Claude Code با delegation ladder و subagentها بهتر کار می‌کند چون می‌تواند چندین فایل را همزمان مدیریت کند.

اشتباه رایج: مقایسهٔ صرفاً تعداد توکن خروجی#

بسیاری از مقایسه‌ها فقط تعداد توکن یا سرعت پاسخ را می‌سنجند. این بی‌معناست. مدل تعامل مهم‌تر است: Claude Code ممکن است در یک turn کمتر از Cursor پاسخ بدهد، اما در یک session کامل با 15 turn، چون خودش ابزار صدا می‌زند و نتیجه را می‌خواند، خروجی نهایی بهتری تولید می‌کند.

Model Context Protocol: لایهٔ اتصال Claude Code به ابزارهای بیرونی#

Model Context Protocol (MCP) یک پروتکل استاندارد است که Claude Code را به هر ابزار بیرونی — دیتابیس، API، فایل‌سیستم — وصل می‌کند. بدون MCP، Claude Code محدود به ترمینال و فایل‌های local است. MCP عملاً ابزارهای سفارشی شما را به «دست‌ها»ی ایجنت تبدیل می‌کند.

اتصالات نوری از یک ترمینال مرکزی به ابزارهای مختلف مانند دیتابیس و مرورگر، نمایش لایه اتصال پروتکل
MCP مثل یک پل استاندارد عمل می‌کند؛ هر ابزار می‌تواند بدون تغییر در هسته متصل شود.

MCP چیست و چرا تفاوت اصلی را با Copilot و Cursor می‌سازد#

MCP یک پروتکل client-server است. شما یک MCP server می‌نویسید که ابزارهای شما را expose می‌کند (مثلاً «query database» یا «call internal API»). Claude Code به‌عنوان MCP client این server را صدا می‌زند. نتیجه: ایجنت نه‌فقط فایل می‌خواند و دستور می‌زند، بلکه به هر سرویسی که شما تعریف کرده‌اید دسترسی دارد.

این لایه‌ای است که Copilot و Cursor در حالت پیش‌فرض ندارند. Cursor بعضی pluginها را ساپورت می‌کند اما معماری آن به‌طور ذاتی IDE-محور است و اتصال به ابزارهای سفارشی خارجی به‌سادگی Claude Code نیست.

الگوی عملی: نوشتن یک MCP server ساده#

  1. پروتکل MCP را با SDK رسمی (TypeScript یا Python) پیاده‌سازی کنید.
  2. یک tool تعریف کنید: نام، توضیح، و schema ورودی.
  3. در handler، منطق شما اجرا می‌شود (query دیتابیس، call API، ...).
  4. در تنظیمات Claude Code، path به MCP server را مشخص کنید.
  5. در session، ایجنت خودش تشخیص می‌دهد چه‌وقت این tool را صدا بزند.

مثال واقعی: یک MCP server که به دیتابیس Postgres پروژه وصل می‌شود و schema جداول را به ایجنت می‌دهد. حالا وقتی می‌گویید «migration جدید بنویس»، ایجنت schema فعلی را می‌داند و migration دقیق تولید می‌کند.

بزرگ‌ترین اشتباه آموزشی: محدود کردن آموزش Claude Code به «چت با Claude در ترمینال»#

اگر کسی آموزش Claude Code را فقط به‌عنوان «Claude در ترمینال» معرفی کند، اکوسیستم MCP را نادیده گرفته است. بدون MCP، Claude Code فقط یک ایجنت ترمینالی است. با MCP، به یک orchestration layer تبدیل می‌شود که به هر سرویسی وصل است. این تفاوت، Claude Code را از ابزارهای autocomplete فاصله می‌دهد.

چگونه subagent بسازم که کارهای موازی انجام دهد؟#

Subagent یک ایجنت مستقل است که Claude Code آن را spawn می‌کند تا بخشی از کار را موازی انجام دهد و نتیجه را به session اصلی برگرداند. این الگو، مدیریت context window را در sessionهای طولانی ممکن می‌سازد. بدون subagent، در sessionهای بزرگ، context window پر می‌شود و کیفیت پاسخ افت می‌کند.

الگوی delegation و spawn subagent در Claude Code#

وقتی task بزرگ است، Claude Code خودش تشخیص می‌دهد که باید subagent بسازد. مثلاً: «سیستم احراز هویت را پیاده‌سازی کن» → ایجنت یک subagent برای نوشتن modelها، یکی برای controllerها، یکی برای testها spawn می‌کند. هر subagent context مستقل دارد و فقط نتیجه‌ی نهایی به parent برمی‌گردد.

نکته‌ی عملی که اغلب نادیده گرفته می‌شود: subagentها برای کارهایی مناسب‌اند که مستقل‌اند و وابستگی کم به هم دارند. اگر task A باید قبل از B تمام شود، subagent موازی فایده ندارد — باید sequential باشد.

مدیریت context window در sessions طولانی#

Context window در مدل‌های Claude حدود 200 هزار توکن است. در sessionهای طولانی — مثلاً refactoring یک پروژه‌ی 50 فایلی — این حد به‌سرعت پر می‌شود. سه راه دارید:

  • Compact: خلاصه‌سازی context قبلی. ارزان‌تر است اما جزئیات از دست می‌رود.
  • Restart: شروع session جدید. تمیز است اما از جایی که بودید شروع می‌کنید.
  • Subagent: تفکیک context. هر subagent window مستقل دارد و parent فقط نتیجه می‌گیرد. بهترین گزینه برای کارهای بزرگ.

چه‌کار وقتی session به limit نزدیک می‌شود#

اگر در وسط یک workflow چندمرحله‌ای هستید و context پر شده، بهترین کار این است که مرحله‌ی بعدی را به subagent واگذار کنید. به ایجنت بگویید: «بقیه‌ی کار را در یک subagent مستقل انجام بده و فقط خلاصه‌ی تغییرات را برگردان.» این الگو در پروژه‌های واقعی بارها استفاده شده و مؤثر است.

زمان‌هایی که Claude Code گزینهٔ اشتباه است#

Claude Code برای پروژه‌های یک‌فایلی کوچک، کارهایی که determinism لازم دارند، و workflowهای latency-sensitive مناسب نیست. استفادهٔ بدون‌محدودیت از آن برای باگی که با regex حل می‌شود، هزینهٔ توکن و زمان بی‌دلیل است.

پروژه‌های یک‌فایلی و کارهای linter/regex#

اگر فقط یک regex باید بنویسید یا یک lint rule باید اصلاح شود، Claude Code بیش‌ازحد است. یک چت ساده با Claude یا حتی خودتان سریع‌تر جواب می‌دهد. ایجنت‌محور بودن یعنی overhead: هر turn شامل tool use، خواندن خروجی و تصمیم‌گیری است. برای کارهای یک‌خطی، این overhead بی‌دلیل.

نیاز به determinism#

اگر خروجی باید دقیقاً یک‌شکل باشد — مثلاً تولید یک template ثابت برای 100 مورد — Claude Code گزینه‌ی اشتباه است. ایجنت‌های زبانی ذاتاً non-deterministic‌اند. برای کارهای deterministic، script بنویسید.

Latency-sensitive workflows#

در هر turn، ایجنت ممکن است چند ثانیه طول بکشد (خواندن فایل، اجرای دستور، تحلیل خروجی). اگر workflow شما latency-sensitive است — مثلاً در یک request/response cycle قرار دارد — Claude Code مناسب نیست.

هزینهٔ استفاده از Claude Code و مقایسهٔ اشتراک Pro با Max#

Claude Code از طریق اشتراک‌های Claude Pro و Claude Max و همچنین API قابل دسترسی است. انتخاب اشتراک به حجم session و نیاز به model‌های بزرگ‌تر بستگی دارد. جزئیات قیمت و محدودیت‌ها را از مستندات رسمی Anthropic بررسی کنید چون این اطلاعات زمان‌مند است.

مقایسهٔ Pro، Max و API#

  • Pro: برای استفاده‌ی معمول روزانه. محدودیت message دارد.
  • Max: برای استفاده‌ی سنگین‌تر و sessionهای طولانی‌تر. محدودیت بالاتر.
  • API: pay-per-token. برای استفاده‌ی programmatic و CI/CD مناسب‌تر است.

بهینه‌سازی مصرف توکن#

سه راه عملی برای کاهش هزینه:

  1. CLAUDE.md کوتاه: هرچه بیشتر بنویسید، در هر session بیشتر مصرف می‌شود. فقط محدودسازی‌های ضروری.
  2. Subagent برای تفکیک context: به‌جای یک session طولانی، کار را به subagentها تقسیم کنید.
  3. انتخاب مدل مناسب: Sonnet برای اکثر کارها کافی است. Opus فقط برای reasoning پیچیده.

آیا Claude Code رایگان است؟#

خیر. Claude Code در یک دوره‌ی research preview در دسترس بود و سپس به‌صورت paid درآمد. وضعیت فعلی را از مستندات Anthropic بررسی کنید.

اشتباهات رایج تازه‌کارهای Claude Code#

بزرگ‌ترین اشتباه تازه‌کارها این است که Claude Code را مثل چت استفاده می‌کنند — یک پرامپت، یک پاسخ — درحالی‌که قدرت آن در loop، delegation و tool use است. اگر آموزش Claude Code را فقط روی «پرامپت بهتر نوشتن» متمرکز کنید، از معماری ایجنتی غافل شده‌اید.

استفادهٔ بدون‌محدودیت برای کارهای کوچک#

تازه‌کارها هر کاری را به Claude Code می‌دهند. «یک کامنت در این تابع بنویس» را ایجنت انجام می‌دهد — با خواندن فایل، تحلیل context و نوشتن پاسخ. هزینه‌ی توکن و زمان بی‌دلیل. برای کارهای زیر 5 ثانیه‌ای، خودتان انجام دهید.

نادیده‌گرفتن MCP و CLAUDE.md#

بدون CLAUDE.md، ایجنت در هر session از صفر شروع می‌کند. بدون MCP، به ابزارهای بیرونی دسترسی ندارد. این دو، Claude Code را از «Claude در ترمینال» به یک سیستم orchestration تبدیل می‌کنند. نادیده‌گرفتنشان یعنی استفاده‌ی ناقص.

توصیهٔ «فقط پرامپت مهندسی یاد بگیرید»#

این توصیه برای چت درست است، برای Claude Code نه. در معماری ایجنتی، آنچه مهم است ساختار workflow، محدودسازی‌های CLAUDE.md، و اتصال با MCP است — نه اینکه پرامپت را چطور بنویسید. ایجنت خودش تصمیم می‌گیرد چه‌وقت ابزار صدا بزند.

Claude Code یک چت‌بات نیست. delegation ladder بسازید، CLAUDE.md را برای محدودسازی‌های معماری بنویسید، و با MCP به ابزارهای بیرونی وصل کنید. همین سه‌تا، Claude Code را از هر ابزار دیگری جدا می‌کنند.

اگر می‌خواهید این معماری ایجنتی را عمیق‌تر یاد بگیرید — نه فقط پرامپت‌نویسی، بلکه ساخت workflow، subagent و اتصال MCP — دوره‌ی «آموزش جامع Claude و ابزارهای مشابه» در کامیونیتی Claude اسکول این مسیر را قدم‌به‌قدم پوشش می‌دهد.