رفتن به محتوا

حافظه: چطور Claude پروژه‌ات را به خاطر می‌سپارد

Give Claude persistent instructions with CLAUDE.md files, and let Claude accumulate learnings automatically with auto memory.

هر نشستِ Claude Code با یک پنجره‌ی کانتکستِ تازه شروع می‌شود. دو سازوکار دانش را بین نشست‌ها منتقل می‌کنند:

  • فایل‌های CLAUDE.md: دستورهایی که خودت می‌نویسی تا کانتکستِ ماندگار به Claude بدهی
  • حافظه‌ی خودکار (Auto memory): یادداشت‌هایی که Claude بر پایه‌ی اصلاح‌ها و ترجیح‌های تو خودش می‌نویسد

این صفحه نشان می‌دهد چطور:

CLAUDE.md در برابر حافظه‌ی خودکار

Section titled “CLAUDE.md در برابر حافظه‌ی خودکار”

Claude Code دو سیستمِ حافظه‌ی مکمل دارد. هر دو در شروعِ هر گفت‌وگو بارگذاری می‌شوند. Claude آن‌ها را به‌عنوان کانتکست می‌بیند، نه پیکربندیِ اجباری. برای آن‌که اقدامی را صرف‌نظر از تصمیمِ Claude مسدود کنی، به‌جایش از یک هوکِ PreToolUse استفاده کن. هرچه دستورهایت دقیق‌تر و موجزتر باشند، Claude پایدارتر از آن‌ها پیروی می‌کند.

فایل‌های CLAUDE.mdحافظه‌ی خودکار
چه کسی می‌نویسدتوClaude
چه چیزی دارددستورها و قواعدآموخته‌ها و الگوها
دامنهپروژه، کاربر، یا سازمانبه‌ازای هر مخزن، مشترک میانِ worktreeها
بارگذاری درهر نشستهر نشست (۲۰۰ خطِ نخست یا ۲۵KB)
کاربرد برایاستانداردهای کدنویسی، ورک‌فلوها، معماریِ پروژهدستورهای ساخت، نکته‌های عیب‌یابی، ترجیح‌هایی که Claude کشف می‌کند

فایل‌های CLAUDE.md را وقتی به کار ببر که می‌خواهی رفتارِ Claude را هدایت کنی. حافظه‌ی خودکار می‌گذارد Claude بدونِ تلاشِ دستی از اصلاح‌های تو یاد بگیرد.

ساب‌ایجنت‌ها هم می‌توانند حافظه‌ی خودکارِ خودشان را نگه دارند. برای جزئیات پیکربندیِ ساب‌ایجنت را ببین.

فایل‌های CLAUDE.md فایل‌های markdown هستند که به Claude دستورهای ماندگار برای یک پروژه، ورک‌فلوی شخصیِ تو، یا کلِ سازمانت می‌دهند. تو این فایل‌ها را به‌صورت متنِ ساده می‌نویسی؛ Claude آن‌ها را در شروعِ هر نشست می‌خواند.

کِی چیزی به CLAUDE.md اضافه کنیم

Section titled “کِی چیزی به CLAUDE.md اضافه کنیم”

CLAUDE.md را جایی بدان که چیزهایی را می‌نویسی که در غیرِ این‌صورت باید دوباره توضیح بدهی. وقتی به آن اضافه کن که:

  • Claude برای بارِ دوم همان اشتباه را تکرار کند
  • یک بازبینیِ کد چیزی را بگیرد که Claude باید درباره‌ی این کدبیس می‌دانست
  • همان اصلاح یا توضیحی را در چت تایپ کنی که نشستِ قبل هم تایپ کرده بودی
  • یک هم‌تیمیِ تازه برای بهره‌ور شدن به همان کانتکست نیاز داشته باشد

آن را محدود به حقایقی نگه دار که Claude باید در هر نشست در ذهن داشته باشد: دستورهای ساخت، قراردادها، چیدمانِ پروژه، قواعدِ «همیشه X را انجام بده». اگر یک ورودی یک رویه‌ی چندمرحله‌ای است یا فقط برای یک بخش از کدبیس اهمیت دارد، به‌جایش آن را به یک skill یا یک قاعده‌ی مسیر-محدود منتقل کن. مرورِ کلیِ افزونه‌ها توضیح می‌دهد کِی از هر سازوکار استفاده کنی.

انتخابِ محلِ قرارگیریِ فایل‌های CLAUDE.md

Section titled “انتخابِ محلِ قرارگیریِ فایل‌های CLAUDE.md”

فایل‌های CLAUDE.md می‌توانند در چند محل قرار بگیرند که هرکدام دامنه‌ای متفاوت دارند. جدولِ زیر آن‌ها را به ترتیبِ بارگذاری فهرست می‌کند، از گسترده‌ترین دامنه تا مشخص‌ترین، طوری که یک دستورِ پروژه پس از یک دستورِ کاربر در کانتکست ظاهر می‌شود.

