Thực hành với Gemini CLI

1. Giới thiệu

Trong lớp học lập trình này, bạn sẽ tìm hiểu về Gemini CLI, một tác nhân AI nguồn mở mang sức mạnh của Gemini trực tiếp vào thiết bị đầu cuối của bạn.

Dự án Gemini CLI là dự án nguồn mở và bạn có thể xem lộ trình công khai tại đây.

Kiến thức bạn sẽ học được

  1. Cài đặt và định cấu hình Gemini CLI
  2. Khám phá các công cụ, lệnh tích hợp và cách định cấu hình máy chủ MCP trong Gemini CLI
  3. Tuỳ chỉnh Gemini CLI thông qua tệp GEMINI.md
  4. Khám phá một số trường hợp sử dụng với Gemini CLI

Bạn cần có

Bạn có thể chạy toàn bộ lớp học lập trình này trong Google Cloud Shell. Google Cloud Shell được cài đặt sẵn Gemini CLI.

Ngoài ra, nếu muốn làm việc trên máy của riêng mình, bạn có thể cài đặt Gemini CLI cục bộ.

Bạn sẽ cần những thông tin sau:

  • Trình duyệt web Chrome
  • Tài khoản Gmail

Lớp học lập trình này được thiết kế cho người dùng và nhà phát triển ở mọi cấp độ (kể cả người mới bắt đầu). Các trường hợp sử dụng trong lớp học lập trình được phân loại thành các nhiệm vụ dành cho nhà phát triển và không dành cho nhà phát triển. Các trường hợp sử dụng dành cho nhà phát triển minh hoạ cách sử dụng mã rung với Gemini CLI và cách làm việc với kho lưu trữ Github để thực hiện các tác vụ phát triển phổ biến như giải thích/hiểu mã, tạo tài liệu, khắc phục vấn đề, v.v. Bạn nên hoàn tất các trường hợp sử dụng này trong lớp học lập trình. Có một phần không bắt buộc ở cuối, bao gồm một số việc cần làm hằng ngày không dành cho nhà phát triển.

2. Trước khi bắt đầu

Tạo một dự án

  1. Trong Google Cloud Console, trên trang chọn dự án, hãy chọn hoặc tạo một dự án trên Google Cloud.
  2. Đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án trên Cloud. Tìm hiểu cách kiểm tra xem tính năng thanh toán có được bật trên một dự án hay không.
  1. Bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Google Cloud và được tải sẵn bằng bq. Nhấp vào Kích hoạt Cloud Shell ở đầu bảng điều khiển Google Cloud.

Hình ảnh nút Kích hoạt Cloud Shell

  1. Sau khi kết nối với Cloud Shell, bạn có thể kiểm tra để đảm bảo rằng bạn đã được xác thực và dự án được đặt thành mã dự án của bạn bằng lệnh sau:
gcloud auth list
  1. Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn.
gcloud config list project
  1. Nếu bạn chưa đặt dự án, hãy dùng lệnh sau để đặt:
gcloud config set project <YOUR_PROJECT_ID>

3. Cài đặt

Trước khi bạn thiết lập và chạy Gemini CLI, hãy tạo một thư mục mà bạn sẽ sử dụng làm thư mục chính cho tất cả các dự án mà bạn có thể tạo bên trong thư mục đó. Đây là điểm bắt đầu để Gemini CLI hoạt động, mặc dù nó cũng sẽ tham chiếu một số thư mục khác trên hệ thống của bạn và bạn sẽ truy cập vào các thư mục đó sau, khi cần.

Tiếp tục tạo một thư mục mẫu (gemini-cli-projects) rồi chuyển đến thư mục đó thông qua các lệnh bên dưới. Nếu bạn muốn sử dụng tên thư mục khác, vui lòng thực hiện.

mkdir gemini-cli-projects

Hãy chuyển đến thư mục đó:

cd gemini-cli-projects

Bạn có thể trực tiếp chạy Gemini CLI thông qua lệnh gemini.

Vui lòng chuyển thẳng đến phần tiếp theo (Cấu hình Gemini CLI thông qua settings.json).

Nếu bạn muốn cài đặt Gemini CLI cục bộ, hãy làm theo hướng dẫn bên dưới.

Bước đầu tiên là cài đặt Node 20 trở lên trên máy của bạn. Sau khi hoàn tất, bạn có thể cài đặt và chạy Gemini CLI bằng một trong những phương thức sau:

  1. Trước tiên, bạn có thể cài đặt Gemini CLI trên toàn hệ thống. Bạn có thể cần có quyền Quản trị viên để thực hiện bước này.
# option 1: install Gemini CLI

npm install -g @google/gemini-cli

# .. and then run
gemini
  1. Chạy lệnh sau:
# option 2: run without installing Gemini CLI

npx https://github.com/google-gemini/gemini-cli

Bạn có thể xác nhận rằng CLI đã được cài đặt bằng cách chạy:

gemini --version

Giả sử bạn đã chạy Gemini CLI bằng một trong các phương thức nêu trên, bạn sẽ thấy màn hình sau đây yêu cầu bạn chọn một giao diện. Hãy tiếp tục và chọn một kiểu mà bạn thích:

9b02bd0bf1c670d.png

Sau khi bạn chọn, hệ thống sẽ yêu cầu bạn chọn Phương thức xác thực. Bạn nên sử dụng Tài khoản Google cá nhân chứ không nên dùng tài khoản không phải của Google hoặc tài khoản liên quan đến Google Workspace trong phòng thí nghiệm này. Giấy phép miễn phí này cho phép bạn sử dụng Gemini 2.5 Pro và cửa sổ ngữ cảnh 1 triệu token của mô hình này. Cấp miễn phí cho phép gửi 60 yêu cầu về mô hình mỗi phút và 1.000 yêu cầu mỗi ngày mà không tốn phí.

Nếu hạn mức miễn phí hiện tại được cấp cho Tài khoản Google không đủ, bạn có thể chọn sử dụng Khoá Gemini API hoặc thậm chí là Google Cloud Vertex AI. Trong trường hợp này, bạn sẽ cần có mã dự án và tên vị trí cho dự án đó. Hãy tham khảo phần Xác thực trong tài liệu nếu bạn dự định sử dụng các phương thức xác thực khác.

afce8d90e20adb6.png

Hãy nhấp vào Enter. Thao tác này sẽ mở trang Xác thực của Google trong trình duyệt. Tiến hành xác thực bằng Tài khoản Google của bạn, chấp nhận các điều khoản và sau khi xác thực thành công, bạn sẽ thấy Gemini CLI đã sẵn sàng và đang chờ lệnh của bạn. Dưới đây là ảnh chụp màn hình mẫu:

ffd8ddfede565612.png

4. Cấu hình Gemini CLI thông qua settings.json

Nếu bạn chọn Cloud Shell để chạy Gemini, thì một giao diện mặc định cho Gemini CLI và phương thức xác thực sẽ được chọn và định cấu hình sẵn cho bạn.

Nếu đã cài đặt Gemini CLI trên máy và khởi chạy ứng dụng này lần đầu tiên, bạn đã chọn một giao diện rồi chọn một phương thức xác thực.

Giờ đây, trong những lần chạy Gemini CLI tiếp theo, bạn sẽ không được yêu cầu chọn lại một giao diện và phương thức xác thực. Điều này có nghĩa là tệp này được duy trì ở một nơi nào đó và tệp mà tệp này sử dụng có tên là settings.json. Đây là cách để tuỳ chỉnh Gemini CLI.

Các chế độ cài đặt được áp dụng theo mức độ ưu tiên sau đây (Cloud Shell chỉ cung cấp chế độ cài đặt Người dùng):

  1. Hệ thống: /etc/gemini-cli/settings.json (áp dụng cho tất cả người dùng, ghi đè chế độ cài đặt của người dùng và không gian làm việc).
  2. Workspace: .gemini/settings.json (ghi đè chế độ cài đặt của người dùng).
  3. Người dùng: ~/.gemini/settings.json.

Người dùng Windows: %USERPROFILE%.gemini\settings.json (thường mở rộng thành C:\Users&lt;YourUsername>.gemini\settings.json)

Hệ thống: %ProgramData%\gemini-cli\settings.json (thường mở rộng thành C:\ProgramData\gemini-cli\settings.json)

Người dùng máy Mac: ~/.gemini/settings.json (mở rộng thành /Users/<YourUsername>/.gemini/settings.json)

Hệ thống: /etc/gemini-cli/settings.json

Nếu bạn nhớ lại, tại thời điểm chọn giao diện, bạn đã chọn lưu các chế độ cài đặt trong phần Cài đặt người dùng. Vì vậy, hãy truy cập vào ~/.gemini folder và bạn sẽ thấy tệp settings.json.

Tệp settings.json của tôi được minh hoạ bên dưới. Nếu đã chọn một giao diện khác, bạn sẽ thấy tên của giao diện đó ở đó.

{
  "theme": "Default",
  "selectedAuthType": "oauth-personal" or "cloud-shell"
}

5. Lần đầu tiên tương tác với Gemini CLI

Hãy bắt đầu với Gemini CLI và nhập truy vấn đầu tiên của bạn như minh hoạ dưới đây:

Give me a famous quote on Artificial Intelligence and who said that?

Phản hồi dự kiến được trình bày dưới đây:

4dc0961206c1b568.png

