اگر از Codex برای برنامه‌نویسی، بررسی کد، اجرای تست‌ها یا انجام کارهای تکراری در پروژه‌های نرم‌افزاری استفاده می‌کنید، قابلیت Customization یکی از مهم‌ترین امکاناتی است که باید با آن آشنا شوید.

شخصی‌سازی Codex به شما اجازه می‌دهد مشخص کنید عامل هوش مصنوعی چگونه با پروژه شما کار کند، چه قوانینی را رعایت کند، چه اطلاعاتی را به خاطر بسپارد، از چه ابزارهایی استفاده کند و در پروژه‌های بزرگ چگونه وظایف را بین عامل‌های تخصصی تقسیم کند.

در این آموزش با مهم‌ترین بخش‌های Codex Customization شامل AGENTS.md، حافظه یا Memory، Skills، پروتکل MCP و Subagents آشنا می‌شویم و کاربرد هرکدام را بررسی می‌کنیم.

Customization در Codex چیست؟

Customization یا شخصی‌سازی در Codex مجموعه‌ای از قابلیت‌ها است که به شما امکان می‌دهد رفتار Codex را متناسب با روش کاری خود یا تیم توسعه تنظیم کنید.

به‌جای اینکه در هر گفت‌وگو دوباره توضیح دهید پروژه چگونه اجرا می‌شود، استاندارد کدنویسی چیست یا تست‌ها باید با چه دستوری اجرا شوند، می‌توانید این اطلاعات را به‌صورت ساختاریافته در اختیار Codex قرار دهید.

مهم‌ترین لایه‌های شخصی‌سازی Codex عبارت‌اند از:

  • AGENTS.md: تعریف دستورالعمل‌ها و قوانین دائمی پروژه
  • Memory: نگهداری Context و اطلاعات مفید به‌دست‌آمده از کارهای قبلی
  • Skills: تعریف Workflowها و قابلیت‌های قابل استفاده مجدد
  • MCP: اتصال Codex به ابزارها و سرویس‌های خارجی
  • Subagents: ایجاد Agentهای تخصصی برای وظایف مختلف

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

فایل AGENTS.md چیست؟

یکی از مهم‌ترین ابزارهای شخصی‌سازی Codex فایل AGENTS.md است. این فایل برای تعریف دستورالعمل‌هایی استفاده می‌شود که Codex باید هنگام کار با پروژه رعایت کند.

اگر در یک پروژه بارها مجبور می‌شوید درباره ساختار پوشه‌ها، نحوه اجرای تست، استانداردهای کدنویسی یا قوانین Code Review توضیح بدهید، بهتر است این اطلاعات را داخل AGENTS.md قرار دهید.

چه اطلاعاتی را می‌توان در AGENTS.md قرار داد؟

  • دستور Build پروژه
  • دستور اجرای تست‌ها
  • استانداردهای Code Review
  • قوانین مخصوص Repository
  • قوانین نام‌گذاری فایل‌ها و Componentها
  • ساختار پوشه‌های پروژه
  • قوانین مربوط به TypeScript، React، Angular یا سایر تکنولوژی‌ها
  • دستورالعمل‌های مربوط به Git و Commit

نمونه ساده AGENTS.md برای پروژه Front-end

# Project Guidelines

- Use TypeScript for all new files.
- Do not use the any type.
- Run tests before completing a task.
- Use functional React components.
- Follow the existing folder structure.
- Do not install a new dependency unless necessary.
- Keep components small and reusable.

با وجود چنین فایلی، Codex قبل از ایجاد یا تغییر کد می‌تواند قوانین اصلی پروژه را در نظر بگیرد.

چه زمانی AGENTS.md را به‌روزرسانی کنیم؟

فایل AGENTS.md نباید به یک فایل بسیار بزرگ و پر از قوانین غیرضروری تبدیل شود. بهتر است فقط دستورالعمل‌هایی را در آن قرار دهید که واقعاً در پروژه اهمیت دارند.

به‌روزرسانی این فایل مخصوصاً در شرایط زیر مفید است:

  • وقتی Codex یک اشتباه را چند بار تکرار می‌کند.
  • وقتی برای انجام یک کار فایل‌های غیرضروری زیادی را بررسی می‌کند.
  • وقتی یک نکته به‌طور مرتب در Code Review تکرار می‌شود.
  • وقتی تیم شما استاندارد جدیدی برای توسعه پروژه تعریف می‌کند.

