10分钟快速掌握Gemini CLI

7k words

10分钟快速掌握Gemini CLI

一、Gemini CLI 是什么?能干嘛?

Gemini CLI 是 Google 出的一个开源命令行智能体工具,把 Gemini 模型直接搬进你的终端里。你可以在项目目录下打开它,让它:

  • 理解/修改代码、写测试、查 bug

  • 读文件、跑 shell 命令、查 Web 资料

  • 管理自己的“记忆”、模型、配置等 (Gemini CLI)

它内部是一个 REPL:你像聊天一样打一段自然语言,它会按需调用各种工具(文件、shell、Web、MCP server 等)去完成任务。(Gemini CLI)


二、安装 & 启动:把 Gemini CLI 跑起来

1. 环境要求

官方推荐:

  • Node.js ≥ 20

  • macOS / Linux / Windows 都支持 (GitHub)

2. 安装方式

常用三种(任选其一即可)(GitHub):

1
2
3
4
5
6
7
8
# 方式一:npx 即用即走(适合先试一试)
npx https://github.com/google-gemini/gemini-cli

# 方式二:npm 全局安装
npm install -g @google/gemini-cli

# 方式三:Homebrew(macOS / Linux)
brew install gemini-cli

安装后直接运行:

1
gemini

第一次启动会走一个简易引导。(Gemini CLI)

3. 登录 / 鉴权

第一次启动时,CLI 会问你“如何认证”:

  1. 终端里输入:

    1
    gemini
  2. 提示选择认证方式时选:Login with Google

  3. 浏览器弹出登录页面,选好账号 → 同意权限即可 (Gemini CLI)

如果你有 Google AI Studio / Vertex AI 的 API key,也可以用 key 的方式配置,不过这属于进阶内容,先略过。


三、基本交互:不加前缀就是“聊天”

开好之后,你就像在 Chat 一样直接打字:

1
帮我看下这个仓库的整体结构,下一步该从哪里读代码开始?

这类“自然语言 + 项目上下文”的用法是最基础的。真正让 Gemini CLI 变强的,是它的命令体系——也就是本文重点。


四、命令体系总览:/@! 三剑客

Gemini CLI 的命令分三类:(Gemini CLI)

  1. Slash 命令:/xxx

    • 控制 CLI 自身行为,如模型、设置、会话、工具等
  2. At 命令:@path

    • 快速把文件/目录内容注入当前问题
  3. Shell 命令:!

    • 直接在 CLI 里执行系统 shell 命令

后面我会按场景拆开讲,每个命令配简单示例。


五、Slash 命令 /:控制 Gemini CLI 本身

Slash 命令是“元命令”,控制的是 CLI 而不是模型回答内容。文档里列了一长串内建命令,我们挑核心的逐个说。(Gemini CLI)

1. 会话与上下文相关

1.1 /chat:保存 / 恢复聊天状态

  • 作用:手动给当前对话打一个“存档点”,以后可以恢复,适合做不同思路的分支实验。

  • 常用子命令:save / resume / list / delete / share(Gemini CLI)

示例:

1
/chat save refactor-plan

保存当前对话为 refactor-plan

1
2
/chat list
/chat resume refactor-plan

列出所有存档 & 恢复某个存档。

1
/chat share notes.md

把当前对话导出成 Markdown 文件,方便贴到文档或 PR 描述里。(Gemini CLI)

用法建议:

  • 一个项目多条主线时,用 /chat save <tag> 做分支;

  • 录课程/写教程时,复用某个“教学对话”非常方便。


1.2 /compress:压缩上下文

  • 作用:把当前长对话压缩成一段“总结”,作为新的上下文,节省 token。(Gemini CLI)

示例:

1
/compress

压缩后你可以继续在“总结基础上”提问,非常适合长时间迭代后做阶段性收敛。


1.3 /clear/copy

  • /clear:清屏(类似 clear 命令),快捷键 Ctrl+L。(Gemini CLI)

  • /copy:把刚刚的回答复制到剪贴板(依赖各平台的剪贴板命令)。(Gemini CLI)

示例:

1
2
/clear      # 清理一下终端界面
/copy # 把上一条输出 copy 出去

2. 项目与上下文目录相关

