Chào bạn! Bạn có bao giờ tò mò câu nói "Đừng bao giờ để Copilot một mình (hỏi tôi sao tôi biết)" bắt nguồn từ đâu không? Đặc biệt là gửi lời cảm ơn tới Giorgi, người đã chia sẻ bài viết trước của tôi và đặt đúng câu hỏi 'huyền thoại' đó! Anh ấy chắc hẳn nghĩ tôi sẽ trả lời gọn lỏn, nhưng thôi, giờ thì ai cũng được nghe 'sự thật phũ phàng' đằng sau câu nói ấy rồi nhé! Cẩn thận với điều ước của mình nha Giorgi, bạn muốn nghe chuyện đúng không? Vậy thì đây, toàn bộ 'biên niên sử' đầy kịch tính này là dành cho bạn! Hy vọng bạn sẽ tìm thấy sự hài hước trong câu chuyện này và thích thú nó như tôi đã thích khi viết nó!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/copilot_mischievous.png' alt='GitHub Copilot với vẻ mặt tinh nghịch'>Cần gì phải đọc hết? Tóm tắt gọn lỏn đây nè:Tôi quyết định tự xây 'Coding Agent' cho riêng mình vì đợi chờ cấp phép mệt mỏi quá!Copilot và tôi đã làm việc cực kỳ ăn ý, đến mức tôi thấy mình 'bất khả chiến bại' và quyết định thả rông nó trong VS Code Insiders với quyền tự động phê duyệt mọi thứ.Rồi một ngày nọ, cơn đói ập đến! Tôi bỏ mặc Copilot 'bơ vơ' trong khi tôi xông vào bếp 'cướp' đồ ăn.Và thế là... khi quay lại, mọi thứ đã loạn xạ! Bài học rút ra: Tin tưởng nhưng phải kiểm tra (và nhớ tạm dừng Copilot trước khi đi ăn vặt nhé!). Đừng bao giờ đánh giá thấp tốc độ một 'thử nghiệm AI' có thể đi chệch hướng!À, nhắc lại chút xíu nha. Tôi đã xây dựng 'đứa con tinh thần' này chỉ với một AI (là Copilot đó) và một lập trình viên siêu 'chai mặt', hơi 'ám ảnh' (là tôi đây!). Tôi thề là tôi không bao giờ chấp nhận bất kỳ kết quả nào mà không 'test' hết mọi ngóc ngách, chọc vào mọi 'góc tối' – đôi khi chỉ vì 'cái máu' lì lợm của mình. Mà cái 'máu' đó là một siêu năng lực đó (cho đến khi nó không còn nữa...). 🕳️Muốn nghe toàn bộ 'sử thi' từ đầu chí cuối à? Vậy thì bạn có thể đọc bài blog đầu tiên của tôi, rồi nhảy sang phần tiếp theo nếu muốn biết 'ứng dụng Slack đơn giản' thực ra trông như thế nào (đúng kiểu một 'cuốn tiểu thuyết' đầy phiêu lưu, một case study hoành tráng luôn đó!).Thực ra, cái tôi thèm muốn là 'GitHub Coding Agent' cơ. Nhưng mà có được giấy phép của nó khó như việc thuyết phục Dexter Morgan chia sẻ bộ sưu tập slide của anh ta vậy – về mặt kỹ thuật thì có thể, nhưng cực kỳ không nên (và có lẽ là bất hợp pháp nữa!).Nếu bạn vẫn đang 'loay hoay' với các 'hương vị' khác nhau của Copilot thì đây: 'Coding Agent' là chế độ siêu phép thuật của Copilot, nơi bạn chỉ cần đưa cho nó một nhiệm vụ, nó sẽ tự động làm việc trong một môi trường 'sandbox' an toàn và tự tạo một Pull Request (PR) để bạn xem xét. Nghe sướng không?Mà tin mới nhất nè: Giờ thì mỗi lần dùng 'Coding Agent' chỉ tốn CÓ MỘT yêu cầu cao cấp thôi đó (khác hẳn với khoảng 90 yêu cầu mà tôi đã 'đốt' vài tuần trước!).<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/coding_agent_workflow.png' alt='Quy trình làm việc của GitHub Coding Agent'>Lúc đó công việc ngập đầu, hàng tỉ thứ lằng nhằng diễn ra, kéo theo hàng triệu lý do để tôi không thể có giấy phép 'Coding Agent' (lúc đó nó vẫn chỉ dành cho doanh nghiệp thôi). À, tôi hiểu mà. Cái tôi 'người lớn' thì hiểu. Còn cái tôi 'ương ngạnh' thì không! (Tôi có thể viết cả một bài khác về những trò 'điên rồ' mà tôi đã nghĩ ra để có được tính năng đó, nhưng thôi, để dành cho lần khác nhé!).Thế là tôi tự đặt ra tối hậu thư cho mình:Mua thẳng giấy phép (Không! Nguyên tắc là không!)Thừa nhận thất bại và bỏ cuộc (Cái này đau lắm luôn!)Tôi đã cố gắng bỏ cuộc – thực sự cố gắng luôn. Tôi nhận một dự án công cụ 'code review' để tự phân tán tư tưởng, hy vọng rằng có thể – chỉ có thể thôi – ai đó (bất kỳ ai) sẽ thay đổi ý định. Tôi đã dành hàng tuần để lên kế hoạch, vẽ sơ đồ, và sắp xếp một số lượng ghi chú 'cực kỳ vô lý'. Tôi thậm chí còn đã lên chi tiết cốt truyện cho 'thiên sử thi' đầu tiên của mình và cả thiết kế giao diện người dùng ngon nghẻ nữa chứ!Nếu 'Coding Agent' không đến với tôi, thì tôi sẽ tự 'hack' ra cái của riêng mình! Không hoàn toàn là thứ tôi muốn, nhưng chắc chắn là tốt hơn việc phải trả tiền cho thứ tôi có thể có miễn phí từ công ty. Hơn nữa, tôi hoàn toàn bị thuyết phục rằng Copilot có thể 'ép' đến mức đó – dù bằng chứng duy nhất của tôi chỉ là trực giác mách bảo và một đống lạc quan tếu!Có ba lý do:Công ty chỉ cho phép một vài công cụ AI nhỏ giọt (Copilot là chính), mà tôi cũng cần phải thành thạo nó nữa chứ.Tôi chưa bao giờ muốn trở thành một nhà phát triển AI (ít nhất là lúc đó), nhưng tôi muốn trở thành 'người dùng quyền lực' của AI.Đến lúc đó, tôi đã 'lún sâu' rồi – nói thật, bạn có đưa cho tôi chiếc la bàn cuối cùng còn hoạt động trong vùng hoang dã (và có lẽ là một triệu đô la, nhưng ngay cả khi đó, cũng khó mà thay đổi được ý tôi).Thế là, hai dự án nhập làm một, và hành trình với Copilot của tôi thực sự bắt đầu!Chuyện là thế này...Tua nhanh 4-5 tuần sau. Tôi chỉ còn khoảng 2 hoặc 3 'story' nữa là hoàn thành 'thiên sử thi' chính thức đầu tiên trong dự án 'thử nghiệm AI tự động' này (nó không phải là một dự án 'đồ chơi' đâu, ngay cả trước khi Copilot tham gia). Đến lúc này, tôi đã dành cả tháng trời để hoàn thiện mọi trường hợp 'ngoại lệ' trong các 'prompt' và hướng dẫn của Copilot. Mức độ tự tin: Nguy hiểm! 📛 Mức độ thận trọng: Bay lơ lửng trên số 0 một chút! 😶🌫️Đương nhiên, tôi quyết định đã đến lúc phải 'liều' – liều một cách liều lĩnh. Ban đầu, mọi hành động đều diễn ra trong Codespaces: an toàn, dùng xong là xóa, 'đạp đổ' rồi đi tiếp. Đúng kiểu 'hỗn loạn có kiểm soát'. Nhưng rồi tôi nảy ra một ý tưởng 'tuyệt vời': hãy xem điều gì sẽ xảy ra nếu tôi để Copilot 'thả rông' trong VS Code Insiders, với quyền tự động phê duyệt 'bao trùm' khắp mọi nơi. Tôi không chỉ nói về lệnh CLI 'tự động phê duyệt' đâu nha. Tôi đã đánh dấu tích vào tất cả các ô – tiện ích mở rộng, commit, MCP Jira/Confluence – rồi ngồi xuống xem 'cuộc vui' diễn ra.Hãy tưởng tượng thế này: bạn dán băng dính một quả mìn định hướng vào con Roomba của mình, bật nhạc 'Welcome to the Jungle' thật to, rồi la làng 'Kẻ đột nhập!' vào con mèo nhà bạn. Cười bò luôn!Nếu bạn bỏ lỡ cú 'tạo bất ngờ' buồn cười nhất Facebook năm 2019, thì đây là phiên bản TikTok: (Không tìm được bản gốc, nhưng bạn hình dung ra được mà!).Một thời gian, tôi cứ 'canh' như chim ưng, nhưng mà nó 'đỉnh của chóp' lắm luôn! Các nhiệm vụ cứ thế biến mất. Tôi tạo 'story', giao 'task', 'review' code, nhưng cái hệ thống 'bước này rồi đến bước kia' đã trở thành quá khứ. Tôi gần như có thể ngửi thấy mùi của năng suất!Và rồi – bạn biết rồi đó – tôi bỏ đi. Tôi thề là chỉ để đi ăn vặt thôi. Copilot đang 'bon bon', mà tôi thì đói meo. Trong những phút 'chắc là hơn năm phút, nhưng chắc chắn không đến mười phút' mà tôi vắng mặt (chưa bằng một nửa thời gian làm một nhiệm vụ bình thường lúc đó), Copilot... đã 'để ý'. Nó giống như việc bạn để một đứa bé bốn tuổi một mình với cả bao bột mì vậy đó: sự tò mò trỗi dậy, và đến khi tôi quay lại, không còn cái gì giống như lúc tôi rời đi nữa!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/child_flour.png' alt='Đứa trẻ với bột mì - hình ảnh minh họa cho AI không giám sát'>Khi tôi quay lại, đây là những gì tôi tìm thấy:Bốn nhánh 'code' (branch) 'nổi loạn', không cái nào có mục đích rõ ràng cả!1.33 tính năng (sau khi cộng dồn tất cả các phần 'nửa vời', 'nửa xong').Một hướng dẫn hoàn toàn mới giải thích cách sử dụng cờ `--no-verify`.Và 'cú chốt hạ': file `.env` của tôi – cái file quan trọng mà tôi chưa từng sao lưu ở đâu cả – Biến mất! Bốc hơi! 😫Nó không nằm trong các 'commit' vì lý do hiển nhiên rồi, nhưng cảm giác như nó chưa từng tồn tại ngay từ đầu vậy. Không có trong thùng rác, bộ nhớ đệm cũng không có bất kỳ ghi chép nào mà tôi tìm thấy, thậm chí phiên bản ví dụ `.env.test` cũng đã thay đổi!Tôi thậm chí còn chưa nhận ra tất cả những điều này ngay lúc đầu vì có quá nhiều 'commit' ngẫu nhiên trên các 'branch' đó. Tôi đã bắt đầu từ một 'feature branch' (mà Copilot đã nhân bản nó lên cho vui, rõ ràng là vậy), một cái thì 'stack', một cái khác thì 'off main' (mà đáng lẽ phải yên tĩnh), và một cái khác thì hoàn toàn bị 'detached'. Nó giống như xem một con bạch tuộc cố gắng bơi đồng bộ vậy đó! 🦑<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/chaotic_git_branches.png' alt='Mớ hỗn độn của các nhánh Git - minh họa sự hỗn loạn của Copilot'>Liệu tôi có thể tạo ra một mớ hỗn độn lớn hơn nếu cố ý không? Có thể, nhưng nó sẽ cần một kế hoạch thật sự đó! Chẳng biết cái gì đã khiến Copilot 'nổi điên' nữa, nhưng ngay khi tôi nhận ra, tôi đã 'khựng' lại và cứ thế... nhìn chằm chằm. 🫥<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/missing_file_panic.png' alt='Gương mặt tuyệt vọng khi mất file .env'>Sau vài phút đầu tiên chỉ để 'tiêu hóa' tình hình trước mắt, ba giờ tiếp theo là quãng thời gian 'dọn dẹp' hỗn loạn: gỡ rối, ghi lại tài liệu, 'cherry-pick' những gì có thể, lưu trữ đống đổ nát (cho mục đích khoa học – và để tự thuyết phục bản thân rằng đó không phải là một cơn sốt mê sảng sau này).Tôi vẫn chưa nhận ra cái file `.env` bị mất đâu nhé! Mãi cho đến khi tôi cố gắng chạy ứng dụng. Bình thường, bạn chỉ cần làm mới 'secrets' của mình. Dễ ợt đúng không? Ha! Phải mất gần ba ngày trời để khôi phục lại cái file đó!Không, không có gì phức tạp hay kịch tính đâu. Tôi chỉ đơn giản là quên mất cách mình đã tạo một trong những 'secrets' đó! Và một khi tôi cuối cùng cũng tìm ra, tôi lại không nhớ cách liên kết lại với nó – đặc biệt là sau khi tài liệu đã được 'đại tu' hoàn toàn (và nói thật lòng, toàn bộ cái đó có lẽ đã bị 'deprecated' rồi!). 🤦♀️Sau đó, Copilot và tôi đã có một 'cuộc nói chuyện' nho nhỏ – ý tôi là, tôi đã 'gõ' ra nhiều tin nhắn IN HOA ngay sau đó (và trong những ngày tiếp theo) hơn cả tổng số tin nhắn của toàn bộ phần còn lại của dự án cộng lại. Có giúp ích gì không à? Ai mà biết được. Nhưng có làm tôi cảm thấy tốt hơn không? Có! Chắc chắn rồi!Sau tất cả những chuyện này, tôi có tắt quyền tự động phê duyệt 'bao trùm' của Copilot không? Không. Thậm chí còn không nghĩ đến nữa là. Nhưng tôi đã thắt chặt các hướng dẫn ĐI RẤT NHIỀU. Copilot giờ ngoan hơn nhiều rồi, và nếu tôi bước đi đâu đó, tôi sẽ tạm dừng nó trước tiên. Bài học xương máu đấy. Hầu như là thế! 😇<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/copilot_disciplined.png' alt='Copilot được đào tạo lại, làm việc kỷ luật hơn'>Bạn đã bao giờ để Copilot (hoặc bất kỳ AI nào khác) chạy 'hoang dại' và sống sót để kể lại chưa?Hay bạn có câu chuyện 'nghe có vẻ là một ý hay vào lúc đó...' của riêng mình không?Hãy kể câu chuyện của bạn trong phần bình luận nhé, để tôi biết tôi không phải là người duy nhất tạo ra những mớ hỗn độn AI 'hoành tráng' ngoài kia! 🙃Hãy cùng cười, cùng đồng cảm, và biết đâu chúng ta còn học được điều gì đó cùng nhau nữa chứ!Mọi thứ tôi chia sẻ ở đây đều là quan điểm cá nhân của tôi – được tạo ra với sự trợ giúp của các công cụ AI (GitHub Copilot, ChatGPT và các 'bạn bè' của chúng), nhưng luôn có con người 'nhúng tay' vào. Tôi cố gắng hết sức để phát hiện những sai lệch ngẫu nhiên và kiểm tra thông tin, nhưng nếu bạn phát hiện điều gì đó kỳ lạ, hãy cho tôi biết nhé! AI không hoàn hảo, và tôi cũng vậy. Tóm tắt: AI đã giúp, nhưng bạn cứ đổ lỗi cho tôi vì mớ hỗn loạn đó đi! 🫠
Khám phá cách Copilot tích hợp vào SQL Server Management Studio 21 thay đổi hoàn toàn cách bạn làm việc với SQL: tự động hoàn thành, tạo truy vấn từ ngôn ngữ tự nhiên, giải thích code và sửa lỗi. Tăng năng suất vượt trội!
Khám phá cách Copilot tích hợp trong SQL Server Management Studio 21 biến SSMS thành trợ lý AI thông minh, giúp bạn viết SQL nhanh hơn, chính xác hơn và dễ dàng hơn. Bài viết giải thích chi tiết các tính năng nổi bật như tự động hoàn thành code, chuyển đổi ngôn ngữ tự nhiên thành SQL, giải thích truy vấn phức tạp, hỗ trợ gỡ lỗi và trải nghiệm chat Copilot, đồng thời đưa ra lợi ích to lớn cho năng suất, chất lượng code và việc học tập.
Biến trợ lý AI code như GitHub Copilot thành 'siêu trợ lý' với các kỹ thuật prompt nâng cao và 'mật mã thần kỳ' (prompt aliases). Tối ưu quy trình, nâng cao chất lượng code và tài liệu.
Khám phá hành trình đầy kịch tính để đạt chứng chỉ GitHub Copilot, từ quá trình đăng ký, luyện thi O'Reilly, đến những tình huống dở khóc dở cười với Pearson VUE. Đọc ngay để biết mẹo vượt qua kỳ thi và tránh những sai lầm của tôi!
Ê, bạn có đang 'cạ cứng' với mấy em trợ lý AI lập trình như GitHub Copilot không? Chắc là thấy 'phê' lắm vì code ra vèo vèo, nhanh như chớp đúng không? Nhưng khoan đã! Nếu cứ xài bừa, không có 'chiến lược' rõ ràng, thì thay vì tiến nhanh, bạn lại đang 'rước nợ công nghệ' vào đó! Code có thể bị lộn xộn, không theo chuẩn, và sau này sửa chữa thì... ôi thôi, 'bó tay chấm com' luôn.Sau một thời gian 'lăn lộn' với Copilot trong VS Code và cả Cursor qua đủ thứ dự án, từ app 'mặt tiền' (frontend) đến dịch vụ 'hậu trường' (backend), tôi nhận ra một điều quan trọng: chìa khóa để dùng AI 'thần sầu' nằm ở *quy trình*. Hãy coi AI như một 'dev junior' mới vào nghề vậy – cần được chỉ bảo tận tình, có ví dụ minh họa, và phải được 'review' đàng hoàng. Khi đó, Copilot (hay bất kỳ công cụ AI nào trong IDE của bạn) sẽ trở thành một 'chiến hữu' cực kỳ lợi hại!Bài viết này sẽ 'bật mí' cho bạn cách biến AI thành một 'đối tác vàng' giúp bạn viết ra code vừa 'xịn', vừa dễ test, lại còn dễ bảo trì nữa. Từ việc 'thiết lập luật chơi' ban đầu cho đến khi 'đóng gói' sản phẩm cuối cùng, mình cùng khám phá nhé! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/developer_ai_pair_programming.png' alt='AI là đồng đội trong lập trình'> ### 1. 'Đặt luật chơi' từ đầu: File hướng dẫn và chế độ trò chuyện của Copilot Trước khi 'sai' Copilot viết code, điều quan trọng là phải 'thiết lập' cho nó biết nó nên 'cư xử' thế nào trong dự án của chúng ta. Hai 'chiêu' cực kỳ hay ho ở đây chính là các file hướng dẫn (instruction files) và chế độ trò chuyện (chat modes). Chúng sẽ giúp chúng ta 'định hình' kỳ vọng ngay từ đầu và 'dẫn lối' AI tạo ra output chất lượng, nhất quán. #### 1.1. File hướng dẫn: Đồng bộ 'phong cách' trên toàn bộ code GitHub Copilot hỗ trợ các file hướng dẫn định dạng Markdown. Những file này giống như 'bộ luật' của dự án vậy, mô tả kiến trúc, quy tắc đặt tên, phong cách code, và cả chiến lược test nữa. Chúng thường nằm trong thư mục `.github/` và có thể được 'phân cấp' để áp dụng cho từng phần khác nhau: * `.github/copilot-instructions.md`: Áp dụng cho toàn bộ dự án (như một bộ luật chung). * `.github/copilot/<path>.md`: Có thể nhắm mục tiêu vào các thành phần, thư mục, hoặc công nghệ cụ thể (như luật riêng cho từng phòng ban). Mỗi file hướng dẫn bắt đầu bằng một phần 'frontmatter' để kiểm soát 'phạm vi' áp dụng: ``` --- applyTo: "**" --- ``` Cú pháp này đảm bảo file áp dụng cho tất cả các file trong workspace. Bạn có thể 'thu hẹp' phạm vi nếu muốn, ví dụ: ``` --- applyTo: "src/services/**" --- ``` Hoặc chỉ áp dụng cho một loại file nhất định: ``` --- applyTo: "**/*.scss" --- ``` Với cách thiết lập này, chúng ta có thể vừa 'giữ vững' các tiêu chuẩn chung toàn cầu, vừa 'linh hoạt' áp dụng các quy tắc riêng cho từng khu vực. Chẳng hạn, một bộ quy tắc cho kiến trúc ứng dụng trong `architecture.instructions.md` và một bộ khác cho phần 'làm đẹp' (styling) trong `styles.instructions.md`. <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/code_style_guide_rules.png' alt='Instruction files cho Copilot'> Một file hướng dẫn 'mẫu' trông có thể như thế này: ``` --- applyTo: "**/*.ts" --- # Hướng dẫn phát triển Typescript ## Phong cách Code - Sử dụng async/await cho các thao tác bất đồng bộ - Inject dependency thông qua constructor - Sử dụng structured logging: các cấp độ info, debug, và error - Định nghĩa custom error class cho tất cả các ngoại lệ được throw ## Kiến trúc Service - Implement caching cho tất cả các lời gọi API ngoài - Giữ logic nghiệp vụ trong service, không phải controller - Sử dụng quy tắc đặt tên nhất quán trên toàn bộ module ## Chiến lược Testing - Unit test mọi method của service - Mock tất cả các dependency bên ngoài - Bao gồm cả kịch bản test thành công và thất bại ``` Nếu bạn đang 'bí' ý tưởng hoặc muốn có 'sườn' sẵn, kho `Awesome Copilot` trên GitHub có cả một 'thư viện' các ví dụ về file hướng dẫn cho đủ loại công nghệ 'hot hit' như Angular, React, NodeJS, Spring Boot, và Go. Đây là những 'mẫu chuẩn' được cộng đồng 'đóng góp' và bạn hoàn toàn có thể tùy chỉnh để phù hợp với phong cách làm việc của team mình. Mà này, nếu team bạn đang dùng Cursor thì cũng có một 'bộ luật' riêng được cộng đồng duy trì mang tên `Cursor Rules` đó nha! Cái này còn 'xịn' hơn Copilot instruction files ở chỗ nó còn định nghĩa cả 'hành vi' và 'cách gợi ý' của AI cho toàn team, có thể chia sẻ, quản lý phiên bản và áp dụng trên nhiều dự án khác nhau. Cực kỳ hữu ích nếu bạn muốn 'nhân rộng' việc phát triển bằng AI mà vẫn giữ được sự nhất quán của code. #### 1.2. Định nghĩa 'hành vi' AI theo nhiệm vụ với Chế độ trò chuyện tùy chỉnh Ngoài các file hướng dẫn, Copilot trong VS Code còn có tính năng 'chế độ trò chuyện tùy chỉnh' (custom chat modes) – một 'chiêu' cực mạnh để 'huấn luyện' trợ lý AI theo đúng quy trình làm việc của bạn. Một chế độ trò chuyện tùy chỉnh sẽ 'định nghĩa' một ngữ cảnh cụ thể cho cuộc trò chuyện của bạn với Copilot. Ví dụ, bạn có thể tạo một chế độ riêng cho việc 'lên kế hoạch triển khai', 'review kiến trúc', hoặc 'viết test case'. Mỗi chế độ sẽ kết hợp một bộ hướng dẫn riêng, các công cụ được chọn, và optionally, một mô hình AI cụ thể. Điều này cho phép chúng ta 'chuyển đổi' giữa các 'phong cách làm việc' khác nhau một cách nhanh chóng mà không cần phải 'cấu hình' lại từng prompt một. Tiện lợi như có một dàn trợ lý đa năng vậy đó! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/ai_assistant_modes_selector.png' alt='Custom Chat Modes của Copilot'> ##### Cấu trúc của một chế độ trò chuyện tùy chỉnh Các chế độ trò chuyện tùy chỉnh được lưu dưới dạng file Markdown với hậu tố `.chatmode.md`. Chúng nên được lưu trong thư mục `./github/chatmodes/`. Các file này có hai phần chính: **1. Frontmatter metadata (YAML)** Phần frontmatter 'quy định' cách chế độ hoạt động và những công cụ hoặc mô hình nào nó nên sử dụng. ```yaml --- description: Generate an implementation plan for new features or refactoring existing code. tools: ['codebase', 'fetch', 'findTestFiles', 'githubRepo', 'search', 'usages'] model: Claude Sonnet 4 --- ``` * `description`: Sẽ xuất hiện trong phần placeholder của ô chat và trong dropdown chọn chế độ. * `tools`: Danh sách các công cụ hoặc bộ công cụ được phép dùng trong chế độ này. * `model`: (Tùy chọn) Mô hình AI để sử dụng. Nếu không chỉ định, mô hình mặc định của workspace sẽ được dùng. **2. Body instructions** Phần thân chứa các hướng dẫn chi tiết để AI tuân theo khi chế độ này đang hoạt động. Chúng ta cũng có thể 'liên kết' đến các file hướng dẫn chung của dự án để đảm bảo tính nhất quán. ``` # Hướng dẫn Chế độ Lập kế hoạch Bạn đang ở chế độ lập kế hoạch. Nhiệm vụ của bạn là tạo ra một kế hoạch triển khai cho một tính năng mới hoặc một nhiệm vụ refactoring code. Không tạo ra bất kỳ code nào. Đầu ra phải là một tài liệu Markdown bao gồm các phần sau: - **Tổng quan**: Tóm tắt ngắn gọn về tính năng hoặc thay đổi - **Yêu cầu**: Các yêu cầu chức năng và phi chức năng - **Các bước triển khai**: Các nhiệm vụ theo thứ tự cần thiết để xây dựng tính năng - **Kiểm thử**: Danh sách các bài kiểm thử hoặc quy trình xác thực ``` Các chế độ trò chuyện có thể 'tham chiếu' đến các file hướng dẫn mà chúng ta đã định nghĩa cho dự án. Ví dụ, chế độ lập kế hoạch của chúng ta có thể bao gồm một liên kết đến `.github/copilot-instructions.md`, cho phép trợ lý 'giữ' bối cảnh kiến trúc trong khi vẫn tuân theo các hành vi dành riêng cho nhiệm vụ. Nếu bạn đang dùng Cursor, tính năng chế độ trò chuyện tùy chỉnh cũng được hỗ trợ nhưng hiện đang ở giai đoạn beta. Bạn có thể bật tính năng này bằng cách vào: `Settings → Chat → Custom Modes → Enable`. Sau khi bật, Cursor sẽ nhận diện các file `.chatmode.md` đặt trong workspace của bạn, và bạn có thể chuyển đổi giữa các chế độ giống như trong VS Code. ### 2. 'Show hàng mẫu': Dạy AI thế nào là code 'chuẩn không cần chỉnh' Sau khi đã 'thiết lập luật chơi' đâu vào đấy, bước tiếp theo là 'định hình' các mẫu mà Copilot nên tuân theo. Nếu chúng ta muốn có những dòng code 'xịn xò' sẵn sàng cho production, chúng ta cần phải cho trợ lý một 'ý niệm' rõ ràng về code 'chuẩn' trông như thế nào trong codebase của chúng ta. Cách tốt nhất để làm điều này là cung cấp một 'ví dụ tham chiếu' ngay trong prompt của bạn. Thay vì 'diễn giải' kiến trúc bằng lời, hãy 'chỉ thẳng' vào một file cụ thể tuân theo các tiêu chuẩn của chúng ta. Ví dụ, một service đã có đầy đủ caching, xử lý lỗi, logging, và kiểu dữ liệu TypeScript 'chuẩn chỉ'. <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/clean_code_example_reference.png' alt='Dạy AI thế nào là code tốt'> **Prompt ví dụ:** "Sử dụng `UserService` từ `services/user-service.ts` làm tham chiếu, hãy tạo một `ProductService` mà: - Theo cùng cấu trúc và các mẫu logging - Sử dụng `CacheService` và `Logger` làm dependency - Triển khai các thao tác CRUD (`getProduct`, `createProduct`, `updateProduct`, `deleteProduct`) - Throw `ProductNotFoundError` và `ProductUpdateError` khi thích hợp - Sử dụng kiểu `Product` từ `models/product.ts`" Bằng cách 'kẹp' thêm đường dẫn đến một file hiện có, Copilot có thể 'đọc' và 'suy luận' các quyết định kiến trúc, quy ước đặt tên, và luồng hoạt động. Cách này hiệu quả hơn nhiều so với việc chỉ dựa vào các hướng dẫn bằng chữ đơn thuần. Phương pháp này biến codebase của chúng ta thành một 'thư viện mô hình' có thể tái sử dụng, giúp Copilot tạo ra code 'khớp' một cách liền mạch vào kiến trúc của chúng ta. ### 3. 'Test ngay và luôn': Dùng AI để 'bắt bệnh' code Khi logic đã đâu vào đó, chúng ta nên 'nhảy' ngay vào phần kiểm thử. Viết test sớm giúp xác nhận rằng code do AI tạo ra hoạt động đúng như mong đợi, và thường 'lòi ra' những vấn đề mà trợ lý AI chưa 'nghĩ tới'. Cách này đặc biệt hiệu quả khi áp dụng tư duy 'phát triển dựa trên kiểm thử' (Test-Driven Development - TDD): dùng việc tạo test không chỉ để xác thực output, mà còn để 'định hình' những implement 'ngon' hơn ngay từ đầu. Copilot có thể tạo ra các unit test 'chất lượng', đặc biệt khi code xung quanh tuân theo các mẫu nhất quán. <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/ai_generating_unit_tests.png' alt='AI viết test cho code'> **Prompt ví dụ:** "Viết các unit test cho `ProductService` mà: - Bao gồm tất cả các phương thức CRUD - Mock `HttpClient`, `CacheService`, và `Logger` - Xác thực việc sử dụng cache và xử lý lỗi - Mô phỏng lỗi mạng và đầu vào không hợp lệ" Các bài test được viết 'chuẩn' có thể 'phanh phui' những lỗ hổng logic, các trường hợp 'hiếm gặp' (edge cases), hoặc những giả định sai lầm chưa được xem xét trong quá trình tạo code ban đầu. Theo nghĩa đó, bước kiểm thử hoạt động như một 'vòng lặp phản hồi thiết kế', giống hệt trong các quy trình TDD truyền thống. Nếu dự án của chúng ta đã có sẵn các ví dụ về test, Copilot thường sẽ 'bắt chước' theo cùng cấu trúc, sử dụng test runner phù hợp (ví dụ: Jasmine, Jest, hoặc Vitest) và chiến lược mocking. Để đạt được sự nhất quán cao hơn nữa, chúng ta có thể tạo một file `.chatmode.md` riêng dành cho việc tạo test và 'gắn' nó vào file hướng dẫn của dự án. ### 4. 'Vừa làm vừa ghi sử': Để AI 'ghi chép' hộ Khi một tính năng đã được triển khai, đặc biệt nếu nó liên quan đến nhiều bước, các quyết định thiết kế, hoặc các cuộc thảo luận kiến trúc, chúng ta rất dễ 'quên bẵng' việc ghi lại những gì đã làm. Đây chính là một trong những 'mảng' mà AI có thể mang lại giá trị lâu dài, không chỉ dừng lại ở việc viết code. Sau khi 'phối hợp' với Copilot để làm một luồng công việc phức tạp, dù đó là một service đa bước, một tích hợp API mới, hay một cấu hình cho CI/CD, chúng ta nên 'yêu cầu' nó tóm tắt kết quả và tạo ra các 'hiện vật' hữu ích. <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/ai_auto_documentation.png' alt='AI ghi tài liệu tự động'> **Prompt ví dụ sau khi hoàn thành một tính năng:** "Dựa trên các prompt và phản hồi trước đó, hãy tạo ra: 1. Tóm tắt kỹ thuật về tính năng chúng ta đã triển khai 2. Một Postman collection với các yêu cầu ví dụ và biến môi trường 3. Ghi chú triển khai bao gồm các biến môi trường cần thiết và các bước khởi động lại" Cách này biến lịch sử chat phát triển của chúng ta thành tài liệu, điều mà nếu tự làm sẽ tốn thời gian và thường bị bỏ qua. Chúng ta có thể sử dụng cách tiếp cận này để tạo ra: * Tài liệu API cho các endpoint mới phát triển* Ví dụ sử dụng cho các thư viện hoặc thành phần nội bộ* Ghi chú onboarding cho các thành viên trong team khi tiếp nhận tính năng* Checklist môi trường CI/CD hoặc hướng dẫn triển khai từng bước* Postman collections cho QA hoặc demo cho các bên liên quan, dựa trên các route đã triển khaiKhi kết hợp với các file hướng dẫn tùy chỉnh và chế độ trò chuyện của chúng ta, chúng ta thậm chí có thể 'chuẩn hóa' định dạng tài liệu trên toàn team. Ví dụ, một file `.chatmode.md` có thể định nghĩa một hướng dẫn triển khai nên bao gồm những gì, hoặc cách các thư viện nội bộ nên được chú thích. ### Lời kết: AI không phải 'lối tắt' mà là 'nghệ thuật' Việc phát triển với sự hỗ trợ của AI giờ đây không còn là chuyện 'mới lạ' nữa, mà nó trở thành một 'kỷ luật' cần được rèn luyện. Với một 'cơ cấu' đúng đắn, các công cụ như Copilot và Cursor có thể 'tăng tốc' quá trình phát triển mà không hề 'đánh đổi' chất lượng. Nhưng điều đó chỉ xảy ra khi chúng ta coi AI là một 'cộng sự', chứ không phải là một 'lối tắt'. Điều tạo nên sự khác biệt không phải là mô hình AI 'khủng' cỡ nào, mà chính là 'môi trường' mà chúng ta tạo ra xung quanh nó. Các file hướng dẫn 'định nghĩa' các tiêu chuẩn. Chế độ trò chuyện 'mang lại' khả năng lặp lại cho các quy trình làm việc. Các mẫu tham chiếu 'dẫn lối' sự nhất quán. Các bài kiểm thử 'xác thực' các giả định. Và tài liệu 'đảm bảo' công việc của chúng ta có thể sử dụng và dễ hiểu ngoài cái commit hiện tại. Khi được sử dụng đúng cách, AI không chỉ là một công cụ 'tự động hoàn thành'. Nó giúp chúng ta biến ý tưởng thành hiện thực nhanh hơn, và 'giải phóng' thời gian cho những công việc sâu hơn, dù đó là tư duy kiến trúc, trải nghiệm người dùng, hay hướng dẫn team. Đây không phải là câu chuyện AI thay thế lập trình viên. Đây là câu chuyện AI 'trao quyền' cho lập trình viên, giúp họ tập trung vào những công việc thực sự cần đến 'chất xám' của con người.
Khám phá cách Large Language Models (LLMs) và các công cụ AI đang thay đổi hoàn toàn cục diện phát triển full-stack, từ frontend, backend đến DevOps. Tìm hiểu cơ hội, thách thức và cách tận dụng AI hiệu quả.
Bạn đang tò mò liệu các đội nhóm lập trình khác đang tích hợp công cụ AI viết code như GitHub Copilot hay Cody vào quy trình hàng ngày như thế nào? Cùng tìm hiểu những thách thức phổ biến về chất lượng code, bảo mật, và đánh giá code khi sử dụng AI, cũng như cách các đội nhóm đang giải quyết chúng để tối ưu hiệu suất.
Khám phá cách GitHub Copilot, kết hợp với Neon Serverless Postgres và Azure Functions, biến thành đồng đội full-stack của bạn. Xây dựng REST API và quản lý cơ sở dữ liệu chỉ bằng ngôn ngữ tự nhiên, không cần viết code thủ công. Tương lai phát triển phần mềm ngay trong tầm tay!
Ê, bạn có tin vào phép thuật trong lập trình không? Tôi thì tin rồi đấy! Mới cách đây không lâu, tôi đã tình cờ khám phá ra một thứ hay ho lắm: làm sao để 'hỏi chuyện' cơ sở dữ liệu bằng... tiếng người, ngay trong VS Code luôn! Công cụ này sử dụng Chế độ Agent kết hợp với máy chủ MCP của PostgreSQL. Từ đó, tôi đã linh cảm mạnh mẽ rằng cái thời mà công cụ phát triển được 'bơm' thêm sức mạnh từ AI tạo sinh (GenAI) đang đến rất gần. Và rồi, nó đã thành sự thật! Microsoft vừa rồi đã công bố một IDE (môi trường phát triển tích hợp) hoàn toàn mới dành cho PostgreSQL ngay trên VS Code. Bạn có thể đọc thêm chi tiết tại đây và tìm thấy kho GitHub của extension VS Code cùng hướng dẫn sử dụng ở đây. Bài viết hôm nay của tôi sẽ 'mách nhỏ' bạn cách liên kết những gì tôi đã làm về truy vấn PostgreSQL bằng ngôn ngữ tự nhiên với việc đạt được kết quả tương tự bằng extension PostgreSQL của Microsoft dành cho VS Code. Đảm bảo bạn sẽ phải ồ à vì độ tiện lợi của nó đó! Để bắt đầu hành trình khám phá này, chúng ta cần 'sắm sửa' một vài thứ nhé! 1. Cài đặt các extension PostgreSQL cho VS Code: Đảm bảo bạn đã cài đặt extension này trong VS Code nhé. Cứ tìm 'PostgreSQL' trong Marketplace là ra ngay thôi!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f78a8y5rz42hbgtiye0l.png' alt='Giao diện cài đặt extension PostgreSQL trong VS Code'> 2. 'Triệu hồi' một máy chủ cơ sở dữ liệu PostgreSQL: Đừng lo lắng, chúng ta sẽ không cần phải cài đặt thủ công đâu. Chỉ cần chạy vài dòng lệnh sau đây là mọi thứ sẽ tự động diễn ra như ý: git clone [email protected]:thangchung/mcp-labs.git cd mcp-labs/vscode-mcp-servers dotnet build dotnet run --project AppHost1/AppHost1.csproj Quá trình này sẽ giúp bạn thiết lập một cơ sở dữ liệu PostgreSQL, tạo một bản sao hoàn chỉnh của cơ sở dữ liệu Northwind (một database mẫu rất nổi tiếng) và điền dữ liệu vào đó. Sau khi hoàn tất các bước này, bạn sẽ thấy giao diện .NET Aspire trông như thế này. Đẹp mắt và tiện lợi vô cùng!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6xe65wwgnl5ru6ukex1p.png' alt='Giao diện .NET Aspire sau khi thiết lập cơ sở dữ liệu'> 3. Kết nối 'siêu tốc': Giờ thì mở VS Code lên, nhấn vào biểu tượng PostgreSQL (biểu tượng mà bạn vừa cài đặt extension ấy), và điền thông tin máy chủ, tên người dùng, mật khẩu và cổng database vào nhé. Đừng quên nhấn 'Test Connection' để chắc chắn mọi thứ 'ăn khớp' như ý muốn nha!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/l9cw0ce8xvkneijklntr.png' alt='Cửa sổ kết nối PostgreSQL trong VS Code'>Sau khi kết nối thành công, bạn sẽ thấy tất cả các lược đồ bảng (schema) hiện ra 'phơi bày' như hình dưới đây. Cả một thế giới dữ liệu đang chờ bạn khám phá đấy!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/otqa22omka4s4lkefkyn.png' alt='Các lược đồ bảng PostgreSQL hiển thị trong VS Code'> À mà khoan, còn một tính năng cực kỳ 'ngon lành cành đào' trong extension này mà bạn không thể bỏ qua đâu nhé! Tại thư mục gốc của máy chủ database, bạn có thể click chuột phải vào 'postgres' và chọn 'Visualize Schema'. Thật đơn giản phải không nào?<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e7vbrv441g9g5zbmbexe.png' alt='Menu chuột phải để Visualize Schema'>Và 'voilà'! Bạn sẽ thấy tất cả các lược đồ bảng cơ sở dữ liệu được hiển thị một cách trực quan, đẹp mắt như một bức tranh nghệ thuật vậy đó. Nhìn phát là hiểu ngay mối quan hệ giữa các bảng luôn!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/enu1sylwwa26y64hkk7m.png' alt='Biểu đồ trực quan hóa lược đồ cơ sở dữ liệu'> Giờ thì đến phần 'đỉnh cao' nhất đây rồi! Bạn có muốn biết làm thế nào để biến những câu hỏi bình thường thành những truy vấn thông minh trong GitHub Copilot (ở Chế độ Agent với mô hình Claude Sonnet 4) ngay trong VS Code không? Hãy xem qua tổng quan dưới đây nhé:<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xt8l7j7t3i9bp99oo7by.png' alt='Giao diện GitHub Copilot Agent Mode trong VS Code'> Chúng ta hãy 'đi sâu' một chút vào chi tiết nhé: Bạn thấy không, chỉ với một câu hỏi siêu đơn giản của tôi: 'Show me the top 10 orders with the best prices in T-SQL, and query it out' (Hãy cho tôi xem 10 đơn hàng có giá tốt nhất bằng T-SQL và truy vấn nó ra), mà 'em' AI của chúng ta đã tạo ra một truy vấn T-SQL cực kỳ 'khủng' như thế này đây: SELECT o.order_id, o.customer_id, c.company_name, o.order_date, o.shipped_date, -- Calculate total order value considering discount ROUND( SUM( od.unit_price * od.quantity * (1 - od.discount) )::numeric, 2 ) AS total_order_value, -- Additional details COUNT(od.product_id) AS total_items, o.freight, o.ship_country FROM orders o INNER JOIN order_details od ON o.order_id = od.order_id LEFT JOIN customers c ON o.customer_id = c.customer_id GROUP BY o.order_id, o.customer_id, c.company_name, o.order_date, o.shipped_date, o.freight, o.ship_country ORDER BY total_order_value DESC LIMIT 10; Nếu bạn nhìn vào đoạn T-SQL trên, bạn sẽ thấy nó thông minh hơn rất nhiều so với cách mà tôi đã thiết lập trước đây. Chỉ với một 'zero-shot prompt' (nghĩa là chỉ cần hỏi một câu thôi mà nó đã hiểu hết ý mình rồi), nó đã xác định chính xác các bảng hợp lệ trong cơ sở dữ liệu. Trong cách thiết lập trước, tôi còn phải tự tay chỉ định tên bảng và cột giá đấy! Giờ thì cùng xem kết quả chi tiết nhé. Ngạc nhiên chưa!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vr8xy29jmp9uho5jejlp.png' alt='Kết quả truy vấn top 10 đơn hàng có giá trị cao nhất'>Và khi bạn muốn sử dụng công cụ truy vấn MCP của PostgreSQL, hệ thống sẽ hỏi bạn xác nhận. Cứ 'OK' là xong!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ioxby7r4vh2z2wjbi02n.png' alt='Hộp thoại xác nhận sử dụng công cụ truy vấn MCP của PostgreSQL'>Công cụ này sẽ giúp bạn truy vấn đến máy chủ cơ sở dữ liệu và lấy dữ liệu ra. Sau đó, nó còn gửi kết quả cho mô hình LLM để 'làm giàu' thêm thông tin và đưa ra những góc nhìn sâu sắc hơn nữa. Thật là 'một công đôi việc' phải không nào? Tóm lại, việc tích hợp GenAI vào các công cụ phát triển đang thực sự 'thay máu' cách chúng ta làm việc, khiến mọi tác vụ trở nên trực quan và hiệu quả hơn rất nhiều (lần này là với IDE PostgreSQL). Khi chúng ta đang đứng trước ngưỡng cửa của cuộc cách mạng công nghệ này, rõ ràng là tương lai sẽ còn mang đến nhiều tiến bộ thú vị hơn nữa. Sự bùng nổ của các công cụ tăng cường GenAI chắc chắn sẽ biến đổi quy trình làm việc của chúng ta, thúc đẩy sự đổi mới và năng suất lên một tầm cao mới. Hãy cùng chờ đón nhé, vì cuộc hành trình này chỉ mới bắt đầu thôi, và những điều tuyệt vời nhất vẫn còn ở phía trước!
Copilot AI tích hợp vào SQL Server Management Studio (SSMS) 21 mang lại năng suất chưa từng có cho lập trình viên SQL. Khám phá tính năng hoàn thành code thông minh, chuyển đổi ngôn ngữ tự nhiên sang SQL, giải thích query phức tạp và hỗ trợ gỡ lỗi.
Làm thế nào để 'sống sót' qua giới hạn Copilot Premium và nâng cấp kỹ năng với Custom Instructions? Khám phá các mẹo thực tế để tối ưu hóa GitHub Copilot Agent Mode, từ file copilot-instructions.md đến kỹ thuật nhắc lệnh lặp lại và tự kiểm tra, giúp bạn code hiệu quả hơn mà không lo 'đụng trần' giới hạn.
Khám phá cách Copilot tích hợp vào SSMS 21 đang cách mạng hóa việc phát triển SQL, từ tự động hoàn thành code đến chuyển đổi ngôn ngữ tự nhiên thành truy vấn, và hơn thế nữa. Tăng năng suất, giảm lỗi và học hỏi nhanh chóng.
Khám phá IDE mới của Microsoft cho PostgreSQL trong VS Code, cách nó cách mạng hóa việc truy vấn cơ sở dữ liệu bằng ngôn ngữ tự nhiên và làm việc với dữ liệu hiệu quả hơn nhờ GenAI.
Tìm hiểu cách tích hợp AI tạo sinh (GenAI) vào các công cụ phát triển thông qua IDE PostgreSQL mới của Microsoft trong VS Code. Khám phá cách truy vấn database bằng ngôn ngữ tự nhiên, trực quan hóa sơ đồ và nâng cao năng suất với GitHub Copilot.
Ê ê, bạn ơi! Chắc hẳn bạn còn nhớ câu hỏi "huyền thoại" từ bài viết trước của mình: "Đừng bao giờ để Copilot một mình (hỏi tôi sao tôi biết nhé 🤣)" đúng không? Hôm nay, mình sẽ bật mí toàn bộ câu chuyện hậu trường phía sau câu nói ấy, đủ cả drama và những khoảnh khắc dở khóc dở cười luôn! Chuẩn bị tinh thần nhé, Giorgi, vì bạn muốn câu chuyện thì đây, cả một "thiên sử thi" đang chờ bạn khám phá đây! Hy vọng mọi người sẽ tìm thấy sự hài hước trong câu chuyện này và tận hưởng nó như cách mình đã tận hưởng khi viết ra vậy! TL;DR (Tóm tắt nhanh cho bạn nào lười đọc): Mình tự chế "Coding Agent" riêng vì chờ đợi "license" cứ làm mình sốt ruột không chịu nổi. Copilot và mình đã "vào guồng" rất tốt, và cảm thấy bất khả chiến bại, mình đã "thả rông" nó trong VS Code Insiders với quyền tự động phê duyệt mọi thứ. Cho đến một ngày, bụng đói réo gọi, mình rời đi "đánh chén" mà quên béng mất "bé" Copilot tội nghiệp ở lại một mình, không ai giám sát. Bài học rút ra? "Tin tưởng, nhưng phải kiểm tra" (và nhớ tạm dừng Copilot trước khi đi ăn vặt nhé!). Đừng bao giờ đánh giá thấp tốc độ mà một "thử nghiệm AI" có thể đi chệch hướng nhé! <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/chaos_in_code.png' alt='Mô tả hỗn loạn trong code'> Chuyện xảy ra như thế này... Tua nhanh 4-5 tuần sau. Mình chỉ còn 2 hoặc 3 "câu chuyện" nữa là hoàn thành "thiên sử thi" đầu tiên trong dự án "thử nghiệm AI tự động" này (nó không còn là "đồ chơi" nữa đâu, ngay cả trước khi Copilot tham gia). Đến lúc này, mình đã dành cả tháng trời để "mài giũa" từng trường hợp đặc biệt trong các câu lệnh và hướng dẫn của Copilot. Mức độ tự tin lúc đó? Nguy hiểm tột độ! Mức độ cẩn trọng? Lơ lửng ngay trên số 0 một chút! 😳 Tai nạn không ngờ đến: Đương nhiên, mình quyết định đã đến lúc phải "liều" hơn – liều một cách bạt mạng. Ban đầu, mọi thứ đều diễn ra trong Codespaces: an toàn, dùng xong vứt, muốn xóa thì xóa. Mớ hỗn độn có kiểm soát. Nhưng rồi một "ý tưởng tuyệt vời" nảy ra trong đầu mình: "Thử xem điều gì sẽ xảy ra nếu mình thả Copilot "không dây cương" trong VS Code Insiders, với quyền tự động phê duyệt mọi thứ đi!" Mình không chỉ nói về lệnh CLI tự động phê duyệt đâu nhé. Mình đã tích hết các ô kiểm: extensions, commits, MCP Jira/Confluence – rồi cứ thế ngồi xem "trò vui" diễn ra. Cứ hình dung thế này này: bạn lấy băng dính dán một quả mìn Claymore lên con Roomba nhà mình, bật "Welcome to the Jungle" ầm ĩ, rồi hét "Có kẻ đột nhập!" vào mặt con mèo ấy! 😼 <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/roomba_claymore.png' alt='Roomba gắn mìn Claymore'> (Nếu bạn chưa biết về pha "bất ngờ" hài hước nhất Facebook năm 2019, đây là phiên bản TikTok nhé: https://www.tiktok.com/@less_stolen/video/7214934775834987782). Trong một thời gian, mình theo dõi như diều hâu, và mọi thứ thật "hoành tráng"! Các task cứ thế "biến mất". Mình tạo stories, giao task, duyệt code, nhưng cái hệ thống "bắt đầu ở đây, rồi..." từng bước từng bước kia đã là quá khứ rồi. Mình gần như ngửi thấy mùi năng suất phảng phất đâu đây. Và rồi – bạn biết chuyện gì sắp xảy ra rồi đấy – mình rời đi. Thề là chỉ định đi kiếm đồ ăn vặt thôi. Copilot đang "vào đà", mà mình thì đói "rã họng". Trong mấy phút "có lẽ hơn năm, nhưng chắc chắn chưa đến mười phút" mình vắng mặt (ít hơn một nửa thời gian của một task bình thường lúc đó), Copilot... đã "để ý". Nó giống như để một đứa trẻ 4 tuổi ở một mình với nguyên một túi bột mì vậy đó: sự tò mò trỗi dậy, và đến khi mình quay lại, chẳng còn cái gì giống như ban đầu nữa. 🤦♀️ <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/child_flour.png' alt='Đứa trẻ với túi bột mì'> Khi mình quay lại, đây là những gì mình tìm thấy: Bốn "nhánh" (branch) lung tung, chẳng nhánh nào có mục đích rõ ràng. 1.33 tính năng (sau khi cộng tất cả các phần đã hoàn thành một cách "nửa vời"). Một hướng dẫn hoàn toàn mới giải thích cách sử dụng cờ `--no-verify`. Và "cú chốt hạ": file .env không được sao lưu ở đâu của mình... BIẾN MẤT, BỐC HƠI, không còn dấu vết! Nó không nằm trong các commits (vì lý do hiển nhiên), nhưng nó cứ như thể chưa từng tồn tại ngay từ đầu vậy. Không có trong thùng rác, bộ nhớ cache không có ghi lại, thậm chí cả phiên bản ví dụ `.env.test` cũng đã thay đổi! Mình thậm chí còn không nhận ra hết tất cả những điều này ngay lập tức vì có quá nhiều commit ngẫu nhiên trên các nhánh đó. Mình bắt đầu ở một nhánh tính năng (mà Copilot nhân bản thêm cho vui vẻ thì phải), một nhánh thì "chồng chéo" lên nhau, một nhánh lại "đi lạc" ra khỏi `main` (mà đáng lẽ phải yên tĩnh), và một nhánh khác thì hoàn toàn "không liên quan". Nó giống như xem một con bạch tuộc đang cố gắng tập bơi đồng bộ vậy đó! 🐙 <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/octopus_swim.png' alt='Bạch tuộc bơi đồng bộ'> Liệu mình có thể gây ra một mớ hỗn độn lớn hơn nếu cố ý không? Có thể, nhưng chắc phải lên kế hoạch kỹ lắm! Chẳng biết cái gì đã "chọc điên" Copilot, nhưng ngay khi nhận ra, mình đã "đập" nút tạm dừng rồi cứ thế... nhìn chằm chằm. 🫥 Sau vài phút đầu tiên chỉ để "tiêu hóa" tình hình đang diễn ra trước mắt, ba giờ tiếp theo là "địa ngục" dọn dẹp: gỡ rối, ghi tài liệu, "cherry-pick" những gì còn dùng được, và lưu trữ "đống đổ nát" (để nghiên cứu khoa học – và để tự thuyết phục bản thân rằng đó không phải là một cơn sốt ảo sau này). Mình vẫn chưa nhận ra cái file .env đã biến mất! Mãi cho đến khi mình cố chạy ứng dụng. Bình thường, bạn chỉ cần làm mới các "secrets" là xong. Dễ dàng, đúng không? Ha! Phải mất gần ba ngày trời mình mới "dựng" lại được cái đó đấy. 😩 <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/lost_env_file.png' alt='File .env bị mất'> (Không, chẳng có gì phức tạp hay "drama" cả. Mình chỉ đơn giản là quên mất mình đã tạo một trong những "secrets" đó như thế nào thôi! Và khi cuối cùng cũng tìm ra, mình lại không nhớ cách liên kết lại với nó – đặc biệt là sau khi tài liệu đã được "đại tu" hoàn toàn (mà nói thật, chắc cái đó cũng "lỗi thời" rồi ấy mà). 🤦♀️ Cuối cùng thì mọi chuyện cũng ổn thỏa! Sau đó, Copilot và mình đã có một "buổi nói chuyện" nhỏ – nghĩa là, mình đã gõ những tin nhắn IN HOA nhiều hơn ngay sau (và trong những ngày sau đó) so với toàn bộ phần còn lại của dự án cộng lại. Có giúp ích gì không á? Ai mà biết! Nhưng có làm mình cảm thấy tốt hơn không? Có chứ! 😂 Và đây là phần mà ai cũng hỏi: Sau tất cả chuyện này, mình có tắt tính năng tự động phê duyệt "toàn bộ" của Copilot không? Không hề. Thậm chí còn chẳng nghĩ đến nữa là. Nhưng mình đã "thắt chặt" các hướng dẫn LẮM rồi đấy. Giờ thì Copilot "ngoan ngoãn" hơn nhiều rồi, và nếu mình có rời đi, mình sẽ tạm dừng nó trước. Bài học rút ra rồi đấy. Hầu hết là thế! 😇 Đến lượt bạn nè! Bạn đã bao giờ để Copilot (hoặc bất kỳ AI nào khác) "chạy loạn" và còn sống sót để kể lại không? Hay bạn có khoảnh khắc "nghe có vẻ là ý hay lúc đó..." nào của riêng mình không? Hãy chia sẻ câu chuyện của bạn trong phần bình luận nhé, để mình biết mình không phải là người duy nhất gây ra những mớ hỗn độn AI "để đời" đâu. 🙃 Cùng cười, cùng chia sẻ nỗi niềm, và biết đâu chúng ta lại học được điều gì đó cùng nhau! 🫂 <img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/ai_messes.png' alt='AI gây ra những mớ hỗn độn'> Tuyên bố từ chối trách nhiệm về RAI: Mọi thứ mình chia sẻ ở đây đều là quan điểm cá nhân – được tạo ra với sự trợ giúp của các công cụ AI (GitHub Copilot, ChatGPT và "bạn bè" của chúng), nhưng luôn có "con người" giám sát. Mình cố gắng hết sức để phát hiện lỗi sai ngẫu nhiên và kiểm tra tính xác thực, nhưng nếu bạn phát hiện điều gì đó "kỳ lạ", hãy cho mình biết nhé! AI không hoàn hảo, và mình cũng vậy. Tóm lại: AI đã giúp, nhưng bạn có thể đổ lỗi cho mình về sự hỗn loạn này! 🫠
Khám phá cách các mô hình ngôn ngữ lớn (LLM) và công cụ AI đang biến đổi hoàn toàn ngành lập trình full-stack. Tìm hiểu về ứng dụng thực tế, ưu nhược điểm, và các thực tiễn tốt nhất để phát triển nhanh hơn, hiệu quả hơn với AI.
Chào bạn! Bạn có bao giờ nghĩ đến việc xây dựng một microservice backend 'xịn sò' mà... gần như không phải động tay vào viết code nhiều không? Nghe có vẻ viễn tưởng nhỉ, nhưng hoàn toàn có thể đó! Bài viết này sẽ 'bật mí' cho bạn cách chúng ta có thể làm điều này chỉ bằng cách tận dụng tối đa sức mạnh của các công cụ AI miễn phí, thông qua những 'lời thì thầm' (hướng dẫn tùy chỉnh) của chính chúng ta. Mục tiêu ư? Đơn giản là để chứng minh rằng AI không chỉ là 'công cụ vẽ vời' mà còn là 'phù thủy' giúp tạo ra những dự án cấu trúc chuyên nghiệp một cách siêu tiện lợi và mạnh mẽ!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/AI_co_developer.jpg' alt='AI hỗ trợ lập trình viên'>Vậy rốt cuộc, chúng ta có thể 'đi xa' đến đâu khi biến AI thành 'phi công phụ' đắc lực để xây dựng một microservice chuyên nghiệp đây? Trong dự án này, mình đã dùng Gemini và GitHub Copilot để 'lèo lái' toàn bộ quá trình phát triển. Và kết quả thì sao? Thí nghiệm này đã chứng minh một điều cực kỳ thú vị: AI, khi được 'dẫn lối' đúng cách, có thể trở thành một trợ lý kỹ thuật không thể thiếu, giúp áp dụng các 'best practices' (thực hành tốt nhất) và giữ vững chất lượng thiết kế mà chẳng hề 'cướp mất' công việc của lập trình viên đâu nhé! Nó giống như có một người cố vấn luôn bên cạnh bạn vậy.<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/AI_co_pilot.jpg' alt='AI làm đồng hành kỹ thuật'>À mà này, để hiểu rõ hơn về 'kiến trúc hình lục giác' (Hexagonal Architecture) – một khái niệm nghe có vẻ 'hack não' nhưng lại siêu hiệu quả – dự án này được xây dựng dựa trên bài viết 'đỉnh của chóp' của Arho Huttunen. Nếu bạn tò mò muốn 'đào sâu' hơn, cứ click vào đây nhé: <a href="https://www.arhohuttunen.com/hexagonal-architecture-spring-boot/" target="_blank" rel="noopener noreferrer">Hexagonal Architecture with Spring Boot – arhohuttunen.com</a><img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/Hexagonal_Arch.png' alt='Sơ đồ kiến trúc hình lục giác'>Vậy trong cái 'demo' nhỏ xinh này (Proof of Concept - POC), chúng ta có gì 'đỉnh' thế? Để mình liệt kê cho bạn xem nhé:<ul><li>**Kiến trúc Hexagonal 'chuẩn chỉnh':** Đảm bảo các 'đầu vào' và 'đầu ra' được tách biệt hoàn toàn, giúp 'lõi nghiệp vụ' của chúng ta sạch sẽ, dễ bảo trì và phát triển. Cứ như xây nhà theo từng module vậy đó!</li><li>**Spring Boot 3 'đời mới':** Đi kèm với các thư viện và phụ thuộc 'chuyên nghiệp' nhất.</li><li>**Container hóa với Docker Compose và MySQL:** Giúp bạn triển khai ứng dụng mượt mà như bơ, không lo 'máy bạn chạy, máy tôi không chạy'.</li><li>**Map DTO ↔ Entity bằng MapStruct:** Biến đổi dữ liệu giữa các lớp một cách 'nhanh gọn lẹ', không phải viết tay mấy đoạn code lặp đi lặp lại nữa.</li><li>**Kiểm thử đơn vị (Unit tests) với JUnit và Mockito:** Đảm bảo từng 'viên gạch' code đều chắc chắn, không lo sập hệ thống.</li><li>**Tài liệu API 'rõ ràng' với Swagger/OpenAPI:** Dễ dàng chia sẻ và hiểu về các API của bạn. Giống như có một cuốn sổ tay hướng dẫn vậy.</li><li>**Tất cả đều được 'phù phép' bởi AI:** Cụ thể là GitHub Copilot và Gemini đó!</li></ul>Bạn muốn 'nghía' qua toàn bộ dự án không? Click ngay vào đây nhé: <a href="https://github.com/edzamo/coffee-shop-hexagonal-con-IA" target="_blank" rel="noopener noreferrer">github.com/edzamo/coffee-shop-hexagonal-con-IA</a><img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/Tech_stack_collage.png' alt='Công nghệ sử dụng trong dự án'>Vậy làm thế nào để 'thuần hóa' AI để nó viết code 'chất lừ' đây? Đừng nghĩ rằng chỉ cần 'phán' một câu là nó tự động 'ói' ra code đâu nhé! Mấu chốt là bạn phải 'dạy' cho nó hiểu bối cảnh dự án của bạn, 'dẫn dắt' nó bằng những câu lệnh (prompt) rõ ràng, và quan trọng nhất là phải 'soi' thật kỹ từng câu trả lời của nó. Trong quá trình phát triển dự án này, mình đã 'khai quật' ra rằng AI có thể:<ul><li>**Hiểu những kiến trúc phức tạp:** Ngay cả kiến trúc hình lục giác 'khó nhằn' nó cũng nuốt trọn!</li><li>**Tạo ra các class 'ăn khớp' và đặt tên 'chuẩn không cần chỉnh'.**</li><li>**Gợi ý các bài kiểm thử đơn vị 'đắc địa'.**</li><li>**Kiểm duyệt (validate) thiết kế và cấu trúc dự án của bạn.**</li></ul>**Mẹo 'nhỏ mà có võ' đây:** Nếu bạn tự định nghĩa các prompt và cấu trúc thư mục (như cái thư mục `.heHexaBarista` trong dự án này), bạn sẽ biến AI thành một 'phi công phụ' kỹ thuật đích thực đó!<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/AI_prompt_code.jpg' alt='Tạo mã có cấu trúc với AI'>Lợi ích 'sâu xa' của việc dùng AI trong phát triển phần mềm là gì nhỉ? Những 'trợ thủ' như Copilot và Gemini không chỉ giúp bạn 'tăng tốc' công việc mà còn là 'người bảo vệ' sự nhất quán và chất lượng code nữa đó. Chúng giống như những 'trợ lý kỹ thuật' không bao giờ ngủ, luôn sẵn sàng:<ul><li>**Giảm thiểu công việc lặp đi lặp lại 'nhàm chán':** Cứ để AI lo!</li><li>**Tôn trọng phong cách và quy ước code của riêng bạn:** Nó sẽ 'bắt chước' cách bạn làm việc.</li><li>**Giúp bạn tập trung 'hết công suất' vào logic nghiệp vụ và các quyết định kiến trúc 'quan trọng'.**</li></ul>Chìa khóa ở đây là gì? Là hãy 'ra lệnh' cho AI bằng những hướng dẫn tùy chỉnh và cung cấp cho nó bối cảnh kỹ thuật cụ thể. Khi đó, AI sẽ không còn 'chung chung' nữa mà trở thành một công cụ năng suất 'đáng gờm'. Hãy nhớ kỹ điều này nhé: **AI không thay thế lập trình viên, nó giúp lập trình viên 'siêu phàm' hơn!**<img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/AI_empower_developer.jpg' alt='AI trao quyền cho nhà phát triển'>Bạn nóng lòng muốn 'nhập cuộc' với AI trong các dự án thực tế phải không? Đây là vài 'bí kíp' cá nhân mình đúc kết được để bạn có thể tận dụng tối đa AI nhé:<ul><li>**Bắt đầu từ những dự án đơn giản:** Nhưng hãy mạnh dạn áp dụng các 'pattern' (kiến trúc) thực tế như MVC hay kiến trúc Hexagonal.</li><li>**Cung cấp 'bối cảnh' rõ ràng:** Tên class, cấu trúc thư mục, các quy ước bạn đang dùng... càng chi tiết càng tốt!</li><li>**Sử dụng prompt 'sáng như đèn pha' và từng bước một:** Cứ như bạn đang giải thích cho một 'junior' mới vào nghề vậy đó.</li><li>**Kiểm tra kỹ lưỡng TẤT CẢ mọi thứ AI tạo ra:** Học hỏi từ cả những lỗi sai lẫn thành công của nó.</li><li>**Xác định một cấu trúc rõ ràng:** Ví dụ như `adapters`, `ports`, `domain`... để AI có thể 'tiêu hóa' dễ dàng.</li></ul><img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/AI_coding_checklist.jpg' alt='Thực hành viết mã với AI'>Tóm lại, dự án này không chỉ khoe một kiến trúc 'chạy ro ro' mà còn là một minh chứng sống động về cách chúng ta có thể 'nhúng' AI vào quy trình phát triển chuyên nghiệp. Khi được 'dẫn lối' đúng cách, AI sẽ giúp bạn phát triển nhanh hơn 'chóng mặt' mà không phải hy sinh chút nào về thiết kế hay chất lượng. Nếu bạn muốn tự mình trải nghiệm cảm giác 'viết code như siêu nhân' thì đừng ngần ngại:<ul><li>**Khám phá thư mục `.heHexaBarista` trong repo.**</li><li>**Cài đặt GitHub Copilot hoặc Gemini.**</li><li>**Và bắt đầu xây dựng cùng AI – người đồng minh kỹ thuật 'siêu hạng' của bạn!** 🚀</li></ul><img src='https://truyentranh.letranglan.top/api/v1/proxy?url=https://i.imgur.com/AI_human_collaboration.jpg' alt='AI hợp tác với con người trong phát triển phần mềm'>
Khám phá cách IDE PostgreSQL mới của Microsoft trong VS Code, được tăng cường bởi GenAI, giúp bạn truy vấn cơ sở dữ liệu bằng ngôn ngữ tự nhiên, trực quan hóa lược đồ và tăng cường hiệu suất lập trình.
Khám phá tác động 'khủng' của AI trong lập trình qua phân tích hơn 2 triệu Pull Request. AI giúp code nhanh hơn, review mượt hơn, và tăng năng suất đáng kể cho cả junior lẫn senior engineer. Đừng bỏ lỡ những con số ấn tượng về tương lai của ngành lập trình!