Amazon Q CLI: Trợ lý AI cho Developer và Demo Xây dựng Game Snake
Hãy tưởng tượng: Thay vì phải Google “cách dùng git rebase” lần thứ 100, bạn chỉ cần gõ:
q chat "Tôi muốn gộp 3 commit cuối thành 1, làm thế nào?"
Đó chính là sức mạnh của Amazon Q CLI - trợ lý AI thông minh ngay trong terminal của bạn.
Amazon Q CLI là trợ lý AI được thiết kế để tích hợp ngay trong terminal. Thay vì phải mở trình duyệt để tìm kiếm câu lệnh, bạn chỉ cần “nói chuyện” với AI ngay tại chỗ.
Điểm mạnh chính:
macOS (khuyến khích):
brew install amazon-q
Linux Ubuntu:
wget https://desktop-release.q.us-east-1.amazonaws.com/latest/amazon-q.deb
sudo dpkg -i amazon-q.deb
q login --license free
![Cấp quyền] (https://dev-to-uploads.s3.amazonaws.com/uploads/articles/88y6icroatq1z7vcrdxt.png)
Để tránh việc để Amazon Q CLI sử dụng sử liệu các nhân của bạn cho việc training. Hãy sử dụng command sau:
q settings telemetry.enabled false
q settings codeWhisperer.shareCodeWhispererContentWithAWS false
q chat
🎉 Xong! Giờ bạn có thể hỏi AI bất cứ điều gì!
Lệnh | Mục Đích | Ví Dụ |
---|---|---|
q chat | Bắt đầu trò chuyện với AI | q chat "Viết hàm sắp xếp array" |
q translate | Dịch yêu cầu thành lệnh | q translate "tìm file Python sửa đổi tuần này" |
/help | Xem tất cả lệnh có sẵn | Gõ /help trong phiên chat |
> Tôi cần tạo API endpoint để lấy danh sách user với phân trang, dùng Python và Django
> Giải thích cho tôi hiểu sự khác biệt giữa var, let và const trong JavaScript
> Viết Dockerfile cho ứng dụng Python Django với requirements.txt
# Bắt đầu chat
q chat
# Trong phiên chat:
> /help # Xem tất cả lệnh
> /clear # Xóa lịch sử chat
> /editor # Mở trình soạn thảo cho prompt dài
> /quit # Thoát
Ví dụ sử dụng /help
q translate
- “Ma Thuật” Thực Sự# Từ tiếng Việt thành lệnh
q translate "tìm tất cả file Python được sửa trong tuần qua"
# Kết quả: find . -name "*.py" -mtime -7
q translate "tạo branch git mới từ main"
# Kết quả: git checkout -b new-branch main
q translate "chạy container Docker với port 3000"
# Kết quả: docker run -p 3000:3000 <image-name>
# Thêm file vào ngữ cảnh
> /context add ./requirements.txt ./snake_game.py
# Xem ngữ cảnh hiện tại
> /context show
# Xóa ngữ cảnh
> /context clear
Tại sao quan trọng? Khi AI biết bạn đang làm dự án gì, câu trả lời sẽ chính xác và phù hợp hơn nhiều.
# Tạo profile cho dự án khác nhau
> /profile create frontend-react
> /profile create backend-python
> /profile create devops-aws

# Chuyển đổi profile
> /profile set backend-python
# Mỗi profile có ngữ cảnh riêng
> /context add ./main.py
Lệnh | Công Dụng | Ví Dụ |
---|---|---|
/tools trust fs_write | Cho phép AI ghi file không cần hỏi | Tự động tạo file config |
/compact | Tóm tắt đoạn chat dài để tiết kiệm bộ nhớ | Khi chat quá 100 dòng |
/save session.json | Lưu phiên chat | Backup công việc |
/load session.json | Tải lại phiên chat | Tiếp tục từ lần trước |
!{command}
: Chạy lệnh shell ngay trong chat
> !ls -la
> !git status
Ctrl + J
: Viết prompt nhiều dòngCtrl + S
: Tìm kiếm nhanh trong lịch sử và ngữ cảnhLý thuyết là vậy, nhưng sức mạnh thực sự của một công cụ chỉ thể hiện qua thực hành. Bây giờ, hãy cùng mình tái hiện lại toàn bộ quá trình mình đã “trò chuyện” với Amazon Q CLI để xây dựng game Rắn săn mồi (Snake) từ một thư mục trống đến một sản phẩm hoàn chỉnh.
Mọi dự án lớn đều bắt đầu từ những bước nhỏ. Mục tiêu đầu tiên của mình là có được một phiên bản game cơ bản nhất nhưng phải chơi được ngay.
Đầu tiên, mình vào thư mục dự án và khởi động Amazon Q.
cd ~/Self-Project/AWS-Builder/snake-game-with-amazon-q
q chat
Thay vì gõ từng yêu cầu nhỏ lẻ, mình muốn đưa ra một bản mô tả hoàn chỉnh. Lệnh /editor
là lựa chọn hoàn hảo cho việc này, nó mở ra một trình soạn thảo văn bản ngay trong terminal, giúp mình viết các prompt dài và phức tạp một cách thoải mái.
👨💻 Developer:
Hãy giúp tôi tạo một trò chơi Rắn (Snake) đơn giản bằng Python và thư viện `pygame`.
**Yêu cầu cốt lõi:**
1. Trò chơi có kích thước 800x600 pixel.
2. Rắn bắt đầu dài 1 ô.
3. Điều khiển rắn bằng các phím mũi tên (Lên, Xuống, Trái, Phải).
4. Thức ăn xuất hiện ngẫu nhiên trên màn hình.
5. Khi rắn ăn thức ăn, nó sẽ dài ra và một miếng thức ăn mới xuất hiện.
6. Trò chơi kết thúc nếu rắn đâm vào tường hoặc chính thân mình.
Vui lòng cung cấp toàn bộ mã nguồn có thể chạy ngay.
🤖 Amazon Q: I’ll help you create a simple Snake game using Python and pygame. Let me create a complete, runnable Snake game that meets all your requirements.
Ngay lập tức, AI đề xuất tạo một file mã nguồn:
🛠️ Using tool: fs_write
⋮
● Path: snake_game.py
Điều đáng kinh ngạc là AI không chỉ viết vài dòng code. Nó hiển thị một bản diff
chi tiết, cho thấy nó sẽ tạo ra một file snake_game.py
hoàn chỉnh với 212 dòng code. Mã nguồn này được tổ chức rất chuyên nghiệp theo hướng đối tượng (OOP):
Game
: Quản lý vòng lặp game, sự kiện, và trạng thái chung.Snake
: Xử lý logic di chuyển, ăn mồi, và kiểm tra va chạm của con rắn.Food
: Chịu trách nhiệm tạo và đặt lại vị trí mồi.Mình chỉ việc đồng ý:
Allow this action? [y/n/t]:
> y
Một lập trình viên giỏi biết rằng code không phải là tất cả. Amazon Q cũng vậy! Nó không dừng lại ở việc tạo file mã nguồn.
🤖 Amazon Q: Now let me create a requirements file to make it easy to install the necessary dependencies:
🛠️ Using tool: fs_write
⋮
● Path: requirements.txt
pygame==2.5.2
🤖 Amazon Q: Let me also create a README file with instructions on how to run the game:
🛠️ Using tool: fs_write
⋮
● Path: README.md
AI tự động điền vào file README các mục quan trọng như hướng dẫn cài đặt, cách chạy, luật chơi và các tính năng.
Chỉ sau vài phút, AI báo cáo kết quả:
🤖 Amazon Q: Perfect! I’ve created a complete Snake game that meets all your requirements. Here’s what I’ve built for you:
🎮 Các tính năng đã implement:
✅ 800x600 pixel game window - Exactly as requested
✅ Snake starts with 1 segment - Positioned in the center
✅ Arrow key controls - Up, Down, Left, Right arrows
✅ Random food generation - Red squares appear randomly
✅ Snake growth - Snake grows by one segment each time it eats
✅ Collision detection - Game ends when hitting walls or body
🎁 Bonus features:
🚀 Cách chạy:
# Cài đặt dependencies
pip install -r requirements.txt
# Chạy game
python snake_game.py
requirements.txt
, README.md
) để dự án trở nên chuyên nghiệp và dễ sử dụng.Game đã chạy được, nhưng giao diện còn khá đơn điệu. Giờ là lúc làm cho nó “đã mắt, đã tai” hơn.
Mình muốn game của mình trông hiện đại và bắt mắt hơn. Mình cung cấp file snake_game.py
làm context và đưa ra yêu cầu mới.
👨💻 Developer gõ trong editor:
Hãy cải thiện giao diện cho game Snake của tôi:
1. Thêm background gradient từ xanh đậm đến xanh nhạt.
2. Tạo hiệu ứng đổ bóng (shadow) cho rắn.
3. Làm thức ăn có hiệu ứng nhấp nháy.
4. Thêm viền (border) đẹp cho khu vực chơi.
5. Tạo màn hình tiêu đề (title screen) có hiệu ứng động.
🤖 Amazon Q: I’ll help you improve the visual interface of your Snake game with all the requested enhancements. Let me create an enhanced version with gradient background, shadow effects, blinking food, beautiful borders, and an animated title screen.
🛠️ Using tool: fs_write
⋮
● Path: snake_game.py
1, 1: import pygame
2, 2: import random
3, 3: import sys
+ 4: import math
4, 5:
5, 6: # Initialize pygame
...
+ 22: LIGHT_BLUE = (173, 216, 230)
+ 23: DARK_BLUE = (25, 25, 112)
+ 24: GOLD = (255, 215, 0)
+ 25: SHADOW_COLOR = (0, 0, 0, 100)
+ 26: BORDER_COLOR = (255, 255, 255)
+ 27: FOOD_BRIGHT = (255, 100, 100)
+ 28: FOOD_DARK = (200, 50, 50)
Allow this action? Use 't' to trust (always allow) this tool for the session. [y/n/t]:
AI ngay lập tức đề xuất sửa đổi file snake_game.py
, thêm vào các hằng số màu sắc mới và các hàm để vẽ hiệu ứng. Sau khi mình đồng ý, nó đã cập nhật code để:
Một game hay không thể thiếu âm thanh. Điều thú vị là mình không muốn dùng file âm thanh có sẵn.
👨💻 Developer:
Thêm âm thanh vào game Snake:
1. Âm thanh khi ăn mồi (beep ngắn).
2. Âm thanh khi game over (buồn bã).
3. Nhạc nền nhẹ nhàng.
4. Âm thanh khi rắn di chuyển.
5. Nút bật/tắt âm thanh.
Hãy dùng `pygame.mixer` và **tự tạo ra các file âm thanh bằng code**.
🤖 Amazon Q: I’ll help you add sound effects to your Snake game using pygame.mixer and create simple sound files programmatically.
Đây là lúc AI thể hiện sự thông minh vượt trội. Nó không chỉ sửa file game, mà còn tạo ra một file hoàn toàn mới:
🛠️ Using tool: fs_write
⋮
● Path: sound_generator.py
File sound_generator.py
này chứa code Python sử dụng thư viện numpy
để tạo ra các sóng âm (dạng array
) cho từng hiệu ứng, sau đó lưu chúng lại. Đây là một kỹ thuật lập trình âm thanh rất hay.
Sau đó, AI cập nhật snake_game.py
để gọi các hàm tạo âm thanh này và tích hợp chúng vào game, kèm theo phím M
để bật/tắt.
Trong quá trình phát triển, gặp lỗi là chuyện bình thường. Khi mình chạy game, console báo lỗi:
Đây là một cơ hội tuyệt vời để thử khả năng debug của Amazon Q. Mình chỉ cần copy-paste lỗi vào cho nó:
👨💻 Mình:
Hãy sửa lỗi này giúp tôi:
Could not initialize sounds: Array must be 2-dimensional for stereo mixer
🤖 Amazon Q: I see the issue! The problem is with the audio array format for pygame’s sound system. Let me fix the sound generator to properly handle stereo/mono audio formats.
AI ngay lập tức đề xuất sửa lại file sound_generator.py
. Nó thông minh đến mức tự thêm vào đoạn code kiểm tra xem mixer đang ở chế độ mono hay stereo, và tự động chuyển đổi cho phù hợp.
Không chỉ vậy, AI còn chủ động tạo ra một script test_sounds.py
để mình có thể kiểm tra hệ thống âm thanh một cách độc lập trước khi chạy toàn bộ game.
🎉 Kết quả: Sau khi Q đã fix, mình chạy script test và mọi thứ hoạt động hoàn hảo!
context
: Cung cấp file code hiện tại giúp Q đưa ra các đề xuất sửa đổi chính xác.Game đã đẹp và có âm thanh, giờ là lúc làm cho nó hấp dẫn và có chiều sâu hơn về lối chơi.
👨💻 Developer:
Thêm các yếu tố mới vào game:
**Power-ups (tỷ lệ xuất hiện 5%):**
- 🍒 Cherry: +20 điểm, rắn không dài ra.
- ⚡ Lightning: Tăng tốc trong 5 giây.
- 🛡️ Shield: Bất tử trong 3 giây.
- 💎 Diamond: +50 điểm và đóng băng thời gian 2 giây.
**Chướng ngại vật:**
- 🧱 Các khối tường xuất hiện ngẫu nhiên.
- 🕳️ Lỗ dịch chuyển (vào một lỗ, ra lỗ còn lại).
Hiển thị thời gian đếm ngược cho các power-up đang kích hoạt.
🤖 Amazon Q: I’ll help you add these exciting new elements to your Snake game! Let me implement the power-ups, obstacles, and timer system.
AI lại tiếp tục công việc refactor và bổ sung code. Nó tạo ra các class mới như PowerUp
, Obstacle
và cập nhật Game
class với hàng trăm dòng code mới để quản lý tất cả logic phức tạp này, bao gồm cả hệ thống hẹn giờ và hiệu ứng hình ảnh cho từng loại.
Cơ chế “chết khi đâm vào tường” ở phiên bản đầu tiên khá khó chịu. Mình quyết định thay đổi nó.
👨💻 Developer:
Cải thiện gameplay: khi rắn đi xuyên tường, nó sẽ không chết mà xuất hiện ở cạnh đối diện.
🤖 Amazon Q: *Tôi sẽ cải thiện gameplay bằng cách cho phép rắn xuyên qua tường và xuất hiện ở phía đối diện thay vì chết khi va vào tường. Đây là một tính năng rất hay để làm game thú vị hơn! *
AI nhanh chóng xác định phần code xử lý va chạm tường, xóa nó đi và thay bằng một phương thức mới tên là wrap_around_walls()
. Thay đổi này nhỏ nhưng làm cho trải nghiệm chơi game mượt mà và chiến thuật hơn rất nhiều.
Sau khi có một gameplay hoàn chỉnh, bước tiếp theo là tạo một hệ thống để người chơi có thể lưu lại thành tích của mình. Đây là lúc mình biến một game đơn giản thành một trải nghiệm có tính cạnh tranh và lôi cuốn hơn.
👨💻 Mình: Mình muốn game có chiều sâu hơn. Mình sẽ yêu cầu AI xây dựng một hệ thống high score đầy đủ tính năng.
> /editor
👨💻 Developer:
Tạo hệ thống high score hoàn chỉnh:
1. **Local storage:**
- Save top 10 scores vào JSON file
- Include: name, score, date, level reached
2. **Leaderboard screen:**
- Hiển thị ranking với animation
- Input name khi đạt high score
- Export leaderboard to CSV
3. **Statistics:**
- Total games played
- Average score
- Best streak
- Time played
🤖 Amazon Q: Tôi sẽ tạo hệ thống high score hoàn chỉnh cho Snake game của bạn. Hãy bắt đầu với việc tạo các file cần thiết:
AI bắt đầu một cuộc “cách mạng” về kiến trúc code bằng cách tách logic ra các module riêng biệt:
🛠️ Using tool: fs_write
⋮
● Path: high_score_manager.py
● Path: leaderboard_screen.py
● Path: name_input_screen.py
🤖 Amazon Q giải thích:
high_score_manager.py
(181 dòng): Module này sẽ xử lý toàn bộ logic dữ liệu: đọc/ghi file JSON, quản lý top 10, tính toán thống kê và export CSV.leaderboard_screen.py
(288 dòng): Module này chịu trách nhiệm hiển thị bảng xếp hạng, bao gồm animations, medals, và panel thống kê.name_input_screen.py
(237 dòng): Module này tạo ra một màn hình nhập tên đẹp mắt với hiệu ứng chúc mừng khi người chơi đạt high score.🤖 Amazon Q tiếp tục cập nhật file game chính:
Tiếp theo, AI tích hợp các module mới này vào snake_game.py
. Quá trình này bao gồm:
HighScoreManager
, LeaderboardScreen
, NameInputScreen
."leaderboard"
, "name_input"
.handle_events
) để xử lý các phím bấm mới (như L
để xem leaderboard, E
để export).update
) để kiểm tra high score khi game over và chuyển sang màn hình nhập tên.draw
) để hiển thị các màn hình mới.🤖 AI cũng không quên cập nhật các file phụ trợ:
requirements.txt
: Được cập nhật để đảm bảo phiên bản tương thích.README.md
: Được bổ sung chi tiết về hệ thống high score, hướng dẫn sử dụng các tính năng mới và cấu trúc file dự án.🤖 Amazon Q: Tuyệt vời! Tôi đã tích hợp thành công hệ thống high score hoàn chỉnh vào game của bạn. Hệ thống này không chỉ lưu điểm mà còn cung cấp một trải nghiệm người dùng chuyên nghiệp.
🏆 Các tính năng High Score đã implement:
✅ 🗄️ Local Storage: Tự động lưu top 10 high scores và toàn bộ thống kê vào file high_scores.json
và game_stats.json
.
✅ 📊 Dynamic Leaderboard: Màn hình bảng xếp hạng với animation, huy chương (🥇, 🥈, 🥉) và panel thống kê chi tiết.
✅ 📈 Theo Dõi Thống Kê: Ghi lại tổng số game đã chơi, điểm trung bình, chuỗi thắng, tổng thời gian chơi và nhiều hơn nữa.
✅ 📤 Export ra CSV: Cho phép người chơi xuất bảng xếp hạng ra file CSV chỉ bằng một phím bấm.
✅ 🧩 Kiến Trúc Module: Tách biệt logic rõ ràng (data, UI, game logic), giúp dự án dễ dàng bảo trì và mở rộng.
Một dự án tốt không thể thiếu tài liệu hướng dẫn chi tiết. Đây là bước cuối cùng để biến dự án game thành một sản phẩm mã nguồn mở hoàn chỉnh, thân thiện với cả người dùng và các nhà phát triển khác.
👨💻 Mình: Đã đến lúc hoàn thiện dự án với một bộ tài liệu đầy đủ.
> /editor
👨💻 Developer:
Tạo documentation hoàn chỉnh:
**Developer docs:**
- Code architecture explanation
- API documentation với Sphinx
- Contributing guidelines
- Setup development environment
**User manual:**
- Interactive tutorial in-game
- Strategy guide với screenshots
- FAQ section
- Troubleshooting guide
**Video content:**
- Screen recording của gameplay
- Development timelapse
- Tutorial videos
Tạo GitHub Pages site cho documentation.
🤖 Amazon Q: Tôi sẽ tạo documentation hoàn chỉnh cho Snake game của bạn. Hãy bắt đầu với việc tạo cấu trúc documentation và các file cần thiết
AI đã thực hiện một khối lượng công việc khổng lồ để tạo ra bộ tài liệu này:
1. 🤖 Thiết lập nền tảng Sphinx:
AI tạo ra toàn bộ cấu trúc thư mục docs/
với các file cấu hình cần thiết như conf.py
, index.rst
, Makefile
, make.bat
và file CSS tùy chỉnh _static/custom.css
để trang docs có giao diện mang phong cách của game.
2. 🤖 Bắt đầu viết nội dung tài liệu:
AI tự động sinh ra hàng loạt file .rst
với nội dung chi tiết cho từng phần:
installation.rst
, strategy_guide.rst
, faq.rst
, troubleshooting.rst
.architecture.rst
, contributing.rst
, development_setup.rst
.interactive_tutorial.rst
- một hướng dẫn từng bước cực kỳ chi tiết.
3. 🤖 Tạo script hỗ trợ cho media và build: Để tự động hóa việc tạo media, AI đã viết các script Python:
scripts/generate_screenshots.py
: Tự động chạy game, tạo ra các kịch bản cụ thể (ví dụ: màn hình game over, màn hình leaderboard) và chụp lại ảnh màn hình.scripts/record_gameplay.py
: Ghi lại video gameplay để làm video tutorial hoặc timelapse.scripts/build_docs.py
: Một script tổng hợp để chạy tất cả các bước: tạo media, build Sphinx docs và chuẩn bị cho deployment.4. 🤖 Thiết lập CI/CD để tự động deploy:
AI tạo file .github/workflows/docs.yml
, một workflow cho GitHub Actions. Mỗi khi có commit mới vào nhánh main
, workflow này sẽ tự động build toàn bộ trang docs và deploy lên GitHub Pages.
🤖 Amazon Q: Hệ thống documentation của bạn đã sẵn sàng. Nó không chỉ là các file văn bản, mà là một trang web hoàn chỉnh, có thể được host miễn phí trên GitHub Pages.
📖 Các thành phần của bộ Documentation: ✅ 👨💻 Dành cho Developer:
✅ 👤 Dành cho Người dùng:
✅ 🎥 Media và Tự động hóa:
✅ 🌐 Trang GitHub Pages chuyên nghiệp:
Game cơ bản → Enhanced UI → Sound System → Advanced Features → High Scores → Documentation
↓ ↓ ↓ ↓ ↓ ↓
Working Beautiful Immersive Strategic Competitive Professional
Đây chính là sức mạnh của Amazon Q CLI - từ một ý tưởng đơn giản, với những cuộc hội thoại bằng ngôn ngữ tự nhiên, mình đã có được một sản phẩm hoàn chỉnh sẵn sàng cho cộng đồng.