دامنهمحلهدفنمونه‌ی کاربردمشترک با
سیاستِ مدیریت‌شده• macOS: /Library/Application Support/ClaudeCode/CLAUDE.md
• Linux و WSL: /etc/claude-code/CLAUDE.md
• Windows: C:\Program Files\ClaudeCode\CLAUDE.md
دستورهای سازمان‌گستر که توسط IT/DevOps مدیریت می‌شونداستانداردهای کدنویسیِ شرکت، سیاست‌های امنیتی، الزاماتِ انطباقهمه‌ی کاربرانِ سازمان
دستورهای کاربر~/.claude/CLAUDE.mdترجیح‌های شخصی برای همه‌ی پروژه‌هاترجیح‌های قالب‌بندیِ کد، میان‌برهای ابزارِ شخصیفقط خودت (همه‌ی پروژه‌ها)
دستورهای پروژه./CLAUDE.md یا ./.claude/CLAUDE.mdدستورهای تیمی-مشترک برای پروژهمعماریِ پروژه، استانداردهای کدنویسی، ورک‌فلوهای رایجاعضای تیم از طریقِ کنترلِ نسخه
دستورهای محلی./CLAUDE.local.mdترجیح‌های شخصیِ مختصِ پروژه؛ به .gitignore اضافه کنURLهای sandboxِ تو، داده‌ی تستِ موردِ علاقهفقط خودت (پروژه‌ی جاری)

فایل‌های CLAUDE.md و CLAUDE.local.md در سلسله‌مراتبِ دایرکتوریِ بالای دایرکتوریِ کاری هنگامِ راه‌اندازی به‌طورِ کامل بارگذاری می‌شوند. فایل‌های موجود در زیردایرکتوری‌ها هنگامی که Claude فایل‌هایی را در آن دایرکتوری‌ها می‌خواند، به‌صورتِ on demand بارگذاری می‌شوند. برای ترتیبِ کاملِ resolution، چگونگیِ بارگذاریِ فایل‌های CLAUDE.md را ببین.

برای پروژه‌های بزرگ می‌توانی دستورها را با قواعدِ پروژه به فایل‌های موضوع‌محور بشکنی. قواعد می‌گذارند دستورها را به انواعِ فایلِ مشخص یا زیردایرکتوری‌ها محدود کنی.

راه‌اندازیِ یک CLAUDE.md برای پروژه

Section titled “راه‌اندازیِ یک CLAUDE.md برای پروژه”

یک CLAUDE.md برای پروژه می‌تواند در ./CLAUDE.md یا ./.claude/CLAUDE.md ذخیره شود. این فایل را بساز و دستورهایی را اضافه کن که برای هرکسی که روی پروژه کار می‌کند کاربرد دارند: دستورهای ساخت و تست، استانداردهای کدنویسی، تصمیم‌های معماری، قراردادهای نام‌گذاری، و ورک‌فلوهای رایج. این دستورها از طریقِ کنترلِ نسخه با تیمت به اشتراک گذاشته می‌شوند، پس به‌جای ترجیح‌های شخصی روی استانداردهای سطحِ پروژه تمرکز کن.

نوشتنِ دستورهای اثرگذار

Section titled “نوشتنِ دستورهای اثرگذار”

فایل‌های CLAUDE.md در شروعِ هر نشست در پنجره‌ی کانتکست بارگذاری می‌شوند و در کنارِ گفت‌وگوی تو توکن مصرف می‌کنند. بصری‌سازیِ پنجره‌ی کانتکست نشان می‌دهد CLAUDE.md نسبت به باقیِ کانتکستِ آغازین کجا بارگذاری می‌شود. چون آن‌ها کانتکست هستند نه پیکربندیِ اجباری، نحوه‌ی نوشتنِ دستورها بر پایداریِ پیرویِ Claude اثر می‌گذارد. دستورهای مشخص، موجز و خوش‌ساختار بهترین نتیجه را می‌دهند.

اندازه: هدف را زیرِ ۲۰۰ خط به‌ازای هر فایلِ CLAUDE.md بگذار. فایل‌های بلندتر کانتکستِ بیشتری مصرف می‌کنند و پایبندی را کاهش می‌دهند. اگر دستورهایت بزرگ می‌شوند، از قواعدِ مسیر-محدود استفاده کن تا دستورها فقط وقتی Claude با فایل‌های منطبق کار می‌کند بارگذاری شوند. می‌توانی محتوا را برای سازمان‌دهی به importها هم تقسیم کنی، هرچند فایل‌های import‌شده همچنان هنگامِ راه‌اندازی بارگذاری می‌شوند و واردِ پنجره‌ی کانتکست می‌شوند.

ساختار: از سرتیترها و bulletهای markdown برای گروه‌بندیِ دستورهای مرتبط استفاده کن. Claude ساختار را همان‌طور می‌خواند که خوانندگان می‌خوانند: بخش‌های سازمان‌یافته آسان‌تر از پاراگراف‌های متراکم دنبال می‌شوند.

دقت: دستورهایی بنویس که آن‌قدر مشخص باشند که قابلِ‌راستی‌آزمایی باشند. برای مثال:

  • «از تورفتگیِ ۲ فاصله‌ای استفاده کن» به‌جای «کد را درست قالب‌بندی کن»
  • «پیش از کامیت npm test را اجرا کن» به‌جای «تغییراتت را تست کن»
  • «هندلرهای API در src/api/handlers/ قرار دارند» به‌جای «فایل‌ها را مرتب نگه دار»

