پرش به محتوای اصلی
پرش به محتوای مقاله

فایل AGENTS.md؛ راهکاری برای جلوگیری از خطاهای عامل‌های کدنویس

·۱۳ مهر ۱۴۰۵۱۱ دقیقه مطالعه
راهنما
نحوه نوشتن فایل AGENTS.md که عامل هوشمند شما واقعاً از آن پیروی کند
نحوه نوشتن فایل AGENTS.md که عامل هوشمند شما واقعاً از آن پیروی کند
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معرفی استاندارد `AGENTS.md` به عنوان یک لایه حافظه دائمی و بیرونی برای عامل‌های کدنویس، که جایگزین تکرار دستورات در هر جلسه چت می‌شود.

تصور کنید هر بار که برای ویرایش کد به سراغ دستیار هوش مصنوعی می‌روید، او مانند کارمندی است که روز اولش است و هیچ خاطره‌ای از تصمیمات دیروز شما ندارد. این «راه‌اندازی سرد» (Cold Start) دقیقاً همان جایی است که خطرناک‌ترین باگ‌ها متولد می‌شوند؛ چون وقتی عامل هوش مصنوعی حافظه ندارد، مجبور به حدس زدن می‌شود و حدس زدن در دنیای کدنویسی، منشأ most frustrating bugs یا همان آزاردهنده‌ترین باگ‌هاست.

این چالش زمانی حیاتی می‌شود که عامل (Agent) — شبیه به دستیاری که حالا اجازه دارد مستقیماً در فایل‌های شما تغییر ایجاد کند و نه فقط پیشنهاد بدهد — از یک دستیار «فقط-خواندنی» به یک مشارکت‌کننده فعال با دسترسی نوشتن تبدیل شود. تفاوت در اینجا حیاتی است: یک دستیار فقط-خواندنی ممکن است صرفاً یک جمله بد تولید کند، اما عاملی با دسترسی نوشتن می‌تواند یک بیلد تولیدی (Production Build) را خراب کند یا وابستگی‌های حیاتی پروژه را حذف نماید. صنعت اکنون به سمت نیاز به «وضعیت پایدار» (Persistent State) برای عامل‌ها حرکت می‌کند؛ نه در وزن‌های مدل، بلکه در دایرکتوری ریشه پروژه.

طبق راهنمای منتشر شده در no-code.supply در اکتبر ۲۰۲۶، راهکار این مشکل ایجاد یک فایل متنی استاندارد به نام AGENTS.md در ریشه پروژه است. این فایل به عنوان «منبع واحد حقیقت» (Single Source of Truth) عمل می‌کند و ابزارهای مدرنی مثل Cursor، Codex و GitHub Copilot پیش از هر تغییری، آن را به‌طور خودکار می‌خوانند و از این کنوانسیون باز پیروی می‌کنند.

برای کاربرانی که از Claude Code استفاده می‌کنند و این ابزار به‌طور پیش‌فرض به دنبال CLAUDE.md می‌گردد، نویسنده پیشنهاد می‌کند از یک خط واردات ساده (@AGENTS.md) استفاده کنند تا مجبور نباشند دو نسخه از قوانین خود را مدیریت کنند. اگرچه Claude Code اکنون می‌تواند به‌تنهایی AGENTS.md را بخواند، اما اگر هر دو فایل وجود داشته باشند، اولویت را به CLAUDE.md می‌دهد. استفاده از این خط واردات تضمین می‌کند که شما نیازی به نگهداری دو کپی مجزا از قوانین خود ندارید.

زمینه: چرا این فایل اهمیت دارد؟

اعتقاد نویسنده به این متد از تجربه ساخت ۱۵ قالب وب‌سایت با Claude Code در حدود یک هفته نشأت می‌گیرد. در طول دو مخزن (Repository) و ده‌ها جلسه کاری، عامل هوش مصنوعی هر بار از نقطه صفر شروع می‌کرد. بدون یک سابقه مکتوب، عامل مجبور است حدس بزند که پروژه چگونه کار می‌کند.

علاوه بر این، برای کسانی که قالب‌های آماده می‌فروشند، وجود AGENTS.md برای کاربر نهایی حیاتی است. اکثر خریداران قالب‌ها، کدها را به‌صورت دستی ویرایش نمی‌کنند؛ بلکه از Cursor یا Claude Code استفاده می‌کنند تا درخواست‌هایی مثل «بخش Hero را آبی کن» بدهند. در این حالت، فایل AGENTS.md تنها چیزی است که مانع از آن می‌شود که دستیار هوش مصنوعی در حین اجرای درخواست کاربر، به‌طور بی‌صدا قوانین داخلی قالب را بشکند.

