Gemini CLI 实践

1. 简介

在此 Codelab 中,您将了解 Gemini CLI,这是一款开源 AI 智能体,可将 Gemini 的强大功能直接引入您的终端。

学习内容

  1. 安装和配置 Gemini CLI
  2. 探索 Gemini CLI 中的工具、内置命令和配置 MCP 服务器
  3. 通过 GEMINI.md 文件自定义 Gemini CLI
  4. 探索 Gemini CLI 的一些应用场景

所需条件

本 Codelab 完全可以在 Google Cloud Shell 中运行,因为 Google Cloud Shell 中预安装了 Gemini CLI。

或者,如果您更喜欢在自己的机器上操作,可以参阅相关部分,了解如何在本地安装 Gemini CLI。

您需要具备以下条件:

  • Chrome 网络浏览器
  • Gmail 账号

此 Codelab 专为各种水平(包括新手)的用户和开发者而设计。Codelab 中的应用场景已分为开发者任务和非开发者任务。这些开发者用例展示了如何使用 Gemini CLI 编写代码,以及如何使用 GitHub 代码库执行常见的开发任务,例如代码说明/理解、生成文档、修复问题等。建议您完成此 Codelab 中的这些使用情形。最后还有一个可选部分,其中介绍了几个非开发者重点关注的日常任务。

2. 准备工作

创建项目

  1. Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目
  2. 确保您的 Cloud 项目已启用结算功能。了解如何检查项目是否已启用结算功能
  3. 您将使用 Cloud Shell,这是一个在 Google Cloud 中运行的命令行环境,它预加载了 bq。点击 Google Cloud 控制台顶部的“激活 Cloud Shell”。

“激活 Cloud Shell”按钮图片

  1. 连接到 Cloud Shell 后,您可以使用以下命令检查自己是否已通过身份验证,以及项目是否已设置为您的项目 ID:
gcloud auth list
  1. 在 Cloud Shell 中运行以下命令,以确认 gcloud 命令了解您的项目。
gcloud config list project
  1. 如果项目未设置,请使用以下命令进行设置:
gcloud config set project <YOUR_PROJECT_ID>

3. 安装

在进行设置并运行 Gemini CLI 之前,我们先创建一个文件夹,该文件夹将作为我们在其中创建的所有项目的主文件夹。这是 Gemini CLI 的初始工作目录,不过它也会引用您系统中的其他一些文件夹,您稍后会根据需要用到这些文件夹。

继续操作,创建一个示例文件夹 (gemini-cli-projects),然后通过以下命令进入该文件夹。如果您希望使用其他文件夹名称,请这样做。

mkdir gemini-cli-projects

我们来导航到该文件夹:

cd gemini-cli-projects

您可以通过 gemini 命令直接启动 Gemini CLI。

请直接前往下一部分(通过 settings.json 配置 Gemini CLI)。

如果您想在本地安装 Gemini CLI,请按照以下说明操作。

第一步是在您的机器上安装 Node 20 及更高版本。完成此操作后,您可以通过以下任一方法安装和运行 Gemini CLI:

  1. 您可以先在系统上全局安装 Gemini CLI。您可能需要拥有管理员权限才能执行此步骤。
# option 1: install Gemini CLI

npm install -g @google/gemini-cli

# .. and then run
gemini
  1. 使用以下命令运行该脚本:
# option 2: run without installing Gemini CLI

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

您可以运行以下命令来确认 CLI 是否已安装:

gemini --version

假设您已通过上述任一方法启动 Gemini CLI,您应该会看到以下屏幕,其中会询问您是否选择主题。请选择您喜欢的选项:

35a98edaf7f22e8e.png

选择该选项后,系统会要求您选择身份验证方法。建议您在此实验中使用个人 Google 账号,而不是非 Google 账号或 Google Workspace 相关账号。通过该免费许可,您可以使用 Gemini 2.5 Pro 模型及其 100 万个 token 的上下文窗口。免费层级允许每分钟最多 60 次模型请求,每天最多 1,000 次,且无需付费。

如果您当前 Google 账号的免费配额已达到上限,可以选择使用 Gemini API 密钥,甚至可以使用 Google Cloud Vertex AI,但您需要拥有项目 ID 和相应项目的位置名称。如果您计划使用其他身份验证方法,请参阅文档的身份验证部分。

57bad75cedaaaa38.png

点击“输入”。系统随即会在浏览器中打开 Google 身份验证页面。继续使用您的 Google 账号进行身份验证,接受相关条款,成功通过身份验证后,您会发现 Gemini CLI 已准备就绪,等待您输入命令。以下是示例屏幕截图:

4dbc0138b78dc354.png

4. 通过 settings.json 配置 Gemini CLI

如果您选择使用 Cloud Shell 运行 Gemini,系统会为您选择并配置 Gemini CLI 的默认主题和身份验证方法。

如果您在自己的机器上安装了 Gemini CLI 并首次启动它,则需要选择主题,然后选择身份验证方法。

现在,在后续运行 Gemini CLI 时,系统不会再要求您选择主题和身份验证方法。这意味着,它会持久保存在某个位置,并且它使用的文件名为 settings.json,这是自定义 Gemini CLI 的方式。

