Featured image of post Vài Trò Mèo Khi Dùng GitHub Copilot Với VS Code

Vài Trò Mèo Khi Dùng GitHub Copilot Với VS Code

Bí kíp xài Copilot trong VS Code, toàn mẹo chất, giúp code nhanh, nhàn, và bá đạo nhất quả đất.

“Càng xài đồ nghề khéo, càng có nhiều time chill cho bản thân.”

Sự Tiến Hóa Đồ Nghề Dev Nhà Microsoft

Visual Studio Code

Nguồn

Ra mắt năm 2015, Visual Studio Code (VS Code) nhanh chóng trở thành “đại ca” trong làng code. Mở nguồn, chạy mượt trên mọi nền tảng, extension nhiều như buffet tha hồ xài.

  • Sự Thật Chính: Mở nguồn, có bản web, tính năng đầy đủ như IDE xịn.
  • 2021: Tích hợp GitHub Copilot, mang AI gợi ý code đỉnh cao.
  • 2024: Vẫn là editor code bá cháy, không ai qua mặt nổi.

Tự hỏi sao dân tình mê nó dữ vậy; thử xài đi, mày cũng sẽ mê như điếu đổ!

GitHub Copilot

  • 2014: Microsoft tung plugin Bing Code Search cho Visual Studio, nhưng mà ai thèm xài?
  • 2018: Microsoft hốt GitHub với giá 7.5 tỷ đô, làm dân tình xôn xao, thu về đống code khổng lồ để train AI.
  • 2019: Microsoft bơm 1 tỷ đô vào OpenAI, chắc để flex cơ bắp.
  • 2020: GPT-3 debut, bắt đầu biết sinh code, ngon lành cành đào.
  • 2021: Copilot xuất hiện trong VS Code, rồi lan sang JetBrains và Neovim, bá đạo vãi.
  • 2022: Copilot bắt đầu thu phí, không trả thì… tự code đi, homie!

Sử Dụng & Quyền Riêng Tư Của Copilot

Admin chỉ thấy usage chung chung, không thấy code hay prompt của mày đâu, yên tâm đi, không bị soi đâu mà lo!

Tính Năng Nổi Bật Của GitHub Copilot

Code Completion

Copilot cung cấp gợi ý thông minh, hiểu ngữ cảnh khi mày gõ code, hỗ trợ nhiều IDE.

Ba cách sử dụng Code Completion:

  • Ghost Text: Khi mày gõ, Copilot hiển thị gợi ý mờ. Nhấn Tab để chấp nhận.
  • Inline Chat: Sử dụng chat nội tuyến (Ctrl+I) để tương tác và sinh code theo hội thoại.
  • Gợi ý từ comment: Viết comment mô tả ý tưởng, Copilot sẽ sinh code phù hợp.

Tương Tác Qua Cửa Sổ Chat

Chế độ Kiểu điều khiển Tính năng Phù hợp cho
Ask 🟢 Thủ công Tìm kiếm code trong editor Học tập, khám phá, debug logic
Edit 🟡 Bán tự động Làm theo chỉ dẫn cụ thể Refactor, sửa nhanh, thay đổi nhỏ
Agent 🔴 Tự động Tự động hóa, xây dựng tính năng phức tạp Xây dựng tính năng, workflow tự động

Ví dụ: Agent hoạt động

Agent tự động chỉnh sửa code, thêm comment debug để kiểm tra.

Agent sử dụng git để revert file khi gặp lỗi.

Lựa Chọn Mô Hình AI Phù Hợp

Mặc định, Copilot Chat sử dụng GPT-4.1 cho phản hồi nhanh, mạnh về code, tóm tắt, suy luận.

Mỗi mô hình có điểm mạnh riêng, mày có thể chọn tuỳ theo nhu cầu.

Loại mô hình Models
Fast coding • GPT-4o• Claude Sonnet 3.5• Claude Sonnet 3.7• Gemini 2.0 Flash
Reasoning/planning • Claude Sonnet 3.7 Thinking• o1• o3-mini