سازگاری: اگر دو قاعده با هم تناقض داشته باشند، Claude ممکن است یکی را به‌دلخواه انتخاب کند. فایل‌های CLAUDE.md، فایل‌های تودرتوی CLAUDE.md در زیردایرکتوری‌ها، و .claude/rules/ را به‌صورتِ دوره‌ای بازبینی کن تا دستورهای منسوخ یا متناقض را حذف کنی. در monorepoها از claudeMdExcludes استفاده کن تا فایل‌های CLAUDE.md تیم‌های دیگر را که به کارِ تو مربوط نیستند نادیده بگیری.

ایمپورت کردنِ فایل‌های دیگر

Section titled “ایمپورت کردنِ فایل‌های دیگر”

فایل‌های CLAUDE.md می‌توانند با نحوِ @path/to/import فایل‌های دیگر را ایمپورت کنند. فایل‌های ایمپورت‌شده هنگامِ راه‌اندازی بسط داده می‌شوند و در کنارِ CLAUDE.mdی که به آن‌ها ارجاع می‌دهد در کانتکست بارگذاری می‌شوند.

هم مسیرهای نسبی و هم مطلق مجاز هستند. مسیرهای نسبی نسبت به فایلِ دربردارنده‌ی import حل می‌شوند، نه نسبت به دایرکتوریِ کاری. فایل‌های ایمپورت‌شده می‌توانند به‌صورتِ بازگشتی فایل‌های دیگر را ایمپورت کنند، با حداکثرِ عمقِ چهار پرش.

برای آوردنِ یک README، package.json و یک راهنمای ورک‌فلو، با نحوِ @ هرجای CLAUDE.md به آن‌ها ارجاع بده:

See @README for project overview and @package.json for available npm commands for this project.
# Additional Instructions
- git workflow @docs/git-instructions.md

برای ترجیح‌های خصوصیِ به‌ازای هر پروژه که نباید واردِ کنترلِ نسخه شوند، یک CLAUDE.local.md در ریشه‌ی پروژه بساز. این فایل در کنارِ CLAUDE.md بارگذاری می‌شود و به همان شکل با آن رفتار می‌شود. CLAUDE.local.md را به .gitignore خود اضافه کن تا کامیت نشود؛ اجرای /init و انتخابِ گزینه‌ی شخصی این کار را برایت انجام می‌دهد.

اگر روی چند worktreeِ git از یک مخزن کار می‌کنی، یک CLAUDE.local.mdِ gitignore‌شده فقط در همان worktreeای که آن را ساختی وجود دارد. برای اشتراکِ دستورهای شخصی میانِ worktreeها، به‌جایش فایلی را از دایرکتوریِ home خود ایمپورت کن:

# Individual Preferences
- @~/.claude/my-project-instructions.md

برای رویکردی ساختاریافته‌تر در سازمان‌دهیِ دستورها، .claude/rules/ را ببین.

Claude Code فایلِ CLAUDE.md را می‌خواند، نه AGENTS.md. اگر مخزنت از قبل برای ایجنت‌های کدنویسیِ دیگر از AGENTS.md استفاده می‌کند، یک CLAUDE.md بساز که آن را ایمپورت کند تا هر دو ابزار همان دستورها را بدونِ تکرار بخوانند. می‌توانی دستورهای مختصِ Claude را هم زیرِ import اضافه کنی. Claude فایلِ ایمپورت‌شده را در شروعِ نشست بارگذاری می‌کند، سپس باقی را پیوست می‌کند:

@AGENTS.md
## Claude Code
Use plan mode for changes under `src/billing/`.

اگر نیازی به افزودنِ محتوای مختصِ Claude نداری، یک symlink هم کار می‌کند:

Terminal window
ln -s AGENTS.md CLAUDE.md

روی Windows، ساختنِ symlink به دسترسیِ Administrator یا Developer Mode نیاز دارد، پس به‌جایش از importِ @AGENTS.md استفاده کن.

اجرای /init در مخزنی که از قبل AGENTS.md دارد آن را می‌خواند و بخش‌های مرتبط را در CLAUDE.mdِ تولیدشده می‌گنجاند. همچنین پیکربندیِ ابزارهای دیگر مانندِ .cursorrules، .devin/rules/ و .windsurfrules را می‌خواند.

چگونگیِ بارگذاریِ فایل‌های CLAUDE.md

Section titled “چگونگیِ بارگذاریِ فایل‌های CLAUDE.md”

Claude Code فایل‌های CLAUDE.md را با بالا رفتن در درختِ دایرکتوری از دایرکتوریِ کاریِ جاری می‌خواند و هر دایرکتوری را در مسیر از نظرِ فایل‌های CLAUDE.md و CLAUDE.local.md بررسی می‌کند. یعنی اگر Claude Code را در foo/bar/ اجرا کنی، دستورها را از foo/bar/CLAUDE.md، foo/CLAUDE.md و هر فایلِ CLAUDE.local.md در کنارشان بارگذاری می‌کند.

