GitHub Copilot چیست؟ آموزش کامل VS Code، Copilot CLI، Agent Mode و اتصال به API درواره
در این راهنمای عملی، GitHub Copilot را در VS Code و Terminal راهاندازی میکنید، با Agent Mode، Copilot CLI، Code Review و Custom Instructions کار میکنید و CLI را به API درواره متصل میکنید.
GitHub Copilot یکی از شناختهشدهترین ابزارهای برنامهنویسی با هوش مصنوعی است. این ابزار ابتدا بهعنوان یک تکمیلکننده هوشمند کد معرفی شد، اما اکنون به مجموعهای از قابلیتهای Agentic تبدیل شده است که میتواند پروژه را بررسی کند، چند فایل را تغییر دهد، فرمان اجرا کند، تست بنویسد، Pull Request را بازبینی کند و حتی بعضی وظایف را به یک Agent ابری واگذار کند.
GitHub Copilot امروزی فقط چند خط کد را تکمیل نمیکند. قابلیتهای آن شامل این موارد است:
- پیشنهاد کد داخل ویرایشگر
- تکمیل چندخطی تابع و کلاس
- Copilot Chat
- توضیح کد
- تولید تست
- رفع خطا
- Refactor
- Agent Mode در IDE
- Copilot CLI در Terminal
- Plan Mode
- Code Review
- Copilot Cloud Agent
- Custom Instructions
- Custom Agents
- Agent Skills
- اتصال به MCP Server
- استفاده از مدل و Provider اختصاصی در Copilot CLI
در این مقاله GitHub Copilot را از صفر راهاندازی میکنیم، روش استفاده حرفهای از آن را یاد میگیریم و در بخش عملی، Copilot CLI را با قابلیت BYOK به API هوش مصنوعی درواره متصل میکنیم.
GitHub Copilot چیست؟
GitHub Copilot یک دستیار و عامل برنامهنویسی هوش مصنوعی است که توسط GitHub ارائه میشود. این ابزار در محیطهایی مانند Visual Studio Code، Visual Studio، JetBrains IDEs، GitHub.com و Terminal قابل استفاده است.
GitHub Copilot یک مدل هوش مصنوعی واحد نیست. این محصول میتواند براساس پلن، تنظیمات و محیط استفاده از مدلهای مختلف بهره ببرد. بنابراین باید میان «ابزار Copilot» و «مدلی که پاسخ را تولید میکند» تفاوت قائل شویم.
معماری ساده آن به این شکل است:
توسعهدهنده
↓
GitHub Copilot در IDE یا CLI
↓
مدل هوش مصنوعی
↓
پیشنهاد، کد، برنامه یا عملیات
↓
بررسی و تأیید توسعهدهنده
براساس فهرست رسمی قابلیتهای GitHub Copilot، این محصول علاوه بر پیشنهاد کد و Chat، قابلیتهایی مانند Cloud Agent و Code Review را نیز ارائه میدهد.
GitHub Copilot چه کارهایی انجام میدهد؟
تکمیل خودکار کد
هنگام نوشتن کد، Copilot ادامه خط یا چند خط بعدی را پیشنهاد میدهد. پیشنهاد میتواند براساس این اطلاعات ساخته شود:
- کد اطراف Cursor
- نام تابع
- Comment
- فایل باز
- زبان برنامهنویسی
- الگوهای موجود در پروژه
- Context در دسترس ابزار
تولید کد از روی توضیح
میتوانید قبل از تابع، هدف آن را در قالب Comment بنویسید:
# Validate an Iranian mobile number and return a normalized value
Copilot ممکن است بدنه اولیه تابع را پیشنهاد دهد. این خروجی باید از نظر ورودیهای مرزی، Regex، تست و رفتار خطا بررسی شود.
توضیح کد
برای ورود به یک پروژه قدیمی میتوانید بپرسید:
این سرویس چه کاری انجام میدهد؟
جریان احراز هویت از کدام فایل شروع میشود؟
این تابع در چه شرایطی Exception ایجاد میکند؟
تولید تست
Copilot میتواند تست اولیه Unit یا Integration ایجاد کند:
برای این سرویس تست بنویس.
Happy Path، ورودی نامعتبر، Timeout و خطای Database را پوشش بده.
Refactor
میتوانید از Copilot بخواهید تابع بزرگ را کوچک کند، کد تکراری را استخراج کند یا نامگذاری را بهبود دهد.
رفع خطا
با ارائه پیام خطا، Stack Trace، رفتار مورد انتظار و مراحل بازتولید، Copilot میتواند علت احتمالی را پیدا کند.
Code Review
Copilot میتواند Pull Request یا تغییرات محلی را بررسی و مشکلهای احتمالی را پیشنهاد کند. GitHub تأکید میکند که Code Review هوش مصنوعی باید مکمل بازبینی انسانی باشد، نه جایگزین کامل آن. مستندات GitHub Copilot Code Review
اجرای وظیفه بهصورت Agent
در Agent Mode، Copilot فقط پاسخ متنی نمیدهد. میتواند فایلها را بررسی کند، برنامه بسازد، تغییرات چندفایلی انجام دهد و تست یا فرمان مرتبط را اجرا کند.
تفاوت Inline Completion، Chat، Edit و Agent Mode
| حالت | کاربرد | میزان استقلال |
|---|---|---|
| Inline Completion | پیشنهاد ادامه کد | کم |
| Chat | پرسش و پاسخ درباره کد | کم |
| Edit | اعمال تغییر در فایلهای مشخص | متوسط |
| Agent Mode | تحلیل پروژه و اجرای چندمرحلهای | زیاد |
| Cloud Agent | انجام وظیفه در محیط ابری و ساخت Branch یا PR | زیاد |
| Copilot CLI | کار Agentic داخل Terminal | زیاد |
برای نوشتن یک خط ساده از Agent Mode استفاده نکنید. هرچه استقلال ابزار بیشتر باشد، هزینه Context و احتمال تغییر ناخواسته نیز بیشتر میشود.
Agent Mode چیست؟
Agent Mode برای وظایفی طراحی شده که به چند مرحله نیاز دارند. برای مثال:
یک Endpoint جدید برای ثبت سفارش بساز.
Schema ورودی را تعریف کن.
Service و Repository را اضافه کن.
Migration موردنیاز را بساز.
تست Unit و Integration بنویس.
مستندات OpenAPI را بهروزرسانی کن.
در پایان تستها را اجرا کن.
Agent برای انجام این درخواست باید:
۱. ساختار پروژه را بررسی کند.
۲. Framework و Conventionها را تشخیص دهد.
۳. فایلهای مرتبط را پیدا کند.
۴. تغییرات را برنامهریزی کند.
۵. چند فایل را ویرایش کند.
۶. تستها را اجرا کند.
۷. خطاها را بررسی کند.
۸. نتیجه را برای بازبینی ارائه دهد.
Agent Mode در محیط محلی توسعهدهنده کار میکند و با Cloud Agent یکسان نیست.
تفاوت Agent Mode و Copilot Cloud Agent
GitHub میان Agent محلی IDE و Cloud Agent تفاوت قائل میشود.
Agent Mode در IDE
- روی Workspace محلی کار میکند.
- فایلهای سیستم محلی را میبیند.
- تغییرات را در پروژه باز اعمال میکند.
- فرمانها را در محیط توسعهدهنده اجرا میکند.
- برای همکاری تعاملی مناسب است.
Copilot Cloud Agent
- وظیفه را در محیط مبتنی بر GitHub Actions انجام میدهد.
- میتواند Issue را بررسی کند.
- روی Branch تغییر ایجاد کند.
- برنامه پیادهسازی بسازد.
- در پایان Pull Request باز کند.
- برای وظایف مستقل و قابل واگذاری مناسب است.
GitHub توضیح میدهد که Cloud Agent میتواند Repository را بررسی، برنامهریزی و تغییرات را روی Branch ایجاد کند؛ درحالیکه Agent Mode در IDE مستقیماً در محیط محلی فعالیت دارد. مستندات Copilot Cloud Agent
نصب GitHub Copilot در Visual Studio Code
پیشنیازها
- حساب GitHub
- نسخه جدید Visual Studio Code
- دسترسی به یکی از پلنهای GitHub Copilot
- اتصال اینترنت
- پروژه آزمایشی
- نصب Git در صورت نیاز
مراحل نصب
۱. Visual Studio Code را باز کنید.
۲. وارد بخش Extensions شوید.
۳. عبارت زیر را جستوجو کنید:
GitHub Copilot
۴. Extension رسمی GitHub را نصب کنید.
۵. در صورت نمایش Extension مربوط به Chat، آن را نیز مطابق راهنمای نسخه فعلی نصب یا فعال کنید.
۶. روی گزینه Sign in to GitHub کلیک کنید.
۷. مجوز اتصال VS Code به حساب GitHub را تأیید کنید.
۸. یک فایل کد باز کنید.
۹. شروع به نوشتن تابع یا Comment کنید.
GitHub برای VS Code و Visual Studio امکان شروع Copilot Free از داخل محیط برنامهنویسی را نیز ارائه کرده است. راهنمای شروع پلن GitHub Copilot
اولین آزمایش GitHub Copilot
یک فایل Python بسازید:
def calculate_cart_total(items, discount_percent=0):
چند لحظه صبر کنید تا Copilot ادامه تابع را پیشنهاد دهد.
قبل از قبول پیشنهاد، این موارد را بررسی کنید:
- آیا
itemsساختار مشخصی دارد؟ - آیا قیمت منفی مجاز است؟
- تخفیف بیشتر از ۱۰۰ چگونه مدیریت میشود؟
- آیا اعشار پولی با
floatمحاسبه شده است؟ - آیا ورودی خالی پشتیبانی میشود؟
- آیا تست وجود دارد؟
پیشنهاد هوش مصنوعی ممکن است از نظر Syntax صحیح، اما از نظر منطق کسبوکار اشتباه باشد.
نوشتن Comment مؤثر برای Copilot
Comment ضعیف:
# Calculate total
Comment بهتر:
# Calculate the shopping cart total using Decimal.
# Reject negative prices and quantities.
# Apply a discount between 0 and 100 percent.
# Return the final amount rounded to two decimal places.
Comment دقیقتر باعث میشود Copilot ورودی، محدودیت و خروجی را بهتر درک کند.
آموزش GitHub Copilot Chat
Copilot Chat برای پرسش درباره پروژه، تولید کد، توضیح خطا و برنامهریزی استفاده میشود.
نمونه پرسش برای شناخت پروژه
ساختار این Repository را توضیح بده.
Entry Point برنامه کجاست؟
درخواست HTTP از Controller تا Database چه مسیری را طی میکند؟
فعلاً هیچ فایلی را تغییر نده.
نمونه پرسش برای رفع خطا
این Endpoint در بار بالا گاهی پاسخ 500 میدهد.
انتظار:
همیشه پاسخ JSON معتبر برگردد.
اطلاعات:
- Framework: FastAPI
- Database: PostgreSQL
- ORM: SQLAlchemy
- خطا: connection pool exhausted
ابتدا علت را تحلیل کن.
بعد فایلهای مرتبط را پیدا کن.
فعلاً کد را تغییر نده.
نمونه پرسش برای Refactor
این Service را بررسی کن و مشکلات آن را فهرست کن.
اهداف:
- کاهش وابستگی مستقیم به Database
- سادهترشدن تست
- حذف کد تکراری
- حفظ API فعلی
ابتدا یک برنامه Refactor بنویس.
پس از تأیید من تغییرات را اعمال کن.
فرمول یک پرامپت حرفهای برای برنامهنویسی
پرامپت مناسب بهتر است این بخشها را داشته باشد:
نقش + هدف + Context + محدودیت + معیار پذیرش + روش بررسی
مثال:
نقش:
مانند یک Senior Backend Engineer متخصص FastAPI عمل کن.
هدف:
قابلیت بازیابی رمز عبور را اضافه کن.
Context:
- FastAPI
- PostgreSQL
- SQLAlchemy 2
- Alembic
- Redis
- pytest
محدودیت:
- ساختار فعلی لایهها حفظ شود.
- نام Endpointهای قبلی تغییر نکند.
- وابستگی جدید بدون دلیل اضافه نشود.
- Token بازیابی ۱۵ دقیقه معتبر باشد.
معیار پذیرش:
- درخواست بازیابی همیشه پاسخ عمومی بدهد.
- تست درخواست معتبر و نامعتبر وجود داشته باشد.
- Migration در صورت نیاز ساخته شود.
- تستها اجرا شوند.
روش کار:
ابتدا پروژه را بررسی و Plan ارائه کن.
تا قبل از تأیید من فایلها را تغییر نده.
چرا باید ابتدا Plan بخواهیم؟
وقتی Agent مستقیماً وارد پیادهسازی میشود، ممکن است معماری را اشتباه بفهمد و تغییرات زیادی ایجاد کند.
جریان کاری بهتر:
Explore → Plan → Review → Implement → Test → Review Diff
پرامپتهای مرحلهای:
ساختار احراز هویت را بررسی کن، اما چیزی را تغییر نده.
برای افزودن ورود با Google یک Plan دقیق بنویس.
Plan را اصلاح کن تا Session فعلی حفظ شود.
حالا مرحله اول Plan را پیادهسازی کن.
تستها را اجرا کن و فقط خطاهای مرتبط را رفع کن.
ساخت فایل Custom Instructions
اگر در هر درخواست مجبور هستید Framework، فرمان تست و Conventionهای پروژه را تکرار کنید، یک فایل دستورالعمل Repository بسازید.
مسیر رایج:
.github/copilot-instructions.md
GitHub این فایل را برای تعریف دستورالعمل سراسری Repository پشتیبانی میکند. مستندات Custom Instructions در GitHub Copilot
نمونه کامل برای پروژه FastAPI
# Project Overview
This repository is a production FastAPI application.
## Technology Stack
- Python 3.12
- FastAPI
- PostgreSQL
- SQLAlchemy 2
- Alembic
- Redis
- pytest
- Ruff
- mypy
## Architecture
- API routes belong in `app/api`.
- Business logic belongs in `app/services`.
- Database access belongs in `app/repositories`.
- Pydantic schemas belong in `app/schemas`.
- ORM models belong in `app/models`.
Do not place business logic inside route handlers.
## Coding Rules
- Use type hints for public functions.
- Prefer async functions for I/O operations.
- Do not catch broad `Exception` without re-raising or logging.
- Do not add dependencies without explaining why.
- Avoid changing public APIs unless explicitly requested.
- Use UTC for stored timestamps.
- Never hard-code credentials or secrets.
## Database Rules
- All schema changes require an Alembic migration.
- Avoid N+1 queries.
- Transactions must be explicit for multi-step writes.
- Repository methods must not return active query objects.
## Testing
Run:
```bash
pytest -q
Lint with:
ruff check .
Type-check with:
mypy app
Every bug fix must include a regression test.
Definition of Done
Before completing a task:
- Run relevant tests.
- Run lint checks.
- Review the diff.
- Summarize changed files.
- Report any assumptions or unverified behavior.
این فایل باید کوتاه، دقیق و مطابق واقعیت پروژه باشد. قرار دادن دستورهای متناقض یا منسوخ کیفیت خروجی را کاهش میدهد.
## دستورالعملهای Path-specific
ممکن است قوانین Frontend و Backend متفاوت باشند. در محیطهایی که Path-specific Instructions پشتیبانی میشوند، میتوان فایلهای دستورالعمل مخصوص مسیر ساخت.
برای مثال:
```text
.github/instructions/backend.instructions.md
.github/instructions/frontend.instructions.md
.github/instructions/tests.instructions.md
نمونه:
---
applyTo: "frontend/**/*.tsx"
---
- Use functional React components.
- Use TypeScript strict mode.
- Do not use `any`.
- Keep data fetching outside presentational components.
- Add accessibility labels to interactive elements.
پشتیبانی دقیق این فایلها به IDE و نسخه Copilot بستگی دارد و باید با جدول پشتیبانی رسمی GitHub بررسی شود. راهنمای پشتیبانی از Custom Instructions
نصب GitHub Copilot CLI
Copilot CLI امکان استفاده از عامل برنامهنویسی GitHub داخل Terminal را فراهم میکند.
GitHub روشهای مختلفی برای نصب Copilot CLI ارائه میدهد:
- npm
- WinGet
- Homebrew
- Install Script
- دانلود فایل اجرایی
براساس مستندات رسمی نصب Copilot CLI، نصب با npm به Node.js 22 یا جدیدتر نیاز دارد.
نصب با npm
npm install -g @github/copilot
بررسی نصب:
copilot --version
نصب در Windows با WinGet
winget install GitHub.Copilot
نصب با Homebrew در macOS یا Linux
brew install --cask copilot-cli
نصب با Script در macOS یا Linux
curl -fsSL https://gh.io/copilot-install | bash
قبل از اجرای Install Script اینترنتی، آدرس و محتوای آن را با مستندات رسمی نسخه فعلی تطبیق دهید.
اجرای Copilot CLI
وارد پوشه پروژه شوید:
cd /path/to/project
Copilot را اجرا کنید:
copilot
در اولین اجرا ممکن است لازم باشد با فرمان زیر وارد حساب GitHub شوید:
/login
Copilot درباره اعتماد به Directory سؤال میکند. فقط پوشهای را تأیید کنید که فایلهای آن را میشناسید.
طبق راهنمای استفاده از Copilot CLI، این ابزار در طول Session ممکن است فایلهای داخل Directory را بخواند، تغییر دهد و فرمان اجرا کند.
نمونه استفاده از Copilot CLI
شناخت پروژه
ساختار این Repository را بررسی کن.
فایلهای اصلی، فرمان اجرا و جریان درخواست را توضیح بده.
فعلاً هیچ تغییری ایجاد نکن.
پیداکردن خطا
تستهای مرتبط با ثبتنام را اجرا کن.
علت Fail شدن آنها را پیدا کن.
قبل از تغییر فایلها، نتیجه تحلیل را بگو.
تولید Plan
/plan یک قابلیت Pagination استاندارد به Endpoint کاربران اضافه کن.
بررسی تغییرات
تغییرات فعلی Branch را نسبت به main بازبینی کن.
روی Bug، Regression و تستهای ناقص تمرکز کن.
ساخت تست
برای تغییرات فعلی تست Regression بنویس.
ابتدا تست باید خطا را بازتولید کند.
سپس با کمترین تغییر مشکل را رفع کن.
اتصال Copilot CLI به API درواره
یکی از قابلیتهای مهم نسخههای جدید Copilot CLI، استفاده از Provider اختصاصی یا BYOK است. GitHub اجازه میدهد Copilot CLI به Endpointهای سازگار با OpenAI متصل شود.
این قابلیت بهطور مشخص مربوط به Copilot CLI است. نباید فرض کرد تمام بخشهای Extension اصلی Copilot در IDE نیز Base URL سفارشی را با همین روش پشتیبانی میکنند.
براساس مستندات رسمی BYOK در Copilot CLI، Provider از طریق Environment Variable تنظیم میشود.
متغیرهای اصلی:
| متغیر | کاربرد |
|---|---|
COPILOT_PROVIDER_BASE_URL | Base URL ارائهدهنده مدل |
COPILOT_PROVIDER_TYPE | نوع Provider |
COPILOT_PROVIDER_API_KEY | کلید API |
COPILOT_MODEL | شناسه مدل |
برای API درواره:
Base URL: https://api.darvareh.ir/v1
Provider Type: openai
API Key: YOUR_DARVAREH_API_KEY
Model: YOUR_MODEL_ID
پیشنیاز مدل برای Copilot CLI
مدلی که در Copilot CLI استفاده میشود باید:
- از Streaming پشتیبانی کند.
- از Tool Calling یا Function Calling پشتیبانی کند.
- Context کافی برای پروژه داشته باشد.
- در تولید و ویرایش کد عملکرد مناسبی ارائه دهد.
GitHub برای بهترین نتیجه، Context Window حداقل ۱۲۸ هزار توکن را توصیه میکند. اگر مدل Tool Calling یا Streaming را پشتیبانی نکند، Copilot CLI خطا برمیگرداند.
برای انتخاب Model ID سازگار و مشاهده مشخصات مدلها، صفحه مدلهای درواره را بررسی کنید.
اتصال در Linux و macOS
Terminal را باز کنید:
export COPILOT_PROVIDER_BASE_URL="https://api.darvareh.ir/v1"
export COPILOT_PROVIDER_TYPE="openai"
export COPILOT_PROVIDER_API_KEY="YOUR_DARVAREH_API_KEY"
export COPILOT_MODEL="YOUR_MODEL_ID"
سپس وارد پروژه شوید:
cd /path/to/project
Copilot CLI را اجرا کنید:
copilot
این Environment Variableها فقط در همان Shell Session فعال هستند. برای اجرای بعدی باید دوباره تنظیم شوند یا با روش مناسب سیستمعامل مدیریت شوند.
اتصال در Windows PowerShell
$env:COPILOT_PROVIDER_BASE_URL = "https://api.darvareh.ir/v1"
$env:COPILOT_PROVIDER_TYPE = "openai"
$env:COPILOT_PROVIDER_API_KEY = "YOUR_DARVAREH_API_KEY"
$env:COPILOT_MODEL = "YOUR_MODEL_ID"
سپس:
cd C:\path\to\project
copilot
برای بررسی مقدار بدون نمایش کلید:
$env:COPILOT_PROVIDER_BASE_URL
$env:COPILOT_PROVIDER_TYPE
$env:COPILOT_MODEL
کلید API را در Screenshot، Log، فایل پروژه یا Repository ذخیره نکنید.
تست اتصال Copilot CLI به درواره
بعد از اجرا، ابتدا یک وظیفه فقطخواندنی بدهید:
نام فایلهای اصلی پروژه را پیدا کن.
Architecture را توضیح بده.
هیچ فایل یا فرمانی را تغییر یا اجرا نکن.
سپس یک وظیفه محدود:
فایل README را بررسی کن و فقط سه پیشنهاد برای بهبود آن بده.
هیچ تغییری اعمال نکن.
در مرحله بعد:
یک فایل آزمایشی با نام example_test.py بساز
که یک تست ساده و مستقل داشته باشد.
قبل از ساخت فایل از من اجازه بگیر.
اگر Model ID نامعتبر، Streaming غیرفعال یا Tool Calling پشتیبانینشده باشد، Copilot CLI ممکن است هنگام شروع یا اجرای Tool خطا نمایش دهد.
برای مشاهده راهنمای Providerها:
copilot help providers
آیا برای BYOK باید وارد GitHub شویم؟
طبق مستندات GitHub، استفاده از Provider اختصاصی در Copilot CLI الزاماً به Authentication گیتهاب نیاز ندارد. بااینحال، بدون ورود به GitHub بعضی قابلیتهای متصل به سرویس GitHub در دسترس نیستند؛ از جمله:
- واگذاری وظیفه با
/delegate - GitHub MCP Server
- GitHub Code Search
در حالت BYOK، Prompt، Context کد و پاسخ مستقیماً به Provider انتخابشده ارسال میشوند و از مدلهای میزبانیشده GitHub عبور نمیکنند. توضیحات Responsible Use برای Provider اختصاصی
اجرای Copilot CLI در حالت Offline
Copilot CLI دارای حالت Offline برای Provider محلی یا On-premises است:
export COPILOT_OFFLINE=true
اما اگر Base URL شما یک Endpoint اینترنتی مانند API درواره باشد، درخواستهای مدل همچنان به همان Endpoint ارسال میشوند. Offline Mode فقط زمانی اجرای کاملاً محلی ایجاد میکند که خود Provider نیز داخل همان سیستم یا شبکه ایزوله باشد.
برای اتصال به درواره، Offline Mode را فعال نکنید؛ زیرا درواره یک API آنلاین است.
Plan Mode در Copilot CLI
Plan Mode برای تغییرات چندفایلی و پیچیده مناسب است. براساس راهنمای رسمی Copilot CLI، میتوان با /plan یا کلید مربوط به تغییر Mode، از Agent خواست پیش از کدنویسی برنامه بسازد. بهترین روشهای Copilot CLI
نمونه:
/plan سیستم ارسال ایمیل را از اجرای مستقیم داخل Request
به Background Job منتقل کن.
Plan مناسب باید شامل این بخشها باشد:
- فایلهای درگیر
- تغییرات Database
- سازگاری عقبرو
- Migration
- تستها
- Observability
- Rollback
- ریسکها
تا زمانی که Plan را بررسی نکردهاید، اجازه پیادهسازی ندهید.
اتصال Copilot CLI به VS Code
Copilot CLI میتواند به Workspace بازشده در VS Code متصل شود. این اتصال امکان استفاده از Context انتخابشده در Editor، نمایش Diff و مشاهده Diagnosticهای VS Code را فراهم میکند.
اگر پروژه یکسان در VS Code و Terminal باز باشد، اتصال ممکن است بهصورت خودکار انجام شود. برای مدیریت اتصال میتوان از دستور زیر در CLI استفاده کرد:
/ide
طبق مستندات اتصال Copilot CLI به VS Code، تغییرات پیشنهادی CLI میتوانند بهصورت Diff کنارهم در VS Code نمایش داده شوند.
استفاده از Copilot برای Test-driven Development
جریان کاری پیشنهادی:
مرحله اول: تعریف رفتار
رفتار مورد انتظار این Bug را به یک تست Regression تبدیل کن.
فعلاً Production Code را تغییر نده.
مرحله دوم: اجرای تست
تست جدید را اجرا کن و تأیید کن که به دلیل Bug فعلی Fail میشود.
مرحله سوم: اصلاح محدود
با کمترین تغییر Production Code تست را Pass کن.
مرحله چهارم: اجرای مجموعه تست
تستهای مرتبط و سپس مجموعه تست کامل را اجرا کن.
مرحله پنجم: بررسی Diff
Diff نهایی را بررسی کن.
هر تغییری که برای رفع Bug ضروری نیست مشخص کن.
این روش از تولید کد زیاد و بدون معیار جلوگیری میکند.
استفاده از Copilot برای Code Review
پرامپت عمومی:
کد را بررسی کن.
پرامپت بهتر:
تغییرات Branch فعلی را نسبت به main بررسی کن.
اولویتها:
1. Bug و Regression
2. مدیریت Transaction
3. Race Condition
4. N+1 Query
5. رفتار در Timeout
6. تستهای ناقص
برای هر مشکل:
- Severity
- فایل و بخش مرتبط
- دلیل
- سناریوی بازتولید
- اصلاح پیشنهادی
از تعریف و تمجید عمومی خودداری کن و فقط Findings عملی بده.
Copilot Code Review میتواند Suggestion قابل اعمال ارائه دهد، اما نتیجه باید توسط توسعهدهنده بررسی شود.
استفاده از Cloud Agent
Cloud Agent برای این وظایف مناسب است:
- بهروزرسانی مستندات
- افزودن تست به بخش مشخص
- رفع Issue کوچک و مستقل
- Refactor محدود
- تغییر نام کنترلشده
- اصلاح Lint
- اضافهکردن یک قابلیت کوچک با Acceptance Criteria روشن
برای این وظایف مناسب نیست:
- تصمیم معماری مبهم
- تغییر گسترده بدون تست
- Migration حساس
- مسئلهای که نیازمند Context شفاهی تیم است
- وظیفهای که Acceptance Criteria ندارد
- تغییراتی که اثر آنها به زیرساخت خارجی ناشناخته وابسته است
نمونه Issue مناسب:
## Goal
Add pagination to `GET /api/users`.
## Requirements
- Accept `page` and `page_size`.
- Default page size: 20.
- Maximum page size: 100.
- Preserve the current response fields.
- Add total count and total pages.
- Add unit and integration tests.
- Update OpenAPI examples.
## Out of Scope
- Cursor pagination
- Changes to other endpoints
## Validation
- Run `pytest tests/api/test_users.py`
- Run `ruff check .`
هرچه Issue دقیقتر باشد، احتمال موفقیت Agent بیشتر میشود.
Custom Agents در GitHub Copilot
Custom Agent یک نسخه تخصصی از Agent است که نقش، ابزارها و دستورالعملهای مشخص دارد.
نمونه Agentهای تیم توسعه:
- Backend Agent
- Frontend Agent
- Test Agent
- Documentation Agent
- Database Migration Agent
- Code Review Agent
یک Custom Agent مناسب باید مشخص کند:
- چه کاری انجام دهد.
- چه کاری انجام ندهد.
- به چه Toolهایی دسترسی داشته باشد.
- چه فرمانهایی را اجرا کند.
- تعریف Done چیست.
- خروجی را با چه قالبی ارائه دهد.
GitHub Custom Agentها را بهعنوان Agentهای تخصصی متناسب با Workflow و استانداردهای تیم معرفی میکند. مستندات Custom Agents
Agent Skills در GitHub Copilot
Agent Skill مجموعهای از Instruction، Script و Resource است که Agent هنگام نیاز بارگذاری میکند.
ساختار ساده:
skills/
└── create-api-endpoint/
├── SKILL.md
├── templates/
└── scripts/
نمونه SKILL.md:
# Create FastAPI Endpoint
Use this skill when adding a new REST endpoint.
## Workflow
1. Inspect similar endpoints.
2. Define request and response schemas.
3. Add service logic.
4. Add repository methods.
5. Add tests.
6. Update OpenAPI examples.
7. Run lint and tests.
## Rules
- Do not put business logic in route handlers.
- Use existing dependency injection patterns.
- Do not introduce a new library without approval.
- Every new endpoint requires tests.
GitHub برای Skill از فایل SKILL.md و منابع اختیاری پشتیبانی میکند. راهنمای افزودن Agent Skills
استفاده از MCP در GitHub Copilot
Model Context Protocol یا MCP به Agent اجازه میدهد به ابزارها و منابع خارجی متصل شود.
کاربردها:
- دسترسی به مستندات داخلی
- جستوجوی Issueها
- خواندن اطلاعات پروژه
- اتصال به ابزار مدیریت کار
- اجرای ابزارهای تخصصی
- دسترسی کنترلشده به Database آزمایشی
- استفاده از Browser Automation در محیط مجاز
GitHub Copilot از MCP برای گسترش قابلیتهای Agent Mode استفاده میکند. راهنمای MCP در GitHub Copilot
دسترسی MCP را محدود نگه دارید. هر Server فقط باید ابزارها و دادههای ضروری همان وظیفه را ارائه دهد.
قیمت GitHub Copilot
پلنها و شیوه Billing ممکن است تغییر کنند؛ بنابراین برای تصمیم خرید باید صفحه رسمی GitHub را بررسی کنید.
در زمان بررسی این مقاله، پلنهای فردی شامل موارد زیر هستند:
| پلن | قیمت ماهانه اعلامشده |
|---|---|
| Copilot Free | رایگان با محدودیت |
| Copilot Student | رایگان برای دانشجویان تأییدشده |
| Copilot Pro | ۱۰ دلار |
| Copilot Pro+ | ۳۹ دلار |
| Copilot Max | ۱۰۰ دلار |
پلنهای سازمانی اعلامشده:
| پلن | قیمت ماهانه بهازای هر کاربر |
|---|---|
| Copilot Business | ۱۹ دلار |
| Copilot Enterprise | ۳۹ دلار |
GitHub در سال ۲۰۲۶ Billing را به ساختار مبتنی بر AI Credit و میزان استفاده از مدلها تغییر داده است. قیمت، Credit و قابلیتها ممکن است در آینده تغییر کنند. برای اطلاعات نهایی به صفحه رسمی پلنهای GitHub Copilot مراجعه کنید.
این قیمتها به API درواره ارتباطی ندارند. قیمت مدلهای قابل استفاده از طریق درواره را باید در صفحه مدلهای درواره مشاهده کنید.
Copilot Free چه محدودیتهایی دارد؟
براساس مستندات فعلی GitHub، پلن Free دارای تعداد محدود Code Completion و سهمیه محدود تعامل با Chat و Agent است. پلنهای پولی Completion نامحدود و سهمیه بیشتری از AI Credit ارائه میکنند.
پلن Free برای این موارد مناسب است:
- آشنایی با Inline Completion
- آزمایش Copilot Chat
- پروژههای کوچک
- ارزیابی تجربه کاربری
اگر استفاده روزانه، Agent Mode یا مدلهای پیشرفته نیاز دارید، محدودیت پلن Free ممکن است زودتر تمام شود.
GitHub Copilot یا ابزارهای قابل اتصال به درواره؟
GitHub Copilot برای کاربرانی مناسب است که یکپارچگی عمیق با GitHub و VS Code میخواهند. در مقابل، ابزارهایی مانند Cline، Roo Code، OpenCode و بعضی Coding Agentهای دیگر امکان انتخاب مستقیم API و Model ID را با انعطاف بیشتری ارائه میکنند.
نکته مهم این است که Copilot CLI اکنون از Provider سفارشی و OpenAI-compatible Endpoint پشتیبانی میکند و میتوان آن را مستقیماً به درواره متصل کرد.
| معیار | GitHub Copilot | ابزار قابل تنظیم با API درواره |
|---|---|---|
| Inline Completion | بسیار خوب | وابسته به ابزار |
| یکپارچگی GitHub | بسیار قوی | متفاوت |
| Agent در IDE | دارد | دارد |
| Cloud Agent | دارد | معمولاً متفاوت |
| انتخاب Provider در Extension | محدودتر | انعطاف بیشتر |
| Provider سفارشی در CLI | دارد | معمولاً دارد |
| انتخاب Model ID | در BYOK CLI بله | بله |
| پرداخت ریالی مدل | در Copilot اصلی خیر | از طریق درواره |
| دسترسی به مدلهای متعدد | وابسته به Copilot | از طریق درواره |
| Custom Instructions | دارد | اغلب دارد |
| MCP | دارد | در بسیاری از ابزارها دارد |
انتخاب نهایی به Workflow تیم بستگی دارد. ممکن است تیم از Copilot برای Completion و از Copilot CLI متصل به درواره برای وظایف Agentic استفاده کند.
خطاهای رایج GitHub Copilot
Copilot در VS Code پیشنهاد نمیدهد
- ورود به حساب GitHub را بررسی کنید.
- فعالبودن Extension را کنترل کنید.
- وضعیت پلن را بررسی کنید.
- زبان فایل را مشخص کنید.
- VS Code را بهروزرسانی کنید.
- Extension را Reload کنید.
- Log مربوط به Copilot را بررسی کنید.
Copilot Context پروژه را اشتباه میفهمد
- فایل Custom Instructions بسازید.
- فایلهای مرتبط را مشخص کنید.
- ابتدا از Agent بخواهید پروژه را توضیح دهد.
- Acceptance Criteria بنویسید.
- وظیفه را کوچکتر کنید.
- Context غیرمرتبط را حذف کنید.
Copilot تغییرات زیادی ایجاد میکند
- ابتدا Plan بخواهید.
- دامنه فایلهای مجاز را مشخص کنید.
- تغییرات را مرحلهای انجام دهید.
- بگویید API عمومی تغییر نکند.
- Diff را پس از هر مرحله بررسی کنید.
- از Branch جداگانه استفاده کنید.
Copilot CLI به درواره متصل نمیشود
Environment Variableها را بررسی کنید:
echo $COPILOT_PROVIDER_BASE_URL
echo $COPILOT_PROVIDER_TYPE
echo $COPILOT_MODEL
در PowerShell:
$env:COPILOT_PROVIDER_BASE_URL
$env:COPILOT_PROVIDER_TYPE
$env:COPILOT_MODEL
موارد رایج:
- Base URL اشتباه
- API Key نامعتبر
- Model ID اشتباه
- مدل بدون Tool Calling
- مدل بدون Streaming
- Timeout
- موجودی ناکافی حساب
- Context موردنیاز بیشتر از ظرفیت مدل
برای دریافت راهنمای داخلی:
copilot help providers
Agent در اجرای Tool خطا میدهد
ممکن است مدل پاسخ Tool Call معتبر نسازد یا Tool موردنیاز مجوز نداشته باشد. مدل دیگری با پشتیبانی بهتر Function Calling انتخاب کنید و مجوز Toolها را بررسی کنید.
بهترین روش استفاده حرفهای
وظیفه را محدود کنید
بد:
کل پروژه را بهتر کن.
خوب:
فقط Endpoint ثبتنام را بررسی کن.
سه مشکل دارای بیشترین اثر را پیدا کن.
فعلاً هیچ تغییری ایجاد نکن.
معیار پذیرش بدهید
کار زمانی تمام است که:
- تست Regression اضافه شود.
- تمام تستهای مرتبط Pass شوند.
- API فعلی تغییر نکند.
- Diff فقط شامل فایلهای مرتبط باشد.
فرمان تست را مشخص کنید
pytest tests/auth -q
ruff check app/auth tests/auth
خروجی را بررسی کنید
- Diff
- تستها
- Migration
- Dependencyها
- فایل Lock
- تنظیمات
- Error Handling
- Log
- مستندات
- رفتارهای مرزی
Agent را مرحلهای جلو ببرید
تحلیل کن → Plan بده → یک مرحله اجرا کن → تست کن → Diff را خلاصه کن
اشتباهات رایج توسعهدهندگان
قبول پیشنهاد Inline بدون خواندن
کدی که کامل به نظر میرسد ممکن است رفتار مرزی یا منطق تجاری اشتباه داشته باشد.
استفاده از Agent بدون تست
بدون تست، Agent معیار قابلاندازهگیری برای موفقیت ندارد.
ارسال درخواست مبهم
عبارتهایی مانند «بهترش کن» یا «تمیزش کن» دامنه مشخصی ندارند.
نادیدهگرفتن Custom Instructions
بدون دستورالعمل Repository، Agent ممکن است معماری و Conventionها را حدس بزند.
دادن دسترسی نامحدود
Tool و Directory را متناسب با وظیفه محدود کنید.
تغییر همزمان چند مسئله
هر Session را روی یک هدف مشخص نگه دارید.
استفاده از مدل نامناسب در BYOK
مدلی که Tool Calling یا Context کافی ندارد برای Copilot CLI مناسب نیست، حتی اگر در Chat عمومی عملکرد قابل قبولی داشته باشد.
جایگزینکردن کامل Code Review انسانی
Copilot میتواند مشکلها را پیدا کند، اما Context محصول و تصمیمهای معماری تیم را همیشه نمیداند.
چکلیست راهاندازی GitHub Copilot
VS Code
- Extension رسمی نصب شده است.
- حساب GitHub متصل است.
- پلن فعال است.
- Inline Completion آزمایش شده است.
- Copilot Chat کار میکند.
- Agent Mode در Workspace آزمایشی تست شده است.
Repository
- فایل
.github/copilot-instructions.mdوجود دارد. - معماری پروژه توضیح داده شده است.
- فرمان Build و Test مشخص است.
- Definition of Done نوشته شده است.
- قوانین Database و Migration ثبت شدهاند.
- اطلاعات محرمانه داخل Instruction نیست.
Copilot CLI
- CLI از روش رسمی نصب شده است.
- فرمان
copilotاجرا میشود. - Directory صحیح انتخاب شده است.
- Plan Mode آزمایش شده است.
- مجوز Toolها محدود است.
- Diff پیش از قبول بررسی میشود.
اتصال به درواره
COPILOT_PROVIDER_BASE_URLتنظیم شده است.- Provider Type روی
openaiقرار دارد. - API Key معتبر است.
- Model ID صحیح است.
- مدل از Streaming پشتیبانی میکند.
- مدل از Tool Calling پشتیبانی میکند.
- Context مدل برای پروژه کافی است.
- یک وظیفه فقطخواندنی با موفقیت اجرا شده است.
- کلید API داخل Repository ذخیره نشده است.
پرسشهای متداول
GitHub Copilot چیست؟
GitHub Copilot یک دستیار و عامل برنامهنویسی هوش مصنوعی است که در IDE، GitHub و Terminal برای تکمیل کد، Chat، Refactor، تست، Code Review و اجرای وظایف چندمرحلهای استفاده میشود.
آیا GitHub Copilot رایگان است؟
Copilot یک پلن Free با استفاده محدود دارد. دانشجویان تأییدشده نیز ممکن است به پلن Student دسترسی داشته باشند. محدودیتها و شرایط باید در صفحه رسمی GitHub بررسی شوند.
GitHub Copilot در چه محیطهایی کار میکند؟
از VS Code، Visual Studio، JetBrains IDEs، GitHub.com و Copilot CLI پشتیبانی میشود. قابلیتها در همه محیطها یکسان نیستند.
Agent Mode چیست؟
Agent Mode حالتی است که Copilot میتواند پروژه را بررسی، چند فایل را تغییر و برای تکمیل وظیفه فرمان یا تست اجرا کند.
Copilot Cloud Agent چیست؟
یک Agent ابری است که میتواند وظیفه را روی Repository انجام دهد، Branch ایجاد کند و Pull Request بسازد.
آیا GitHub Copilot میتواند تست بنویسد؟
بله. کیفیت تست به Context، معیار پذیرش و ساختار پروژه بستگی دارد. تست تولیدشده باید اجرا و بررسی شود.
آیا GitHub Copilot CLI به API سفارشی متصل میشود؟
بله. Copilot CLI از BYOK و Providerهای OpenAI-compatible پشتیبانی میکند.
آیا میتوان Copilot CLI را به API درواره متصل کرد؟
بله. با تنظیم COPILOT_PROVIDER_BASE_URL، کلید API و Model ID میتوان Copilot CLI را به API سازگار با OpenAI درواره متصل کرد.
آیا Extension اصلی Copilot در VS Code نیز با همین روش به درواره متصل میشود؟
تنظیم Provider با Environment Variableهای این مقاله مربوط به Copilot CLI است. نباید آن را به تمام قابلیتهای Extension اصلی VS Code تعمیم داد.
مدل مناسب Copilot CLI چه ویژگیهایی دارد؟
مدل باید Streaming و Tool Calling را پشتیبانی کند. GitHub برای نتیجه بهتر Context Window حداقل ۱۲۸ هزار توکن را توصیه میکند.
آیا برای استفاده از درواره در Copilot CLI به اشتراک Copilot نیاز داریم؟
BYOK در Copilot CLI میتواند بدون GitHub Authentication نیز کار کند، اما برخی قابلیتهای متصل به GitHub مانند /delegate، GitHub MCP Server و GitHub Code Search در این حالت در دسترس نیستند. شرایط توزیع و استفاده خود CLI ممکن است تغییر کند و باید با مستندات رسمی بررسی شود.
GitHub Copilot بهتر است یا Cline و OpenCode؟
Copilot یکپارچگی عمیقتری با GitHub و IDE دارد. ابزارهایی مانند Cline و OpenCode در انتخاب Provider و Model انعطاف زیادی دارند. انتخاب به Workflow، بودجه و نیاز تیم بستگی دارد.
آیا Copilot میتواند جایگزین برنامهنویس شود؟
خیر. این ابزار میتواند سرعت نوشتن، بررسی و تست کد را افزایش دهد، اما تعریف مسئله، معماری، ارزیابی خروجی و مسئولیت کیفیت همچنان بر عهده توسعهدهنده است.
جمعبندی
GitHub Copilot از یک ابزار تکمیل خودکار کد به یک پلتفرم Agentic برای توسعه نرمافزار تبدیل شده است. امروز میتوان از آن برای پیشنهاد کد، Chat، تولید تست، Refactor، Code Review، کار در Terminal و واگذاری وظیفه به Cloud Agent استفاده کرد.
برای استفاده مؤثر از Copilot:
- وظیفه را دقیق تعریف کنید.
- ابتدا از Agent بخواهید پروژه را بررسی کند.
- برای تغییرات پیچیده Plan بگیرید.
- Custom Instructions بسازید.
- Acceptance Criteria مشخص کنید.
- تستها را اجرا کنید.
- Diff را قبل از قبول بخوانید.
- Toolها و Directory را محدود کنید.
- هر Session را روی یک هدف نگه دارید.
قابلیت BYOK در Copilot CLI اهمیت ویژهای برای توسعهدهندگان دارد. با این قابلیت میتوانید Copilot CLI را به یک Endpoint سازگار با OpenAI متصل و Model ID دلخواه را انتخاب کنید.
برای اتصال Copilot CLI به مدلهای مختلف، مدیریت یکپارچه API و پرداخت ریالی میتوانید در درواره ثبتنام کنید. برای مشاهده Model ID، قابلیت Tool Calling، Context و قیمتهای بهروز نیز صفحه مدلهای درواره را ببینید.
مقالات مرتبط
- بهترین ابزارهای برنامهنویسی با هوش مصنوعی؛ بخش دوم
- بهترین مدل هوش مصنوعی برای برنامهنویسی
- OpenAI Codex چیست؟ آموزش Codex CLI و Agent برنامهنویسی
- آموزش Cline و اتصال به API درواره در VS Code
- آموزش اتصال Claude Code به API درواره
- آموزش اتصال OpenCode به API درواره
- AGENTS.md چیست؟ راهنمای عاملهای برنامهنویسی
- MCP چیست؟ راهنمای Model Context Protocol
- راهنمای کامل مهندسی پرامپت
- API سازگار با OpenAI چیست؟
برای مطالعه شرایط استفاده و محدودیتهای مسئولیت، صفحه «سلب مسئولیت» را مشاهده کنید.