设置按以下优先顺序应用(Cloud Shell 仅提供用户设置):

  1. 系统:/etc/gemini-cli/settings.json(适用于所有用户,会覆盖用户和工作区设置)。
  2. 工作区:.gemini/settings.json(覆盖用户设置)。
  3. 用户:~/.gemini/settings.json

Windows 用户:%USERPROFILE%.gemini\settings.json(通常会展开为 C:\Users&lt;YourUsername>.gemini\settings.json)

系统:%ProgramData%\gemini-cli\settings.json(通常会扩展为 C:\ProgramData\gemini-cli\settings.json)

Mac 用户:~/.gemini/settings.json(展开后为 /Users/<YourUsername>/.gemini/settings.json)

系统:/etc/gemini-cli/settings.json

如果您还记得,在选择主题时,您选择了将设置保存在“用户设置”中。因此,请访问 ~/.gemini folder,您会注意到 settings.json 文件。

我的 settings.json 文件如下所示。如果您选择了其他主题,则会在此处看到相应名称。

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

5. 我们与 Gemini CLI 的首次互动

让我们开始使用 Gemini CLI,并输入您的第一个查询,如下所示:

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

预期响应如下所示:

GoogleSearch Searching the web for: "famous quote on Artificial Intelligence and who said it"                                                                                                                 ...
Search results for "famous quote on Artificial Intelligence and who said it" returned.                                                                                                                             

✦ "The development of full artificial intelligence could spell the end of the human race." - Stephen Hawking.

您会注意到,我们的查询触发了 GoogleSearch 工具(Gemini CLI 中的内置工具)。换句话说,您已经使用过 Gemini CLI 的一项强大的内置工具,即 GoogleSearch,该工具可根据从网络获取的信息生成回答。您将在下一部分中详细了解工具。

如需快速了解 Gemini CLI 及其支持的各种命令,您可以输入 /help(正斜杠),然后您会看到各种命令和键盘快捷键。

我们暂时退出 Gemini CLI。您可以通过 /quit 命令执行此操作,也可以在交互式 Gemini CLI 终端会话中执行两次 Ctrl-C

6. Gemini CLI - 命令参数

启动 Gemini CLI 时,您可以提供一些命令行参数。如需获取完整的选项列表,您可以使用 --help,如下所示。

gemini --help

这应该会显示所有可用的选项。建议您查看此处的文档。

下面我们来看一下其中的一些示例。第一种方法是将 Gemini CLI 配置为使用 Pro 或 Flash 模型。目前,在撰写本实验时,仅支持这两种模型。默认情况下,系统会使用 Gemini 2.5 Pro 模型,但如果您想使用 Flash 模型,可以在启动 Gemini CLI 时通过 -m 参数进行设置,如下所示:

gemini -m "gemini-2.5-flash"

您会注意到,如果您以这种方式启动,则可以在 Gemini CLI 终端的右下角查看模型,如下所示:

60c4c0e6d277ade7.png

进入 Gemini CLI 应用后,您可以使用 /model 命令打开一个对话框,以便选择模型。下面显示了一个示例运行,您可以根据自己的要求和给定的指导,不断切换模型,以便根据复杂性和控制成本的需求为任务选择合适的模型。

4bd48822b92ba012.png

非互动模式

如果感兴趣,您也可以以非互动模式运行 Gemini CLI。这意味着,您直接向其提供提示后,它会立即做出回应,而不会打开 Gemini CLI 交互式终端。如果您打算以自动方式使用 Gemini CLI 作为脚本或任何其他自动化流程的一部分,这将非常有用。您可以使用 -p 参数向 Gemini CLI 提供提示,如下所示;也可以仅使用位置实参来提供提示。

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

请注意,您无法通过追问来继续对话。在此模式下,您也无法授权工具(包括 WriteFile)或运行 shell 命令。

7. Gemini CLI - 内置工具

Gemini CLI 随附一组内置工具,工具文档中指出:“Gemini 模型使用这些工具与您的本地环境互动、访问信息并执行操作。这些工具增强了 CLI 的功能,使其不仅能生成文本,还能协助完成各种任务。

如需获取当前内置工具的列表,请按如下所示调用 /tools 命令:

Available Gemini CLI tools:

  - Codebase Investigator Agent (codebase_investigator)
  - Edit (replace)
  - FindFiles (glob)
  - GoogleSearch (google_web_search)
  - ReadFile (read_file)
  - ReadFolder (list_directory)
  - SaveMemory (save_memory)
  - SearchText (search_file_content)
  - Shell (run_shell_command)
  - WebFetch (web_fetch)
  - WriteFile (write_file)
  - WriteTodos (write_todos)

您应该立即想到的一点是,Gemini CLI 能否在需要时直接调用这些工具?对于可能涉及写入本地系统、从外部系统读取数据、访问外部网络等的敏感操作,默认回答为

虽然在启动 CLI 时有 --yolo 可用(通常不建议这样做),但您会发现 Gemini CLI 会提示您授予运行其所选工具的权限。您可以拒绝权限,也可以允许其运行一次,或授予其始终运行的全面权限。控制权完全在您手中。