همه‌ی فایل‌های کشف‌شده به‌جای بازنویسیِ یکدیگر در کانتکست به‌هم پیوسته می‌شوند. در سراسرِ درختِ دایرکتوری، محتوا از ریشه‌ی فایل‌سیستم به‌سمتِ دایرکتوریِ کاریِ تو مرتب می‌شود. برای مثالِ foo/bar/، فایلِ foo/CLAUDE.md پیش از foo/bar/CLAUDE.md در کانتکست ظاهر می‌شود، پس دستورهای نزدیک‌تر به جایی که Claude را راه انداختی آخر خوانده می‌شوند. درونِ هر دایرکتوری، CLAUDE.local.md پس از CLAUDE.md پیوست می‌شود، پس یادداشت‌های شخصیِ تو آخرین چیزی هستند که Claude در آن سطح می‌خواند.

Claude همچنین فایل‌های CLAUDE.md و CLAUDE.local.md را در زیردایرکتوری‌های زیرِ دایرکتوریِ کاریِ جاری کشف می‌کند. این‌ها به‌جای بارگذاری هنگامِ راه‌اندازی، وقتی Claude فایل‌هایی را در آن زیردایرکتوری‌ها می‌خواند گنجانده می‌شوند.

اگر در یک monorepoِ بزرگ کار می‌کنی که فایل‌های CLAUDE.md تیم‌های دیگر برداشته می‌شوند، از claudeMdExcludes استفاده کن تا آن‌ها را نادیده بگیری. برای چیدمانِ کاملِ فایل‌های CLAUDE.md و قواعدِ ریشه‌ای و به‌ازای هر دایرکتوری، Monorepoها و مخزن‌های بزرگ را ببین.

کامنت‌های HTML در سطحِ بلاک (<!-- maintainer notes -->) در فایل‌های CLAUDE.md پیش از تزریقِ محتوا به کانتکستِ Claude حذف می‌شوند. از آن‌ها برای گذاشتنِ یادداشت برای نگه‌دارندگانِ انسانی استفاده کن، بی‌آنکه برایشان توکنِ کانتکست خرج کنی. کامنت‌های درونِ بلاک‌های کد حفظ می‌شوند. وقتی یک فایلِ CLAUDE.md را مستقیماً با ابزارِ Read باز می‌کنی، کامنت‌ها قابلِ‌مشاهده می‌مانند.

بارگذاری از دایرکتوری‌های اضافی

Section titled “بارگذاری از دایرکتوری‌های اضافی”

پرچمِ --add-dir به Claude دسترسی به دایرکتوری‌های اضافی خارج از دایرکتوریِ کاریِ اصلی می‌دهد. به‌طورِ پیش‌فرض، فایل‌های CLAUDE.md از این دایرکتوری‌ها بارگذاری نمی‌شوند.

برای بارگذاریِ فایل‌های حافظه از دایرکتوری‌های اضافی هم، متغیرِ محیطیِ CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD را تنظیم کن:

Terminal window
CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../shared-config

این کار CLAUDE.md، .claude/CLAUDE.md، .claude/rules/*.md و CLAUDE.local.md را از دایرکتوریِ اضافی بارگذاری می‌کند. اگر local را از --setting-sources کنار بگذاری، CLAUDE.local.md نادیده گرفته می‌شود.

سازمان‌دهیِ قواعد با .claude/rules/

Section titled “سازمان‌دهیِ قواعد با .claude/rules/”

برای پروژه‌های بزرگ‌تر می‌توانی دستورها را با دایرکتوریِ .claude/rules/ در چند فایل سازمان‌دهی کنی. این کار دستورها را ماژولار و نگه‌داریِ آن‌ها را برای تیم‌ها آسان‌تر نگه می‌دارد. قواعد را هم می‌توان به مسیرهای فایلِ مشخص محدود کرد، طوری که فقط وقتی Claude با فایل‌های منطبق کار می‌کند در کانتکست بارگذاری شوند و نویز و فضای کانتکست کاهش یابد.

فایل‌های markdown را در دایرکتوریِ .claude/rules/ِ پروژه‌ات قرار بده. هر فایل باید یک موضوع را پوشش دهد، با نامِ فایلِ توصیفی مانندِ testing.md یا api-design.md. همه‌ی فایل‌های .md به‌صورتِ بازگشتی کشف می‌شوند، پس می‌توانی قواعد را در زیردایرکتوری‌هایی مانندِ frontend/ یا backend/ سازمان‌دهی کنی:

your-project/
├── .claude/
│ ├── CLAUDE.md # Main project instructions
│ └── rules/
│ ├── code-style.md # Code style guidelines
│ ├── testing.md # Testing conventions
│ └── security.md # Security requirements

قواعدِ بدونِ paths در frontmatter هنگامِ راه‌اندازی با همان اولویتِ .claude/CLAUDE.md بارگذاری می‌شوند.

قواعد را می‌توان با frontmatterِ YAML و فیلدِ paths به فایل‌های مشخص محدود کرد. این قواعدِ مشروط فقط زمانی اعمال می‌شوند که Claude با فایل‌های منطبق با الگوهای تعیین‌شده کار می‌کند.

---
paths:
- "src/api/**/*.ts"
---
# API Development Rules
- All API endpoints must include input validation
- Use the standard error response format
- Include OpenAPI documentation comments