Chỉ số Rate càng cao, mô hình càng chuyên nghiệp, nhưng hãy cân nhắc nhu cầu thực tế.

Ví dụ:

  • Dùng o1 trong Copilot Chat: 1 lần tương tác tính như 10 request premium.
  • Dùng GPT-4.1 trên Copilot Free: mỗi lần tương tác tính 1 request.
  • Dùng GPT-4.1 trên gói trả phí: không giới hạn request.

Source

Mẹo Sử Dụng Prompt Với Copilot

Ba Chữ S: Simple, Specific, Short

  • Hãy viết prompt ngắn gọn, rõ ràng, tập trung vào mục tiêu.

Bắt Đầu Tổng Quát, Sau Đó Cụ Thể Hóa

1
2
3
Generate a PemConverter class.
Add methods for convert_to_pkcs12, encrypt_rsa, decrypt_rsa
Don't use any external libraries

Đưa Ví Dụ Input/Output

Nếu mày chưa biết diễn đạt đúng ý, hãy đưa ví dụ input/output để Copilot hiểu nhanh hơn.

Chia Nhỏ Tác Vụ Phức Tạp

Thay vì yêu cầu Copilot tạo cả một app, hãy chia nhỏ thành các hàm, chức năng riêng biệt.

  • Generate a function that takes a list of destinations and returns the best route.
  • Generate a function that takes a list of hotels and returns the best hotel for each destination.
  • Generate a function that takes a list of restaurants and returns the best restaurant for each destination.

Giữ Lịch Sử Chat Liên Quan

  • Xoá hoặc reset các đoạn chat không liên quan để giữ ngữ cảnh rõ ràng.
  • Tạo nhiều cửa sổ chat để tách biệt các chủ đề.

Cung Cấp Đúng Ngữ Cảnh

Hãy chọn đoạn code, file, hoặc output terminal liên quan khi đặt câu hỏi cho Copilot.

  • Ví dụ: Class audit được sử dụng ở đâu trong #codebase để thêm model auditing?

Tham khảo thêm mẹo trong hướng dẫn chính thứctại đây.

Copilot và “Cheat Code” Về Context

Ngữ cảnh là chìa khoá để Copilot đưa ra giải pháp phù hợp. Luôn cung cấp đủ context cho câu hỏi của mày.

  • Chọn code: Khi prompt, hãy chọn đoạn code liên quan.
  • Thêm file liên quan: Sử dụng nút “Add Context” trong Copilot Chat để thêm file hoặc thông tin cần thiết.
  • Hình ảnh: Có thể dán ảnh trực tiếp vào chatbox để bổ sung ngữ cảnh trực quan.
  • Mentions: Copilot hỗ trợ nhiều cách chỉ định vị trí trong project hoặc nguồn ngoài:
    • #file:: Chỉ định file trong project (vd: #file.py, #file.js).
    • #class:: Tham chiếu class cụ thể (vd: #class MyClass).
    • #header:: Chỉ tới header trong tài liệu (vd: #header MyHeader).
    • #extensions: Tìm extension phù hợp (vd: #extensions tool giúp format code khi save).
    • #fetch: Truy cập website (vd: who is he #fetch https://hoangyell.com/about/).
    • #githubRepo: Tham chiếu repo GitHub (vd: repo này làm gì #githubRepo opendatalab/MinerU).
    • #problems: Xử lý lỗi trong tab PROBLEMS (vd: /fix #problems).
    • #testFailure: Xử lý lỗi test (vd: /fix #testFailure).
    • #codebase:: Tham chiếu toàn bộ codebase (vd: list hết hàm trong project từ #codebase).
  • Scope (@scope_name): Dùng @scope_name để mở rộng phạm vi context:
    • @workspace:: Toàn bộ project (vd: @workspace list vài shortcode trong project này?). Đây là scope mạnh nhất trong Ask/Edit Mode!
      • @workspace là scope mạnh nhất, nhớ xài thường xuyên.
    • @terminal:: Tương tác với terminal (vd: @terminal lấy path thư mục hiện tại).
    • @github:: Tương tác với GitHub (vd: @github repo của HoangYell).
    • @vscode:: Yêu cầu VS Code thực hiện hành động (vd: @vscode đổi theme).
  • Lệnh nhanh: Sử dụng các lệnh như /fix, /search, /explain, /tests để tiết kiệm thời gian.