我们来使用一个提示,让 Gemini CLI 选择一个内置工具来执行,这样您就可以很好地了解整个流程的运作方式。

假设您想获取全球最新的财经新闻,并将其保存到您启动 Gemini CLI 的本地工作目录中的文件中。使用以下提示:

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

不妨想象一下它应该做什么。理想情况下,它需要外出进行 Google 搜索,从一些可以提供财经新闻的相关信息来源获取新闻。然后,它需要创建一个名为 finance-news-today.txt 的文件(本地系统上的写入操作,需要您的许可),其中包含相应内容。

让我们看看会发生什么情况(您应该在自己的机器上执行相同的操作)。

首先,它会调用 GoogleSearch 工具来搜索网页并检索结果,如下所示:

GoogleSearch Searching the web for: "latest finance headlines today"                                                                                                                                            

Search results for "latest finance headlines today" returned.  

完成此操作后,系统即可将此内容写入文件,并将使用 WriteFile 工具,但由于这是一项敏感操作(写入),系统会征求您的许可。您可以决定权限类型,例如“仅允许一次”“始终允许”等。现在,请选择“仅允许一次”。

c84c5b58e202f98f.png

然后,系统会将信息写入文件,并显示以下成功消息:

✦ I have successfully saved the latest finance headlines into the file finance-news-today.txt.

如何检查文件是否已写入?您可以使用 @file 让它朗读内容。当您输入 @ 时,系统会显示当前文件夹中的文件列表,并显示刚刚创建的文件。选择该选项,然后提交提示。我的提示如下所示:

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

这样一来,系统就会调用所需的工具(ReadManyFiles、ReadFile),并显示如下所示的内容:

7a5fc5d834cbb93b.png

8. Gemini CLI - Shell 模式

现在是学习如何直接在 Gemini CLI 中使用 Shell 的好时机。您可以在消息框中按 ! 进入 shell 模式。这会切换到 Shell 模式。您可以再次按 ! 或按 ESC 键返回。

在 shell 模式下,您会在提示的开头看到 !,如下所示:

a87f54bb3066b82d.png

您可以直接使用 pwdls 等标准命令进行检查,如下所示。请注意,这些命令假定您使用的是 Linux 类型操作系统。如果您使用的是其他操作系统 (Windows),请使用等效的命令,例如(cddirtype)。请注意,这些调用的输出会包含在模型的上下文窗口中。

33a18abe5581ff74.png

您现在可以通过 cat 命令输出文件的内容。

6dbe0049ed002553.png

练习:下面是一项简短的练习,您可以尝试一下。选择您所需的 RSS Feed。向 Gemini CLI 发出提示,让其提取 RSS Feed 的内容并以特定方式为您设置结果格式。这是在一天开始时自动执行某项操作的好方法。您甚至可以要求 Gemini CLI 确定特定领域(例如 Google Cloud Platform 版本说明)是否有 RSS Feed。

以下是提示示例:

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

此提示应首先调用 GoogleSearch 工具来查找 Google Cloud Platform RSS Feed,然后使用 WebFetch 工具获取 RSS Feed 的内容并显示出来。

9. Gemini CLI 扩展程序

正如文档中所述,Gemini CLI 扩展程序将提示、MCP 服务器和自定义命令打包成熟悉且用户友好的格式。借助扩展程序,您可以扩展 Gemini CLI 的功能,并与他人分享这些功能。它是将 Gemini CLI 的功能扩展到内置工具之外的主要机制。

扩展程序是一个独立的、可确定版本且易于分发的软件包。您可以将其视为 Gemini CLI 自定义项的“运输容器”,将特定工作流所需的一切内容捆绑到一个整洁的软件包中。

f5ae3e229462c130.png

扩展程序可以捆绑以下项的任意组合:

  • 自定义斜杠命令(您的 .toml 文件)。
  • MCP 服务器配置(之前位于 settings.json 中)。
  • 上下文文件 (GEMINI.md),用于向模型提供具体说明和指南。
  • 工具限制 (excludeTools),可打造更安全、更专注的环境。

扩展程序库是发现所有官方 Google 构建的扩展程序和第三方扩展程序的中心市场:

  1. 在浏览器中打开以下网址:https://geminicli.com/extensions/browse/
  2. 此图库是生态系统的发现引擎。您可以看到来自 GitHub、Redis 和 DynaTrace 等公司的扩展程序,从而了解可用工具的广泛性。
  3. 向下滚动,找到 Cloud Run 的扩展程序卡片。
  4. 请注意,该卡片提供了说明、作者 (Google) 和一键式 Copy 命令按钮。这是获取扩展程序安装命令的最简单方法。

Gemini CLI 扩展程序 - 管理命令

gemini extensions 命令是您管理本地扩展程序的入口点。

在终端中运行该命令,即可查看可用命令的列表。

gemini extensions <command>

Manage Gemini CLI extensions.