قواعدِ بدونِ فیلدِ paths بدونِ قیدوشرط بارگذاری می‌شوند و بر همه‌ی فایل‌ها اعمال می‌شوند. قواعدِ مسیر-محدود زمانی فعال می‌شوند که Claude فایل‌های منطبق با الگو را می‌خواند، نه در هر استفاده از ابزار.

از الگوهای glob در فیلدِ paths استفاده کن تا فایل‌ها را بر پایه‌ی پسوند، دایرکتوری، یا هر ترکیبی منطبق کنی:

الگومنطبق با
**/*.tsهمه‌ی فایل‌های TypeScript در هر دایرکتوری
src/**/*همه‌ی فایل‌های زیرِ دایرکتوریِ src/
*.mdفایل‌های Markdown در ریشه‌ی پروژه
src/components/*.tsxکامپوننت‌های React در یک دایرکتوریِ مشخص

می‌توانی چند الگو تعیین کنی و از brace expansion برای منطبق‌کردنِ چند پسوند در یک الگو استفاده کنی:

---
paths:
- "src/**/*.{ts,tsx}"
- "lib/**/*.ts"
- "tests/**/*.test.ts"
---

اشتراکِ قواعد بین پروژه‌ها با symlinkها

Section titled “اشتراکِ قواعد بین پروژه‌ها با symlinkها”

دایرکتوریِ .claude/rules/ از symlinkها پشتیبانی می‌کند، پس می‌توانی یک مجموعه‌ی مشترک از قواعد را نگه داری و آن‌ها را به چند پروژه پیوند بزنی. symlinkها حل و به‌صورتِ معمول بارگذاری می‌شوند، و symlinkهای حلقوی شناسایی و به‌خوبی مدیریت می‌شوند.

این مثال هم یک دایرکتوریِ مشترک و هم یک فایلِ منفرد را پیوند می‌زند:

Terminal window
ln -s ~/shared-claude-rules .claude/rules/shared
ln -s ~/company-standards/security.md .claude/rules/security.md

قواعدِ شخصی در ~/.claude/rules/ بر هر پروژه‌ای روی دستگاهت اعمال می‌شوند. از آن‌ها برای ترجیح‌هایی که مختصِ پروژه نیستند استفاده کن:

~/.claude/rules/
├── preferences.md # Your personal coding preferences
└── workflows.md # Your preferred workflows

قواعدِ سطحِ کاربر پیش از قواعدِ پروژه بارگذاری می‌شوند، که به قواعدِ پروژه اولویتِ بالاتری می‌دهد.

مدیریتِ CLAUDE.md برای تیم‌های بزرگ

Section titled “مدیریتِ CLAUDE.md برای تیم‌های بزرگ”

برای سازمان‌هایی که Claude Code را در سراسرِ تیم‌ها مستقر می‌کنند، می‌توانی دستورها را متمرکز کنی و کنترل کنی کدام فایل‌های CLAUDE.md بارگذاری شوند.

استقرارِ CLAUDE.md سازمان‌گستر

Section titled “استقرارِ CLAUDE.md سازمان‌گستر”

سازمان‌ها می‌توانند یک CLAUDE.mdِ مرکزی-مدیریت‌شده را مستقر کنند که بر همه‌ی کاربرانِ یک دستگاه اعمال شود. این فایل را نمی‌توان با تنظیماتِ فردی کنار گذاشت.

فایل را در محلِ سیاستِ مدیریت‌شده بساز

  • macOS: /Library/Application Support/ClaudeCode/CLAUDE.md
  • Linux و WSL: /etc/claude-code/CLAUDE.md
  • Windows: C:\Program Files\ClaudeCode\CLAUDE.md

با سیستمِ مدیریتِ پیکربندیِ خود مستقر کن

از MDM، Group Policy، Ansible، یا ابزارهای مشابه برای توزیعِ فایل میانِ دستگاه‌های توسعه‌دهندگان استفاده کن. برای دیگر گزینه‌های پیکربندیِ سازمان‌گستر، تنظیماتِ مدیریت‌شده را ببین.

کلیدِ claudeMd می‌گذارد محتوای CLAUDE.mdِ مدیریت‌شده را به‌جای استقرارِ یک فایلِ جداگانه، مستقیماً درونِ managed-settings.json بگذاری.

دامنه: هر نشستِ Claude Code روی دستگاه، در هر مخزنی. برای راهنماییِ مختصِ مخزن، به‌جایش یک CLAUDE.mdِ پروژه کامیت کن.

تقدم: همانندِ یک فایلِ CLAUDE.mdِ مدیریت‌شده. پیش از CLAUDE.mdِ کاربر و پروژه بارگذاری می‌شود.

کجا اعمال می‌شود: فقط تنظیماتِ مدیریت‌شده و سیاست. تنظیمِ claudeMd در تنظیماتِ کاربر، پروژه، یا محلی اثری ندارد.

