Đánh giá mã và phân tích bảo mật bằng Gemini CLI có các tiện ích

1. 📖 Giới thiệu

194a7f6f1a93b614.png

Trong lớp học lập trình này, bạn sẽ tìm hiểu những kiến thức cơ bản về Gemini CLI và sử dụng tiện ích đánh giá mã cũng như phân tích bảo mật của Gemini CLI trong quy trình phát triển phần mềm của mình.

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

  • Cách thiết lập Gemini CLI
  • Cách định cấu hình Gemini CLI
  • Cách cài đặt tiện ích Gemini CLI
  • Cách sử dụng tiện ích Gemini CLI để đánh giá mã và phân tích bảo mật
  • Cách định cấu hình MCP cho Gemini CLI
  • Cách kiểm tra Gemini CLI trong CI/CD

Bạn cần có

  • Trình duyệt web Chrome
  • Tài khoản Gmail
  • Một Dự án trên đám mây đã bật tài khoản thanh toán

2. 🚀 Chuẩn bị thiết lập môi trường phát triển cho hội thảo

Bước 1: Chọn Dự án đang hoạt động trong Cloud Console

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 (xem phần trên cùng bên trái của bảng điều khiển)

3a143645e891087.png

Nhấp vào biểu tượng đó, bạn sẽ thấy danh sách tất cả dự án của mình như ví dụ này:

59e03077d1ba2039.png

Giá trị được biểu thị bằng hộp màu đỏ là MÃ DỰ ÁN và giá trị này sẽ được dùng trong suốt hướng dẫn.

Đảm bảo rằng bạn đã bật tính năng thanh toán cho dự án trên Cloud. Để kiểm tra, hãy nhấp vào biểu tượng trình đơn ☰ ở thanh trên cùng bên trái để xem Trình đơn điều hướng và tìm trình đơn Thanh toán

973396bb9d9c3523.png

837e03fb7edafdc4.png

Nếu bạn thấy "Tài khoản thanh toán dùng thử của Google Cloud Platform" trong phần Thanh toán / Tổng quan ( phần trên cùng bên trái của bảng điều khiển đám mây), thì dự án của bạn đã sẵn sàng để sử dụng cho hướng dẫn này. Nếu không, hãy quay lại đầu hướng dẫn này và sử dụng tài khoản thanh toán dùng thử

7f607aa026552bf5.png

Bước 2: Làm quen với Cloud Shell

Bạn sẽ sử dụng Cloud Shell cho hầu hết các phần của hướng dẫn, hãy nhấp vào Kích hoạt Cloud Shell ở đầu Google Cloud Console. Nếu hệ thống nhắc bạn uỷ quyền, hãy nhấp vào Uỷ quyền

1829c3759227c19b.png

b8fe7df5c3c2b919.png

Sau khi kết nối với Cloud Shell, chúng ta cần kiểm tra xem shell ( hoặc cửa sổ dòng lệnh) đã được xác thực bằng tài khoản của chúng ta hay chưa

gcloud auth list

Nếu bạn thấy gmail cá nhân của mình như ví dụ về đầu ra bên dưới, thì mọi thứ đều ổn

Credentialed Accounts

ACTIVE: *
ACCOUNT: alvinprayuda@gmail.com

To set the active account, run:
    $ gcloud config set account `ACCOUNT`

Nếu không, hãy thử làm mới trình duyệt và đảm bảo bạn nhấp vào Uỷ quyền khi được nhắc ( quá trình này có thể bị gián đoạn do sự cố kết nối)

Tiếp theo, chúng ta cũng cần kiểm tra xem shell đã được định cấu hình thành PROJECT ID chính xác mà bạn có hay chưa. Nếu thấy có giá trị bên trong ( ) trước biểu tượng $ trong thiết bị đầu cuối ( trong ảnh chụp màn hình bên dưới, giá trị là "your-workshop-project"), thì giá trị này cho biết dự án đã được định cấu hình cho phiên shell đang hoạt động của bạn.

25e65d7ad1d62de0.png

Nếu giá trị xuất hiện đã chính xác, bạn có thể bỏ qua lệnh tiếp theo. Tuy nhiên, nếu không chính xác hoặc bị thiếu, hãy chạy lệnh sau

gcloud config set project <YOUR_PROJECT_ID>

Bước 3: Làm quen với Cloud Shell Editor và thiết lập thư mục làm việc của ứng dụng