Commands:
  gemini extensions install <source> [--auto-update] [--pre-release]   
      Installs an extension from a git repository URL or a local path.
  gemini extensions uninstall <names..>                                  
      Uninstalls one or more extensions.
  gemini extensions list
      Lists installed extensions.
  gemini extensions update [<name>] [--all]                           
      Updates all extensions or a named extension to the latest version.
  gemini extensions disable [--scope] <name>                          
      Disables an extension.
  gemini extensions enable [--scope] <name>                           
      Enables an extension.
  gemini extensions link <path>                                       
     Links an extension from a local path. Updates made to the local path 
     will always be reflected.
  gemini extensions new <path> [template]                             
     Create a new extension from a boilerplate example.
  gemini extensions validate <path>                                   
     Validates an extension from a local path.

这些命令非常简单(安装/卸载、列出、更新、启用/停用等),我们将在本 Codelab 中使用其中的一些命令。

查看您当前的扩展程序列表

在安装任何内容之前,我们先检查一下“全新状态”。

  1. 运行 gemini extensions list 命令:
  2. 您应该会看到以下输出内容,确认尚未安装任何扩展程序。
No extensions installed.

配置 GitHub MCP 服务器

Gemini CLI 扩展程序类型之一是 MCP 服务器。MCP 服务器是一种应用,它通过 Model Context Protocol 向 Gemini CLI 公开工具和资源,使 Gemini CLI 能够与外部系统和数据源进行交互。MCP 服务器充当 Gemini 模型与本地环境或其他服务(如 API)之间的桥梁。

我们在 Gemini 扩展服务库中提供了 GitHub MCP 服务器。点击该链接,系统会打开“扩展程序”卡片,您还会在其中看到用于安装扩展程序的命令:

4eee33951dabd2db.png

只需复制该内容,或使用以下命令:

gemini extensions install https://github.com/github/github-mcp-server

继续操作,授予必要的权限。安装完成后,当您运行 gemini extensions list 命令时,应该能够在扩展程序列表中看到此扩展程序。

✓ github (1.0.0)
 ID: faa318861b48de8d83c95eb8cd5e82c02393493978d198a0e7bf67fcb1bd22cb
 name: c0b0109d9439de57fe3cf03abeccbc52f4c98170c732d3b69af5e6395ace574e
 Path: /home/romin/.gemini/extensions/github
 Source: https://github.com/github/github-mcp-server (Type: git)
 Enabled (User): true
 Enabled (Workspace): true
 MCP servers:
  github

您可以看到扩展程序的路径,在该文件夹中,您会看到一个名为 gemini-extension.json 的文件,其内容如下所示:

{
  "name": "github",
  "version": "1.0.0",
  "mcpServers": {
    "github": {
      "description": "--description–",
      "httpUrl": "https://api.githubcopilot.com/mcp/",
      "headers": {
            "Authorization": "Bearer $GITHUB_MCP_PAT"
      }
     }
  }
}

您会注意到,它通过环境变量读取个人访问令牌 (PAT)。您首先需要拥有 GitHub 个人访问令牌 (PAT)。获得该值后,请确保您已完整创建 .env 文件并将该值放置在该文件中,或者已创建环境变量,如下所示(将 PAT_VALUE 替换为实际值):

export GITHUB_MCP_PAT=PAT_VALUE

您应重启 Gemini CLI。启动后,您可以使用 /mcp list 命令查看 MCP 服务器及其各自的可用工具的列表。您应该能够看到以绿色显示的 GitHub MCP 服务器及其工具(30 多种)。以下是部分列表:

🟢 github(来自 GitHub)- 就绪(40 个工具)

工具:

  • add_comment_to_pending_review
  • add_issue_comment
  • assign_copilot_to_issue
  • create_branch
  • create_or_update_file
  • create_pull_request
  • create_repository
  • delete_file
  • fork_repository
  • get_commit
  • get_file_contents
  • get_label
  • get_latest_release
  • get_me
  • get_release_by_tag
  • get_tag
  • get_team_members
  • get_teams
  • issue_read

我们先从一个提示开始,该提示将调用 GitHub MCP 服务器中的一个工具。给出以下提示(我在 GitHub 上是谁?)。这样一来,Gemini CLI 就会选择正确的工具并征求您的许可。

c9873c3f51b26866.png

您确认后,系统会检索结果,如下所示:

✦ You are rominirani, a Developer Advocate at Google Cloud, located in Mumbai. You have 125 public repositories and 256 followers.

您现在应该使用您的某个 GitHub 项目。使用自然语言提出查询,例如:

  • Describe the <repo-name> to me?
  • Clone the <repo-name> on my local machine.
  • Describe @<file-name> or @<directory-name>/
  • What are the different components of this repository?
  • 我已经进行了必要的更改。Can you push the changes to Github and use the Github MCP Server tools to do that.

在本实验的后续部分,您将找到有关如何详细使用 GitHub MCP 服务器的练习。

配置 Cloud Run MCP 服务器

Gemini CLI 扩展程序库中提供的 Cloud Run 扩展程序是一个 MCP 服务器,可让我们将应用部署到 Cloud Run。

扩展程序库中的 Cloud Run 扩展程序卡片如下所示:

ed9b19eac1fbde78.png

我们先点击上图所示的复制安装命令,安装 Cloud Run 扩展程序。然后将该命令粘贴到 Cloud Shell 终端中(该命令应类似于以下内容):