مثالِ زیر دستورهای رفتاری را مستقیماً در یک فایلِ تنظیماتِ مدیریت‌شده اضافه می‌کند:

{
"claudeMd": "Always run `make lint` before committing.\nNever push directly to main."
}

یک CLAUDE.mdِ مدیریت‌شده و تنظیماتِ مدیریت‌شده هدف‌های متفاوتی دارند. از تنظیمات برای اعمالِ فنی و از CLAUDE.md برای راهنماییِ رفتاری استفاده کن:

دغدغهپیکربندی در
مسدودکردنِ ابزارها، دستورها، یا مسیرهای فایلِ مشخصتنظیماتِ مدیریت‌شده: permissions.deny
اعمالِ ایزولاسیونِ sandboxتنظیماتِ مدیریت‌شده: sandbox.enabled
متغیرهای محیطی و مسیریابیِ ارائه‌دهنده‌ی APIتنظیماتِ مدیریت‌شده: env
روشِ احرازِهویت و قفلِ سازمانتنظیماتِ مدیریت‌شده: forceLoginMethod, forceLoginOrgUUID
راهنماهای سبک و کیفیتِ کدCLAUDE.mdِ مدیریت‌شده
یادآوری‌های مدیریتِ داده و انطباقCLAUDE.mdِ مدیریت‌شده
دستورهای رفتاری برای ClaudeCLAUDE.mdِ مدیریت‌شده

قواعدِ تنظیمات توسطِ کلاینت، صرف‌نظر از تصمیمِ Claude، اعمال می‌شوند. دستورهای CLAUDE.md رفتارِ Claude را شکل می‌دهند اما یک لایه‌ی اعمالِ سفت‌وسخت نیستند.

کنار گذاشتنِ فایل‌های CLAUDE.md مشخص

Section titled “کنار گذاشتنِ فایل‌های CLAUDE.md مشخص”

در monorepoهای بزرگ، فایل‌های CLAUDE.mdِ نیاکان ممکن است دستورهایی داشته باشند که به کارِ تو مربوط نیستند. تنظیمِ claudeMdExcludes می‌گذارد فایل‌های مشخص را با مسیر یا الگوی glob نادیده بگیری.

این مثال یک CLAUDE.mdِ سطحِ بالا و یک دایرکتوریِ قواعد را از یک پوشه‌ی والد کنار می‌گذارد. آن را به .claude/settings.local.json اضافه کن تا کنارگذاری محلی به دستگاهت بماند:

{
"claudeMdExcludes": [
"**/monorepo/CLAUDE.md",
"/home/user/monorepo/other-team/.claude/rules/**"
]
}

الگوها با نحوِ glob در برابرِ مسیرهای مطلقِ فایل منطبق می‌شوند. می‌توانی claudeMdExcludes را در هر لایه‌ی تنظیمات پیکربندی کنی: کاربر، پروژه، محلی، یا سیاستِ مدیریت‌شده. آرایه‌ها در سراسرِ لایه‌ها ادغام می‌شوند.

فایل‌های CLAUDE.mdِ سیاستِ مدیریت‌شده را نمی‌توان کنار گذاشت. این تضمین می‌کند دستورهای سازمان‌گستر همیشه صرف‌نظر از تنظیماتِ فردی اعمال شوند.

حافظه‌ی خودکار می‌گذارد Claude بدونِ آن‌که چیزی بنویسی، دانش را در سراسرِ نشست‌ها انباشته کند. Claude همان‌طور که کار می‌کند برای خودش یادداشت ذخیره می‌کند: دستورهای ساخت، نکته‌های عیب‌یابی، یادداشت‌های معماری، ترجیح‌های سبکِ کد، و عادت‌های ورک‌فلو. Claude در هر نشست چیزی ذخیره نمی‌کند. بر پایه‌ی این‌که آیا اطلاعات در گفت‌وگوی آینده مفید خواهد بود، تصمیم می‌گیرد چه چیزی ارزشِ به‌خاطر سپردن دارد.

فعال یا غیرفعال کردنِ حافظه‌ی خودکار

Section titled “فعال یا غیرفعال کردنِ حافظه‌ی خودکار”

حافظه‌ی خودکار به‌طورِ پیش‌فرض روشن است. برای تغییرِ وضعیتش، در یک نشست /memory را باز کن و از کلیدِ تغییرِ حافظه‌ی خودکار استفاده کن، یا autoMemoryEnabled را در تنظیماتِ پروژه‌ات تنظیم کن:

{
"autoMemoryEnabled": false
}

برای غیرفعال کردنِ حافظه‌ی خودکار از طریقِ متغیرِ محیطی، CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 را تنظیم کن.

هر پروژه دایرکتوریِ حافظه‌ی خودش را در ~/.claude/projects/<project>/memory/ می‌گیرد. مسیرِ <project> از مخزنِ git مشتق می‌شود، پس همه‌ی worktreeها و زیردایرکتوری‌ها درونِ یک مخزن، یک دایرکتوریِ حافظه‌ی خودکار را به اشتراک می‌گذارند. خارج از یک مخزنِ git، به‌جایش از ریشه‌ی پروژه استفاده می‌شود.