در واقع می‌توان AGENTS.md را به‌عنوان یک راهنمای دائمی برای Agent هوش مصنوعی در Repository در نظر گرفت.

AGENTS.md سراسری و مخصوص پروژه چه تفاوتی دارند؟

Codex می‌تواند دستورالعمل‌ها را از چند محل دریافت کند. می‌توانید یک فایل عمومی برای تنظیم رفتار کلی Codex داشته باشید و در کنار آن برای هر Repository نیز قوانین جداگانه تعریف کنید.

تنظیمات Global

برای تنظیم رفتار عمومی Codex می‌توان از ساختاری مشابه زیر استفاده کرد:

~/.codex/
└── AGENTS.md

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

تنظیمات مخصوص Repository

my-project/
├── AGENTS.md
├── src/
├── package.json
└── ...

فایل موجود در Repository بهتر است فقط شامل قوانین مرتبط با همان پروژه و تیم باشد.

Memory در Codex چه کاربردی دارد؟

یکی دیگر از بخش‌های Customization، قابلیت Memory است. Memory برای نگهداری Context مفیدی استفاده می‌شود که از تعامل‌ها و کارهای قبلی به دست آمده است.

در یک پروژه واقعی ممکن است Agent در طول کار اطلاعات مهمی درباره معماری پروژه، تصمیمات قبلی یا نحوه انجام یک فرآیند یاد بگیرد. Memory کمک می‌کند بخشی از این Context در تعامل‌های بعدی نیز قابل استفاده باشد.

تفاوت اصلی Memory با AGENTS.md این است که AGENTS.md بیشتر برای قوانین صریح و مشخص پروژه مناسب است، در حالی که Memory برای حفظ Context مفید از فعالیت‌های قبلی کاربرد دارد.

Skill در Codex چیست؟

Skills برای تعریف فرآیندها و قابلیت‌هایی طراحی شده‌اند که می‌خواهید بارها از آن‌ها استفاده کنید.

فرض کنید تیم شما برای انتشار نسخه جدید نرم‌افزار همیشه یک فرآیند مشخص دارد. به‌جای توضیح این مراحل در هر بار انتشار، می‌توانید یک Skill ایجاد کنید که تمام Workflow را تعریف کند.

ساختار یک Skill

یک Skill معمولاً می‌تواند ساختاری مشابه زیر داشته باشد:

my-skill/
├── SKILL.md
├── scripts/
├── references/
└── assets/

در این ساختار:

  • SKILL.md شامل دستورالعمل‌ها و Metadata اصلی Skill است.
  • scripts/ می‌تواند شامل اسکریپت‌های اجرایی باشد.
  • references/ برای مستندات و منابع مرتبط استفاده می‌شود.
  • assets/ می‌تواند Template یا فایل‌های موردنیاز Workflow را نگهداری کند.

Skills برای چه کارهایی مناسب هستند؟

  • فرآیند Release نرم‌افزار
  • Code Review
  • به‌روزرسانی Documentation
  • اجرای تست‌های مشخص
  • فرآیند Deployment
  • Workflowهای مخصوص یک تیم
  • انجام کارهای تکراری با مراحل مشخص

نمونه یک SKILL.md ساده

---
name: frontend-review
description: Review frontend code before merging.
---

1. Check TypeScript errors.
2. Run unit tests.
3. Check for duplicated code.
4. Review accessibility issues.
5. Check responsive behavior.
6. Report important issues before merging.

حالا این Workflow می‌تواند برای بررسی بخش‌های مختلف پروژه مجدداً مورد استفاده قرار بگیرد.

تفاوت AGENTS.md و Skill چیست؟

این دو قابلیت ممکن است در ابتدا مشابه به نظر برسند، اما کاربرد متفاوتی دارند.

قابلیتAGENTS.mdSkill
هدفتعریف قوانین دائمی پروژهتعریف Workflow قابل استفاده مجدد
مناسب برایاستاندارد کدنویسی و ساختار پروژهفرآیندهای چندمرحله‌ای
قابلیت استفاده از Scriptمحدودبله
قابلیت نگهداری Referencesبه‌صورت دستورالعملبله

به زبان ساده، AGENTS.md مشخص می‌کند Codex چگونه رفتار کند و Skill مشخص می‌کند یک کار مشخص چگونه انجام شود.

MCP چیست و چه ارتباطی با Codex دارد؟

MCP مخفف Model Context Protocol است و روشی استاندارد برای اتصال Agentهای هوش مصنوعی به ابزارها و منابع خارجی محسوب می‌شود.