2.1 /directory(或 /dir):管理工作目录

  • 作用:让 CLI 一次“看多个目录”,而不是只看当前目录。(Gemini CLI)

常见用法:

1
2
/directory add backend,frontend
/directory show
  • 在 monorepo 或分前后端的项目里非常好用;

  • 如果你用了沙箱模式,某些受限 profile 下可能不可用,需要用启动参数 --include-directories。(Gemini CLI)


2.2 /init:生成 GEMINI.md

  • 作用:扫描当前目录,自动生成一个 GEMINI.md,作为项目说明 & 指导提示。(Gemini CLI)

示例:

1
/init

执行后会在当前项目生成 GEMINI.md,内容大致包含:

  • 这个项目是做什么的

  • 重要目录、关键文件

  • 对 AI 的使用注意事项等(可自己修改)

之后 CLI 会自动把 GEMINI.md 作为“持久记忆”加载,对话更符合项目实际。(Gemini CLI)


3. 模型与设置相关

3.1 /model:切换模型

  • 作用:选择当前会话使用的 Gemini 模型(如 Gemini 3 Pro / 其他变体)。(Gemini CLI)

示例:

1
/model

会弹出一个对话界面,让你选择模型。可以在:

  • 推理/复杂代码重构时 → 选更强的模型

  • 简单生成/草稿时 → 选轻量模型控制成本


3.2 /settings:打开设置面板

  • 作用:在 CLI 内打开一个设置编辑器,管理各种配置,如工具启用、Sandbox、快捷键、UI 模式等。(Gemini CLI)

示例:

1
/settings

常见会调的东西:

  • 是否启用交互式 shell(支持 vimhtop 等)

  • 是否显示彩色输出

  • sandbox 配置(Docker / Podman / macOS seatbelt 等)(Gemini CLI)

建议:

  • 开启 sandbox 时,! 命令和文件操作会在容器/沙箱里执行,更安全;

  • 不开 sandbox 时,CLI 会一直红色警告提示,注意不要在不可信仓库里乱用自动命令。(IT Pro)


3.3 /theme /vim /auth /about

这些是个性化和信息类命令:

  • /theme:切换 CLI 主题(明暗、配色)。(Gemini CLI)

  • /vim:开启/关闭 Vim 输入模式(支持 NORMAL / INSERT、ddcw 等一整套操作)。(Gemini CLI)

  • /auth:切换认证方式,比如从 Google 登录换成 API Key 模式。(Gemini CLI)

  • /about:显示版本信息,提 issue 时很有用。(Gemini CLI)

示例:

1
2
3
4
/theme
/vim
/auth
/about

4. 工具 / 扩展 / MCP 相关

4.1 /tools:查看已启用工具

  • 作用:列出当前可用的所有工具(文件读写、shell、web_fetch、web_search、memory 等)。(Gemini CLI)

示例:

1
2
/tools           # 只看名称
/tools desc # 显示每个工具的详细描述

当你不确定“它为什么会读文件 / 访问网络 / 执行命令”时,先看 /tools


4.2 /extensions:查看扩展

  • 列出当前 session 所有已激活的扩展(例如 IDE 集成相关扩展)。(Gemini CLI)
1
/extensions

4.3 /mcp:管理 MCP 服务器

MCP(Model Context Protocol)是一个上下文/工具插件协议,CLI 可以通过 MCP 接各种外部系统。(Gemini CLI)

常见用法:

1
2
3
4
5
/mcp             # 等同于 /mcp list
/mcp desc # 带描述地列出所有 MCP 服务和工具
/mcp schema # 带 schema
/mcp auth jira # 对名为 jira 的 MCP 做 OAuth 登录
/mcp refresh # 重启所有 MCP 服务器,重新发现工具

适合用来接:自建知识库、工单系统、云资源管理等。


5. “记忆”与保护机制

5.1 /memory:管理层级记忆

Gemini CLI 支持分层的 GEMINI.md 文件(全局 + 项目 + 子目录),用来给模型提供长期指令和背景。(Gemini CLI)

命令包括:

1
2
3
4
/memory add 以后在这个项目里,所有回答都用中文输出
/memory show
/memory list
/memory refresh
  • add:直接往“记忆”里加一条说明(实际会写入对应的 GEMINI 配置);

  • show:查看当前所有层级记忆拼接后的内容(用于调试“它到底是按什么指令在干活”);

  • refresh:你编辑过 GEMINI.md 后,用它刷新;

  • list:看有哪些 GEMINI.md 在生效。

建议:

  • GEMINI.md 统一写清楚:项目约定、代码风格、输出格式;

  • 录课、做咨询项目时,写清楚“你是谁、面向谁、回答风格”。


5.2 /restore:回滚文件修改(checkpoint)

CLI 在用工具改文件前,可以按配置创建 checkpoint。/restore 用来回滚到某个工具调用前的状态。(Gemini CLI)

示例:

1
2
/restore          # 列出可恢复的 checkpoint
/restore 1234 # 回滚到某次 tool 调用前的状态

适合大规模重构/批量修改前,先确认 checkpoint 机制已打开(通过 /settings)。


5.3 /stats /privacy

  • /stats:显示当前会话 token 使用情况、缓存节省情况等。(Gemini CLI)

  • /privacy:查看隐私声明,并配置是否允许用于改进服务的数据收集。(Gemini CLI)

1
2
/stats
/privacy

6. 退出 / 帮助 / 报 bug

  • /help:列出命令帮助,类似 CLI 版“说明书目录”。(Gemini CLI)

  • /bug:将问题直接提交到 GitHub 仓库(标题就是 /bug 后面的文本)。(Gemini CLI)

  • /quit / /exit:退出 CLI。(Gemini CLI)

示例:

1
2
3
/help
/bug windows shell mode freezes sometimes
/quit

六、@ 命令:把文件/目录直接“塞”进问题里

@ 命令是 Gemini CLI 中非常关键的一类——用来在提问时附带文件/目录内容。(Gemini CLI)

1. 基本语法

1
2
3
4
5
@README.md 这份文档主要讲了什么?帮我写个中文版的简短介绍。

@src/ 重构一下这个目录下的代码结构,并给出建议清单。

@server/app.js 这段代码有没有安全问题?重点帮我看输入校验。

行为说明:(Gemini CLI)

  • @<文件>:读取该文件的文本内容,插入到当前提问上下文;

  • @<目录>:递归读取目录下文件(会有大小/类型限制);

  • 默认会遵守 .gitignore / 常见忽略规则(如 node_modules/dist/ 等);

  • 对于大型/二进制文件可能会自动跳过或截断,并在输出里说明。

路径注意:

  • 有空格的路径需要转义,如:

    1
    @My\ Documents/spec.md 帮我总结一下
  • 可以把 @README.md 放在问题开头、中间、结尾都行。

使用建议:

  • 阅读代码时优先用 @目录 + “帮我概览结构”;

  • 定点审查某个模块时,@某文件 + 具体问题;

  • 搭配 /directory 把多目录纳入工作空间,再用 @ 精确注入。


七、! 命令:在 CLI 中直接跑 shell

! 前缀让你在 Gemini CLI 中直接执行系统 shell 命令。(Gemini CLI)

1. 单条命令模式

1
2
3
!ls -la
!git status
!pytest -q

作用类似在原本终端里执行:

  • Linux/macOS:用 bash 运行;

  • Windows:用 powershell.exe -NoProfile -Command,除非你覆盖了 ComSpec 环境变量。(Gemini CLI)

CLI 会显示命令输出,你可以继续用自然语言让 Gemini 解读这些输出,比如:

1
2
3
!pytest -q
# 看完输出后继续问:
测试失败了,帮我分析上面的报错原因,并给出修改方案

2. Shell 模式(连续执行)

输入一个单独的 ! 可以在**“普通模式”“shell 模式”**之间切换:(Gemini CLI)

1
2
3
4
5
6
7
!          # 打开 shell 模式
# 之后直接输入 shell 命令,如:
git status
ls src
npm run dev
# 再输入 ! 退出 shell 模式,回到问答模式
!

特点:

  • shell 模式下你输入的每一行都当作命令执行;

  • UI 有明显提示,方便区分当前是“聊天”还是“直接跑命令”;

  • 所有通过 ! 跑的命令都会带上 GEMINI_CLI=1 环境变量,方便你的脚本识别自己是“被 Gemini CLI 调用”。(Gemini CLI)