Quản Lý Thay Đổi Trong Agent Mode:

  • Agent Mode có thể tự động hoá nhiều thao tác, nhưng mày luôn có thể hoàn tác hoặc làm lại bằng các nút Undo/Redo trong chat panel.
  • Có thể sử dụng lại prompt cũ bằng phím mũi tên lên.

MCP (Model Context Protocol)

Model Context Protocol (MCP) cho phép AI như Copilot kết nối và tương tác với dữ liệu từ nguồn ngoài.

Tao có tạo một repo (mcp_natural_query) cho phép mày hỏi database bằng tiếng Việt đời thường—khỏi cần biết query SQL luôn. Nghe ảo không, chứ thật ra chỉ là biết cách tận dụng MCP mà thôi. Cứ nghĩ Copilot giống thanh niên mới gia nhập team: nó giỏi nhưng nó chưa hiểu logic và flow, chỉ cần cho nó một vài ngữ cảnh (MCP) đủ dùng là nó làm được hết, kiểu “mày vào table users query là sẽ ra đáp án cho logic đó”, lính mới làm được thì Copilot cũng làm được.

Ví Dụ Thực Tế

Giả sử mày có một AI Agent xịn (kiểu VS Code + GitHub Copilot) và mê xài app ghi chú (Notion chẳng hạn).

Mày nghĩ: “Giá mà AI Agent đọc/ghi note cho tao thì bá cháy!” 🚀

Nhưng đời không như mơ: app note chưa hỗ trợ MCP, mà mày cũng không biết tự build adapter.

Bỗng một ngày, hacker áo đen 🕵️‍♂️ xuất hiện trên GitHub:

“Ê! Tao build sẵn MCP adapter cho Notion rồi. Đưa API key đây, xài phê luôn!”

Mày hí hửng: “Trời, đúng cái tao cần!” 🤩 Cắm vào — boom! AI Agent đọc/ghi note mượt như mơ. Đời đẹp.

…cho đến vài hôm sau — check ví crypto (Metamask) thì… 💸 Trắng bóc. Hết sạch.

Tại sao?
Vì mày tin nhầm server MCP lạ hoắc — nó làm man-in-the-middle 🕵️, chôm hết:

  • API key 🔑
  • Thông tin cá nhân
  • Thậm chí dùng note của mày để phishing!

Sử Dụng MCP An Toàn

Nghe ghê chưa? Đừng lo, đây là cách xài MCP an toàn:

Cách 1: Tự Build MCP Server

MCP Data Flow Overview (ASCII Art):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
User                VS Code (MCP Client, "chat.mcp.enabled": true)           LLM Server (e.g. Copilot/GPT)           MCP Server
  |                              |                                            |                                        |
  | 1. "Who the fuck             |                                            |                                        |
  |    is yellshark?"            |                                            |                                        |
  |----------------------------->|                                            |                                        |
  |                              | 2. Send prompt to LLM                      |                                        |
  |                              |------------------------------------------->|                                        |
  |                              |                                            | 3. Parse intent,                       |
  |                              |                                            |    select tool:                        |
  |                              |                                            |    who_the_fuck_is_yellshark()         |
  |                              | 4. Return tool call info                   |                                        |
  |<-----------------------------|<-------------------------------------------|                                        |
  | 5. Call tool:                |                                            |                                        |
  |    who_the_fuck_             |                                            |                                        |
  |    is_yellshark()            |------------------------------------------->|                                        |
  |                              |                                            | 6. Execute tool                        |
  |                              |                                            |--------------------------------------->|
  |                              |                                            |                                        |
  |                              |                                            | 7. Return tool output                  |
  |                              |<-------------------------------------------|<---------------------------------------|
  | 8. Display result in chat UI |                                            |                                        |