gemini extensions install https://github.com/GoogleCloudPlatform/cloud-run-mcp

运行上述命令后,系统会要求您进行确认。请继续并批准。然后,Cloud Run 扩展程序应会成功安装。

如果您现在执行 gemini extensions list 命令,应该会看到已安装 Cloud Run 扩展程序,如下所示:

✓ cloud-run (1.0.0)
 ID: 3c1a38909b6d7d90b6acc8ca1e80d97b4a867253a3cd12d841b2aab4e556a58f
 name: 0b1820c1f0c043bbb3b54f496d862c02172424c930eb965d61f468be52e6f127
 Path: /home/romin/.gemini/extensions/cloud-run
 Source: https://github.com/GoogleCloudPlatform/cloud-run-mcp (Type: git)
 Enabled (User): true
 Enabled (Workspace): true
 Context files:
  /home/romin/.gemini/extensions/cloud-run/gemini-extension/GEMINI.md
 MCP servers:
  cloud-run

如果您现在启动 Gemini CLI 并执行 /mcp list 命令,您将看到以下内容:

🟢 cloud-run (from cloud-run) - Ready (8 tools, 2 prompts)
  Tools:
  - create_project
  - deploy_container_image
  - deploy_file_contents
  - deploy_local_folder
  - get_service
  - get_service_log
  - list_projects
  - list_services
  Prompts:
  - deploy
  - logs

以上只是我们展示如何配置的几个 Gemini CLI 扩展程序。您可以查看扩展程序库来发现更多扩展程序,甚至可以完成 Codelab“Gemini CLI 扩展程序使用入门”。

10. 可尝试的应用场景

Gemini CLI 可应用于各种用例,无论是开发者还是非开发者,都可以使用它。下面列出了几种情形,您可以根据自己的兴趣尝试其中任何一种或全部情形。

在每种情况下,系统都会提供提示。您可以在启动 Gemini CLI 时通过 -p 参数,在 Gemini CLI 互动模式或非互动模式下随意试用此功能。

使用 Gemini CLI 进行氛围编程

我们来使用 Gemini CLI 编写应用代码。在此任务中,您将要求 Gemini CLI 生成应用,然后将初始版本推送到 GitHub 代码库。

前提条件

如需执行本部分中的任务,您需要满足以下前提条件:

  • Git
  • Gemini CLI 与 GitHub Gemini CLI 扩展程序(我们之前已完成此操作),或者如果您已设置 gh (GitHub CLI 工具),也可以使用。
  • 熟悉 Git 基础知识,并具备一定的编程知识

我们将假设您已在所选的特定文件夹中启动 Gemini CLI。

从初始提示开始。您可以根据需要随意修改。请注意,在与 Gemini CLI 的整个会话期间,它会要求您授予创建文件等权限。请授予所需的权限。

在此任务中,我们不希望 Gemini CLI 运行应用或为我们测试应用,因为我们希望有更多控制权。不过,您完全可以自行决定是否要这样做。

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. 

接下来的几个提示和回答仅作为流程示例。Gemini CLI 会制定一个方案,并询问您是否需要确认 / 澄清,或者直接继续。请按照说明操作。以下是我的示例对话串:

   1. Backend (Node.js/Express):
       * Set up an Express server to serve the static frontend files.
       * Create an /api/schedule endpoint that will:
           * Generate the event schedule dynamically, including talk timings and the lunch break, based on your requirements.
           * Store mock talk data (title, speakers, category, description).
           * Filter the schedule based on a category query parameter.

   2. Frontend (HTML, CSS, JavaScript):
       * Create an index.html file for the main structure.
       * Develop style.css for a clean and responsive design.
       * Write script.js to:
           * Fetch the schedule data from the backend.
           * Dynamically render the talks and lunch break on the page.
           * Implement a search input that filters talks by category, updating the displayed schedule without a full page reload.

   3. Schedule Logic:
       * The backend will handle calculating the precise start and end times for each 1-hour talk, factoring in the 10:00 AM start, 10-minute transitions, and the 1-hour lunch break.

  Before I proceed with the code, could you please clarify the following:

   * Example Talk Data: Could you provide some example talk titles, speakers, categories (keywords), and descriptions? This will help me create realistic dummy data for the schedule.
   * Lunch Break Placement: Where should the 1-hour lunch break be placed in the schedule? (e.g., after the 3rd talk, at 1 PM, etc.)
   * Styling Preferences: Do you have any specific styling preferences (e.g., color scheme, modern/minimalist, etc.)? If not, I will go with a clean, simple design.

 I will create a single-page website for your event. Here's my plan:

  WriteTodos Set 7 todo(s)                                                                                                                                                                                        

 I am waiting for your clarifications regarding the example talk data, lunch break placement, and styling preferences before I proceed with generating the code.