کالبدشکافی یک فایل AGENTS.md اثرگذار

برای جلوگیری از اینکه عامل دستورالعمل‌ها را نادیده بگیرد، این فایل باید به عنوان مجموعه‌ای از دستورات برای یک همکار نوشته شود، نه یک صفحه ویکی یا دانشنامه. یک AGENTS.md با عملکرد بالا از پنج بخش خاص تشکیل شده است. برای تشریح این بخش‌ها، نویسنده از مثال‌های قالب Oda (یک قالب استودیو معماری) استفاده می‌کند.

۱. تعریف پروژه (Project Definition)
با یک خلاصه دو جمله‌ای شروع کنید که پروژه چیست و چه محدودیتی همه چیز را شکل می‌دهد.

  • مثال: «یک صفحه فرود استاتیک و بدون وابستگی برای یک استودیو معماری: index.html + CSS + JS کلاسیک. هیچ مرحله Build وجود ندارد و هرگز نباید اضافه شود. صفحه باید زمانی که index.html مستقیماً از روی دیسک باز می‌شود، به درستی کار کند.»
  • چرا جواب می‌دهد: جمله آخر مانع از آن می‌شود که یک عامل «خوش‌نیت»، به‌طور خودکار یک Bundler یا فرآیند Build اضافه کند که منجر به شکست شرط اصلی پروژه شود.

۲. نقشه پروژه (Project Map)
این بخشی است که فایل‌های مورد نیاز عامل برای انجام کار را مشخص می‌کند. به جای لیست کردن تک‌تک فایل‌ها، به عامل بگویید کجا تغییر ایجاد کند و از کجا دوری کند.

  • ساختار و کپی: فایل index.html با استفاده از کامنت‌های بنر SECTION برای هر بخش (Hero, Studio, Work, Process).
  • توکن‌های طراحی: فایل assets/css/tokens.css. دستورالعمل صریح است: «مقادیر را اینجا تغییر بده، نه در main.css».
  • کمک‌های مشترک (Shared Helpers): فایل‌های assets/js/kit.js و assets/css/kit.css. این‌ها به عنوان فایل‌های Vendored علامت‌گذاری شده‌اند با این دستور: «ویرایش نکن؛ به جای پیاده‌سازی مجدد، از کمک‌های kit.* استفاده کن».

۳. قوانین غیرقابل مذاکره (Non-Negotiable Rules)
این بخش قلب فایل است. قوانین باید کوتاه، شماره‌دار و همراه با یک «دلیل» باشند. بدون دلیل، عامل ممکن است قانون را صرفاً یک ترجیح سلیقه‌ای ببیند و آن را با چیزی که فکر می‌کند «بهتر» است معاوضه کند.

  • قانون ۱: هیچ درخواست خارجی (بدون CDN، گوگل فونت، آنالیتیکس یا تصاویر ریموت).
  • قانون ۲: اسکریپت‌های کلاسیک فقط با defer. هرگز از type="module" یا import استفاده نکن چون در پروتکل file:// شکست می‌خورند.
  • قانون ۳: رعایت prefers-reduced-motion؛ انیمیشن‌های جدید باید معادل استاتیک داشته باشند.
  • قانون ۶: دقیقاً یک تگ <h1>؛ ترتیب هدینگ‌ها، لندمارک‌ها، لینک Skip و استایل‌های :focus-visible را حفظ کن.
  • قانون ۸: از توکن‌های موجود استفاده کن. اگر توکن جدیدی نیاز است، آن را با یک کامنت به tokens.css اضافه کن. به‌طور خاص، متن‌ها در رنگ Accent باید از --timber-ink (برای سایز بزرگ) یا --timber-deep (برای سایز کوچک) استفاده کنند و هرگز از --timber استفاده نشود چون کنتراست آن ضعیف است.

۴. دستورالعمل‌های اجرایی (Task Recipes)
عامل‌ها آنچه را می‌بینند کپی می‌کنند. با ارائه یک قطعه کد (Snippet) عینی برای رایج‌ترین کارها — مانند اضافه کردن یک بخش جدید — توسعه‌دهنده تضمین می‌کند که عامل سبک معماری موجود را تکرار می‌کند.
برای قالب Oda، این دستورالعمل شامل موارد زیر است:

  • هدر: استفاده از .sec-head خط‌کشی شده با فرمت (NN) Name به همراه یک زیرعنوان و شماره صفحه آزاد بعدی.
  • چیدمان: استفاده از .wrap به همراه .g12 دوازده ستونی؛ فاصله‌ها از .sec می‌آیند.
  • هدینگ‌ها: استفاده از .h2 به طوری که آخرین کلمه در <span class="dim"> قرار گیرد.
  • نمایش‌ها (Reveals): استفاده از data-reveal="draft" با data-reveal-delay بر حسب میلی‌ثانیه.