Bây giờ, chúng ta có thể thiết lập trình chỉnh sửa mã để thực hiện một số việc liên quan đến mã hoá. Chúng ta sẽ sử dụng Trình chỉnh sửa Cloud Shell cho việc này

Nhấp vào nút Open Editor (Mở trình chỉnh sửa). Thao tác này sẽ mở Cloud Shell Editor b16d56e4979ec951.png

Giờ đây, bạn sẽ thấy giao diện Cloud Shell Editor như minh hoạ bên dưới

74e9e030342164b6.png

Bây giờ, hãy sao chép kho lưu trữ bản minh hoạ mà chúng ta sẽ tương tác. Trước tiên, chúng ta cần mở cửa sổ dòng lệnh cho trình chỉnh sửa. Bạn có thể thực hiện việc này bằng cách nhấp vào Terminal -> New Terminal (Cửa sổ dòng lệnh -> Cửa sổ dòng lệnh mới) trên thanh trình đơn hoặc sử dụng tổ hợp phím Ctrl + Shift + C. Thao tác này sẽ mở một cửa sổ dòng lệnh ở phần dưới cùng của trình duyệt

95e31ec63a88890d.png

Sau đó, hãy chạy lệnh này trên thiết bị đầu cuối

git clone https://github.com/alphinside/gemini-cli-code-analysis-demo.git code-analysis-demo

Sau đó, hãy chuyển đến phần trên cùng của Cloud Shell Editor rồi nhấp vào File->Open Folder (Tệp->Mở thư mục), tìm thư mục username (tên người dùng) của bạn rồi tìm thư mục kho lưu trữ được sao chép code-analysis-demo, sau đó nhấp vào nút OK. Thao tác này sẽ đặt thư mục đã chọn làm thư mục làm việc chính. Trong ví dụ này, tên người dùng là alvinprayuda, do đó, đường dẫn thư mục được hiển thị bên dưới

ee00d484ff2f8351.png

194f63ef6de51b9.png

Giờ đây, thư mục làm việc của Cloud Shell Editor sẽ có dạng như sau

2d53c6161b553e68.png

Bây giờ, chúng ta có thể chuyển sang giai đoạn tiếp theo

3. 🚀 Thiết lập và cấu hình

Nếu muốn cài đặt Gemini CLI trong hệ thống cục bộ, bạn có thể làm theo các bước sau:

  1. Đảm bảo hệ thống của bạn có Node phiên bản 20 trở lên
  2. Bật Gemini CLI bằng một trong hai cách sau:
  • Cài đặt dưới dạng gói toàn cục
# Install as an executor

npm install -g @google/gemini-cli

# then run it from terminal
gemini
  • Hoặc chạy trực tiếp từ nguồn để luôn có phiên bản mới nhất
npx https://github.com/google-gemini/gemini-cli

Khi bạn chạy lần đầu tiên, chương trình sẽ hỏi bạn một số câu hỏi. Nếu bạn chạy ứng dụng này từ một IDE (ví dụ: VSCode), ứng dụng sẽ hỏi bạn câu hỏi sau

7f0f7d5091df7abb.png

Sau đó, hệ thống sẽ yêu cầu bạn chọn một trong số các phương thức xác thực

7ce5c6574f249304.png

Có nhiều tùy chọn:

  • Nếu bạn chọn Đăng nhập bằng Google, thì một trang Xác thực của Google sẽ mở ra trong trình duyệt và bạn chỉ cần chấp nhận trang này
  • Nếu muốn sử dụng Khoá Gemini API, bạn sẽ cần tạo một khoá trên trang AI Studio, sau đó tạo tệp .env trong thư mục làm việc của bạn với biến GEMINI_API_KEY được đặt ( hoặc chạy lệnh export GEMINI_API_KEY="your-api-key" trên dòng lệnh)
  • Nếu chọn sử dụng Vertex AI, bạn sẽ cần một dự án như đã thiết lập trước đó, đồng thời tạo tệp .env và đặt GOOGLE_CLOUD_PROJECTGOOGLE_CLOUD_LOCATION

Nếu muốn thay đổi các phương thức xác thực này, bạn có thể chạy lệnh /auth từ Gemini CLI hoặc chỉnh sửa tệp cấu hình. Nếu bạn muốn chỉnh sửa trực tiếp tệp cấu hình, thì trên Linux, tệp này phải nằm trong $HOME/.gemini/settings.json . Bạn sẽ thấy loại securityauth, đồng thời có thể chỉnh sửa loại này