最后,它向我提供了以下摘要:

 Instructions to Run and Test Locally:

   1. Start the server:
      Open your terminal in the project directory (/home/romin/gemini-cli-projects/event-website/) and run:
   1     node server.js
      You should see a message in the terminal indicating: Server running on http://localhost:3000.

   2. Open in your browser:
      Open your web browser and navigate to:
      http://localhost:3000

   3. Test functionality:
       * You should see the event schedule displayed on the page, with talks and a lunch break.
       * Search by category: In the "Search by category..." input box, type a category keyword (e.g., "AI", "Web Development", "Python", "Security").
       * Click the "Search" button. The schedule displayed should filter to only show talks matching that category.
       * Click the "Reset" button to clear the search filter and view the full schedule again.

  Let me know if you encounter any issues or if you'd like to make any modifications or additions to the website!

按照说明启动服务器并前往首页后,我们得到了一个示例如下所示的网站(如果您使用了相同的提示,则应该会看到类似网站的变体):

78c224b7ce29bb4d.png

您可以继续在 Gemini CLI 的帮助下进行更多更改。如果您对更改感到满意,可以将其推送到 GitHub 代码库。

首先,我们来创建一个 .gitignore 文件,您可以借助 Gemini CLI。

Create a .gitignore file for this project.

您的下一步是向 Gemini CLI 提供指令,以将此代码库推送到我们的 GitHub 账号下,这应该会在后台运行 GitHub MCP 服务器工具。

输入类似于以下内容的提示:

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

它将在此处执行多项命令:

  1. 创建代码库。
  2. 它将使用多个 Git 命令(init、add、commit)来管理本地 Git 代码库。
  3. 然后,它会设置 Git 远程库并执行推送

注意:在某些情况下,Gemini CLI 可能会超时或使用不正确的用户名等。请与它互动并建议修复方案。

如果一切顺利,您应该已经创建了一个 GitHub 代码库。示例屏幕截图如下所示:

d046ee11d28e4d33.png

请注意,您尚未为此项目生成 README.md,这对于下一部分来说是一个很好的练习,我们现在将使用您刚刚创建的此代码库。

使用 Gemini CLI 处理 GitHub 代码库

在此使用情形中,您将使用 Gemini CLI 来处理 GitHub 代码库。您将执行多项任务,包括:

  • 了解代码库
  • 生成文档
  • 实现新功能
  • 提交更改并将其推送回代码库
  • 处理 GitHub 问题并实现建议的更改

这应该能为您打下良好的基础,以便您随后处理自己的代码库,并使用 Gemini CLI 作为助手来完成这些开发者专属任务。

前提条件

如需执行本部分中的任务,您需要满足以下条件:

  • Git
  • Gemini CLI 与 GitHub MCP Gemini CLI 扩展程序(我们之前已完成此操作),或者您已设置 gh (GitHub CLI 工具),这两种方式都可以。
  • 熟悉 Git 基础知识,并具备一定的编程知识(在此示例中,我们将使用 Node.js,因为您可能已在自己的机器上准备好环境,这是因为您已安装 Gemini CLI)。不过,您稍后可以随意选择其他编程语言和框架的知识库。
  • 您应该已完成上一部分,并准备好代码库,我们在其中创建了 Event Talks 网站。

让我们继续使用您之前用于生成 Event Talks 应用的文件夹/目录中的 Gemini CLI;如果需要,您可以将该代码库克隆到本地机器,然后从该目录启动 Gemini CLI。尝试以下场景:

了解代码库

  • 我想详细了解此项目。帮我了解主要功能,然后将其分解为服务器端和客户端。举例说明请求和响应的运作方式。
  • Explain @server.js

生成 README 文件

  • 为此项目生成 README 文件。

实现新功能

  • 我想实现一项新功能,让用户也可以按特定发言者进行搜索。请先向我展示您将如何实现此更改的计划,然后我们再生成代码。

系统应会为您提供一个方案,您可以批准该方案。获得批准后,Gemini CLI 将继续进行这些更改。请务必测试您的更改,如果出现 bug(很可能),请让 Gemini CLI 修复它。

确认更改无误后,您可以按照相同的步骤提交这些更改并将其推送到远程代码库。

根据建议的功能生成问题

我们来试试一些有趣的东西。您将向 Gemini CLI 询问如何改进此应用的用户体验,然后根据其评估结果,在同一 GitHub 代码库中以问题形式创建这些建议。它将使用 GitHub MCP 服务器中的“create_issue”工具。

尝试使用以下提示:

  • 我想请您从用户体验的角度评估该应用。易用性、响应速度、实用消息等。请列出一些改进建议,然后将这些建议作为问题在 GitHub 代码库中创建。

理想情况下,它会先与您分享改进,然后在获得您的许可后在 GitHub 代码库中创建问题。以下是运行时的示例屏幕截图:

86c33b7815c7872a.png

处理 GitHub 问题并实现建议的更改

现在,您可以选择之前生成的某个问题,然后让 Gemini CLI 处理并实现该问题。

以下是它生成的问题示例:

2778bde35f41efe9.png

复制整个问题网址,然后提供如下提示:

  • 请查看问题:<YOUR_ISSUE_URL>,了解需要做出哪些更改。先讨论方案,然后展示代码中建议的更改。

您可以放心地批准这些更改,并将其推送到代码库。您甚至可以要求它关闭问题。

(可选)日常任务

以下用例是您可能需要定期执行的任务。这些任务包括将文件整理到文件夹中、从网络中提取内容并进行总结、处理图片文件并从中提取内容、处理数据库等。