安全提醒:

  • ! 执行的命令权限等同于你直接在终端执行;

  • 尤其是看陌生仓库时,不要盲目让 CLI 自动执行来自 README 的命令;

  • 建议在 Docker / Podman / macOS sandbox 内运行,减少风险(新版已修复早期白名单漏洞,但习惯上仍应保持谨慎)。(IT Pro)


八、自定义 Slash 命令:把常用提示词封装成“指令”

如果你某些提示词经常用,比如“标准代码评审模板”、“写单元测试模板”等,可以用自定义命令封装成 /review/plan 之类的指令。(Gemini CLI)

1. 创建一个全局命令 /plan

  1. 在用户命令目录下创建文件:
1
2
mkdir -p ~/.gemini/commands
touch ~/.gemini/commands/plan.toml
  1. 写入类似如下内容(示意):
1
2
3
4
5
6
7
8
9
prompt = """
你是一个资深软件工程师,请根据当前项目代码和用户输入,输出一个详细的实现计划,要求:

1. 分步骤列出改动点
2. 标明涉及的文件和目录
3. 给出风险点和回滚方案
"""

# 可以使用 {{args}} 注入用户输入
  1. 在 CLI 里使用:
1
/plan 为 user 模块增加用户头像上传功能

CLI 会把 /plan 后面的文本作为 {{args}} 注入 prompt,形成一条结构化的请求。

你也可以在项目根目录 .gemini/commands/ 下放 toml,变成“项目级命令”,并且可以直接提交到仓库和团队共享。(Gemini CLI)


九、实战:几套常用工作流套路

最后给几套“命令+自然语言”的组合示例,方便你直接照抄使用。

1. 快速熟悉一个新仓库

1
2
cd your-project
gemini

在 CLI 中:

1
2
3
/init
@README.md 先帮我总结一下项目整体功能、技术栈和关键模块。
@src/ 请按模块帮我列出主要目录结构,并用表格简要描述每个目录的职责。

之后可以:

1
/memory add 在这个项目里,所有解释请尽量面向有 1~3 年经验的后端工程师,用通俗一点的语言。

2. 带着 CLI 做一个小特性

1
/plan 为这个项目新增「导出报表为 CSV」的功能,需支持筛选条件(时间区间、用户ID)

看完 plan 后:

1
很好,先帮我写出需要修改的文件清单和每个文件的改动要点,不要直接改代码。

确认 OK 之后:

1
好,现在开始按上述计划逐步修改,修改前请展示你要改的文件内容,改完后给出 diff 摘要。

如果发现不对:

1
2
/restore
# 或者 /restore <tool_call_id> 回到某次修改前状态

3. 挂着测试 / CI 输出做问题定位

1
!pytest -q

测试失败后:

1
刚才 pytest 的输出里有哪些失败用例?分别是什么原因?

如果是多文件变更:

1
@tests/test_user.py 帮我分析这个测试文件里的断言逻辑,看看哪里理解错了。

必要时:

1
2
/stats   # 看看 token 用量
/compress # 把长对话压缩后继续聊

4. 打造“个人开发环境”体验

进入你最常用的项目目录后:

1
2
3
/settings    # 打开设置,开启你需要的工具 & shell 配置
/theme # 换一个喜欢的主题
/vim # 如果你习惯 Vim 风格输入

日常使用时:

1
2
@src/ 今天我想从修复 bug 开始,请帮我找出最近最值得修的三个问题,并给出排查建议。
// 后面可以用 !git status / !git diff / !npm test 等命令配合。

十、总结

如果用一句话来概括:

不带前缀就是“让 AI 帮你思考”,
/ 是“管理 CLI 自己”,
@ 是“把代码和文件塞给它看”,
! 是“让它直接动手帮你操作系统”。

作为程序员,你可以先把本文提到的高频命令记住:

  • /model /settings /tools /memory /chat /restore /stats

  • @README.md@src/

  • !!ls!git status

用 1–2 个项目,把这些命令全部实战过一遍,你基本就算真正掌握 Gemini CLI 的使用方式了。

如果你愿意,下一步我也可以帮你写一份**“Gemini CLI 入门速查表(Cheat Sheet)”**,适合贴在 README 里或者做课时给学员用。