۵. چک‌لیست «پایان کار» (The Done Checklist)
در نهایت، مجموعه‌ای از الزامات را قرار دهید تا عامل پیش از اعلام پایان کار، آن‌ها را تایید کند. این کار مانع از آن می‌شود که عامل در حالی که خطاهای کوچک باقی مانده، ادعای پیروزی کند.

  • بررسی‌های دستی: نبود خطای کنسول، نبود اسکرول افقی در عرض ۳۹۰ پیکسل، کارکرد صحیح صفحه هنگام باز شدن از دیسک، و نمایش کامل صفحه در حالت reduced motion.
  • دسترسی‌پذیری: هر کنترل باید از طریق کیبورد قابل دسترسی باشد و فوکوس آن قابل مشاهده باشد.
  • بررسی‌های خودکار: برای پروژه‌های React، نویسنده از یک دستور واحد استفاده می‌کند: npm run check (که لنتینگ، تایپ‌چکینگ و بیلد را مدیریت می‌کند). اگر عامل بتواند آن را اجرا کند، خطاها را پیش از آنکه انسان ببیند، اصلاح می‌کند.

نحوه نوشتن AGENTS.md که عامل هوشمند شما واقعاً از آن پیروی کند

جزئیات: چه چیزهایی را حذف کنیم؟

«توجه» (Attention) برای مدل‌های زبانی یک منبع محدود است. هر خط در AGENTS.md باید لیاقت حضور در آنجا را داشته باشد. نویسنده در مورد گنجاندن موارد زیر هشدار می‌دهد:

  • توصیه‌های مبهم: عباراتی مثل «کد تمیز و قابل نگهداری بنویس» یا «بهترین متدها را دنبال کن» بی‌فایده هستند چون عامل همین حالا باور دارد که دارد این کار را می‌کند.
  • اطلاعات تکراری: توضیح ندهید React چیست یا لیست تمام کامپوننت‌ها را ننویسید؛ عامل می‌تواند خودش کد را بخواند. فقط چیزی را بنویسید که کد نمی‌تواند بگوید: قصد شما، محدودیت‌ها و تصمیمات.
  • تاریخچه: از جملاتی مثل «ما قبلاً از X استفاده می‌کردیم و بعد به Y تغییر دادیم» پرهیز کنید، مگر اینکه روش قدیمی تله‌ای باشد که احتمالاً عامل در آن می‌افتد.
  • اسرار: هرگز کلیدهای API، توکن‌ها یا رمزهای عبور را وارد نکنید، زیرا این فایل در مخزن کد قرار دارد.
  • جستارهای طولانی: اگر بخشی نیاز به پاراگراف‌های پس‌زمینه دارد، آن را به سندی مجزا (مثلاً DESIGN.md برای منطق طراحی) منتقل کنید و در AGENTS.md به آن لینک دهید.

پالایش تکرار شونده و اشتباهات رایج

یک فایل AGENTS.md نباید سندی ایستا باشد. موثرترین قوانین اغلب از دل باگ‌ها بیرون می‌آیند. برای مثال، در ۲۶ سپتامبر، نویسنده تست کرد که یک بخش «Hero» را به یک سایت تست مجزا منتقل کند. این کار در چهار قالب باعث شکست شد زیرا ورود بخش Hero منتظر سیگنالی از یک Preloader یا Nav بود که دیگر وجود نداشت. این اتفاق منجر به ایجاد یک قانون جدید شد:

  • قانون ۹: هر بخش باید به‌طور مستقل شروع شود. ورودی که منتظر سیگنال Boot/Intro است، نباید به Preloader یا Nav برای ارسال آن وابسته باشد؛ تابع Fallback را از داخل افکت خودِ بخش نیز فراخوانی کن.

برای موثر نگه داشتن فایل، از این تله‌های رایج دوری کنید:

  • توصیف به جای دستور: به جای اینکه بگویید «پروژه از توکن‌های طراحی استفاده می‌کند»، بگویید «از توکن‌های موجود استفاده کن. اگر به توکن جدیدی نیاز داری، آن را با یک کامنت به tokens.css اضافه کن. هرگز مقادیر Hex را هارد-کد نکن».
  • قوانین بدون دلیل: قانونی که دلیل داشته باشد، زمانی که عامل ایده «بهتری» دارد، پیروز می‌شود. قانونی بدون دلیل، اغلب نادیده گرفته می‌شود.
  • مستندات قدیمی: یک AGENTS.md قدیمی بدتر از نبود آن است، زیرا عامل به آن اعتماد می‌کند. اگر فایلی جابه‌جا شود، عامل از روی نقشه قدیمی پیش می‌رود و با اعتماد به نفس کامل گم می‌شود.