{
  "security": {
    "auth": {
      "selectedType": "vertex-ai" # or "gemini-api-key" or "oauth-personal"
    }
  }
}

72300c1f781857c8.png

4. 🚀 Lệnh cơ bản và công cụ tích hợp

Bây giờ, hãy khám phá Gemini CLI để tìm hiểu thêm về công cụ này. Nếu đang tìm kiếm một số lệnh cơ bản có thể sử dụng, bạn có thể nhập /help để xem tất cả các lệnh hiện có

800d1b06a5ad9f9c.png

/help

Bạn sẽ thấy kết quả như sau f46a75c6bb177a2b.png

Gemini CLI là một AI Agent, do đó, công cụ này sẽ được trang bị các công cụ để giải quyết nhiệm vụ do người dùng giao. Để xem các công cụ tích hợp mà nó có, hãy chạy lệnh /tools

17a6d7fcf06df563.png

/tools

Bạn sẽ thấy kết quả như sau

7d22b38a387f45d0.png

Bạn có thể thấy rằng Gemini CLI có một số chức năng như đọc và ghi vào tệp, tìm kiếm trên web và nhiều chức năng khác. Theo mặc định, một số công cụ này yêu cầu người dùng xác nhận do có nguy cơ tiềm ẩn

Bây giờ, hãy xem ví dụ thực tế bằng cách chạy các câu lệnh này trong Gemini CLI

15e2d863a4eb8df4.png

Find top 10 OWASP security issue and write it down to owasp.md

Bạn sẽ thấy công cụ này sẽ gọi GoogleSearch và sau đó sẽ ghi kết quả bằng WriteFile. Nếu sử dụng IDE, bạn sẽ thấy rằng IDE sẽ trình bày dưới dạng một lựa chọn khác biệt và hiển thị cho dù bạn muốn chấp nhận hay từ chối các đề xuất. Tại đây, bạn có thể thấy Gemini CLI yêu cầu bạn cấp quyền ghi tệp

8163f43b05ca59a3.png

5. 🚀 Tiện ích

Để cải thiện kết quả của một tác vụ cụ thể bằng Trợ lý AI, những điều khó khăn là cách chúng ta có thể tạo ra một câu lệnh phù hợp, quản lý kỹ thuật bối cảnh phù hợp bằng cách tích hợp các công cụ phù hợp, v.v.

Tiện ích Gemini CLI là các câu lệnh và chế độ tích hợp được đóng gói sẵn và dễ dàng cài đặt, có thể kết nối với các công cụ bên ngoài. Mỗi tiện ích đều có một "sổ tay" tích hợp về cách sử dụng các công cụ một cách hiệu quả và có thể bao gồm những thành phần sau:

  • Lệnh dấu gạch chéo tuỳ chỉnh
  • Cấu hình MCP
  • Tệp ngữ cảnh

6da12f33463ac755.png

Cài đặt tiện ích bảo mật

Ví dụ: trong hướng dẫn này, chúng ta sẽ tìm hiểu cách cài đặt các tiện ích code-reviewsecurity

Chạy lệnh sau để cài đặt các tiện ích security từ thiết bị đầu cuối

gemini extensions install https://github.com/gemini-cli-extensions/security

Hệ thống sẽ hiển thị các câu hỏi sau, bạn chỉ cần nhấn enter để chấp nhận

Installing extension "gemini-cli-security".
**Extensions may introduce unexpected behavior. Ensure you have investigated the extension source and trust the author.**
This extension will run the following MCP servers:
  * securityServer (local): node /home/alvinprayuda/.gemini/extensions/gemini-cli-security/mcp-server/dist/security.js
This extension will append info to your gemini.md context using GEMINI.md
Do you want to continue? [Y/n]:
Extension "gemini-cli-security" installed successfully and enabled.

Cài đặt tiện ích đánh giá mã

Tiếp theo, hãy cài đặt tiện ích code-review, chạy lệnh bên dưới

gemini extensions install https://github.com/gemini-cli-extensions/code-review

Sau khi hoàn tất, hãy chạy lại Gemini CLI

gemini

và chạy lệnh /extensions, bạn sẽ thấy 2 tiện ích này đã được cài đặt

88a86a0dc42fc510.png

/extensions

Được rồi, bây giờ hãy thực hiện một thao tác thực tế trên kho lưu trữ mẫu mà bạn đã sao chép trước đó