Bạn sẽ nhận thấy rằng truy vấn của chúng ta đã tạo ra một công cụ GoogleSearch (một công cụ tích hợp trong Gemini CLI) được gọi. Nói cách khác, bạn đã sử dụng một trong những công cụ mạnh mẽ được tích hợp sẵn của Gemini CLI, cụ thể là GoogleSearch. Công cụ này sẽ đưa ra câu trả lời dựa trên thông tin mà nó lấy được từ web. Bạn sẽ tìm hiểu thêm về Công cụ trong phần tiếp theo.

Để nhanh chóng tìm hiểu về Gemini CLI và các lệnh mà công cụ này hỗ trợ, bạn có thể nhập /help (dấu gạch chéo) để xem nhiều lệnh và tổ hợp phím như minh hoạ dưới đây:

d333742310905dcc.png

Tạm thời, hãy thoát Gemini CLI. Bạn có thể thực hiện việc này thông qua lệnh /quit hoặc thực hiện lệnh Ctrl-C hai lần trong phiên tương tác của Gemini CLI.

6. Gemini CLI – Thông số lệnh

Có một số tham số dòng lệnh mà bạn có thể cung cấp khi khởi động Gemini CLI. Để xem danh sách đầy đủ các lựa chọn, bạn có thể sử dụng --help như minh hoạ dưới đây.

gemini --help

Thao tác này sẽ cho thấy toàn bộ các lựa chọn có sẵn. Bạn nên xem tài liệu tại đây.

Hãy cùng tìm hiểu một số ví dụ. Cách đầu tiên là định cấu hình Gemini CLI để sử dụng mô hình Pro hoặc Flash. Hiện tại, tại thời điểm viết hướng dẫn này, đây là 2 mô hình duy nhất được hỗ trợ. Theo mặc định, mô hình Gemini 2.5 Pro sẽ được dùng. Tuy nhiên, nếu muốn dùng Mô hình Flash, bạn có thể thực hiện việc này khi khởi động Gemini CLI thông qua tham số -m như minh hoạ dưới đây:

gemini -m "gemini-2.5-flash"

Bạn sẽ nhận thấy rằng nếu bắt đầu theo cách trên, bạn có thể kiểm tra mô hình ở dưới cùng bên phải của thiết bị đầu cuối Gemini CLI như minh hoạ dưới đây:

6e662d03b61b2b3f.png

Chế độ không tương tác

Một lựa chọn thú vị là chạy Gemini CLI ở chế độ không tương tác. Điều này có nghĩa là bạn cung cấp trực tiếp câu lệnh cho Gemini và Gemini sẽ tiếp tục phản hồi câu lệnh đó mà không cần mở thiết bị đầu cuối tương tác Gemini CLI. Điều này rất hữu ích nếu bạn dự định sử dụng Gemini CLI theo cách tự động trong tập lệnh hoặc bất kỳ quy trình tự động hoá nào khác. Bạn dùng tham số -p để cung cấp câu lệnh cho Gemini CLI như minh hoạ bên dưới:

gemini -p "What is the gcloud command to deploy to Cloud Run"

Xin lưu ý rằng bạn không thể tiếp tục trò chuyện bằng cách đặt câu hỏi nối tiếp. Chế độ này cũng không cho phép bạn uỷ quyền cho các công cụ (bao gồm cả WriteFile) hoặc chạy các lệnh shell.

7. Gemini CLI – Các công cụ tích hợp

Gemini CLI đi kèm với một bộ công cụ tích hợp và tài liệu về công cụ nêu rõ "Mô hình Gemini sử dụng các công cụ này để tương tác với môi trường cục bộ của bạn, truy cập thông tin và thực hiện các hành động. Những công cụ này giúp tăng cường các chức năng của CLI, cho phép công cụ này không chỉ tạo văn bản mà còn hỗ trợ nhiều nhiệm vụ."

Để xem danh sách các Công cụ tích hợp hiện tại, hãy gọi lệnh /tools như minh hoạ bên dưới:

39939257e3f3818e.png

Một trong những điều bạn cần lưu ý ngay lập tức là tự hỏi liệu Gemini CLI có thể gọi những công cụ này một cách đơn giản khi muốn hay không? Câu trả lời mặc định là không, khi nói đến các thao tác nhạy cảm có thể liên quan đến việc ghi vào hệ thống cục bộ, đọc từ hệ thống bên ngoài, truy cập vào mạng bên ngoài, v.v.

Mặc dù có một --yolomode khi bạn khởi động CLI (thường không được khuyến khích), nhưng bạn sẽ thấy Gemini CLI nhắc bạn cấp quyền chạy công cụ mà công cụ này đã chọn. Bạn có thể từ chối cấp quyền, hoặc cho phép chạy một lần hoặc cấp quyền chung để luôn chạy. Bạn đang và nên nắm toàn quyền kiểm soát mọi việc.

Hãy sử dụng một câu lệnh để Gemini CLI chọn một trong các công cụ tích hợp để thực thi và giúp bạn hiểu rõ cách thức hoạt động của tất cả các công cụ này.

Hãy tưởng tượng một tình huống mà bạn muốn nhận thông tin về tin tức tài chính mới nhất trên toàn thế giới và lưu thông tin đó vào một tệp trong thư mục làm việc cục bộ nơi bạn chạy Gemini CLI. Hãy sử dụng câu lệnh sau:

Search for the latest headlines today in the world of finance and save them in a file named finance-news-today.txt

Hãy tưởng tượng xem nó cần làm gì. Lý tưởng nhất là nó cần truy cập Google Tìm kiếm để lấy tin tức từ một số nguồn thông tin có liên quan có thể cung cấp tin tức tài chính. Sau đó, bạn cần tạo một tệp có tên là finance-news-today.txt (một thao tác ghi trên hệ thống cục bộ sẽ yêu cầu bạn cấp quyền) cùng với nội dung của tệp.

Hãy xem điều gì sẽ xảy ra (bạn nên tiếp tục thực hiện tương tự trên máy của mình).

Điều đầu tiên mà công cụ này làm là gọi công cụ GoogleSearch để tìm kiếm trên web.

122e6e4b01d05e69.png

Sau khi tìm kiếm xong, phương thức này sẽ truy xuất dữ liệu như minh hoạ dưới đây:

b721f40e6f643318.png

Sau khi hoàn tất, bạn có thể ghi nội dung này vào tệp và nội dung sẽ sử dụng công cụ WriteFile. Tuy nhiên, vì đây là một thao tác nhạy cảm (ghi), nên nội dung sẽ yêu cầu bạn cấp quyền. Bạn có thể quyết định loại quyền, tức là cho phép một lần, luôn cho phép, v.v. Hãy chọn cho phép một lần.

e92f3a4774dc1e7.png

Sau đó, thông tin này sẽ được ghi vào tệp và một thông báo thành công sẽ xuất hiện bên dưới:

33c6afdb89033c35.png

Làm cách nào để kiểm tra xem tệp có được ghi hay không? Bạn có thể dùng biểu tượng @file để yêu cầu đọc nội dung. Khi bạn nhập @, danh sách các tệp trong thư mục hiện tại sẽ xuất hiện và tệp vừa tạo cũng xuất hiện. Chọn câu lệnh đó rồi gửi. Câu lệnh của tôi được trình bày dưới đây:

read the contents of @finance-news-today.txt

Thao tác này sẽ dẫn đến việc các công cụ bắt buộc (ReadManyFiles, ReadFile) được gọi và nội dung sẽ xuất hiện như minh hoạ dưới đây:

6f214cd743646f44.png

8. Gemini CLI – Chế độ Shell

Đây là thời điểm thích hợp để tìm hiểu cách làm việc trực tiếp với Shell trong Gemini CLI. Bạn có thể chuyển sang chế độ shell bằng cách nhấn ! trong hộp tin nhắn. Thao tác này sẽ chuyển sang chế độ Shell. Bạn có thể quay lại bằng cách nhấn lại phím ! hoặc nhấn phím ESC.

Khi ở chế độ shell, bạn sẽ thấy biểu tượng ! ở đầu lời nhắc như minh hoạ dưới đây:

9e239408835a3acd.png

Bạn có thể kiểm tra trực tiếp bằng các lệnh tiêu chuẩn như pwdls như minh hoạ bên dưới. Xin lưu ý rằng các lệnh này giả định một hệ điều hành loại Linux. Nếu bạn đang dùng một hệ điều hành khác (Windows), vui lòng sử dụng các lệnh tương đương như (cd, dirtype). Xin lưu ý rằng đầu ra của các lệnh gọi này được đưa vào cửa sổ ngữ cảnh của mô hình.

2f5d53d3c77fc8e2.png

Bạn có thể in nội dung của tệp thông qua lệnh cat ngay hôm nay.

2249b5c80e3ae2c0.png

Bài tập: Sau đây là một bài tập ngắn để bạn thử. Chọn một nguồn cấp dữ liệu RSS mà bạn muốn. Đưa ra câu lệnh cho Gemini CLI để tìm nạp nội dung của nguồn cấp dữ liệu RSS và định dạng kết quả theo một cách cụ thể cho bạn. Đây là một cách hay để tự động hoá một việc nào đó vào đầu ngày. Bạn thậm chí có thể yêu cầu Gemini CLI tìm hiểu xem có nguồn cấp dữ liệu RSS cho một khu vực cụ thể hay không, ví dụ: Ghi chú phát hành của Nền tảng Google Cloud.

Sau đây là một câu lệnh mẫu:

Get the latest release notes for Google Cloud from its RSS Feed and display the key points in a well-formatted list.

Lý tưởng nhất là lời nhắc này sẽ gọi công cụ GoogleSearch trước để tìm nguồn cấp dữ liệu RSS của Google Cloud Platform, sau đó sử dụng công cụ WebFetch để lấy nội dung của nguồn cấp dữ liệu RSS và hiển thị nội dung đó.

9. Định cấu hình máy chủ Giao thức ngữ cảnh mô hình (MCP)

Máy chủ MCP là một ứng dụng cung cấp các công cụ và tài nguyên cho Gemini CLI thông qua Giao thức ngữ cảnh mô hình, cho phép Gemini CLI tương tác với các hệ thống và nguồn dữ liệu bên ngoài. Các máy chủ MCP đóng vai trò là cầu nối giữa mô hình Gemini và môi trường cục bộ của bạn hoặc các dịch vụ khác như API.

Máy chủ MCP cho phép Gemini CLI khám phá và thực thi các công cụ, từ đó mở rộng khả năng của Gemini CLI để thực hiện các hành động ngoài các tính năng tích hợp sẵn, chẳng hạn như tương tác với cơ sở dữ liệu, API, tập lệnh tuỳ chỉnh hoặc quy trình làm việc chuyên biệt.

Gemini CLI hỗ trợ việc định cấu hình các máy chủ MCP để khám phá và sử dụng các công cụ tuỳ chỉnh. Nếu đã chạy Gemini CLI, bạn có thể kiểm tra các máy chủ MCP được định cấu hình thông qua lệnh /mcp như minh hoạ dưới đây:

255a14eb31529370.png

Nếu bạn chưa định cấu hình bất kỳ máy chủ MCP nào, thì ứng dụng này sẽ khởi chạy tài liệu về Máy chủ MCP của Gemini CLI.

Bạn có thể định cấu hình các máy chủ MCP ở cấp độ chung trong tệp ~/.gemini/settings.json hoặc trong thư mục gốc của dự án. Tạo hoặc mở tệp .gemini/settings.json. Trong tệp này, bạn sẽ cần thêm khối cấu hình mcpServers, như minh hoạ dưới đây:

"mcpServers": {
    "server_name_1": {},
    "server_name_2": {},
    "server_name_n": {}
 }

Mỗi cấu hình máy chủ đều hỗ trợ các thuộc tính sau ( Tài liệu tham khảo):

Bắt buộc (một trong những giá trị sau)

  • command (string): Đường dẫn đến tệp thực thi cho phương thức truyền Stdio
  • url (chuỗi): URL điểm cuối SSE (ví dụ: "http://localhost:8080/sse")
  • httpUrl (chuỗi): URL điểm cuối phát trực tuyến qua HTTP

Không bắt buộc

  • args (string[]): Đối số dòng lệnh cho phương thức truyền Stdio
  • headers (object): Tiêu đề HTTP tuỳ chỉnh khi sử dụng url hoặc httpUrl
  • env (đối tượng): Biến môi trường cho quy trình máy chủ. Các giá trị có thể tham chiếu đến các biến môi trường bằng cách sử dụng cú pháp $VAR_NAME hoặc ${VAR_NAME}
  • cwd (chuỗi): Thư mục làm việc cho phương thức truyền Stdio
  • timeout (number): Thời gian chờ yêu cầu tính bằng mili giây (mặc định: 600.000 mili giây = 10 phút)
  • trust (boolean): Khi có giá trị true, tham số này sẽ bỏ qua tất cả các bước xác nhận lệnh gọi công cụ cho máy chủ này (mặc định: false)
  • includeTools (string[]): Danh sách tên công cụ cần đưa vào từ máy chủ MCP này. Khi được chỉ định, chỉ những công cụ có trong danh sách này mới có sẵn trên máy chủ này (hành vi danh sách cho phép). Nếu bạn không chỉ định, thì theo mặc định, tất cả các công cụ trên máy chủ sẽ được bật.
  • excludeTools (string[]): Danh sách tên công cụ cần loại trừ khỏi máy chủ MCP này. Các công cụ có trong danh sách này sẽ không có sẵn cho mô hình, ngay cả khi máy chủ hiển thị các công cụ đó. Lưu ý: excludeTools sẽ được ưu tiên hơn includeTools – nếu một công cụ có trong cả hai danh sách, thì công cụ đó sẽ bị loại trừ.

Hãy tiến hành định cấu hình một trong những máy chủ MCP chính mà bạn có thể cần nếu đang làm việc với Github. Có lẽ bạn sẽ thắc mắc: nếu đã thiết lập Git và các công cụ liên quan khác trên hệ thống, thì bạn có cần Github MCP Server nữa không?

Gemini CLI sẽ gọi các công cụ git mà bạn có trên hệ thống của mình và bạn cũng có thể hướng dẫn Gemini CLI sử dụng công cụ đó. Vì vậy, hãy lưu ý rằng Gemini CLI sẽ giúp dịch các câu hỏi bằng ngôn ngữ tự nhiên của bạn sang các công cụ tương đương mà bạn có thể có trên hệ thống của mình và bạn có thể phải nêu rõ điều đó trong câu lệnh của mình.

Bạn có thể không cần đến phần tiếp theo để thiết lập Máy chủ MCP Github nếu đã thiết lập những thứ sau đây trên hệ thống của mình:

  • Công cụ Git (điều này có nghĩa là bạn có thể thực thi các lệnh như git init, git add, v.v. trên hệ thống của mình)
  • gh : Đây là GitHub trên dòng lệnh. Tiện ích này mang các yêu cầu kéo, vấn đề và các khái niệm khác của GitHub vào cửa sổ dòng lệnh bên cạnh nơi bạn đang làm việc với git và mã của mình. Cài đặt công cụ này tại đây và xác thực chế độ thiết lập của công cụ thông qua một số lệnh, đặc biệt là các lệnh liên quan đến việc xác thực với Github từ máy của bạn.

Nếu bạn vẫn muốn dùng thử Máy chủ MCP của Github, vui lòng xem phần tiếp theo hoặc bạn có thể bỏ qua phần đó.

Máy chủ Github MCP

Máy chủ MCP chính thức của Github cung cấp đủ tài liệu về các công cụ mà máy chủ này hiển thị cùng với cách định cấu hình các công cụ đó. Bạn có thể chọn chạy cục bộ hoặc từ xa, vì Gemini CLI cũng hỗ trợ các máy chủ MCP từ xa.

Hướng dẫn này minh hoạ lựa chọn Máy chủ MCP từ xa trong Github. Để làm việc này, trước tiên, bạn cần có Mã truy cập cá nhân (PAT) từ Github.

Sau khi có được đối tượng này, bạn sẽ cần thêm đối tượng MCP Server vào tệp settings.json. Dưới đây là tệp settings.json hoàn chỉnh trên hệ thống của tôi. Bạn có thể có các chế độ cài đặt bổ sung, nhưng đối tượng mcpServers phải như sau:

{
  "theme": "Default",
  "selectedAuthType": "oauth-personal",
  "mcpServers": {
       "github": {
            "httpUrl": "https://api.githubcopilot.com/mcp/",
            "headers": {
                "Authorization": "GITHUB_PAT"
            },
            "timeout": 5000
       }
  }
}

Bạn có thể khởi động lại Gemini CLI hoặc thực hiện lệnh /mcp refresh sau khi cập nhật settings.json bằng cấu hình Máy chủ MCP Github. Ảnh chụp màn hình bên dưới làm nổi bật Máy chủ MCP Github được định cấu hình trên máy của tôi và nhiều công cụ hiện có sẵn cho Gemini CLI để hoạt động với MCP.

e34f348129d448e9.png

Hãy bắt đầu bằng một câu lệnh sẽ kích hoạt một trong các công cụ của Máy chủ MCP trên Github. Đưa ra câu lệnh sau:

da643d182ac3fca4.png

Lưu ý rằng công cụ này sẽ chọn công cụ phù hợp từ Máy chủ MCP của Github, nhưng cũng như các Công cụ tích hợp khác, bạn cũng cần phải cấp quyền rõ ràng để gọi công cụ này. Hãy tiếp tục và xem kết quả bạn nhận được.

Giờ đây, bạn nên làm việc với một trong các dự án trên Github. Đưa ra câu hỏi bằng ngôn ngữ tự nhiên, chẳng hạn như:

  • Hãy mô tả <repo-name> cho tôi?
  • Sao chép <repo-name> trên máy cục bộ của tôi.
  • Mô tả @<tên_tệp> hoặc @<tên_thư_mục>/
  • Kho lưu trữ này có những thành phần nào?
  • Tôi đã thực hiện các thay đổi cần thiết. Bạn có thể chuyển các thay đổi lên Github và sử dụng các công cụ Github MCP Server để thực hiện việc đó.

Bạn sẽ thấy một bài tập để làm việc chi tiết với Máy chủ MCP của Github ở phần sau của phòng thí nghiệm.

Máy chủ Context7 MCP

Context7 cung cấp tài liệu mới nhất cho LLM và trình chỉnh sửa mã AI. Nếu bạn muốn cung cấp ngữ cảnh cho LLM bằng tài liệu mới nhất về khung bạn chọn, thì máy chủ Context7 MCP là một lựa chọn phù hợp để định cấu hình.

Đảm bảo rằng bạn có thư viện được liệt kê trên trang chủ Context7.

Đây là MCP Server mà bạn cần thêm vào tệp settings.json.