您可以随意探索自己喜欢的用例。

整理文件/文件夹

您可以根据需要在各种文件夹中使用 Gemini CLI 按类型整理文件。前往您机器上包含多个文件(.txt、.png、.jpg、.pdf、.mp4 等)的文件夹。这很可能是您的桌面或“下载内容”文件夹。

以下是一个示例文件夹,其中显示了该文件夹的内容(您可能还有其他文件):

7011e3dfaf628e9b.png

前往该文件夹,然后启动 Gemini CLI。您将先让 Gemini CLI 创建一些文件夹:Images、Documents、Videos,然后让 Gemini CLI 整理这些文件夹中的文件。

Gemini CLI 通常会在执行命令(尤其是修改文件系统(例如写入、移动或删除文件)的命令)之前提示您授予权限。在授予权限之前,请务必仔细查看这些提示。这是您的安全网。

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

然后,输入以下提示:

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.

文件夹的最终状态示例如下所示。您应该会看到系统创建了新的子文件夹,并且文件已根据其类型移至相应的子文件夹中。

4c1ee9ddea4b3f5f.png

以下是一些其他整理场景(提示显示在每个场景旁边):

  1. 总结:对于“Documents”文件夹中的每个文档,在同一文件夹中创建一个名为“summary_ORIGINAL_FILENAME.txt”的 txt 文件,其中包含该文档主要内容的 3 句话总结。
  2. 按类型分类:扫描此目录中的所有 PDF 和 DOCX 文件。将名称或内容中包含“invoice”的所有文件移动到“Financial/Invoices”文件夹。将包含“收据”的文件移至“财务/收据”。所有其他 .docx 文件都会放入“报告”文件夹。
  3. 提取关键信息(并“标记”):对于“财务/账单”文件夹中的每个 PDF 文件,读取其内容。如果您找到了日期,请将文件重命名为包含该日期的名称,格式为 YYYY-MM-DD,例如‘invoice_2025-07-26_original_name.pdf'.

整理图片

我们来看看如何在电脑中整理图片内容。

如需尝试此功能,请执行以下操作:

  • 您需要有一个包含各种图片文件(.jpg、.png 等)的目录/文件夹。包括一些带有 EXIF 数据的照片(相机/手机拍摄的大多数照片都带有此数据)。
  • 导航到此目录。
  • 启动 Gemini CLI。

尝试以下任一场景(提示位于每个场景旁边):

  • 按日期(EXIF 数据)重命名:将此目录中的所有 .jpg 和 .png 文件重命名为包含其 EXIF 数据中的创建日期,格式为“YYYYMMDD_HHMMSS_original_name.jpg”。如果未找到 EXIF 日期,请使用文件的上次修改日期。
  • 创建图片说明:对于此文件夹中的每张图片,请描述图片中的内容,并将该说明保存在同一目录中名为“description_ORIGINAL_FILENAME.txt”的文本文件中。
  • 识别重复项(概念性,需要更高级的逻辑):根据视觉内容查找此文件夹中的所有重复图片,并列出其文件名。暂时不要删除这些文件。

总结文章(本地文件或网页)

对于以下每种情形,您可以根据需要随意更改网址、感兴趣的主题和本地文件名。提供的文件名是示例文件名,您可以将其替换为系统中的文件名。

尝试以下任一场景(提示位于每个场景旁边):

  • 总结一篇网页文章(单个网址):前往 https://medium.com/google-cloud/getting-started-with-gemini-cli-8cc4674a1371,并总结这篇新闻报道中的前 3 个关键要点。
  • 总结多篇网页文章(例如,来自搜索结果):使用 Google 搜索查找有关“Gemini CLI”的最新新闻报道。针对前 5 篇相关文章,每篇用 2-3 句话进行总结,并列出其网址。
  • 总结本地文本文件:总结“my_research_paper.txt”中的文章要点。重点关注方法和结论。
  • 总结本地 PDF:阅读“financial_report_Q2_2025.pdf”。简要说明所提及的财务表现和主要挑战。

提取特定信息(本地文件或网页)

对于以下每种情形,您可以根据需要随意更改网址、感兴趣的主题和本地文件名。提供的文件名是示例文件名,您可以将其替换为系统中的文件名。

尝试以下任一场景(提示位于每个场景旁边):

  • 从本地文章中提取实体:从“biography.txt”中列出所有指名的个人以及与他们相关的重要日期。
  • 从 PDF 中的表格提取数据:在“quarterly_sales.pdf”中,提取第 3 页上显示“各区域的商品销售额”的表格中的数据,并以 Markdown 表格格式呈现。
  • 从新闻网站提取新闻标题和来源:前往“https://news.google.com/”(或类似的新闻网站)。从首页中提取主要新闻头条及其对应的新闻来源。以项目符号列表的形式呈现。
  • 从电子商务页面查找商品规格:浏览至“https://www.amazon.in/Google-Cloud-Certified-Associate-Engineer/dp/1119871441”(以图书为例)。提取图书标题、作者和其他详细信息。以结构化 JSON 格式呈现此信息。
  • 以特定格式(例如“2h37m42s”)从视频中提取时长