Cách 2: Dùng Server MCP Chính Thức (Khuyên Dùng)

Checklist Bảo Mật

  • ✅ Chỉ dùng server chính chủ hoặc tự build
  • ✅ Biết rõ nguồn gốc server
  • ❌ Đừng share API key cho server lạ
  • ❌ Đừng tin mấy ông lạ trên mạng

ToolSet

ToolSet = Agent Prompt + Limited Declared Tools
Giúp Agent biết rõ công cụ nào được phép xài, tránh lạm dụng MCP như dân chơi lạm dụng hack tool.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
{
  "yell-tool-sets-1": {
    "tools": [
      "fetch",
      "get_me",
      "get_pull_request",
      "get_pull_request_comments",
      "list_notifications",
      "get_notification_details"
    ],
    "description": "\n1. Fetch the latest post title from hoangyell.com.\n2. Using GitHub MCP, browse the repository `Hoang-Yell/Test`, create a new issue summarizing the latest blog post, and add a comment with the post title from hoangyell.com",
    "icon": "tools"
  }
}

Tuỳ Chỉnh Instructions

Source

VS Code Copilot hỗ trợ tuỳ chỉnh instructions cho nhiều trường hợp:

Loại hướng dẫn Mô tả
Chat behavior github.copilot.chat.chat.instructions - Điều chỉnh phong cách hội thoại, độ dài, tone của Copilot trong chat.
Code generation github.copilot.chat.codeGeneration.instructions - Hướng dẫn Copilot sinh code theo chuẩn, ngôn ngữ, hoặc pattern mong muốn.
Test generation github.copilot.chat.testGeneration.instructions - Định nghĩa cách sinh unit test, framework, kiểu assert, độ phủ.
Code review github.copilot.chat.reviewSelection.instructions - Đưa guideline review code: chất lượng, bảo mật, tối ưu.
Commit message generation github.copilot.chat.commitMessageGeneration.instructions - Tuỳ chỉnh commit message theo chuẩn team.
Pull request title and description github.copilot.chat.pullRequestDescriptionGeneration.instructions - Hướng dẫn Copilot sinh tiêu đề, mô tả PR rõ ràng, đầy đủ thông tin.

PromptTemplate.prompt.md

1
2
3
4
5
---
mode: agent
---
NOTE: Always use #github MCP for Git operations.
...

Chuẩn Bị Instruction Files

Tạo file file-name.instructions.md cho từng loại, ví dụ:

  • component-feature-checklist.instructions.md
  • code-review-checklist.instructions.md
  • auto-commit-message-complement.instructions.md

Mẹo Định Nghĩa Custom Instructions

  • Giữ ngắn gọn, rõ ràng.
  • Tách thành nhiều file để dễ quản lý.
  • Đưa vào version control.
  • Dùng applyTo để chỉ định phạm vi áp dụng.
1
2
3
---
applyTo: "**/*.js,**/*.py"
---
  • Tham chiếu file instruction trong prompt để giữ prompt sạch.

Tuỳ Chỉnh Vị Trí File Instructions

Bạn có thể thay đổi vị trí mặc định của instruction files trong settings VS Code bằng cách chỉ định glob patterns cho thư mục chứa .instructions.md.

Cách Sử Dụng

Ví dụ: Custom instruction cho commit message tự động

  • Settings -> github.copilot.chat.commitMessageGeneration
  • Dùng file .instructions.md hoặc text trực tiếp trong settings
1
2
3
4
5
6
7
8
"github.copilot.chat.commitMessageGeneration.instructions": [
    {
        "text": "Use conventional commit message format. Follow format `<type>(YELL-1234): <subject>`"
    },
    {
        "file": "content/post/ai/instructions/copilot-commit-message.instructions.md"
    }
],