استراتژی پیاده‌سازی

توسعه‌دهندگان مجبور نیستند این فایل‌ها را از صفر بنویسند. یک عامل می‌تواند پس از مدتی کار روی پروژه، اولین پیش‌نویس را آماده کند. می‌توانید اینگونه دستور دهید: «یک فایل AGENTS.md برای این پروژه بنویس: جای فایل‌ها، قوانینی که نباید شکسته شوند، نحوه اضافه کردن یک بخش و چک‌لیستی برای پایان کار».

سپس انسان پیش‌نویس را بررسی می‌کند، زبان مبهم را حذف کرده و «چرایی» پشت قوانین را اضافه می‌کند. این رویکرد نقش توسعه‌دهنده را از پرامپت‌نویسی مداوم به بازرسی سطح بالا (High-level Auditing) تغییر می‌دهد.

برای مدیریت پروژه‌های پیچیده، نویسنده پیشنهاد می‌کند فایل‌های AGENTS.md را در زیرپوشه‌ها قرار دهید. عامل‌ها فایلی را می‌خوانند که به کدی که در حال ویرایش آن هستند نزدیک‌تر است. برای مثال، یک پروژه ممکن است یک AGENTS.md برای نسخه HTML و یکی دیگر برای نسخه React داشته باشد، زیرا قوانین سایتی که با دبل‌کلیک روی فایل باز می‌شود با قوانین یک بیلد Next.js کاملاً متفاوت است. این کار اجازه می‌دهد زیر-ماژول‌های خاص، قوانین خود را داشته باشند که قوانین فایل ریشه را بازنویسی یا تکمیل کند.

چک‌لیست نهایی برای AGENTS.md شما

اگر در حال ساخت فایل خود هستید، از این اسکلت استفاده کنید تا مطمئن شوید موارد ضروری را پوشش داده‌اید:

  • نام پروژه: عنوان واضح در بالا.
  • ماهیت پروژه: ۱ تا ۲ جمله درباره پروژه و محدودیت اصلی آن.
  • نقشه فایل‌ها: جای فایل‌های کلیدی و دستورات خاص درباره اینکه در هر کدام چه چیزی تغییر کند (یا دست نخورده بماند).
  • قوانین غیرقابل تخریب: لیستی شماره‌دار از محدودیت‌ها، هر کدام همراه با یک دلیل واقعی.
  • دستورالعمل کارهای رایج: راهنمای انجام متداول‌ترین عملیات (مثلاً اضافه کردن بخش) با الگوهای قابل تکرار.
  • دستورات (Commands): لیستی از دستورات توسعه و بررسی (مانند npm run check).
  • پیش از اتمام: چک‌لیست نهایی بررسی‌های دستی و خودکار.

با سرمایه‌گذاری ده دقیقه‌ای روی یک فایل پیکربندی در ریشه — که معمولاً بین ۴۶ تا ۱۰۲ خط است — نیاز به تکرار دستورات در هر جلسه چت جدید را از بین می‌برید و عامل هوش مصنوعی را از یک ابزار ناپایدار به یک عضو منضبط تیم تبدیل می‌کنید.

چرا این موضوع مهم است؟

این متد با کاهش نرخ خطای ناشی از حدس‌زدن مدل‌ها، هزینه بازبینی کد (Code Review) را به‌شدت کاهش می‌دهد. تکیه بر مستندات متنی در ریشه پروژه، اعتبار و تکرارپذیری خروجی عامل‌های هوش مصنوعی را در محیط‌های عملیاتی تضمین می‌کند.

تأثیر برای ایران

برنامه‌نویسان ایرانی که از ابزارهای رایگان یا کرک‌شده Cursor و Copilot استفاده می‌کنند، می‌توانند بدون نیاز به تغییر در مدل، کیفیت خروجی را با این روش رایگان بهبود ببخشند.

·نگاه ما
تحریریه دات‌هوش

انتقال حافظه از لایه مدل به لایه فایل (Project-level state)، یک چرخش هوشمندانه برای حل مشکل پنجره متنی محدود است. این رویکرد نشان می‌دهد که آینده توسعه با هوش مصنوعی، نه در پرامپت‌های طولانی‌تر، بلکه در ساختاریافته کردن «بستر» (Context) پروژه است تا عامل‌ها از حالت ابزار گذرا به عضو منضبط تیم تبدیل شوند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.