6. 🚀 Chế độ tương tác – Ứng dụng tiện ích phân tích bảo mật mã

Tiện ích Bảo mật là một tiện ích Gemini CLI mã nguồn mở, được xây dựng để tăng cường tính bảo mật của kho lưu trữ. Tiện ích này bổ sung một lệnh mới vào Gemini CLI để phân tích các thay đổi về mã nhằm xác định nhiều rủi ro và lỗ hổng bảo mật.

Bây giờ, trước tiên hãy chuẩn bị kho lưu trữ minh hoạ của chúng ta, chạy lệnh sau để chuyển sang nhánh nơi các thay đổi có rủi ro bảo mật đã được áp dụng

git checkout refactor/analysis-demo

Sau đó, hãy chạy Gemini CLI trong thiết bị đầu cuối

gemini

Sau đó, hãy chạy các tiện ích

e3fcf630238f9b2e.png

/security:analyze

Thao tác này sẽ bắt đầu một quy trình chạy dài và trong quá trình này, bạn sẽ nhận được một số yêu cầu gián đoạn để xin phép bạn chạy một thao tác cụ thể, chẳng hạn như mkdir như minh hoạ dưới đây

10d6ad2ef91b5acf.png

Đây là một cơ chế bảo vệ để đảm bảo người dùng biết những gì sẽ được thực thi bởi Gemini CLI. Trong phần còn lại của hướng dẫn, bạn luôn có thể cho phép ( lựa chọn 2).

Tiện ích này sẽ gọi một quy trình chạy trong thời gian dài, bạn có thể thấy tiện ích này tạo một tệp lập kế hoạch bên trong thư mục .gemini_security và bạn có thể thấy danh sách kiểm tra cho biết quy trình đã hoàn tất hay chưa. Như minh hoạ trong ví dụ bên dưới:

543035cb65d27804.png

Sẽ mất một khoảng thời gian để hoàn thành các tác vụ của nó. Trong khi chờ đợi, chúng ta có thể kiểm tra nguồn của các tiện ích này trong kho lưu trữ Github. URL này cho thấy lời nhắc được dùng để chạy tất cả quy trình quét bảo mật này

73f4966870bc9ddf.png

Như bạn có thể thấy, để thực hiện việc quét này, hãy dùng câu lệnh Gemini CLI để thực hiện quy trình kiểm tra hai lượt, Lượt trinh sátLượt điều tra chi tiết hơn.

Nếu gặp lời nhắc sau đây trong Gemini CLI, bạn có thể chọn lựa chọn 2 để tắt tính năng phát hiện vòng lặp

a0af5e15627afa83.png

Sau đó, hãy nhắc Gemini CLI tiếp tục

611a7ed0fb6fc44b.png

continue

Đây là một cơ chế để tránh các vòng lặp gọi công cụ vô tận không hiệu quả và sẽ tiếp tục được cải thiện theo thời gian.

Sau khi hoàn tất, báo cáo sẽ xuất hiện trên thiết bị đầu cuối tương tác. Để dễ dàng hơn, hãy hướng dẫn Gemini CLI ghi báo cáo vào security-analysis.md

b4cbad3aaeaa8dce.png

write the result to security-analysis.md file

Giờ đây, bạn có thể kiểm tra kết quả được ghi vào tệp

7. 🚀 Chế độ không tương tác – Ứng dụng tiện ích xem xét mã

Tiện ích code-review sẽ thêm một lệnh mới vào Gemini CLI để phân tích các thay đổi về mã nhằm xác định nhiều vấn đề về chất lượng mã.

Tiện ích này có thể được thực thi ở chế độ không tương tác của Gemini CLI, tức là bạn có thể thực thi toàn bộ quy trình mà không cần nhập trình bao Gemini CLI. Để chạy Gemini CLI ở chế độ không tương tác, bạn có thể thực hiện bằng mẫu lệnh sau

gemini "put your command here"

Tuy nhiên, bạn cần lưu ý rằng khi chạy ở chế độ không tương tác, mọi thao tác của công cụ yêu cầu quyền của người dùng sẽ bị vô hiệu hoá. Do đó, chúng ta cần thêm cờ --yolo để tự động phê duyệt tất cả các hành động, tức là bật tất cả các công cụ trong chế độ không tương tác

Hãy chạy tiện ích code-review bằng lệnh sau