برای ذخیره‌ی حافظه‌ی خودکار در محلی متفاوت، autoMemoryDirectory را در settings.json خود تنظیم کن. این مقدار از هر دامنه‌ی تنظیمات خوانده می‌شود: کاربر، پروژه، محلی، سیاست، یا --settings.

{
"autoMemoryDirectory": "~/my-custom-memory-dir"
}

مقدار باید یک مسیرِ مطلق باشد یا با ~/ شروع شود. وقتی در .claude/settings.json یا .claude/settings.local.jsonِ یک پروژه تنظیم شود، این مقدار فقط پس از آن‌که دیالوگِ اعتمادِ workspace را برای آن پوشه بپذیری معتبر است، همان دروازه‌ای که هوک‌ها را کنترل می‌کند.

این دایرکتوری یک نقطه‌ی ورودِ MEMORY.md و فایل‌های موضوعیِ اختیاری دارد:

~/.claude/projects/<project>/memory/
├── MEMORY.md # Concise index, loaded into every session
├── debugging.md # Detailed notes on debugging patterns
├── api-conventions.md # API design decisions
└── ... # Any other topic files Claude creates

MEMORY.md به‌عنوانِ یک فهرستِ دایرکتوریِ حافظه عمل می‌کند. Claude در سراسرِ نشستت فایل‌های این دایرکتوری را می‌خواند و می‌نویسد و از MEMORY.md برای پیگیریِ این‌که چه چیزی کجا ذخیره شده استفاده می‌کند.

حافظه‌ی خودکار محلیِ دستگاه است. همه‌ی worktreeها و زیردایرکتوری‌ها درونِ یک مخزنِ git، یک دایرکتوریِ حافظه‌ی خودکار را به اشتراک می‌گذارند. فایل‌ها بین دستگاه‌ها یا محیط‌های ابری به اشتراک گذاشته نمی‌شوند.

۲۰۰ خطِ نخستِ MEMORY.md، یا ۲۵KBِ نخست، هرکدام زودتر برسد، در شروعِ هر گفت‌وگو بارگذاری می‌شوند. محتوای فراتر از این آستانه در شروعِ نشست بارگذاری نمی‌شود. Claude با انتقالِ یادداشت‌های مفصل به فایل‌های موضوعیِ جداگانه، MEMORY.md را موجز نگه می‌دارد.

این محدودیت فقط بر MEMORY.md اعمال می‌شود. فایل‌های CLAUDE.md صرف‌نظر از طول به‌طورِ کامل بارگذاری می‌شوند، هرچند فایل‌های کوتاه‌تر پایبندیِ بهتری تولید می‌کنند.

فایل‌های موضوعی مانندِ debugging.md یا patterns.md هنگامِ راه‌اندازی بارگذاری نمی‌شوند. Claude آن‌ها را وقتی به اطلاعاتشان نیاز دارد با ابزارهای فایلِ استانداردِ خود به‌صورتِ on demand می‌خواند.

Claude در طولِ نشستت فایل‌های حافظه را می‌خواند و می‌نویسد. وقتی در رابطِ Claude Code «Writing memory» یا «Recalled memory» می‌بینی، Claude به‌طورِ فعال در حالِ به‌روزرسانی یا خواندن از ~/.claude/projects/<project>/memory/ است.

بازرسی و ویرایشِ حافظه‌ات

Section titled “بازرسی و ویرایشِ حافظه‌ات”

فایل‌های حافظه‌ی خودکار markdownِ ساده‌ای هستند که می‌توانی هر زمان ویرایش یا حذف کنی. /memory را اجرا کن تا فایل‌های حافظه را از درونِ یک نشست مرور و باز کنی.

دستورِ /memory همه‌ی فایل‌های CLAUDE.md، CLAUDE.local.md و قواعدِ بارگذاری‌شده در نشستِ جاریت را فهرست می‌کند، می‌گذارد حافظه‌ی خودکار را روشن یا خاموش کنی، و لینکی برای بازکردنِ پوشه‌ی حافظه‌ی خودکار فراهم می‌کند. هر فایلی را انتخاب کن تا در ویرایشگرت باز شود.

وقتی از Claude می‌خواهی چیزی را به خاطر بسپارد، مثلِ «همیشه از pnpm استفاده کن، نه npm» یا «به خاطر داشته باش که تست‌های API به یک نمونه‌ی محلیِ Redis نیاز دارند»، Claude آن را در حافظه‌ی خودکار ذخیره می‌کند. برای افزودنِ دستورها به CLAUDE.md به‌جایش، مستقیماً از Claude بخواه، مثلِ «این را به CLAUDE.md اضافه کن»، یا خودت فایل را از طریقِ /memory ویرایش کن.

عیب‌یابیِ مشکلاتِ حافظه

Section titled “عیب‌یابیِ مشکلاتِ حافظه”

این‌ها رایج‌ترین مشکلاتِ CLAUDE.md و حافظه‌ی خودکار، همراه با گام‌های عیب‌یابی، هستند.

Claude از CLAUDE.md من پیروی نمی‌کند

Section titled “Claude از CLAUDE.md من پیروی نمی‌کند”