根据内容回答问题(类似 RAG 的行为)

对于以下每种情形,您可以根据需要随意更改网址、感兴趣的主题和本地文件名。提供的文件名是示例文件名,您可以将其替换为系统中的文件名。

尝试以下任一场景(提示位于每个场景旁边):

  • 本地文档问答:我正在附加“user_manual.pdf”。排查网络连接问题的步骤有哪些?
  • 网页上的问答:根据“https://www.who.int/news-room/fact-sheets/detail/climate-change-and-health”中的内容,世界卫生组织认为与气候变化相关的主要健康风险有哪些?
  • 比较多个来源的信息:我有两篇新闻报道,分别是“article1.txt”和“article2.txt”,这两篇报道都讨论了近期的经济政策变化。比较并对比他们对潜在的小企业影响的看法。

基于提取的信息生成内容

对于以下每种情形,您可以根据需要随意更改网址、感兴趣的主题和本地文件名。

尝试以下任一场景(提示位于每个场景旁边):

  • 根据文章生成新闻简报:阅读 @tech_innovation_article.txt。撰写一篇简短而引人入胜的新闻简报(约 150 字),适合在公司简报中发布,重点介绍这项新技术及其潜力。
  • 起草一封电子邮件,总结会议转写内容:以下是会议转写内容文件:@meeting_transcript.txt。起草一封电子邮件发送给团队,总结做出的关键决策和分配的待办事项,包括每项待办事项的负责人。

Gemini CLI 多模态支持

Gemini CLI 通过 Gemini 支持多模型,您可以根据自己的需求让它处理不同内容格式的文件。

您将使用 Gemini CLI 处理一批发票图片,并从中提取关键信息。请按下面给出的步骤操作:

  • 在您的机器上创建一个文件夹,并从以下 GitHub 代码库下载一些发票。
  • 从该文件夹启动 Gemini CLI

使用以下提示以表格形式从发票中提取信息。

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.

理想情况下,您应该会看到如下所示的输出:

7203d699d875a91f.png

以下是另一个示例,您可以在其中请求添加其他派生列。假设您想针对所有已过期的账单截止日期显示一个红色叉号表情符号。您可以按如下方式提供提示:

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.

这会生成以下输出:

e11fcde0400f5a0b.png

将此方法应用于您自己的任何非文本格式文件。

使用 Gemini CLI 处理数据库

您可以使用 Gemini CLI 更高效地处理各种数据库。您可以在多种场景中使用它:使用自然语言进行查询、导出数据、设计数据库架构、生成逼真的测试数据等。

您将使用 SQLite3 来完成此任务。您需要安装 SQLite3 并拥有示例 Chinook 数据库

以下是有关设置 SQLite3 的简要说明:

  1. macOS:SQLite3 已预安装。通过 sqlite3 --version 进行验证。如果需要,请使用 Homebrew 进行安装:brew install sqlite3
  2. Windows:从 SQLite 网站下载预编译的二进制文件。将文件解压缩到某个目录(例如 C:\sqlite)。将该目录添加到系统的 PATH 环境变量中。
  3. Linux:Debian/Ubuntu:sudo apt update && sudo apt install sqlite3

下载 Chinook 示例数据库(点击此处可直接下载)。

为了运行这些提示,建议您在 gemini-cli-projects 目录中创建一个文件夹 (database-tasks)。将 Chinook 数据库文件复制到该文件夹。确保在您的系统上设置了 sqlite3 工具,并且该工具可在路径中使用,以便 Gemini CLI 可以使用它。启动 Gemini CLI。

数据库架构图如下所示:

4178b54e03a07d60.png

假设您位于名为 database-tasks 的文件夹中,并且 Chinook 数据库文件的名称为 chinook.db

下面提供了几个提示,可帮助您处理数据库。我们先简要介绍第一个示例,以演示将请求的权限。

首先,使用提示列出数据库中存在的表,给出以下提示:

What tables are present in the file: chinook.db 

此示例使用该工具读取文件,然后希望使用系统上存在的 sqlite3 实用程序来完成必要的操作:

a8d782201eba1eb8.png

提供运行一次的权限,以获得预期输出:

69e96f22610e7892.png

您可以尝试使用以下提示或您选择的任何其他提示:

  • 有多少员工?
  • 账单表的架构是什么?
  • 按总金额排序,前 3 张账单是哪些?这些账单是哪些客户下的?

您会发现,Gemini CLI 会处理两件事:生成符合您要求的正确 SQL 语句,并提供正确的 sqlite3 命令。

使用 Gemini CLI 生成数据

您可以提示 Gemini CLI 以各种数据格式生成数据。这可能包括您可能需要模拟的内容片段到 JSON 数据。我们在此重点介绍适用于开发者/测试者的场景。

以下是一些可尝试的提示:

生成示例客户评价的 JSON 数据

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

生成模拟 API 响应 (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').

生成示例数据库插入语句 (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'.

生成用于数据加载/分析的 CSV 数据

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

生成配置文件 (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.

为极端情况/验证生成测试数据

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

11. 恭喜

恭喜!您已成功探索 Gemini CLI 及其功能,并将其应用于一些使用情形。

参考文档