Gemini CLI 命令行工具

精选 Gemini CLI 常用指令与核心速查备忘单,涵盖高频用法、配置参数与实用技巧。 Gemini CLI 将 Google Gemini 大模型能力直接带入终端,助您进行代码理解、任务自动化与工作流构建。

#🚀 入门指引

#快速入门

# 全局安装 CLI
$ npm install -g @google/gemini-cli

# 或通过 Homebrew 安装
$ brew install gemini-cli

# 或直接免安装运行
$ npx @google/gemini-cli

# 启动交互式会话
$ gemini

# 非交互式单次运行 (headless)
$ gemini -p "summarize README.md"

# 将文件内容通过管道传给 Gemini
$ cat logs.txt | gemini -p "find errors"

# 运行提示词并继续保持交互状态
$ gemini -i "explain this project"

# 恢复最近一次的历史会话
$ gemini -r latest

# 带新提示词恢复最近会话
$ gemini -r latest "check for type errors"

#身份认证方式 (Authentication)

认证方式 操作步骤与说明
Google 账号认证 运行 gemini 并选择 "Sign in with Google" 登录
API Key 密钥 设置 GEMINI_API_KEY 环境变量
Vertex AI (ADC) 执行 gcloud auth application-default login
Vertex AI (SA) 设置 GOOGLE_APPLICATION_CREDENTIALS 服务账号 JSON 路径

使用 Vertex AI 还需配置 GOOGLE_CLOUD_PROJECTGOOGLE_CLOUD_LOCATION

#安装途径 (Installation Methods)

安装方式 命令行指令
npm npm install -g @google/gemini-cli
Homebrew brew install gemini-cli
MacPorts sudo port install gemini-cli
npx (免安装) npx @google/gemini-cli

系统环境要求: Node.js 20+、macOS 15+、Windows 11 24H2+ 或 Ubuntu 20.04+

#模型别名映射 (Model Aliases)

别名 对应模型全称 适用场景
auto gemini-2.5-pro / gemini-3-pro 默认推选,均衡通用
pro gemini-2.5-pro / gemini-3-pro 复杂代码推理与规划
flash gemini-2.5-flash 快速响应,性能平衡
flash-lite gemini-2.5-flash-lite 简单任务,极速响应

通过命令行参数 -m flashGEMINI_MODEL 环境变量指定模型。

#核心概念

概念术语 详细含义与功能说明
GEMINI.md 项目上下文配置文件,启动时自动加载
Skills 技能 按需加载的专业知识技能包,通过 activate_skill 触发
Extensions 扩展包,打包集合了 Prompts、MCP 服务与工具
MCP 服务 基于 Model Context Protocol 协议接入的外部工具
规划模式 写代码前进行分析规划的只读安全模式 (Plan Mode)
Hooks 钩子 在 Agent 生命周期的关键节点自动调用的脚本
Headless 通过 -p 标志运行的非交互单次模式
Sessions 保存的会话历史记录,支持恢复与接续

#命令行参数 (CLI Options)

#核心参数选项 (Core Options)