محتوای CLAUDE.md به‌عنوانِ یک پیامِ کاربر پس از system prompt تحویل داده می‌شود، نه به‌عنوانِ بخشی از خودِ system prompt. Claude آن را می‌خواند و می‌کوشد از آن پیروی کند، اما هیچ تضمینی برای انطباقِ سفت‌وسخت وجود ندارد، به‌ویژه برای دستورهای مبهم یا متناقض.

برای عیب‌یابی:

  • /memory را اجرا کن تا تأیید کنی فایل‌های CLAUDE.md و CLAUDE.local.md تو بارگذاری می‌شوند. اگر فایلی در فهرست نباشد، Claude نمی‌تواند آن را ببیند.
  • بررسی کن که CLAUDE.mdِ مربوطه در محلی است که برای نشستت بارگذاری می‌شود (به انتخابِ محلِ قرارگیریِ فایل‌های CLAUDE.md نگاه کن).
  • دستورها را مشخص‌تر کن. «از تورفتگیِ ۲ فاصله‌ای استفاده کن» بهتر از «کد را قشنگ قالب‌بندی کن» عمل می‌کند.
  • دنبالِ دستورهای متناقض در فایل‌های CLAUDE.md بگرد. اگر دو فایل برای یک رفتار راهنماییِ متفاوتی بدهند، Claude ممکن است یکی را به‌دلخواه انتخاب کند.

اگر دستور چیزی است که باید در یک نقطه‌ی مشخص اجرا شود، مانندِ پیش از هر کامیت یا پس از هر ویرایشِ فایل، آن را به‌جایش به‌عنوانِ یک هوک بنویس. هوک‌ها در رویدادهای ثابتِ چرخه‌ی حیات به‌عنوانِ دستورهای shell اجرا می‌شوند و صرف‌نظر از تصمیمِ Claude اعمال می‌شوند.

برای دستورهایی که آن‌ها را در سطحِ system prompt می‌خواهی، از --append-system-prompt استفاده کن. این باید در هر فراخوانی پاس داده شود، پس برای اسکریپت‌ها و خودکارسازی مناسب‌تر است تا استفاده‌ی تعاملی.

نمی‌دانم حافظه‌ی خودکار چه چیزی ذخیره کرده

Section titled “نمی‌دانم حافظه‌ی خودکار چه چیزی ذخیره کرده”

/memory را اجرا کن و پوشه‌ی حافظه‌ی خودکار را انتخاب کن تا آنچه Claude ذخیره کرده مرور کنی. همه‌چیز markdownِ ساده‌ای است که می‌توانی بخوانی، ویرایش، یا حذف کنی.

فایل‌های بیش از ۲۰۰ خط کانتکستِ بیشتری مصرف می‌کنند و ممکن است پایبندی را کاهش دهند. از قواعدِ مسیر-محدود استفاده کن تا دستورها فقط وقتی Claude با فایل‌های منطبق کار می‌کند بارگذاری شوند، یا محتوایی را که در هر نشست لازم نیست هرس کن. تقسیم به importهای @path به سازمان‌دهی کمک می‌کند اما کانتکست را کاهش نمی‌دهد، چون فایل‌های import‌شده هنگامِ راه‌اندازی بارگذاری می‌شوند.

دستورها پس از /compact گم‌شده به‌نظر می‌رسند

Section titled “دستورها پس از /compact گم‌شده به‌نظر می‌رسند”

CLAUDE.mdِ ریشه‌ی پروژه از compaction جانِ سالم به در می‌برد: پس از /compact، Claude آن را از دیسک دوباره می‌خواند و دوباره به نشست تزریق می‌کند. فایل‌های تودرتوی CLAUDE.md در زیردایرکتوری‌ها به‌طورِ خودکار دوباره تزریق نمی‌شوند؛ آن‌ها دفعه‌ی بعدی که Claude فایلی را در آن زیردایرکتوری می‌خواند دوباره بارگذاری می‌شوند.

اگر دستوری پس از compaction ناپدید شد، یا فقط در گفت‌وگو داده شده بود یا در یک CLAUDE.mdِ تودرتو زندگی می‌کند که هنوز دوباره بارگذاری نشده. دستورهای فقط-گفت‌وگویی را به CLAUDE.md اضافه کن تا ماندگار شوند. برای تفکیکِ کامل، چه چیزی از compaction جانِ سالم به در می‌برد را ببین.

برای راهنمایی درباره‌ی اندازه، ساختار و دقت، نوشتنِ دستورهای اثرگذار را ببین.

  • عیب‌یابیِ پیکربندیت: تشخیصِ این‌که چرا CLAUDE.md یا تنظیمات اثر نمی‌گذارند
  • Skills: ورک‌فلوهای تکرارپذیر را بسته‌بندی کن که به‌صورتِ on demand بارگذاری می‌شوند
  • تنظیمات: رفتارِ Claude Code را با فایل‌های تنظیمات پیکربندی کن
  • حافظه‌ی ساب‌ایجنت: بگذار ساب‌ایجنت‌ها حافظه‌ی خودکارِ خودشان را نگه دارند