"context7": {
      "httpUrl": "https://mcp.context7.com/mcp"
    }

Sau khi định cấu hình MCP Server và tải Gemini CLI thành công, bạn sẽ có thể xem các công cụ Context7 như sau:

92f715d87989ff72.png

Giờ đây, bạn có thể đưa ra câu lệnh cụ thể và yêu cầu Gemini CLI sử dụng Context7 để xem tài liệu mới nhất trong khi tạo ứng dụng hoặc đoạn mã bằng một khung XYZ cụ thể.

Dưới đây là một ví dụ về câu lệnh, trong đó tôi muốn viết một Đặc vụ bằng Bộ công cụ phát triển đặc vụ (ADK) của Google. Tôi đang chỉ định trong câu lệnh của mình để tra cứu tài liệu về vấn đề này thông qua Máy chủ Context7 MCP.

I am working on coding an Agent using the Agent Development Kit (ADK) from Google. I would like to know how to create the LLMAgent in Python. Use Context7 for the latest documentation on ADK and specifically use /google/adk-python, /google/adk-docs and adk.wiki 

Sau đây là kết quả nhận được:

fe79972a61372d59.png

Máy chủ MCP của Google Trang trình bày

Dự án Github tại https://github.com/matteoantoci/google-slides-mcp cung cấp một máy chủ MCP để tương tác với Google Slides API. Thư viện này cho phép bạn tạo, đọc và sửa đổi bản trình bày trên Google Trang trình bày theo phương thức lập trình.

Các bước định cấu hình máy chủ MCP được cung cấp trong dự án. Bạn sẽ cần có một môi trường Node.js để tạo máy chủ, định cấu hình Dự án Google Cloud và mã thông báo OAuth 2.0, sau đó định cấu hình Máy chủ MCP trong tệp settings.json.

Sau khi thiết lập, bạn có thể chạy các câu lệnh như:

  • Trích xuất thông tin mới nhất từ "web_url", tóm tắt thành các điểm chính và tạo một bản trình bày có tên "my_presentation".

Hãy dùng thử!

Nhiều máy chủ MCP

Dưới đây là danh sách bổ sung các máy chủ MCP mà bạn có thể quan tâm:

  1. Máy chủ MCP của Firebase
  2. Các dịch vụ truyền thông của AI tạo sinh của Google (Imagen, Veo, Lyria)
  3. MCP Toolbox for Databases (làm việc với Firestore, BigQuery, cơ sở dữ liệu Google Cloud)
  4. Máy chủ MCP của Google Workspace (hoạt động với Tài liệu, Trang tính, Lịch, Gmail)

Hướng dẫn thiết lập các máy chủ MCP nêu trên được đăng trong bài đăng này trên blog.

10. Tuỳ chỉnh Gemini CLI bằng GEMINI.md

Nếu đã sử dụng Gemini CLI, bạn sẽ nhận thấy rằng chúng ta chỉ đưa ra câu lệnh và mong đợi Gemini CLI thực thi câu lệnh đó, đôi khi kết quả không như mong đợi. Trong một số câu lệnh, bạn đã đưa ra chỉ dẫn cụ thể về việc cần làm và đã thêm những chỉ dẫn đó vào câu lệnh.

Điều này có thể hoạt động tốt theo những gì bạn hướng dẫn Gemini CLI thực hiện và kết quả bạn nhận được. Nhưng trong nhiều trường hợp, bạn muốn đảm bảo rằng nó tuân thủ các quy tắc. Những quy tắc này có thể là các ngôn ngữ lập trình hoặc khung cụ thể cần sử dụng. Đó cũng có thể là các công cụ cụ thể. Đó có thể là các kiểu mã hoá. Không chỉ tạo nội dung, bạn cũng có thể muốn Gemini CLI ở chế độ "lập kế hoạch" và chỉ trình bày kế hoạch chứ không tạo mã hoặc sửa đổi tệp trên hệ thống.

Nhập GEMINI.md. Đây là tệp bối cảnh (mặc định là GEMINI.md nhưng có thể định cấu hình thông qua thuộc tính contextFileName trong tệp settings.json) rất quan trọng để định cấu hình bối cảnh hướng dẫn (còn được gọi là "bộ nhớ") được cung cấp cho mô hình Gemini. Tệp này cho phép bạn đưa ra hướng dẫn cụ thể cho dự án, hướng dẫn về kiểu mã hoá hoặc mọi thông tin cơ bản có liên quan cho AI, giúp AI đưa ra câu trả lời phù hợp và chính xác hơn với nhu cầu của bạn.

Tệp GEMINI.md có định dạng đánh dấu và tải theo kiểu Phân cấp, được kết hợp từ nhiều vị trí.

Thứ tự tải là:

  1. Bối cảnh chung: **~/.gemini/GEMINI.md** (đối với những chỉ dẫn áp dụng cho tất cả dự án của bạn).
  2. Project/Ancestor Context (Ngữ cảnh dự án/ngữ cảnh tổ tiên): CLI tìm kiếm từ thư mục hiện tại của bạn cho đến thư mục gốc của dự án để tìm các tệp GEMINI.md.
  3. Ngữ cảnh thư mục con: CLI cũng quét các thư mục con để tìm tệp GEMINI.md, cho phép đưa ra các chỉ dẫn dành riêng cho thành phần.

Bạn có thể dùng /memory show để xem ngữ cảnh kết hợp cuối cùng được gửi đến mô hình.

GEMINI.md trông như thế nào? Chúng tôi đã tạo một ví dụ dựa trên tài liệu chính thức:

# Project: My Awesome TypeScript Library

## General Instructions:

- When generating new TypeScript code, please follow the existing coding style.
- Ensure all new functions and classes have JSDoc comments.
- Prefer functional programming paradigms where appropriate.
- All code should be compatible with TypeScript 5.0 and Node.js 20+.

## Coding Style:

- Use 2 spaces for indentation.
- Interface names should be prefixed with `I` (e.g., `IUserService`).
- Private class members should be prefixed with an underscore (`_`).
- Always use strict equality (`===` and `!==`).

## Specific Component: `src/api/client.ts`

- This file handles all outbound API requests.
- When adding new API call functions, ensure they include robust error handling and logging.
- Use the existing `fetchWithRetry` utility for all GET requests.

## Regarding Dependencies:

- Avoid introducing new external dependencies unless absolutely necessary.
- If a new dependency is required, please state the reason.

Bạn sẽ nhận thấy rằng hướng dẫn này cung cấp một số hướng dẫn chung, cộng với hướng dẫn rất cụ thể về kiểu mã hoá, quản lý phần phụ thuộc và nhiều nội dung khác. Mặc dù đây là tệp GEMINI.md mẫu cho các dự án TypeScript, nhưng bạn có thể tự viết tệp dựa trên ngôn ngữ lập trình, khung, kiểu mã hoá và các lựa chọn ưu tiên khác của mình.

Bạn có thể thử dùng tệp GEMINI.md tuỳ chỉnh. Đây là nội dung trích dẫn từ một đoạn mã được xuất bản, cho biết cách sử dụng Gemini CLI ở chế độ Lập kế hoạch. Tệp được sao chép ở đây:

# Gemini CLI Plan Mode
You are Gemini CLI, an expert AI assistant operating in a special 'Plan Mode'. Your sole purpose is to research, analyze, and create detailed implementation plans. You must operate in a strict read-only capacity.

Gemini CLI's primary goal is to act like a senior engineer: understand the request, investigate the codebase and relevant resources, formulate a robust strategy, and then present a clear, step-by-step plan for approval. You are forbidden from making any modifications. You are also forbidden from implementing the plan.

## Core Principles of Plan Mode
*   **Strictly Read-Only:** You can inspect files, navigate code repositories, evaluate project structure, search the web, and examine documentation.
*   **Absolutely No Modifications:** You are prohibited from performing any action that alters the state of the system. This includes:
    *   Editing, creating, or deleting files.
    *   Running shell commands that make changes (e.g., `git commit`, `npm install`, `mkdir`).
    *   Altering system configurations or installing packages.

## Steps
1.  **Acknowledge and Analyze:** Confirm you are in Plan Mode. Begin by thoroughly analyzing the user's request and the existing codebase to build context.
2.  **Reasoning First:** Before presenting the plan, you must first output your analysis and reasoning. Explain what you've learned from your investigation (e.g., "I've inspected the following files...", "The current architecture uses...", "Based on the documentation for [library], the best approach is..."). This reasoning section must come **before** the final plan.
3.  **Create the Plan:** Formulate a detailed, step-by-step implementation plan. Each step should be a clear, actionable instruction.
4.  **Present for Approval:** The final step of every plan must be to present it to the user for review and approval. Do not proceed with the plan until you have received approval. 

## Output Format
Your output must be a well-formatted markdown response containing two distinct sections in the following order:

1.  **Analysis:** A paragraph or bulleted list detailing your findings and the reasoning behind your proposed strategy.
2.  **Plan:** A numbered list of the precise steps to be taken for implementation. The final step must always be presenting the plan for approval.

NOTE: If in plan mode, do not implement the plan. You are only allowed to plan. Confirmation comes from a user message.

Lưu nội dung ở trên vào một tệp có tên là GEMINI.md và lưu tệp đó trong ~/.gemini/GEMINI.md. Đây là thư mục mà bạn đã tạo tệp settings.json. Bạn cũng có thể giữ tệp GEMINI.md trong thư mục <current project folder>/.gemini hoặc thậm chí có nhiều tệp GEMINI.md trong các thư mục con nếu có nhiều hướng dẫn.

