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.”


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

1.1 Visual Studio Code

ms money
Source
Ảnh này cho thấy Microsoft giàu cỡ nào, nhưng mà VS Code thì miễn phí đó nha!

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, và có cả đống extension 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.

Mày xài môi trường dev nào thường xuyên trong năm qua, và mày muốn chơi với cái nào năm tới? Tick hết đi!

vscode
Nhìn chart này đi, VS Code đứng đầu bảng, mấy IDE khác chỉ biết hít khó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 đổ!

1.2 GitHub Copilot

“Càng xài đồ nghề khéo, càng có nhiều time chill cho tao.”

  • 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.

    Người Ta Ghét Việc Mua Lại

  • 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!

Mày xài tool AI nào thường xuyên năm qua, và muốn chơi với tool nào năm tới? Chọn hết đi!

github copilot
Nhìn chart này, Copilot đứng top, mấy tool khác chỉ là tép riu.

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!

Loại Subscription Của Tụi Tao


2. Tính năng nổi bật của GitHub Copilot

2.1 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.

    ghost text

  • Inline Chat: Sử dụng chat nội tuyến (Ctrl+I) để tương tác và sinh code theo hội thoại.

    inline chat

  • Gợi ý từ comment: Viết comment mô tả ý tưởng, Copilot sẽ sinh code phù hợp.

    ghost text from code comments

2.2 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 edits code and adds debug comments

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

Agent uses git to revert file


3. 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.

Model type 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.

models models

Source


4. Mẹo sử dụng prompt với Copilot

4.1 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.

4.2 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

4.3 Đư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.

io

4.4 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.

4.5 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ủ đề.

4.6 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.


5. 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.
    • source_control
  • 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ỉ header trong tài liệu (vd: #header MyHeader).
    • #extensions: Tìm extension phù hợp nhu cầu (vd: #extensions Tool format code khi save).
    • #fetch: Tham chiếu website (vd: ai này là ai #fetch https://hoangyell.com/about/).
    • #githubRepo: Tham chiếu repo GitHub (vd: repo này làm gì #githubRepo opendatalab/MinerU).
    • #problems: Đề cập lỗi trong tab PROBLEMS (vd: /fix #problems).
    • #testFailure: Đề cập lỗi test trong tab 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 Mode!
      • @workspace
      • @workspace
    • @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 vài repo của tao).
      • @github
      • @github
    • @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.

6. 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.

  • @github
  • @github

6.1 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!

6.2 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

funny_mcp

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

7. 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.

Nói nôm na: ToolSet là danh sách “đồ nghề” mà Agent được phát, không có trong list thì khỏi mơ xài! Đỡ bị lộ hàng, đỡ bị ban acc, đỡ bị AI làm loạn repo.

 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"
  }
}

8. 📬 Tuỳ chỉnh Custom Instructions

Source

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

Type of instruction Description
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 generation github.copilot.chat.pullRequestDescriptionGeneration.instructions - Hướng dẫn Copilot sinh tiêu đề, mô tả PR rõ ràng, đầy đủ thông tin.

8.1 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.

8.2 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.

config_custom_instruction_path

8.3 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!

8.4 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
"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ể!


9. Tổng kết

🎯 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 tiến hoá nhanh vãi. Update feature mới, thử model khác, share kinh nghiệm với cộng đồng.

🤝 Hợp Tác và Chia Sẻ:
Share instructions, chiến thuật prompt, toolset với team để ai cũng pro như mày.


Với mấy đúc kết này, mày sẽ biến Copilot thành cánh tay phải, code nhanh hơn, xịn hơn, và an toàn hơn. Chơi tới bến đi, homie!

Đượ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