参数选项 缩写 详细含义与功能说明
--prompt <text> -p 非交互模式下直接指定 Prompt 文本
--prompt-interactive -i 执行指定 Prompt 后继续保持交互会话
--model <name> -m 指定使用的 Gemini 模型名称/别名
--worktree [name] -w 在独立的 git worktree 工作区中启动
--sandbox -s 开启沙盒隔离安全执行环境
--approval-mode <mode> 审批模式:default / auto_edit / yolo / plan
--yolo -y 自动审批所有工具调用(已废弃,请用 --approval-mode=yolo
--resume <id> -r 按会话 ID 或 latest 恢复历史会话
--list-sessions 列出所有历史保存会话并退出
--delete-session <n> 按索引序号删除指定会话
--output-format <fmt> -o 指定输出格式:text / json / stream-json
--extensions <list> -e 显式加载的 Extensions 列表
--list-extensions -l 列出已安装的 Extensions 列表并退出
--include-directories 包含额外的额外工作区目录
--allowed-mcp-server-names 限制可使用的 MCP 服务器名称白名单
--screen-reader 开启无障碍屏幕阅读器支持模式
--acp 启动 ACP (Agent Code Pilot) 模式
--debug -d 输出详细的调试 Debug 日志
--version -v 显示当前版本号
--help -h 显示帮助信息

#子命令速查 (Subcommands)

# MCP 服务器管理
$ gemini mcp add <name> <cmd-or-url>
$ gemini mcp remove <name>
$ gemini mcp list
$ gemini mcp enable <name>
$ gemini mcp disable <name>

# Extensions 扩展包管理
$ gemini extensions install <source>
$ gemini extensions uninstall <name>
$ gemini extensions list
$ gemini extensions update [name] [--all]
$ gemini extensions enable/disable <name>
$ gemini extensions link <path>
$ gemini extensions new <path>

# Skills 技能包管理
$ gemini skills list [--all]
$ gemini skills install <source>
$ gemini skills link <path>
$ gemini skills uninstall <name>
$ gemini skills enable/disable <name>

# 钩子 Hook 管理
$ gemini hooks migrate

#Headless 输出格式 (Output Formats)

输出格式 结构与详细说明
text 纯文本格式(默认)
json 包含 response 响应与 stats 统计单条 JSON 对象
stream-json JSONL 流式格式:init · message · tool_use · tool_result · error · result

退出状态码 (Exit codes): 0 成功 · 1 错误 · 42 非法输入 · 53 超过对话轮数限制

#交互式指令 (Interactive Commands)

#斜杠指令

命令指令 含义说明
/help 显示所有可用斜杠指令
/quit /exit 退出 Gemini CLI 会话
/clear 清空终端屏幕内容
/about 显示版本与环境详细信息
/auth 切换/修改身份认证方式
/model 切换与管理当前 Gemini 模型
/settings 打开图形配置编辑器
/theme 切换终端主题配色方案
/vim 开启/关闭 Vim 编辑模式
/plan [goal] 进入 Plan 规划分析模式
/compress 压缩清理当前对话上下文
/copy 将最后一次输出拷贝至剪贴板
/init 为当前项目生成 GEMINI.md 配置
/docs 打开官方文档
/bug 在 GitHub 上提交 Issue 反馈
/stats 查看当前会话/模型/工具统计
/tools 列出当前可用的所有工具列表
/memory show 显示当前已加载的所有上下文文件
/memory add <text> 追加文本内容至全局 GEMINI.md
/memory reload 重新加载所有上下文配置文件
/resume 浏览与恢复历史会话列表
/rewind 撤回/回滚对话历史与代码修改
/restore 恢复工具调用之前的代码文件状态
/hooks list 列出所有已配置的 Hook 钩子
/mcp list 列出已注册的 MCP 服务器列表
/mcp reload 重启所有 MCP 服务器
/skills list 列出所有可用的 Agent 技能包
/extensions list 列出所有已安装的 Extensions
/permissions trust 信任当前工作区文件夹
/policies list 列出当前生效的安全策略
/directory add 添加额外的工作区目录
/ide status 查看 IDE 插件集成状态
/shells 管理后台运行的 Shell 子进程
/terminal-setup 配置多行输入的按键映射
/setup-github 初始化配置 GitHub Actions 工作流

重载类指令:/skills reload, /agents reload, /commands reload, /memory reload, /mcp reload, /extensions reload

#@ 文件与目录引用 (At Commands)

在 Prompt 提示词中直接引用文件或目录内容:

# 引用单个文件
@src/main.ts fix the bug on line 42

# 引用整个目录结构
@src/ what does this module do?

# 组合引用多个文件/路径
@package.json @src/ audit dependencies

支持 Git 感知:自动遵循 .gitignore 过滤目录文件。

#! Shell 命令行模式 (Shell Mode)

# 直接执行单条 Shell 命令
!ls -la

# 切换进入/退出持续 Shell 模式
!

# 将 Shell 命令输出自动注入上下文对话
!git diff HEAD~1

所有 Shell 子进程环境变量中均自动注入 GEMINI_CLI=1

#键盘快捷键

#光标移动与编辑 (Cursor & Editing)

快捷键 执行操作
Ctrl+A / Home 移动光标至行首
Ctrl+E / End 移动光标至行尾
Ctrl+← / Alt+B 向左移动一个单词
Ctrl+→ / Alt+F 向右移动一个单词
Ctrl+K 删除光标至行尾的所有字符
Ctrl+U 删除光标至行首的所有字符
Ctrl+W / Alt+Bksp 向左删除一个单词
Alt+D 向右删除一个单词
Backspace 向左删除单个字符
Delete / Ctrl+D 向右删除单个字符
Cmd+Z 撤销编辑 (Undo)
Ctrl+Shift+Z 重做编辑 (Redo)

#文本输入与提交 (Text Input)

快捷键 执行操作
Enter 发送提交消息
Ctrl/Cmd+Enter 插入换行符
Tab 将消息加入等待队列
Ctrl+X 在外部编辑器中打开编辑当前输入
Ctrl+V 粘贴内容
Ctrl+R 历史命令反向搜索 (Reverse Search)
Ctrl+P 切换至上一条历史输入
Ctrl+N 切换至下一条历史输入

#应用快捷控制 (App Controls)

快捷键 执行操作
Shift+Tab 循环切换审批模式 (Approval Modes)
Ctrl+T 展开/收起待办事项面板 (Todos)
Alt+M 切换 Markdown 渲染显示
Ctrl+Y 开启/关闭 YOLO 自动审批模式
Ctrl+L 清空屏幕
Ctrl+Z 挂起当前 CLI 进程
F12 显示详细错误堆栈面板
Esc (连按两次) 打开历史撤回/回滚对话框
Ctrl+C 取消当前生成 / 退出
Ctrl+D 退出应用

#会话与历史 (Sessions & History)

#会话管理 (Session Management)

# 列出所有历史会话
$ gemini --list-sessions

# 恢复最近一次会话
$ gemini -r latest

# 按会话 ID 恢复指定会话
$ gemini -r <session-id>

# 按索引序号删除会话
$ gemini --delete-session 3

/resume 会话浏览器中操作:

  • ↑↓ 键上下浏览历史会话
  • Enter 键加载恢复选中的会话
  • x 键删除选中的历史会话
  • 直接打字可实时搜索过滤会话

#历史撤回工作流 (Rewind Workflow)

输入 /rewind 或连按两次 Esc 键打开撤回对话框:

选项操作 作用与影响范围
Rewind + Revert 清空本轮对话历史,并重置代码文件修改
Rewind only 仅清空本轮对话历史,保留文件修改
Revert only 恢复代码文件修改,保留对话历史
Do nothing 取消撤回 (Esc)

仅对 AI 自动作出的文件修改生效,不影响手动编辑与 ! shell 命令操作。

#会话分支创建 (Fork a Conversation)

保存并恢复命名检查点,以便探索多种实现方案:

# 1. 保存当前状态检查点
/resume save my-decision-point

# 2. 尝试方案 A...

# 3. 回滚恢复至保存的检查点
/resume resume my-decision-point

# 4. 尝试方案 B...

#上下文与记忆 (Context & Memory)

#GEMINI.md 上下文层级 (Hierarchy)

上下文配置文件按以下顺序依次合并加载(后盖前):

优先级 文件路径位置
1. 全局配置 (Global) ~/.gemini/GEMINI.md
2. 父级目录 (Parent) 从工作区向上递归扫描
3. 工作区 (Workspace) .gemini/GEMINI.md
4. JIT 按需加载 (JIT) 工具访问子目录时即时扫描
# 在 GEMINI.md 内部引用导入其他 Markdown 规则文件

@./docs/architecture.md
@./docs/conventions.md

可通过 settings.json 中的 context.fileName 来自定义文件名(支持数组:["AGENTS.md", "GEMINI.md"])。

#记忆相关指令 (Memory Commands)

# 显示当前所有已加载的上下文
/memory show

# 强制执行重新加载所有上下文文件
/memory reload

# 将规范规则追加至全局 GEMINI.md
/memory add "Always use TypeScript strict mode"

# 为当前项目生成初始 GEMINI.md
/init

#文件忽略过滤 (.geminiignore)

在项目根目录创建 .geminiignore 文件(语法与 .gitignore 一致):

# 忽略整个目录
/packages/

# 忽略特定敏感文件
apikeys.txt
*.log

# 忽略所有 markdown,但保留 README
*.md
!README.md

被忽略的文件对 CLI 工具不可见,但不影响 Git 与其他系统工具。

#MCP 服务器

#MCP 配置 JSON 示例 (MCP Config)

{
  "mcpServers": {
    "my-server": {
      "command": "npx",
      "args": ["-y", "my-mcp-package"],
      "env": { "API_KEY": "$MY_API_KEY" },
      "timeout": 30000,
      "trust": false,
      "includeTools": ["tool1", "tool2"],
      "excludeTools": ["dangerous-tool"]
    },
    "remote-server": {
      "url": "https://api.example.com/mcp",
      "headers": { "Authorization": "Bearer $TOKEN" }
    }
  }
}

环境变量支持 $VAR, ${VAR}, 及 Windows %VAR% 展开。

工具全称命名规则:mcp_{serverName}_{toolName}

#服务器管理指令 (Managing Servers)

# 添加 stdio 类型的 MCP 服务器
$ gemini mcp add myserver npx -y my-mcp-package

# 添加 HTTP/SSE 类型的 MCP 服务器
$ gemini mcp add myserver https://api.example.com/mcp

# 带额外参数选项添加
$ gemini mcp add myserver cmd --transport http --trust --timeout 30000

# 列出所有注册的 MCP 服务器
$ gemini mcp list

# 移除指定 MCP 服务器
$ gemini mcp remove myserver

# 开启/禁用指定 MCP 服务器
$ gemini mcp enable myserver
$ gemini mcp disable myserver --session

#MCP 参数属性表 (Fields)

属性名称 详细含义与功能说明
command Stdio 传输模式下的可执行文件命令
args 命令参数数组
url SSE 传输模式下的 URL 地址
httpUrl Streamable HTTP 模式下的 URL 地址
env 环境变量映射对象
cwd 命令运行的基准工作目录
timeout 连接超时毫秒数 (默认 600000 ms)
trust 信任该服务器的所有工具,跳过二次确认
includeTools 允许使用的工具白名单列表
excludeTools 禁止使用的工具黑名单列表

#MCP 资源引用 (MCP Resources)

在 Prompt 中直接引用 MCP 资源与预设指令:

# 引用 MCP 资源对象
@server://resource/path summarize this

# 执行 MCP 提供的斜杠指令
/prompt-name --arg=value

#Extensions 扩展与 Skills 技能

#扩展包管理 (Managing Extensions)

# 从 GitHub 仓库安装
$ gemini extensions install https://github.com/org/ext

# 从本地路径安装
$ gemini extensions install ./my-extension

# 列出所有已安装扩展
$ gemini extensions list

# 更新所有扩展包
$ gemini extensions update --all

# 更新特定扩展包
$ gemini extensions update my-ext

# 开启 / 禁用扩展
$ gemini extensions enable my-ext
$ gemini extensions disable my-ext --scope user

# 开发者链接模式
$ gemini extensions link ./dev-extension

# 创建新扩展模板
$ gemini extensions new ./my-new-ext

# 校验扩展结构正确性
$ gemini extensions validate ./my-ext

Extensions 可集中打包:Prompts、MCP 服务、自定义指令、主题、Hooks、Subagents 和 Skills。

#Agent 技能包 (Agent Skills)

Skills 提供按需加载的领域专业知识——仅在调用 activate_skill 时才会装载进上下文。

技能包查找路径(优先级从高到低):

层级 Scope 存放路径
工作区 Workspace .gemini/skills/.agents/skills/
用户级 User ~/.gemini/skills/~/.agents/skills/
扩展包 Extension Extension 内部捆绑的 skills 目录
# 列出所有可用的技能包
$ gemini skills list --all

# 从 Git 或本地路径安装技能包
$ gemini skills install https://github.com/org/skill
$ gemini skills install ./local-skill

# 开发者链接模式
$ gemini skills link ./my-skill

# 开启 / 禁用技能包
$ gemini skills enable my-skill
$ gemini skills disable my-skill

#自定义指令 (Custom Commands)

将可复用的 Prompt 提示词保存为自定义斜杠指令。

配置文件路径:

  • 用户级:~/.gemini/commands/
  • 项目级:.gemini/commands/
# .gemini/commands/git/commit.toml
description = "Generate commit message"
prompt = """
Generate a conventional commit message for:

!{git diff --staged}

{{args}}
"""

上述配置文件将生成 /git:commit 指令(子目录 / 自动转为 : 命名空间)。

占位符说明:

占位符 含义与作用
{{args}} 注入用户传入的参数文本
!{cmd} 执行 Shell 命令并将结果注入
@{path} 嵌入读取指定文件的内容

#规划分析模式 (Plan Mode)

#开启规划模式 (Enabling Plan Mode)

# 启动时通过 Flag 开启
$ gemini --approval-mode=plan

# 自然语言触发短语
> let's plan the refactor first

# 斜杠指令触发
/plan redesign the auth module

# 会话中通过 Shift+Tab 快捷键循环切换

settings.json 中设为默认模式:

{
  "general": {
    "defaultApprovalMode": "plan"
  }
}

#规划模式可用工具 (Plan Mode Tools)

只读工具(无风险,全量开放):

  • read_file, list_directory, glob
  • grep_search, google_web_search
  • web_fetch (需要二次确认)
  • codebase_investigator, cli_help
  • ask_user

写入限制工具(严格受限):

  • write_file, replace — 仅允许修改 plans 目录下的 .md 文档

上下文与记忆工具:

  • save_memory, activate_skill

#规划模式工作流 (Workflow)

1. 设定分析目标
   └─ 使用自然语言或 /plan <goal>

2. 讨论方案策略
   └─ Gemini 提出澄清问题与技术选型

3. 审查生成的 Plan 文档
   └─ 方案文档自动保存至 plans 目录
   └─ 按 Ctrl+X 在外部编辑器中修改

4. 审查通过或继续迭代方案

5. 切换模式至 YOLO / auto_edit 开始编码实现

模型自动路由:分析规划阶段使用 Pro 大模型 → 编码实现阶段切换为 Flash 模型。

#⚙️ 配置文件说明 (Configuration)

#配置文件路径 (Settings File Locations)

生效范围 文件存放路径
用户级 User ~/.gemini/settings.json
项目级 Project .gemini/settings.json
系统级 Linux /etc/gemini-cli/settings.json
System (macOS) /Library/Application Support/GeminiCli/
System (Windows) C:\ProgramData\gemini-cli\settings.json

配置优先级(从高到低): 命令行参数 CLI args → 环境变量 env vars → 系统级配置 system → 项目级配置 project → 用户级配置 user → 默认默认值

常用配置 JSON 项示例:

{
  "general": {
    "defaultApprovalMode": "default",
    "checkpointing": { "enabled": true }
  },
  "ui": {
    "theme": "dark"
  },
  "model": {
    "name": "auto"
  },
  "tools": {
    "sandbox": "docker"
  }
}

使用 /settings 指令可打开可视化配置编辑器。

#核心环境变量 (Key Environment Variables)

环境变量名称 详细用途与功能说明
GEMINI_API_KEY Gemini API 认证密钥
GEMINI_MODEL 覆盖默认使用的模型别名/名称
GEMINI_CLI_HOME 覆盖 CLI 配置与缓存的根目录
GOOGLE_CLOUD_PROJECT Vertex AI 的 GCP 项目 ID
GOOGLE_CLOUD_LOCATION Vertex AI 的云服务区域 (Region)
GOOGLE_APPLICATION_CREDENTIALS GCP 服务账号 JSON 密钥文件路径
GOOGLE_API_KEY Google Cloud API 密钥
GEMINI_SANDBOX 沙盒隔离类型:true, docker, podman, runsc
GEMINI_SYSTEM_MD 自定义 System Prompt 文件路径
NO_COLOR 禁用终端彩色输出显示
CLI_TITLE 覆盖终端窗口标题文本

可在 ~/.bashrc, ~/.zshrc.gemini/.env 中持久化配置。

#沙盒隔离选项 (Sandboxing Options)

沙盒模式 支持操作系统平台 开启方法说明
macOS Seatbelt 仅限 macOS GEMINI_SANDBOX=sandbox-exec
Docker/Podman 跨平台通用 --sandboxGEMINI_SANDBOX=docker
gVisor (runsc) 仅限 Linux GEMINI_SANDBOX=runsc
LXC/LXD Linux 实验性功能 GEMINI_SANDBOX=lxc
Windows Sandbox 仅限 Windows GEMINI_SANDBOX=true

#挂钩机制

#挂钩事件类型

事件名称 触发时机 是否可中断/拦截?
SessionStart 会话初始化启动时 否(建议通知)
SessionEnd 会话结束关闭时 否(尽力而为)
BeforeAgent Agent 规划循环开始前 是(Exit Code 2 中断)
AfterAgent Agent 循环结束时 是(强制执行 retry 重试)
BeforeModel 发起大模型 LLM 请求前 是(Exit Code 2 中断)
AfterModel 接收大模型响应块后 是(Exit Code 2 中断)
BeforeToolSelection 工具选择判断阶段 可过滤过滤工具白名单
BeforeTool 工具真正执行之前 是(Exit Code 2 中断)
AfterTool 工具执行完毕返回后 是(可隐藏/修改工具返回)
PreCompress 上下文压缩清理前 否(建议通知)
Notification 系统发送通知消息时

状态退出码含义: 0 = 成功放行 · 2 = 拦截中断/严重错误 · 其他 = 警告提示

settings.json 中配置 Hook 示例:

{
  "hooks": {
    "BeforeTool": [
      {
        "type": "command",
        "command": "~/.gemini/hooks/validate-tool.sh",
        "matcher": "write_file",
        "timeout": 10000
      }
    ],
    "SessionStart": [
      {
        "type": "command",
        "command": "echo '{\"systemMessage\": \"Be concise.\"}'"
      }
    ]
  }
}

#Hook 输入输出协议 (I/O Protocol)

所有 Hook 脚本均通过 stdin 接收 JSON 数据输入:

{
  "session_id": "...",
  "transcript_path": "/path/to/transcript",
  "cwd": "/project/dir",
  "hook_event_name": "BeforeTool",
  "timestamp": "2026-01-01T00:00:00Z"
}

stdout 输出 JSON 结果响应:

字段名称 详细作用与含义说明
decision "allow" 放行 或 "deny" 拒绝拦截
reason 拒绝拦截时向用户展示的提示原因
systemMessage 注入至 Agent 对话上下文的信息
suppressOutput 设为 true 可隐藏 Hook 脚本自身的终端输出
continue 设为 false 可终止 Agent 运行

BeforeTool 专属:可通过 hookSpecificOutput.tool_input 覆盖工具传入参数。

AfterTool 专属:可通过 hookSpecificOutput.additionalContext 向工具输出追加上下文。

BeforeAgent 专属:可通过 hookSpecificOutput.additionalContext 向用户提示词追加上下文。

脚本可用环境变量: GEMINI_PROJECT_DIR, GEMINI_SESSION_ID, GEMINI_CWD

#🔗 参考资源