Đưa ra một câu lệnh để tạo một ứng dụng và xem cách ứng dụng phản hồi.

Đây là một tệp GEMINI.md khác ( Chế độ giải thích của Gemini) mà bạn có thể nghiên cứu, sau đó điều chỉnh cho phù hợp với yêu cầu và sử dụng. Điều này tập trung vào việc GEMINI CLI là một hướng dẫn tương tác, giúp người dùng hiểu các cơ sở mã phức tạp thông qua quy trình khám phá mang tính trò chuyện.

Tệp GEMINI.md là chìa khoá để Gemini CLI tuân theo các lựa chọn ưu tiên của bạn. Bạn nên xem loạt bài thực tế "Gemini CLI thực tế" đi sâu vào lĩnh vực này, cách bạn có thể tự động tạo một tệp cho dự án của mình, tuỳ chỉnh cả Lệnh hệ thống và nhiều nội dung khác.

Xin lưu ý rằng bạn cũng có thể tạo tệp GEMINI.md khi tương tác với Gemini CLI. Bất cứ lúc nào, bạn cũng có thể dùng lệnh /memory add <some instruction/rule> và Gemini CLI sẽ thêm lệnh đó vào tệp GEMINI.md. Bạn thậm chí có thể sử dụng ngôn ngữ tự nhiên để yêu cầu Gemini CLI thêm thông tin vào bộ nhớ của công cụ này, tức là GEMINI.md thông qua các câu lệnh như "Ghi nhớ <một số hướng dẫn/quy tắc>" hoặc "Thêm vào bộ nhớ <một số hướng dẫn/quy tắc>".

11. Gemini CLI – Lệnh dấu gạch chéo tuỳ chỉnh

Bạn vừa xem cách tuỳ chỉnh GEMINI.md để tạo một chế độ kế hoạch. Phần trước cũng cung cấp cho bạn các đường liên kết đến Chế độ giải thích.

Điều gì sẽ xảy ra nếu bạn muốn định cấu hình cả hai chế độ này và hướng dẫn Gemini CLI chuyển sang một trong các chế độ này thông qua lệnh /plan hoặc /explain. Đây chính xác là mục đích của Lệnh tuỳ chỉnh có dấu gạch chéo trong Gemini CLI.

Theo tài liệu, "Lệnh tuỳ chỉnh cho phép bạn lưu và sử dụng lại các câu lệnh yêu thích hoặc thường dùng nhất dưới dạng lối tắt cá nhân trong Gemini CLI. Bạn có thể tạo các lệnh dành riêng cho một dự án hoặc các lệnh có sẵn trên toàn bộ dự án của mình, giúp đơn giản hoá quy trình làm việc và đảm bảo tính nhất quán."

Hãy tạo một vài Lệnh tuỳ chỉnh: /plan/explain.

Bước tiếp theo là tìm hiểu nơi Gemini CLI lấy các Lệnh tuỳ chỉnh. Theo tài liệu, ứng dụng này sẽ phát hiện các lệnh từ 2 vị trí, được tải theo một thứ tự cụ thể:

  1. Lệnh của người dùng (Toàn cầu): Nằm trong ~/.gemini/commands/. Bạn có thể dùng các lệnh này trong bất kỳ dự án nào mà bạn đang thực hiện.
  2. Lệnh dự án (Cục bộ): Nằm trong <your-project-root>/.gemini/commands/. Các lệnh này dành riêng cho dự án hiện tại và có thể được kiểm tra trong hệ thống kiểm soát phiên bản để chia sẻ với nhóm của bạn.

Hãy chọn thư mục dự án hiện tại nơi bạn đã chạy Gemini CLI. Vậy đây sẽ là thư mục <your-project-root>/.gemini/commands/. Hãy tiếp tục tạo cấu trúc thư mục.

Chúng ta cần tạo những gì trong thư mục này? Chúng ta cần 2 tệp TOML (plan.tomlexplain.toml). Bạn có thể đọc thêm về không gian tên và quy ước đặt tên nếu muốn tại đây.

Mỗi tệp TOML cần có 2 trường : descriptionprompt. Đảm bảo nội dung mô tả ngắn gọn và rõ ràng vì nội dung này sẽ xuất hiện bên cạnh lệnh trong Gemini CLI. Mẫu tệp TOML bên dưới được lấy từ bài đăng chính thức trên blog về Lệnh tuỳ chỉnh bằng dấu gạch chéo.

Dưới đây là một tệp plan.toml mẫu. Xin lưu ý rằng lời nhắc có chứa một phần giữ chỗ đặc biệt {{args}}, CLI sẽ thay thế chính xác phần giữ chỗ đó bằng tất cả văn bản mà người dùng đã nhập sau tên lệnh.

description="Investigates and creates a strategic plan to accomplish a task."
prompt = """
Your primary role is that of a strategist, not an implementer.
Your task is to stop, think deeply, and devise a comprehensive strategic plan to accomplish the following goal: {{args}}

You MUST NOT write, modify, or execute any code. Your sole function is to investigate the current state and formulate a plan.

Use your available "read" and "search" tools to research and analyze the codebase. Gather all necessary context before presenting your strategy.

Present your strategic plan in markdown. It should be the direct result of your investigation and thinking process. Structure your response with the following sections:

1.  **Understanding the Goal:** Re-state the objective to confirm your understanding.
2.  **Investigation & Analysis:** Describe the investigative steps you would take. What files would you need to read? What would you search for? What critical questions need to be answered before any work begins?
3.  **Proposed Strategic Approach:** Outline the high-level strategy. Break the approach down into logical phases and describe the work that should happen in each.
4.  **Verification Strategy:** Explain how the success of this plan would be measured. What should be tested to ensure the goal is met without introducing regressions?
5.  **Anticipated Challenges & Considerations:** Based on your analysis, what potential risks, dependencies, or trade-offs do you foresee?

Your final output should be ONLY this strategic plan.
"""

Hãy thử tạo cả tệp explain.toml. Bạn có thể tham khảo chế độ Giải thích của Gemini để chọn một số nội dung.

Khởi động lại Gemini CLI. Bây giờ, bạn sẽ thấy rằng ứng dụng này có một lệnh dấu gạch chéo (/plan) như minh hoạ dưới đây:

8b0720ba31b6c251.png

12. Các trường hợp sử dụng để thử

Bạn có thể áp dụng Gemini CLI cho nhiều trường hợp sử dụng đối với cả nhà phát triển và người dùng không phải nhà phát triển. Sau đây là một số trường hợp và tuỳ thuộc vào lĩnh vực mà bạn quan tâm, bạn có thể thử bất kỳ hoặc tất cả các trường hợp này.

Trong mỗi trường hợp này, lời nhắc sẽ được cung cấp. Bạn có thể dùng thử tính năng này ở chế độ tương tác hoặc không tương tác của Gemini CLI thông qua tham số -p tại thời điểm khởi chạy Gemini CLI.

Lập trình theo cảm hứng với Gemini CLI

Hãy dùng Gemini CLI để tạo mã cho một ứng dụng. Trong nhiệm vụ này, bạn sẽ yêu cầu Gemini CLI tạo một ứng dụng, sau đó đẩy phiên bản ban đầu lên một kho lưu trữ trên GitHub.

Điều kiện tiên quyết

Để thực hiện các tác vụ trong phần này, bạn cần đáp ứng một số điều kiện tiên quyết:

  • Git
  • Gemini CLI với Máy chủ MCP của GitHub (chúng ta đã làm việc này trước đó) hoặc nếu bạn đã thiết lập gh ( công cụ Github CLI), thì cách này cũng sẽ hiệu quả.
  • Làm quen với các kiến thức cơ bản về Git và có một chút kiến thức về lập trình

Chúng tôi sẽ giả định rằng bạn đã chạy Gemini CLI trong một thư mục cụ thể mà bạn chọn. Đảm bảo rằng các máy chủ MCP đã khởi động thành công, đặc biệt là máy chủ MCP Github.

Bắt đầu bằng một câu lệnh ban đầu. Bạn có thể sửa đổi nội dung này theo ý mình. Xin lưu ý rằng trong suốt phiên làm việc với Gemini CLI, công cụ này sẽ yêu cầu bạn cấp quyền tạo tệp, v.v. Hãy cấp các quyền cần thiết.

Trong nhiệm vụ này, chúng ta không cần Gemini CLI chạy ứng dụng hoặc kiểm thử ứng dụng cho chúng ta vì chúng ta muốn có thêm quyền kiểm soát. Tuy nhiên, bạn hoàn toàn có thể quyết định cách thức thực hiện.

Generate a website for a 1-day event filled with technical talks. There are going to be 6 talks in a single track of 1 hour each. Each talk has the following information: title, 1 or maximum of 2 speakers, category (1 or maximum of 3 keywords), duration and a description. The website has a single page where users can see the schedule for the entire day with the timings. There will be one lunch break of an hour and the event starts at 10:00 AM. Keep a 10 minute transition between talks. I would like to use Node.js on the server side and standard HTML, JavaScript and CSS on the front-end. The users should be able to search the talks based on category.

I would like you to proceed in the following way: 
1. Plan out how you would design and code this application.
2. Ask me for any clarifications along the way.
3. Once I am fine with it, do generate the code and provide me instructions to run and test locally. 