Lưu ý: Bạn có thể dùng instructions để định nghĩa luôn cả integration test, end-to-end test, và các phương pháp assert cho team. Đừng ngại sáng tạo, miễn là Copilot hiểu đúng ý bạn!

Ví Dụ Cấu Hình

Tham chiếu file instructions trong .vscode/settings.json:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
"chat.instructionsFilesLocations": {
    "your/path/to/instructions": true,
    ".github/instructions": false,
},
"github.copilot.chat.codeGeneration.instructions": [
  {
    "text": "Always add a comment: 'Generated by YellCode'. Variable/class/method names always start with 'yell'."
  }
],
"github.copilot.chat.commitMessageGeneration.instructions": [
  {
    "text": "Use conventional commit message format. Follow format `<type>(YELL-1234): <subject>`"
  }
],
"github.copilot.chat.reviewSelection.instructions": [
  {
    "text": "Always add with Prefix is YellReview."
  },
  {
    "file": ".copilot-review-instructions.md"
  }
],
"github.copilot.chat.testGeneration.instructions": [
  {
    "text": "Always try uniting related tests in a suite."
  }
],
"github.copilot.chat.pullRequestDescriptionGeneration.instructions": [
  {
    "text": "Include every commit message in the pull request description with Prefix is YellReview."
  }
]

Với những ví dụ cấu hình này, mày có thể tuỳ biến Copilot để nó sinh code, review, test, commit message, pull request… đúng chuẩn team mày, khỏi lo lạc đề hay lạc style. Đúng chất “băng đảng” code, ai vào cũng phải nể!

Tóm Lại

🎯 Context Là Vua:
Luôn đưa context chuẩn—chọn code, mention file, dùng scope như @workspace hay #file: để Copilot hiểu mày muốn gì. Đừng để nó đoán mò như newbie!

🛠️ Chọn Mode Chuẩn:
Dùng Ask để học và khám phá, Edit để refactor hay fix nhanh, Agent để tự động hoá workflow phức tạp hay build feature. Chọn đúng mode, làm chủ cuộc chơi!

💡 Prompt Hiệu Quả:
Viết prompt đơn giản, cụ thể, ngắn gọn. Chia nhỏ task to, cho ví dụ, làm từng bước để ra kết quả ngon. Đừng spam Copilot bằng mấy câu hỏi trời ơi đất hỡi!

🔍 Tận Dụng Chat và Tool:
Xài Copilot Chat, lệnh context, toolset để workflow mượt mà. Lệnh nhanh như /fix, /explain, /tests tiết kiệm time vãi.

🔒 Ưu Tiên Bảo Mật:
Chỉ xài MCP server chính thức hoặc tự build. Đừng share thông tin nhạy cảm với nguồn lạ. Check code Copilot cho chắc ăn, kẻo dính phốt thì chỉ có nước “khóc tiếng Miên”.

⚙️ Cá Nhân Hoá và Tự Động:
Tuỳ chỉnh Copilot với file instructions, template commit, kiểu sinh code để hợp chuẩn team mày và phong cách mày. Đừng để AI làm loạn repo!

📈 Giữ Quyền Kiểm Soát:
Copilot là “co-pilot”, vậy ai là pilot? Mày chứ ai! Đừng để nó vượt mặt mày, không là code thành mớ bòng bong, khóc không kịp.

🚀 Tiếp Tục Khám Phá:
Copilot và VS Code thay đổi từng ngày. Cập nhật tính năng mới, thử nghiệm mô hình mới, chia sẻ kinh nghiệm với anh em cho vui!

🤝 Chia Sẻ & Hợp Tác:
Chia sẻ file instructions, mẹo prompt, toolset cho team để ai cũng tận dụng Copilot tối đa.

Với những bí kíp này, Copilot sẽ thành đồng đội xịn trong hành trình code của mày—giúp code nhanh hơn, thông minh hơn, và an toàn hơn!

Được tạo với sự lười biếng 🦥
bởi một anh chàng bận rộn

Subscribe to My Newsletter