gemini "/code-review" --yolo -e code-review > code-review.md

Lệnh này sẽ ghi kết quả của đầu ra Gemini CLI vào tệp code-review.md. Lưu ý cờ -e ở đây, cờ này kiểm soát tiện ích nào sẽ kích hoạt trong phiên. Ở đây, chúng ta chỉ kích hoạt tiện ích code-review và tắt các tiện ích khác.

Quá trình này sẽ mất một lúc, nhưng sau khi hoàn tất, bạn có thể thấy kết quả tương tự như kết quả được ghi vào tệp đánh dấu bên dưới

Here are the results of the code review.

While the recent changes to rename `get_products` and `get_product` to `GetProducts` and `GetProduct` are minor, the codebase has some inconsistencies in its naming conventions. For instance, other functions like `create_product` use `snake_case`, while the newly renamed functions use `PascalCase`. For better code quality and readability, I recommend using a consistent naming convention throughout the project.

More importantly, I have identified several security vulnerabilities in the `main.py` file. Here is a summary of the findings:

### 1. SQL Injection
*   **Severity**: High
*   **Location**: 
    *   `main.py:99` in `get_products_by_category`
    *   `main.py:146` in `search_products`
    *   `main.py:372` in `get_user_transactions`
    *   `main.py:438` in `adjust_inventory_by_query`
*   **Description**: The endpoints directly use f-strings to construct SQL queries, making them vulnerable to SQL injection attacks. An attacker could manipulate the input to execute arbitrary SQL commands, potentially leading to data breaches or unauthorized modifications.
*   **Recommendation**: Use parameterized queries or an ORM to handle database interactions. This will ensure that user input is properly sanitized and prevent SQL injection attacks.

### 2. Server-Side Request Forgery (SSRF)
*   **Severity**: High
*   **Location**: `main.py:265` in `fetch_url`
*   **Description**: The `fetch_url` endpoint allows users to specify an arbitrary URL, which the server then requests. This can be exploited to make requests to internal services or local files, leading to information disclosure or other security breaches.
*   **Recommendation**: Implement a whitelist of allowed domains or protocols to restrict the URLs that can be requested. Additionally, you can disable redirects and use a timeout to limit the impact of an attack.

### 3. Information Exposure
*   **Severity**: Medium
*   **Location**: `main.py:423` in `get_environment_variables`
*   **Description**: The `get_environment_variables` endpoint exposes all environment variables to the user. This can include sensitive information such as API keys, database credentials, and other secrets.
*   **Recommendation**: Remove this endpoint or restrict access to it to authorized users. If you need to expose some environment variables, do so selectively and avoid exposing sensitive information.

8. 🚀 Hỗ trợ giao thức ngữ cảnh mô hình

Giờ đây, như chúng ta đã kiểm tra trước đó trong phần giải thích về tiện ích, Gemini CLI có thể kết nối với các máy chủ MCP – những ứng dụng cung cấp các công cụ và tài nguyên thông qua Giao thức ngữ cảnh mô hình. Mối kết nối này 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 bằng cách sử dụng các máy chủ MCP làm cầu nối đến môi trường cục bộ và các dịch vụ bên ngoài như API.

5f1cdd4be3e7b42a.png

Nếu muốn tự thiết lập máy chủ MCP, bạn cần sửa đổi tệp .gemini/settings.json và thêm các cấu hình sau :

{
    ...
    # Previous settings above if any
    "mcpServers": {
       "server_name": {
           # MCP server configurations here
       }
    }
}

Trong hướng dẫn này, hãy định cấu hình kết nối với tài khoản Github của bạn để đẩy dữ liệu báo cáo trước đó vào Github

Định cấu hình máy chủ MCP của GitHub

Trước tiên, hãy tạo tệp cấu hình dự án Gemini CLI. Chạy lệnh sau

mkdir -p .gemini && touch .gemini/settings.json

Sau đó, mở tệp .gemini/settings.json rồi điền cấu hình sau vào

{
  "mcpServers": {
       "github": {
            "httpUrl": "https://api.githubcopilot.com/mcp/",
            "headers": {
                "Authorization": "your-personal-access-token"
            },
            "timeout": 5000
       }
  }
}

Bây giờ, chúng ta sẽ cần mã truy cập cá nhân của riêng bạn trên Github. Do đó, hãy đảm bảo bạn đã có tài khoản Github của riêng mình.

Đăng nhập vào Github rồi chuyển đến phần Settings (Cài đặt)

