GitHub Copilot trong Visual Studio Code
1. Cài Đặt và Kích Hoạt Extension GitHub Copilot
- Các bước cài đặt và đăng nhập:
- Mở VSCode, truy cập vào mục Extensions (Ctrl+Shift+X).
- Tìm kiếm “GitHub Copilot Chat” và nhấn “Install”. Quá trình này sẽ tự động cài đặt hai extension cần thiết là GitHub Copilot và GitHub Copilot Chat.
- Sau khi cài đặt, bạn cần đăng nhập vào tài khoản GitHub của mình. Có nhiều cách để thực hiện việc này :
- Nhấp vào biểu tượng Copilot trên thanh trạng thái (Status Bar) và chọn “Sign in”.
- Mở menu Accounts trên thanh Activity Bar và chọn “Sign in with GitHub to use GitHub Copilot”.
- Sử dụng Command Palette (
Ctrl+Shift+P
) và chạy lệnhGitHub Copilot: Sign in
.
- Trạng thái hoạt động của Copilot: Biểu tượng Copilot trên thanh trạng thái sẽ cho biết trạng thái hiện tại của nó :
- Active: Copilot đang hoạt động bình thường.
- Inactive: Trạng thái này có thể do bạn chưa đăng nhập, tài khoản không có gói đăng ký hợp lệ, hoặc cần làm mới thông tin xác thực.
- Unavailable: Thường xảy ra do sự cố kết nối mạng, ngăn Copilot kết nối đến máy chủ của GitHub.
2. Giao Diện Tương Tác Của Copilot
Hiểu rõ và sử dụng thành thạo các thành phần giao diện của Copilot là chìa khóa để đạt được hiệu quả tối đa. Phần này sẽ đi sâu vào từng yếu tố, từ các inline suggestions code đơn giản đến hệ thống chat phức tạp, và giới thiệu một “ngữ pháp hội thoại” để tương tác với AI một cách có hệ thống.
2.1. Gợi Ý Nội Tuyến (Inline Suggestions)
Đây là tính năng cốt lõi và phổ biến nhất của Copilot, hoạt động một cách liền mạch trong trình soạn thảo.
- Cơ chế hoạt động: Khi người dùng gõ mã, Copilot tự động phân tích ngữ cảnh (mã nguồn xung quanh, các tệp đang mở) và đề xuất các đoạn mã hoàn chỉnh dưới dạng văn bản mờ màu xám (ghost text).
- Tương tác với gợi ý: Việc tương tác nhanh chóng với các gợi ý là yếu tố cốt lõi để tăng tốc độ lập trình.
- Chấp nhận: Nhấn phím
Tab
để chấp nhận toàn bộ khối gợi ý. Để có sự kiểm soát chi tiết hơn, nhấnCtrl+Right Arrow
để chấp nhận từng từ một của gợi ý. - Xem các lựa chọn thay thế: Copilot thường có nhiều hơn một gợi ý cho một ngữ cảnh nhất định. Người dùng có thể duyệt qua các tùy chọn này bằng cách di chuột qua gợi ý hoặc sử dụng các phím tắt
Alt+]
(hoặc⌥]
) cho gợi ý tiếp theo vàAlt+[
(hoặc⌥[
) cho gợi ý trước đó. - Từ chối: Để từ chối một gợi ý, chỉ cần nhấn phím
Esc
hoặc đơn giản là tiếp tục gõ, gợi ý sẽ tự động biến mất. - Kích hoạt thủ công: Trong trường hợp Copilot không tự động đưa ra gợi ý, người dùng có thể yêu cầu một cách tường minh bằng phím tắt
Alt+\
.
- Chấp nhận: Nhấn phím
Việc nắm vững các phím tắt này giúp xây dựng “trí nhớ cơ bắp”, biến việc tương tác với Copilot thành một phản xạ tự nhiên, không làm gián đoạn dòng chảy công việc. Bạn có thể xem danh sách các phím tắt trên VSCode bằng cách: nhấn Command (⌘) + K, nhả, nhấn tiếp Command (⌘) + S
2.2. GitHub Copilot Chat
Copilot Chat cung cấp một giao diện hội thoại mạnh mẽ, cho phép thực hiện các tác vụ phức tạp hơn là chỉ hoàn thành mã. Nó có hai hình thức chính: Inline Chat và Chat View.
- Inline Chat:
- Truy cập: Nhấn
Ctrl+I
(hoặc⌘I
trên Mac) ngay trong trình soạn thảo. - Mục đích: Lý tưởng cho các tác vụ nhanh, có ngữ cảnh hẹp. Ví dụ: chọn một hàm và yêu cầu “giải thích hàm này”, “thêm comment cho hàm này”, hoặc “tái cấu trúc hàm này để dễ đọc hơn”. Nó giữ cho cuộc hội thoại diễn ra ngay tại nơi bạn đang làm việc, giảm thiểu việc chuyển đổi ngữ cảnh.
- Truy cập: Nhấn
- Chat View :
- Truy cập: Nhấn
Ctrl+Alt+I
(hoặc⌃⌘I
Control+Command+I trên Mac) để mở cửa sổ Chat ở thanh bên (Sidebar). - Mục đích: Phù hợp cho các cuộc trò chuyện dài hơn, các câu hỏi mang tính khái quát, hoặc các tác vụ phức tạp liên quan đến nhiều tệp. Ví dụ: “Kiến trúc xác thực trong dự án này hoạt động như thế nào?”, “Tạo một ứng dụng web Express mới với TypeScript”.
- Truy cập: Nhấn
- Quản lý Ngữ cảnh: Chìa khóa cho câu trả lời chất lượng: Hiệu quả của Copilot Chat phụ thuộc trực tiếp vào chất lượng và sự đầy đủ của ngữ cảnh mà nó nhận được. Copilot tự động sử dụng tệp đang hoạt động làm ngữ cảnh, nhưng người dùng có thể và nên cung cấp thêm thông tin một cách tường minh :
- Sử dụng nút “Add Context”: Cho phép chọn các tệp, thư mục, hoặc thậm chí là các lựa chọn cụ thể trong trình soạn thảo để thêm vào ngữ cảnh của câu hỏi.
- Kéo và Thả: Kéo các tệp hoặc thư mục từ Explorer của VSCode và thả vào cửa sổ Chat để đưa chúng vào ngữ cảnh.
- Sử dụng biến Chat (
#
): Đây là một cách mạnh mẽ để tham chiếu đến các phần tử cụ thể. Ví dụ:#selection
để tham chiếu đến đoạn mã đang được chọn, hoặc#file:src/components/Button.tsx
để tham chiếu đến một tệp cụ thể. - Sử dụng Tác nhân (
@
): Hướng câu hỏi đến một “chuyên gia” có kiến thức về một lĩnh vực cụ thể, sẽ được trình bày chi tiết ở phần sau.
2.3. Bảng Tra Cứu Nhanh: Lệnh Slash và Tác Nhân (Participants)
Để tương tác với Copilot một cách hiệu quả và có hệ thống, bạn cần sử dụng “ngữ pháp hội thoại” được cấu trúc rõ ràng. Ngữ pháp này bao gồm các Lệnh Slash (động từ – hành động cần thực hiện) và các Tác nhân (danh từ – chuyên gia cần hỏi). Việc kết hợp chúng tạo ra những yêu cầu chính xác và mạnh mẽ hơn nhiều so với ngôn ngữ tự nhiên đơn thuần.
- Lệnh Slash (
/
): Đây là các phím tắt cho các hành động (ý định) cụ thể, giúp Copilot hiểu rõ bạn muốn làm gì. - Tác nhân (
@
): Hướng câu hỏi đến một nguồn kiến thức hoặc một khả năng cụ thể, giúp thu hẹp phạm vi và tăng độ chính xác của câu trả lời.
Ví dụ, một yêu cầu như explain this
là mơ hồ. Nhưng một yêu cầu được cấu trúc tốt như @workspace /explain #file:src/api/auth.js
là một câu lệnh hoàn chỉnh và rõ ràng cho AI: “Này chuyên gia Workspace, hãy thực hiện hành động giải thích cho tệp tại đường dẫn cụ thể này.”
Dưới đây là bảng tra cứu nhanh các lệnh và tác nhân phổ biến và hữu ích nhất.
Lệnh/Tác nhân (Command/Participant) | Mục Đích (Purpose) | Ví dụ Sử Dụng (Example Usage) | Mẹo Chuyên Nghiệp (Pro Tip) |
Lệnh Slash | |||
/explain | Giải thích một đoạn mã, một tệp, hoặc một khái niệm lập trình. | Chọn một đoạn mã, gõ /explain trong Inline Chat. | Kết hợp với #selection để có giải thích chính xác nhất về đoạn mã bạn chọn. Rất hữu ích để hiểu code cũ (legacy code). |
/fix | Đề xuất cách sửa lỗi cho một đoạn mã, hoặc giải quyết các lỗi biên dịch/linting. | Khi gặp lỗi, chọn đoạn mã và gõ /fix hoặc sử dụng biểu tượng lấp lánh (sparkle icon). | Sử dụng trong Inline Chat để nhận bản vá (patch) trực tiếp trong trình soạn thảo. |
/tests | Tạo các bài kiểm thử (unit tests, integration tests) cho mã nguồn được chọn. | Chọn một hàm, gõ /tests trong Chat View. | Yêu cầu cụ thể hơn như /tests create edge case tests để có bộ test toàn diện hơn. |
/docs | Tạo tài liệu dưới dạng comment (ví dụ: JSDoc, Python Docstrings) cho mã nguồn. | Chọn một hàm, gõ /docs trong Inline Chat. | Tiết kiệm đáng kể thời gian viết tài liệu, đảm bảo tính nhất quán. |
/new | Tạo một dự án hoặc tệp mới dựa trên mô tả bằng ngôn ngữ tự nhiên. | @workspace /new a simple React component for a login form | Hữu ích để khởi tạo nhanh các cấu trúc dự án hoặc các tệp boilerplate. |
/startDebugging | Hỗ trợ tạo và cấu hình tệp launch.json để gỡ lỗi. | Trong Chat View, gõ /startDebugging và làm theo hướng dẫn. | Đơn giản hóa quá trình thiết lập môi trường debug phức tạp. |
Tác nhân (Participants) | |||
@workspace | Đặt câu hỏi về toàn bộ không gian làm việc (workspace) hiện tại. | @workspace how is authentication implemented in this project? | Dùng để hiểu kiến trúc tổng thể, các luồng dữ liệu hoặc tìm kiếm các phần triển khai cụ thể mà không cần mở từng tệp. |
@terminal | Đặt câu hỏi về terminal tích hợp, các lệnh shell, hoặc yêu cầu tạo lệnh. | @terminal list all files larger than 1MB in the current directory | Tuyệt vời để tạo các lệnh git , grep , find phức tạp mà bạn không nhớ cú pháp. |
@vscode | Đặt câu hỏi về các tính năng, cài đặt, hoặc API của chính VSCode. | @vscode how do I change the color theme? | Hoạt động như một trợ lý hướng dẫn sử dụng VSCode ngay trong giao diện chat. |
@github | Thực hiện tìm kiếm trong các kho lưu trữ GitHub hoặc các vấn đề (issues). | @github #web What is the latest LTS of Node.js? | Kết hợp với #web để tìm kiếm thông tin trên web, hữu ích cho việc tra cứu tài liệu hoặc các phiên bản thư viện mới nhất. |
Việc thành thạo “ngữ pháp hội thoại” này sẽ nâng cao đáng kể khả năng điều khiển AI, biến Copilot từ một người trợ lý đơn thuần thành một cộng tác viên mạnh mẽ và có định hướng.
3. Lựa Chọn Model AI Phù Hợp
Model là mô hình ngôn ngữ lớn (LLM) cụ thể cung cấp sức mạnh nhận thức cho Copilot. Người dùng có khả năng lựa chọn model phù hợp cho từng tác vụ, tạo ra sự cân bằng giữa tốc độ phản hồi và khả năng suy luận.
- Các Model có sẵn: GitHub Copilot liên tục cập nhật và tích hợp các model AI hàng đầu. Ví dụ, người dùng có thể lựa chọn giữa các model từ OpenAI như GPT-4o hoặc các model khác.
- Sự khác biệt và lựa chọn chiến lược:
- Model nhanh (Fast models): Thường được tối ưu hóa cho độ trễ thấp, rất phù hợp cho các tác vụ cần phản hồi tức thì như gợi ý mã nguồn nội tuyến (inline completions). Chúng giúp duy trì dòng chảy công việc mà không gây gián đoạn.
- Model mạnh (Reasoning models): Các model như GPT-4o có khả năng suy luận phức tạp hơn, hiểu ngữ cảnh sâu hơn và tạo ra các giải pháp tinh vi hơn. Chúng là lựa chọn lý tưởng cho các tác vụ đòi hỏi sự phân tích sâu như tái cấu trúc mã, giải thích các thuật toán phức tạp, hoặc lập kế hoạch cho các tác vụ trong Agent Mode.
- Cách thay đổi Model:
- Việc thay đổi model cho Gợi ý Code (Completions) và Chat được thực hiện riêng biệt, cho phép tối ưu hóa cho từng loại tương tác.
- Người dùng có thể truy cập Command Palette (
F1
hoặcCtrl+Shift+P
), gõ “Change Completions Model” hoặc “Change Chat Model” và chọn từ danh sách thả xuống.
4. Lựa chọn Mode
Mode định nghĩa hợp đồng nhiệm vụ (task contract) và phạm vi quyền hạn của AI trong một phiên trò chuyện. Nó cho Copilot biết người dùng mong đợi loại tương tác nào và AI được phép làm gì với mã nguồn. Việc chuyển đổi giữa các chế độ được thực hiện dễ dàng thông qua menu thả xuống ở cuối cửa sổ Chat.
- Ask Mode (Chế độ Hỏi): “Trả lời câu hỏi, giải thích, động não. Không được phép chỉnh sửa mã nguồn của tôi.”
- Mục đích: Đây là chế độ mặc định và an toàn nhất. Nó hoạt động như một cơ sở tri thức hoặc một chuyên gia tư vấn. Người dùng có thể đặt các câu hỏi chung về lập trình, yêu cầu giải thích một đoạn mã, hoặc tìm kiếm ý tưởng mà không lo ngại AI sẽ tự ý thay đổi tệp tin.
- Khi nào sử dụng: Khi học một khái niệm mới, tìm hiểu một codebase lạ, hoặc cần một lời giải thích chi tiết về một lỗi.
- Edit Mode (Chế độ Chỉnh sửa): “Đề xuất các thay đổi cụ thể cho các tệp đã cho và đợi sự chấp thuận của tôi trước khi áp dụng.”
- Mục đích: Chế độ này được thiết kế để thực hiện các yêu cầu chỉnh sửa mã nguồn một cách có kiểm soát. Copilot sẽ đề xuất các thay đổi, thường được hiển thị dưới dạng xem khác biệt (diff view), cho phép người dùng xem lại, chấp nhận hoặc từ chối từng thay đổi một. Nó có khả năng áp dụng các chỉnh sửa trên nhiều tệp cùng một lúc.
- Khi nào sử dụng: Khi bạn muốn tái cấu trúc một chức năng, thêm một tính năng nhỏ liên quan đến nhiều tệp (ví dụ: thêm một trường mới vào model và cập nhật cả API lẫn UI), hoặc áp dụng một bản vá lỗi cụ thể.
- Agent Mode (Chế độ Tác nhân): “Nhận một mục tiêu cấp cao và tự chủ thực hiện mọi hành động cần thiết (chỉnh sửa tệp, chạy lệnh terminal, gỡ lỗi) để hoàn thành nhiệm vụ đó.”
- Mục đích: Đây là chế độ mạnh mẽ và tự trị nhất của Copilot. Người dùng chỉ cần đưa ra một yêu cầu chung chung, và Agent sẽ tự động phân tích codebase, lập kế hoạch các bước thực hiện, viết và sửa mã, chạy các lệnh cần thiết (như
npm install
), chạy kiểm thử, và tự sửa lỗi nếu gặp vấn đề. - Khi nào sử dụng: Cho các tác vụ phức tạp, tốn nhiều thời gian như “Triển khai xác thực OAuth 2.0 cho ứng dụng này”, “Di chuyển codebase từ JavaScript sang TypeScript”, hoặc “Tạo một bộ API CRUD hoàn chỉnh cho model ‘Product'”.
- Lưu ý quan trọng: Sức mạnh của Agent Mode đi kèm với rủi ro. Một yêu cầu không rõ ràng có thể dẫn đến những thay đổi không mong muốn. Do đó, cần sử dụng chế độ này một cách cẩn trọng và luôn giám sát quá trình thực thi của nó.
- Mục đích: Đây là chế độ mạnh mẽ và tự trị nhất của Copilot. Người dùng chỉ cần đưa ra một yêu cầu chung chung, và Agent sẽ tự động phân tích codebase, lập kế hoạch các bước thực hiện, viết và sửa mã, chạy các lệnh cần thiết (như
Sự kết hợp giữa Model và Mode tạo ra một ma trận lựa chọn chiến lược. Bạn có thể tự hỏi: “Bản chất của nhiệm vụ của tôi là gì? Tôi cần mức độ tự chủ và trí tuệ nào từ AI ngay bây giờ?” Ví dụ, để tái cấu trúc một thuật toán phức tạp, một lựa chọn tốt có thể là Model: Claude Sonet 4
và Mode: Edit
để có được những đề xuất thông minh nhưng vẫn trong tầm kiểm soát. Để nhanh chóng tạo một kịch bản shell, Model:
GPT-4.1 và Mode: Ask
có thể là đủ. Việc hiểu rõ ma trận này sẽ biến người dùng thành một người chỉ huy AI thực thụ.
Phần tiếp theo: Ứng dụng thực tiễn sử dụng inline chat, chat, chuyển đổi giữa các mode, model