اگر Codex برای انجام یک Workflow نیاز داشته باشد به سرویس‌هایی خارج از Repository متصل شود، MCP می‌تواند این ارتباط را فراهم کند.

برای مثال MCP می‌تواند برای اتصال به سیستم‌هایی مانند موارد زیر استفاده شود:

  • GitHub
  • Figma
  • Linear
  • سیستم‌های مدیریت Issue
  • Documentationهای داخلی شرکت
  • ابزارهای اختصاصی یک سازمان

معماری ساده MCP

Codex
  ↓
MCP Client
  ↓
MCP Server
  ↓
External Service

MCP Server می‌تواند قابلیت‌های مختلفی مانند Tool، Resource یا Prompt را در اختیار Agent قرار دهد.

ترکیب Skills و MCP

یکی از قدرتمندترین روش‌های استفاده از Codex، ترکیب Skills و MCP است.

در این معماری، Skill مشخص می‌کند که یک فرآیند چگونه انجام شود و MCP ابزارهای خارجی موردنیاز برای اجرای آن فرآیند را در اختیار Codex قرار می‌دهد.

برای مثال یک Skill مربوط به مدیریت Issueها می‌تواند مراحل زیر را مشخص کند:

  1. Issue موردنظر را دریافت کن.
  2. کدهای مرتبط را پیدا کن.
  3. مشکل را بررسی کن.
  4. تغییرات لازم را ایجاد کن.
  5. تست‌ها را اجرا کن.
  6. نتیجه را در سیستم مدیریت Issue ثبت کن.

در این سناریو Skill مسئول تعریف Workflow است و MCP ارتباط با سیستم مدیریت Issue را فراهم می‌کند.

Subagent در Codex چیست؟

در پروژه‌های بزرگ همیشه مناسب نیست که یک Agent تمام وظایف را انجام دهد. Subagents امکان تقسیم کار بین Agentهای تخصصی را فراهم می‌کنند.

برای مثال می‌توان Agentهای مختلفی برای وظایف زیر تعریف کرد:

  • Agent مخصوص اجرای Test
  • Agent مخصوص Code Review
  • Agent مخصوص بررسی Security
  • Agent مخصوص Front-end
  • Agent مخصوص Backend
  • Agent مخصوص بررسی Logهای Production

هر Subagent می‌تواند روی وظیفه مشخصی تمرکز کند و از ابزارهای مناسب همان کار استفاده کند.

یک معماری واقعی برای شخصی‌سازی Codex

فرض کنید یک پروژه React یا Next.js بزرگ دارید. می‌توانید معماری شخصی‌سازی Codex را به شکل زیر پیاده‌سازی کنید:

Project
│
├── AGENTS.md
│
├── .agents/
│   └── skills/
│       ├── code-review/
│       │   └── SKILL.md
│       ├── testing/
│       │   └── SKILL.md
│       └── release/
│           └── SKILL.md
│
├── src/
│
└── tests/

در AGENTS.md استانداردهای اصلی پروژه را تعریف می‌کنید و برای کارهای تکراری مثل Testing، Code Review و Release نیز Skillهای جداگانه می‌سازید.

اگر این Workflowها نیاز به سرویس‌هایی مانند GitHub، Figma یا ابزارهای سازمانی داشته باشند، می‌توانید آن‌ها را از طریق MCP به Codex متصل کنید.

بهترین روش برای شروع Customization در Codex

برای شروع لازم نیست تمام قابلیت‌های شخصی‌سازی را همزمان پیاده‌سازی کنید. بهتر است مرحله‌به‌مرحله پیش بروید.

  1. ابتدا AGENTS.md بسازید: قوانین مهم Repository و دستورهای اصلی Build و Test را مشخص کنید.
  2. فرآیندهای تکراری را پیدا کنید: کارهایی که مرتب انجام می‌شوند گزینه مناسبی برای تبدیل شدن به Skill هستند.
  3. در صورت نیاز از MCP استفاده کنید: زمانی MCP را اضافه کنید که Workflow شما به ابزارها یا سیستم‌های خارجی نیاز دارد.
  4. برای پروژه‌های پیچیده Subagent بسازید: وظایف تخصصی را بین Agentهای مختلف تقسیم کنید.

نمونه AGENTS.md برای پروژه React و Next.js

اگر توسعه‌دهنده Front-end هستید، می‌توانید از نمونه زیر به‌عنوان نقطه شروع استفاده کنید:

# Frontend Project Instructions

## General
- Use TypeScript.
- Avoid using any.
- Follow the existing project architecture.
- Do not introduce unnecessary dependencies.

## React
- Use functional components.
- Prefer reusable components.
- Keep business logic outside UI components when possible.
- Avoid unnecessary useEffect calls.

## Next.js
- Prefer Server Components when appropriate.
- Add "use client" only when required.
- Keep server-only logic outside client components.

## Testing
- Run tests after important changes.
- Do not remove existing tests to make the build pass.

## Code Quality
- Keep functions small.
- Avoid duplicated code.
- Follow existing naming conventions.

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

مزایای شخصی‌سازی Codex برای تیم‌های برنامه‌نویسی

استفاده صحیح از قابلیت‌های Customization می‌تواند Codex را از یک ابزار عمومی تولید کد به یک Agent آشنا با فرآیند توسعه پروژه تبدیل کند.

برخی از مهم‌ترین مزایای این روش عبارت‌اند از:

  • کاهش توضیحات تکراری به Agent
  • هماهنگی بهتر کد تولیدشده با استاندارد پروژه
  • کاهش اشتباهات تکراری
  • استانداردسازی Code Review
  • خودکارسازی Workflowهای تکراری
  • اتصال Agent به ابزارهای توسعه
  • امکان تقسیم وظایف پیچیده بین Agentهای تخصصی
  • بهبود استفاده از هوش مصنوعی در پروژه‌های تیمی

آیا AGENTS.md جایگزین مستندات پروژه است؟

خیر. فایل AGENTS.md بهتر است جایگزین README یا Documentation کامل پروژه نشود.

README برای توسعه‌دهندگان انسانی طراحی می‌شود و می‌تواند توضیحات جامع پروژه را شامل شود، اما AGENTS.md بهتر است شامل دستورالعمل‌های کوتاه، دقیق و کاربردی باشد که Agent هنگام انجام وظایف باید رعایت کند.

سوالات متداول درباره Customization در Codex

Customization در Codex چیست؟

Customization مجموعه‌ای از امکانات Codex برای تنظیم نحوه کار Agent بر اساس نیاز کاربر، Repository یا تیم توسعه است. این قابلیت‌ها شامل AGENTS.md، Memory، Skills، MCP و Subagents می‌شوند.

AGENTS.md چیست؟

AGENTS.md فایلی برای تعریف قوانین و دستورالعمل‌های دائمی است که Codex هنگام کار روی Repository باید در نظر بگیرد.

تفاوت Skill و AGENTS.md چیست؟

AGENTS.md بیشتر برای تعریف قوانین و استانداردهای دائمی پروژه استفاده می‌شود، در حالی که Skill برای تعریف Workflowها و فرآیندهای قابل استفاده مجدد مناسب است.

MCP در Codex چه کاربردی دارد؟

MCP یا Model Context Protocol برای اتصال Codex به ابزارها، داده‌ها و سیستم‌های خارجی مورد استفاده قرار می‌گیرد.

آیا می‌توان برای هر پروژه Skill جداگانه ساخت؟

بله. Skillها می‌توانند برای Workflowهای مخصوص یک پروژه یا برای فرآیندهایی طراحی شوند که در چند پروژه مورد استفاده قرار می‌گیرند.

Subagent چه کاربردی دارد؟

Subagent برای تقسیم وظایف بین Agentهای تخصصی استفاده می‌شود. برای مثال می‌توان Agent جداگانه‌ای برای Testing، Code Review یا بررسی مشکلات امنیتی در نظر گرفت.

جمع‌بندی

قابلیت Customization در Codex به توسعه‌دهندگان اجازه می‌دهد نحوه تعامل Agent هوش مصنوعی با پروژه‌های نرم‌افزاری را بسیار دقیق‌تر مدیریت کنند.

برای شروع، ایجاد یک فایل ساده AGENTS.md می‌تواند تأثیر زیادی روی کیفیت خروجی Codex داشته باشد. سپس می‌توانید Workflowهای تکراری را به Skills تبدیل کنید، برای اتصال به سرویس‌های خارجی از MCP استفاده کنید و در پروژه‌های پیچیده وظایف تخصصی را به Subagents بسپارید.

ترکیب این قابلیت‌ها باعث می‌شود Codex نه‌فقط به‌عنوان یک ابزار تولید کد، بلکه به‌عنوان بخشی از Workflow واقعی توسعه نرم‌افزار مورد استفاده قرار بگیرد.