dc57f047ca9a2b83.png

Sau đó, hãy di chuyển xuống để tìm Cài đặt cho nhà phát triển rồi nhấp vào đó

59d9b700c41ca1b6.png

Sau đó, chọn Personal access tokens (Mã truy cập cá nhân) rồi chọn Tokens (classic) (Mã thông báo (cổ điển))

e96fccd80872e480.png

30ac727da307602b.png

Đặt tên cho mã truy cập cá nhân của bạn tại đây và kiểm tra các phạm vi repo

ad167223fa231e3c.png

Sau đó, di chuyển xuống rồi nhấp vào nút Generate Token (Tạo mã thông báo), hãy nhớ

Nhấp vào nút Tạo mã thông báo mới rồi chọn Tạo mã thông báo mới (cổ điển). Sau đó, hãy sao chép mã thông báo đã tạo và ghi mã đó vào .gemini/settings.json

efd82711868093c0.png

Vì vậy, tệp .gemini/settings.json của bạn sẽ có dạng như ví dụ sau

{
  "mcpServers": {
       "github": {
            "httpUrl": "https://api.githubcopilot.com/mcp/",
            "headers": {
                "Authorization": "ghp-xxxx"
            },
            "timeout": 5000
       }
  }
}

Bây giờ, hãy xác minh kết nối. Nhập Gemini CLI bằng cách chạy lệnh sau

gemini

Sau đó, chạy lệnh /mcp, bạn sẽ thấy MCP Github đã được định cấu hình đúng cách

a97c9a98f07dc87c.png

/mcp

Sau đó, hãy kiểm thử kết nối MCP này bằng cách gửi lệnh sau

59bfd79aba7cc386.png

Aggregate the findings from @code-review.md and @security-analysis.md into a single report and ensure no duplicates issues reported. Post this report as a comment on the relevant pull request for the current git branch on GitHub and display the pull request URL for manual review

Lưu ý ký hiệu @code-review.md@security-analysis.md tại đây, đây là cách chúng ta tham chiếu các tệp sẽ được truyền đến Gemini CLI. Lệnh này sẽ đọc nội dung của cả hai tệp và gửi một bình luận đến Yêu cầu hợp nhất liên quan đến nhánh này bằng cách sử dụng kết nối MCP của Github. Sau đó, bạn có thể kiểm tra URL yêu cầu kéo để xác minh.

864b859b56cfe9e7.png

9. 💡Gemini CLI trong quy trình CI/CD

Nếu là người dùng GitHub, bạn có thể dễ dàng nhúng Gemini CLI vào quy trình CI/CD bằng cách sử dụng run-gemini-cli GitHub Action. Đây vừa là một tác nhân tự động cho các công việc lập trình thường xuyên quan trọng, vừa là một cộng tác viên theo yêu cầu mà bạn có thể nhanh chóng uỷ quyền công việc

Bạn có thể sử dụng công cụ này để xem xét yêu cầu kéo, phân loại vấn đề, phân tích và sửa đổi mã, cũng như làm nhiều việc khác bằng cách trò chuyện với Gemini ngay trong kho lưu trữ GitHub

Bạn có thể kiểm tra ví dụ về quy trình tích hợp này trong yêu cầu kéo này. Trong đó, chúng tôi sử dụng tiện ích Bảo mật Gemini CLI bên trong trình chạy và đưa ra các đánh giá khi Yêu cầu kéo được tạo

ad2a8e8d0a15e3f5.png

3cb40f104ce6a594.png

8edb7277fa6324b.png

ef48414c02a16dfa.png

10. 💡Khám phá các tiện ích khác của Gemini CLI

8a7939ee0328e6e2.png

Bạn cũng có thể khám phá thêm các tiện ích tại https://geminicli.com/extensions . Hãy khám phá để biết thêm nhiều công cụ thú vị khác!

11. 🧹 Dọn dẹp

Để tránh phát sinh phí cho tài khoản Google Cloud của bạn đối với các tài nguyên được dùng trong lớp học lập trình này, hãy làm theo các bước sau:

  1. Trong Google Cloud Console, hãy chuyển đến trang Quản lý tài nguyên.
  2. Trong danh sách dự án, hãy chọn dự án mà bạn muốn xoá, rồi nhấp vào Xoá.
  3. Trong hộp thoại, hãy nhập mã dự án rồi nhấp vào Tắt để xoá dự án.