Một vài câu lệnh và câu trả lời tiếp theo là một quy trình mẫu đã được quan sát. Bạn có thể nhận được một câu trả lời hoàn toàn khác, vì vậy, hãy xem kỹ kế hoạch và tương tác qua lại với Gemini CLI nếu cần.

90232297f1e952f8.png

Chúng tôi nhận thấy đôi khi Gemini CLI cố gắng làm nhiều việc hơn và thậm chí có thể đưa ra cho bạn các lệnh mà công cụ này muốn thực thi. Đối với bài tập này, bạn không nên làm như vậy để có thể kiểm soát tốt hơn cách thực hiện tác vụ và những gì bạn muốn tự xác thực trước.

Ví dụ: nếu ứng dụng đề nghị chạy các lệnh, bạn có thể chỉ cần thoát và đưa ra thông báo như minh hoạ dưới đây:

d74e235b0db77c51.png

Sau khi làm theo hướng dẫn để khởi động máy chủ và chuyển đến trang chủ, chúng ta sẽ có một trang web mẫu như minh hoạ bên dưới (bạn sẽ thấy một phiên bản của trang web tương tự nếu dùng cùng một câu lệnh):

71a0a6123a90e068.png

Bạn có thể tiếp tục thực hiện các thay đổi khác với sự trợ giúp của Gemini CLI. Sau khi hài lòng với những thay đổi này, bạn có thể chuyển những thay đổi này vào một kho lưu trữ trên GitHub.

Trước tiên, hãy tạo một tệp .gitignore và bạn có thể nhờ đến sự trợ giúp của Gemini CLI.

Create a .gitignore file for this project.

Bước tiếp theo là bạn cần đưa ra chỉ dẫn cho Gemini CLI để đẩy kho lưu trữ này vào tài khoản Github của chúng tôi. Thao tác này sẽ thực hiện các công cụ Github MCP Server ở chế độ nền.

Đưa ra một câu lệnh tương tự như câu lệnh bên dưới:

Great! I would now like to push all of this to a new repository in my Github account. I would like to name this repository <Your-Name>-event-talks-app

Thao tác này sẽ thực hiện một số lệnh sau:

  1. Tạo kho lưu trữ.
  2. Thao tác này sẽ sử dụng nhiều lệnh Git : init, add, commit để quản lý kho lưu trữ Git cục bộ.
  3. Sau đó, nó sẽ thiết lập Git từ xa và thực hiện thao tác đẩy

Lưu ý: Có những trường hợp Gemini CLI có thể hết thời gian chờ hoặc sử dụng tên người dùng không chính xác, v.v. Hãy tương tác với Gemini CLI và đề xuất các bản sửa lỗi.

Nếu mọi thứ diễn ra suôn sẻ, bạn sẽ có một kho lưu trữ trên GitHub. Dưới đây là ảnh chụp màn hình mẫu:

35c2db48c39fb21a.png

Xin lưu ý rằng bạn chưa tạo README.md cho dự án này và đó là một bài tập hay cho phần tiếp theo, nơi chúng ta sẽ làm việc với kho lưu trữ mà bạn vừa tạo.

Sử dụng Gemini CLI để làm việc trên một kho lưu trữ GitHub

Trong trường hợp sử dụng này, bạn sẽ dùng Gemini CLI để làm việc với một kho lưu trữ trên GitHub. Bạn sẽ thực hiện nhiều nhiệm vụ, bao gồm:

  • Tìm hiểu cơ sở mã
  • Tạo tài liệu
  • Triển khai một tính năng mới
  • Xác nhận và đẩy các thay đổi trở lại kho lưu trữ
  • Xử lý một vấn đề trên GitHub và triển khai các thay đổi được đề xuất

Điều này sẽ giúp bạn có nền tảng vững chắc để làm việc với các kho lưu trữ và sử dụng Gemini CLI làm trợ lý cho những tác vụ dành riêng cho nhà phát triển này.

Điều kiện tiên quyết

Để thực hiện các thao tác trong phần này, bạn cần phải làm những việc sau:

  • Git
  • Gemini CLI với Máy chủ MCP của GitHub (chúng ta đã làm việc này trước đó) hoặc nếu bạn đã thiết lập gh ( công cụ Github CLI), thì cách này cũng sẽ hiệu quả.
  • Nắm vững kiến thức cơ bản về Git và có một chút kiến thức về lập trình (chúng ta sẽ sử dụng Node.js trong ví dụ này vì có thể bạn đã chuẩn bị sẵn môi trường trên máy do đã cài đặt Gemini CLI). Tuy nhiên, sau này, bạn có thể chọn một kho lưu trữ tuỳ ý bằng ngôn ngữ lập trình và khung khác.
  • Bạn nên hoàn thành phần trước và có sẵn kho lưu trữ, nơi chúng ta đã tạo một trang web Event Talks.

Hãy tiếp tục sử dụng Gemini CLI từ thư mục/thư mục mà bạn đã dùng để tạo ứng dụng Event Talks. Nếu cần, bạn có thể sao chép kho lưu trữ vào máy cục bộ rồi khởi động Gemini CLI từ thư mục đó. Hãy thử các trường hợp sau đây như được liệt kê bên dưới:

Tìm hiểu cơ sở mã

  • Tôi muốn hiểu rõ về dự án này. Hãy giúp tôi hiểu các tính năng chính, sau đó chia nhỏ thành phía máy chủ và phía máy khách. Lấy một quy trình mẫu và cho tôi biết cách hoạt động của yêu cầu và phản hồi.
  • Giải thích về @server.js

Tạo tệp README

  • Tạo tệp README cho dự án này.

Trong trường hợp này, Gemini CLI không chỉ tạo tệp README mà còn muốn thực thi các lệnh để thêm vào kho lưu trữ Git và đẩy các thay đổi lên máy chủ từ xa. Nếu thấy Gemini CLI làm như vậy, bạn có thể cho phép.

Trong một số trường hợp, công cụ này thậm chí có thể đề xuất tạo tệp LICENSE cho bạn. Bạn có thể quyết định có muốn làm như vậy hay không. Tuỳ thuộc vào kết quả, bạn sẽ thấy các tệp README và/hoặc LICENSE được tạo và các thay đổi đã được chuyển đến Github.

d77239c8fae0aa8b.png

Triển khai một tính năng mới

  • Tôi muốn triển khai một tính năng mới cho phép người dùng tìm kiếm theo một Diễn giả cụ thể. Trước tiên, hãy cho tôi xem kế hoạch về cách bạn sẽ triển khai thay đổi này, sau đó chúng ta có thể tạo mã.

Hệ thống sẽ cung cấp cho bạn một kế hoạch mà bạn có thể phê duyệt. Sau khi được phê duyệt, Gemini CLI sẽ tiến hành thực hiện những thay đổi đó. Hãy kiểm tra các thay đổi của bạn và nếu có lỗi (rất có thể), hãy yêu cầu Gemini CLI sửa lỗi.

Sau khi các thay đổi trông ổn, bạn có thể làm theo các bước tương tự để xác nhận và đẩy các thay đổi đó lên kho lưu trữ từ xa.

Tạo vấn đề dựa trên các tính năng được đề xuất

Hãy thử một điều gì đó thú vị. Bạn sẽ hỏi Gemini CLI về cách công cụ này có thể cải thiện trải nghiệm người dùng của ứng dụng này. Dựa trên đánh giá của mình, Gemini CLI có thể tạo những đề xuất đó dưới dạng vấn đề trong cùng một kho lưu trữ trên GitHub. Thao tác này sẽ sử dụng công cụ "create_issue" từ Máy chủ MCP của Github.

Hãy thử câu lệnh sau:

  • Tôi muốn bạn đánh giá ứng dụng này dưới góc độ trải nghiệm người dùng. Dễ sử dụng, có tính phản hồi, thông báo hữu ích và nhiều yếu tố khác. Vui lòng đưa ra một danh sách các điểm cải thiện, sau đó tôi muốn bạn tạo các điểm cải thiện đó dưới dạng Vấn đề trong kho lưu trữ Github.

Lý tưởng nhất là trước tiên, công cụ này sẽ chia sẻ những điểm cải tiến với bạn, sau đó tiến hành tạo các vấn đề trong kho lưu trữ Github khi có sự cho phép của bạn. Sau đây là ảnh chụp màn hình mẫu từ lần chạy của chúng tôi:

495b0f7afab91ec6.png

Xử lý một vấn đề trên GitHub và triển khai các thay đổi được đề xuất

Giờ đây, bạn có thể chọn một trong những vấn đề đã được tạo trước đó và yêu cầu Gemini CLI xử lý và triển khai vấn đề đó.

Dưới đây là một vấn đề mẫu mà công cụ này tạo ra:

2e41f9f6eac3d1b.png

Lấy toàn bộ URL của vấn đề và đưa ra một câu lệnh như sau:

  • Vui lòng xem xét Vấn đề: <YOUR_ISSUE_URL> và hiểu rõ những thay đổi cần thực hiện. Trước tiên, hãy thảo luận về kế hoạch, sau đó cho thấy những thay đổi được đề xuất trong mã.

Bạn có thể phê duyệt các thay đổi và đẩy chúng vào kho lưu trữ. Bạn thậm chí có thể yêu cầu Gemini đóng vấn đề này.

cd3c89cf3d47723b.png

(Không bắt buộc) Việc hằng ngày

Các trường hợp sử dụng dưới đây là những tác vụ mà bạn có thể thường xuyên thực hiện. Các thao tác này bao gồm sắp xếp tệp vào thư mục, tìm nạp và tóm tắt nội dung trên web, xử lý tệp hình ảnh và trích xuất nội dung từ các tệp đó, làm việc với cơ sở dữ liệu và nhiều thao tác khác.

Bạn có thể thoải mái khám phá bất kỳ trường hợp sử dụng nào mà bạn thích.

Sắp xếp tệp/thư mục

Bạn có thể sử dụng Gemini CLI để sắp xếp các tệp tuỳ theo loại trong nhiều thư mục khi cần. Chuyển đến một thư mục trên máy có nhiều tệp .txt, .png, .jpg, .pdf, .mp4 và các tệp khác. Đây thường là thư mục Desktop hoặc thư mục Tải xuống.

Dưới đây là một thư mục mẫu và nội dung của thư mục đó (bạn có thể có các tệp khác):

e9d70be5bbea46d5.png

Chuyển đến thư mục đó rồi khởi động Gemini CLI. Trước tiên, bạn sẽ yêu cầu Gemini CLI tạo một số thư mục: Hình ảnh, Tài liệu, Video, sau đó bạn sẽ yêu cầu Gemini CLI sắp xếp các tệp trong các thư mục đó.

Gemini CLI thường sẽ nhắc bạn cấp quyền trước khi thực thi các lệnh, đặc biệt là những lệnh sửa đổi hệ thống tệp (chẳng hạn như ghi, di chuyển hoặc xoá tệp). Luôn xem xét kỹ những lời nhắc này trước khi cấp quyền. Đây là biện pháp dự phòng cho bạn.

Create the following folders "Images","Documents","Videos"

Sau đó, hãy đưa ra câu lệnh sau:

Go through all the files in this folder and then organize them by moving all the files ending with .jpg, .jpeg, .gif into the "Images" folder. Move all ".txt" files into the "Documents" folder. Move all the ".mp4" files in the "Videos" folder.

Dưới đây là ví dụ về trạng thái cuối cùng của thư mục. Bạn sẽ thấy các thư mục con mới được tạo và các tệp được di chuyển vào thư mục con tương ứng, tuỳ thuộc vào loại tệp.

7e27d4c88416f62.png

Một số tình huống sắp xếp khác (các câu lệnh được đưa ra bên cạnh mỗi tình huống):

  1. Tóm tắt: Đối với mỗi tài liệu trong thư mục "Tài liệu", hãy tạo một tệp txt trong cùng thư mục có tên là "summary_ORIGINAL_FILENAME.txt" chứa nội dung tóm tắt 3 câu về các điểm chính của tài liệu.
  2. Phân loại theo loại: Quét tất cả tệp PDF và DOCX trong thư mục này. Di chuyển tất cả tệp có tên hoặc nội dung chứa từ "hoá đơn" vào thư mục "Tài chính/Hoá đơn". Di chuyển các tệp có "biên nhận" vào thư mục "Tài chính/Biên nhận". Mọi tệp .docx khác sẽ được chuyển vào thư mục "Báo cáo".
  3. Trích xuất thông tin chính (và "gắn thẻ"): Đối với mỗi tệp PDF trong thư mục "Financial/Invoices" (Tài chính/Hoá đơn), hãy đọc nội dung của tệp đó. Nếu bạn tìm thấy ngày, hãy đổi tên tệp để thêm ngày đó theo định dạng YYYY-MM-DD, ví dụ: ‘invoice_2025-07-26_original_name.pdf'.

Sắp xếp hình ảnh

Hãy xem cách bạn có thể sắp xếp nội dung hình ảnh trong máy tính của mình.

Cách dùng thử:

  • Bạn sẽ cần có một thư mục chứa nhiều tệp hình ảnh (.jpg, .png, v.v.). Thêm một số hình ảnh có dữ liệu EXIF (hầu hết ảnh chụp bằng camera/điện thoại đều có dữ liệu này).
  • Chuyển đến thư mục này.
  • Khởi chạy Gemini CLI.

Hãy thử một trong các tình huống sau (các câu lệnh được đưa ra bên cạnh mỗi tình huống):

  • Đổi tên theo ngày (Dữ liệu EXIF): Đổi tên tất cả các tệp .jpg và .png trong thư mục này để thêm ngày tạo từ dữ liệu EXIF ở định dạng "YYYYMMDD_HHMMSS_original_name.jpg". Nếu không tìm thấy ngày EXIF, hãy sử dụng ngày sửa đổi gần đây nhất của tệp.
  • Tạo nội dung mô tả cho hình ảnh: Đối với mỗi hình ảnh trong thư mục này, hãy mô tả nội dung trong hình ảnh và lưu nội dung mô tả đó vào một tệp văn bản có tên là "description_ORIGINAL_FILENAME.txt" trong cùng thư mục.
  • Xác định nội dung trùng lặp (Dựa trên khái niệm, yêu cầu logic nâng cao hơn): Tìm mọi hình ảnh trùng lặp trong thư mục này dựa trên nội dung trực quan và liệt kê tên tệp của các hình ảnh đó. Đừng xoá các tệp này vội.

Tóm tắt bài viết (Tệp cục bộ hoặc trên web)

Đối với mỗi trường hợp dưới đây, bạn có thể thay đổi URL, chủ đề quan tâm và tên tệp cục bộ nếu cần. Tên tệp được cung cấp là tên tệp mẫu, bạn có thể thay thế bằng tên tệp của các tệp có trên hệ thống của mình.

Hãy thử một trong các tình huống sau (các câu lệnh được đưa ra bên cạnh mỗi tình huống):

  • Tóm tắt một bài viết trên web (một URL): Truy cập vào https://medium.com/google-cloud/getting-started-with-gemini-cli-8cc4674a1371 và tóm tắt 3 điểm chính hàng đầu trong bài viết tin tức này.
  • Tóm tắt nhiều bài viết trên web (ví dụ: từ một cụm từ tìm kiếm): Tìm các bài viết tin tức mới nhất về "Gemini CLI" bằng Google Tìm kiếm. Đối với 5 bài viết liên quan hàng đầu, hãy tóm tắt mỗi bài trong 2 đến 3 câu và liệt kê URL của các bài viết đó.
  • Tóm tắt một tệp văn bản cục bộ: Tóm tắt các điểm chính của bài viết trong tệp "my_research_paper.txt". Tập trung vào phương pháp và kết luận.
  • Tóm tắt một tệp PDF trên thiết bị: Đọc "financial_report_Q2_2025.pdf". Tóm tắt hiệu quả hoạt động tài chính và những thách thức chính được đề cập.

Trích xuất thông tin cụ thể (Tệp cục bộ hoặc Web)

Đối với mỗi trường hợp dưới đây, bạn có thể thay đổi URL, chủ đề quan tâm và tên tệp cục bộ nếu cần. Tên tệp được cung cấp là tên tệp mẫu, bạn có thể thay thế bằng tên tệp của các tệp có trên hệ thống của mình.

Hãy thử một trong các tình huống sau (các câu lệnh được đưa ra bên cạnh mỗi tình huống):

  • Trích xuất thực thể từ một bài viết trên máy: Từ "biography.txt", hãy liệt kê tất cả cá nhân có tên và những ngày quan trọng liên quan đến họ.
  • Trích xuất dữ liệu từ một bảng trong tệp PDF: Trong tệp "quarterly_sales.pdf", hãy trích xuất dữ liệu từ bảng trên trang 3 cho biết "Doanh số sản phẩm theo khu vực" và trình bày dữ liệu đó ở định dạng bảng Markdown.
  • Trích xuất tiêu đề và nguồn tin tức từ một trang web tin tức: Truy cập vào "https://news.google.com/" (hoặc một trang web tin tức tương tự). Trích xuất các tiêu đề chính trên trang nhất và nguồn tin tức tương ứng. Trình bày dưới dạng danh sách có dấu đầu dòng.
  • Tìm thông số kỹ thuật của sản phẩm trên một trang thương mại điện tử: Duyệt xem "https://www.amazon.in/Google-Cloud-Certified-Associate-Engineer/dp/1119871441" (ví dụ về một cuốn sách). Trích xuất tên sách, tác giả và các thông tin khác. Trình bày thông tin này ở định dạng JSON có cấu trúc.
  • Trích xuất thời lượng của một video ở một định dạng nhất định (ví dụ: "2h37m42s").

Trả lời câu hỏi dựa trên nội dung (hành vi tương tự như RAG)

Đối với mỗi trường hợp dưới đây, bạn có thể thay đổi URL, chủ đề quan tâm và tên tệp cục bộ nếu cần. Tên tệp được cung cấp là tên tệp mẫu, bạn có thể thay thế bằng tên tệp của các tệp có trên hệ thống của mình.

Hãy thử một trong các tình huống sau (các câu lệnh được đưa ra bên cạnh mỗi tình huống):

  • Hỏi và đáp về một tài liệu tại địa phương: Tôi đang đính kèm "user_manual.pdf". Các bước khắc phục sự cố kết nối mạng là gì?
  • Hỏi và đáp trên trang web: Dựa vào nội dung trên"https://www.who.int/news-room/fact-sheets/detail/climate-change-and-health", theo WHO, những nguy cơ chính đối với sức khoẻ liên quan đến biến đổi khí hậu là gì?
  • So sánh thông tin từ nhiều nguồn: Tôi có hai bài viết tin tức: "article1.txt" và "article2.txt", cả hai đều thảo luận về những thay đổi gần đây trong chính sách kinh tế. So sánh và đối chiếu quan điểm của họ về tác động tiềm ẩn đối với doanh nghiệp nhỏ.

Tạo nội dung dựa trên thông tin được trích xuất

Đối với mỗi trường hợp dưới đây, bạn có thể thay đổi URL, chủ đề quan tâm và tên tệp cục bộ nếu cần.

Hãy thử một trong các tình huống sau (các câu lệnh được đưa ra bên cạnh mỗi tình huống):

  • Tạo bản tin vắn tắt từ một bài viết: Đọc @tech_innovation_article.txt. Viết một bản tin ngắn gọn, hấp dẫn (khoảng 150 từ) phù hợp với bản tin của công ty, nêu bật công nghệ mới và tiềm năng của công nghệ đó.
  • Soạn email tóm tắt bản chép lời của cuộc họp: Đây là tệp bản chép lời của cuộc họp: @meeting_transcript.txt. Soạn thảo một email gửi cho nhóm để tóm tắt các quyết định quan trọng đã đưa ra và những việc cần làm đã được giao, bao gồm cả người chịu trách nhiệm cho từng việc.

Gemini CLI hỗ trợ nhiều phương thức

Gemini CLI hỗ trợ nhiều mô hình thông qua Gemini và bạn có thể yêu cầu Gemini CLI xử lý các tệp có nhiều định dạng nội dung theo yêu cầu của bạn.

Bạn sẽ xử lý một loạt hình ảnh hoá đơn bằng Gemini CLI và trích xuất thông tin chính từ các hình ảnh đó. Hãy làm theo các bước dưới đây:

  • Tạo một thư mục trên máy của bạn và tải một số hoá đơn xuống từ kho lưu trữ sau đây trên Github.
  • Khởi chạy Gemini CLI từ thư mục đó

Đưa ra câu lệnh sau để trích xuất thông tin từ hoá đơn dưới dạng bảng.

The current folder contains a list of invoice files in Image format. Go through all the files in this folder and extract the following invoice information in the form of a table: Invoice No, Invoice Date, Invoice Sent By, Due Date, Due Amount.

Lý tưởng nhất là bạn sẽ nhận được kết quả đầu ra có dạng như sau:

fb4183498d02229.png

Sau đây là một trường hợp khác, trong đó bạn có thể yêu cầu thêm các cột phái sinh. Giả sử bạn muốn hiển thị biểu tượng cảm xúc dấu thập đỏ cho tất cả ngày đến hạn thanh toán hoá đơn đã qua. Bạn có thể đưa ra câu lệnh như sau:

list all files with .png extension in this folder. Extract the invoice information from it by reading them locally and display it in a table format containing the following column headers: : Invoice No, Invoice Date, Invoice Sent By, Due Date, Due Amount. Add a column at the end of the table that shows a red cross emoji in case the due date is in the past.

Kết quả sẽ như sau:

f65f6ca8308c7053.png

Áp dụng quy tắc này cho mọi tệp của riêng bạn ở các định dạng khác ngoài văn bản.

Sử dụng Gemini CLI để làm việc với cơ sở dữ liệu

Bạn có thể sử dụng Gemini CLI để làm việc hiệu quả hơn với nhiều cơ sở dữ liệu. Bạn có thể sử dụng công cụ này cho nhiều trường hợp: truy vấn bằng ngôn ngữ tự nhiên, xuất dữ liệu, thiết kế giản đồ cơ sở dữ liệu, tạo dữ liệu kiểm thử thực tế, v.v.

Bạn sẽ dùng SQLite3 để thực hiện nhiệm vụ này. Bạn sẽ cần cài đặt SQLite3 và có cơ sở dữ liệu mẫu Chinook.

Sau đây là hướng dẫn ngắn gọn về cách thiết lập SQLite3:

  1. macOS: SQLite3 được cài đặt sẵn. Xác minh bằng sqlite3 --version. Nếu cần, hãy cài đặt bằng Homebrew: brew install sqlite3.
  2. Windows: Tải các tệp nhị phân được biên dịch sẵn xuống từ trang web của SQLite. Giải nén các tệp vào một thư mục (ví dụ: C:\sqlite). Thêm thư mục đó vào biến môi trường PATH của hệ thống.
  3. Linux: Debian/Ubuntu: sudo apt update && sudo apt install sqlite3

Tải cơ sở dữ liệu mẫu Chinook xuống (đây là đường liên kết trực tiếp để tải cơ sở dữ liệu này xuống).

Để chạy các câu lệnh này, bạn nên tạo một thư mục (database-tasks) trong thư mục gemini-cli-projects. Sao chép tệp cơ sở dữ liệu Chinook vào thư mục đó. Đảm bảo rằng công cụ sqlite3 được thiết lập trên hệ thống của bạn và có trong đường dẫn để Gemini CLI có thể sử dụng công cụ đó. Khởi chạy Gemini CLI.

Sơ đồ giản đồ cơ sở dữ liệu được minh hoạ dưới đây:

fb8e96c21ad57590.png

Giả sử bạn đang ở trong một thư mục có tên là database-tasks và tệp cơ sở dữ liệu Chinook có tên là chinook.db.

Dưới đây là một số câu lệnh có thể giúp bạn làm việc với cơ sở dữ liệu. Hãy xem qua nhanh quyền đầu tiên để minh hoạ quyền sẽ được yêu cầu.

Bắt đầu bằng câu lệnh liệt kê các bảng có trong cơ sở dữ liệu, đưa ra câu lệnh sau:

What tables are present in the file: chinook.db 

Thao tác này sử dụng công cụ để đọc tệp, sau đó muốn dùng tiện ích sqlite3 có trên hệ thống của bạn để thực hiện những việc cần thiết:

b2a17ef60706c3f5.png

Cấp quyền chạy một lần để nhận được kết quả dự kiến:

8d40754b830f4697.png

Hãy thử các câu lệnh sau hoặc bất kỳ câu lệnh nào khác mà bạn muốn:

  • Có bao nhiêu nhân viên?
  • Cấu trúc của bảng hoá đơn là gì?
  • 3 hoá đơn nào có tổng giá trị cao nhất và khách hàng nào đã đặt những hoá đơn đó?

Bạn sẽ nhận thấy Gemini CLI đảm nhiệm 2 việc: Tạo câu lệnh SQL chính xác để đáp ứng yêu cầu của bạn và đưa ra lệnh sqlite3 chính xác.

Sử dụng Gemini CLI để tạo dữ liệu

Bạn có thể yêu cầu Gemini CLI tạo dữ liệu ở nhiều định dạng dữ liệu. Điều này có thể bao gồm từ các phần nội dung đến dữ liệu JSON mà bạn có thể cần mô phỏng. Hãy tập trung vào các trường hợp áp dụng cho nhà phát triển/người kiểm thử.

Sau đây là một số câu lệnh bạn có thể thử:

Tạo dữ liệu JSON của các bài đánh giá mẫu của khách hàng

Generate a JSON array of 3 synthetic customer reviews for a new smartphone. Each review should have 'reviewId' (string, UUID-like), 'productId' (string, e.g., 'SMARTPHONE_X'), 'rating' (integer, 1-5), 'reviewText' (string, 20-50 words), and 'reviewDate' (string, YYYY-MM-DD format).

Tạo phản hồi API mô phỏng (JSON)

Generate a JSON array representing 7 daily sales records for a mock API endpoint. Each record should include 'date' (YYYY-MM-DD, chronologically increasing), 'revenue' (float, between 5000.00 and 20000.00), 'unitsSold' (integer, between 100 and 500), and 'region' (string, either 'North', 'South', 'East', 'West').

Tạo câu lệnh chèn cơ sở dữ liệu mẫu (SQL)

Generate 5 SQL INSERT statements for a table named 'users' with columns: 'id' (INTEGER, primary key), 'username' (VARCHAR(50), unique), 'email' (VARCHAR(100)), 'password_hash' (VARCHAR(255)), 'created_at' (DATETIME, current timestamp). Ensure the password_hash is a placeholder string like 'hashed_password_X'.

Tạo dữ liệu CSV để tải/phân tích dữ liệu

Generate 10 lines of CSV data, including a header row, for customer transactions. Columns should be: 'TransactionID' (unique string), 'CustomerID' (integer), 'ItemPurchased' (string, e.g., 'Laptop', 'Monitor', 'Keyboard'), 'Quantity' (integer, 1-3), 'UnitPrice' (float, between 100.00 and 1500.00), 'TransactionDate' (YYYY-MM-DD).

Tạo tệp cấu hình (YAML)

Generate a sample YAML configuration for a 'user_service'. Include sections for 'database' with 'host', 'port', 'username', 'password', 'database_name'. Also include a 'api_keys' section with 'payment_gateway' and 'email_service' placeholders. Use realistic default values.

Tạo dữ liệu kiểm thử cho các trường hợp biên/xác thực

Generate a JSON array of 8 email addresses for testing purposes. Include a mix of: 2 valid standard emails, 2 with missing '@', 2 with invalid domains (e.g., '.com1'), and 2 with special characters in the local part that are usually invalid (e.g., spaces or multiple dots).

13. Xin chúc mừng

Xin chúc mừng! Bạn đã khám phá thành công Gemini CLI, các chức năng của công cụ này và áp dụng cho một số trường hợp sử dụng.

Tài liệu tham khảo