精选 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"
| 认证方式 | 操作步骤与说明 |
|---|---|
| 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_PROJECT 和 GOOGLE_CLOUD_LOCATION。
| 安装方式 | 命令行指令 |
|---|---|
| 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+
| 别名 | 对应模型全称 | 适用场景 |
|---|---|---|
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 flash 或 GEMINI_MODEL 环境变量指定模型。
| 概念术语 | 详细含义与功能说明 |
|---|---|
GEMINI.md |
项目上下文配置文件,启动时自动加载 |
| Skills 技能 | 按需加载的专业知识技能包,通过 activate_skill 触发 |
| Extensions | 扩展包,打包集合了 Prompts、MCP 服务与工具 |
| MCP 服务 | 基于 Model Context Protocol 协议接入的外部工具 |
| 规划模式 | 写代码前进行分析规划的只读安全模式 (Plan Mode) |
| Hooks 钩子 | 在 Agent 生命周期的关键节点自动调用的脚本 |
| Headless | 通过 -p 标志运行的非交互单次模式 |
| Sessions | 保存的会话历史记录,支持恢复与接续 |
| 参数选项 | 缩写 | 详细含义与功能说明 |
|---|---|---|
--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 |
显示帮助信息 |
# 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
| 输出格式 | 结构与详细说明 |
|---|---|
text |
纯文本格式(默认) |
json |
包含 response 响应与 stats 统计单条 JSON 对象 |
stream-json |
JSONL 流式格式:init · message · tool_use · tool_result · error · result |
退出状态码 (Exit codes): 0 成功 · 1 错误 · 42 非法输入 · 53 超过对话轮数限制
| 命令指令 | 含义说明 |
|---|---|
/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。
| 快捷键 | 执行操作 |
|---|---|
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) |
| 快捷键 | 执行操作 |
|---|---|
Enter |
发送提交消息 |
Ctrl/Cmd+Enter |
插入换行符 |
Tab |
将消息加入等待队列 |
Ctrl+X |
在外部编辑器中打开编辑当前输入 |
Ctrl+V |
粘贴内容 |
Ctrl+R |
历史命令反向搜索 (Reverse Search) |
Ctrl+P |
切换至上一条历史输入 |
Ctrl+N |
切换至下一条历史输入 |
| 快捷键 | 执行操作 |
|---|---|
Shift+Tab |
循环切换审批模式 (Approval Modes) |
Ctrl+T |
展开/收起待办事项面板 (Todos) |
Alt+M |
切换 Markdown 渲染显示 |
Ctrl+Y |
开启/关闭 YOLO 自动审批模式 |
Ctrl+L |
清空屏幕 |
Ctrl+Z |
挂起当前 CLI 进程 |
F12 |
显示详细错误堆栈面板 |
Esc (连按两次) |
打开历史撤回/回滚对话框 |
Ctrl+C |
取消当前生成 / 退出 |
Ctrl+D |
退出应用 |
# 列出所有历史会话
$ gemini --list-sessions
# 恢复最近一次会话
$ gemini -r latest
# 按会话 ID 恢复指定会话
$ gemini -r <session-id>
# 按索引序号删除会话
$ gemini --delete-session 3
在 /resume 会话浏览器中操作:
↑↓ 键上下浏览历史会话Enter 键加载恢复选中的会话x 键删除选中的历史会话输入 /rewind 或连按两次 Esc 键打开撤回对话框:
| 选项操作 | 作用与影响范围 |
|---|---|
| Rewind + Revert | 清空本轮对话历史,并重置代码文件修改 |
| Rewind only | 仅清空本轮对话历史,保留文件修改 |
| Revert only | 恢复代码文件修改,保留对话历史 |
| Do nothing | 取消撤回 (Esc) |
仅对 AI 自动作出的文件修改生效,不影响手动编辑与 ! shell 命令操作。
保存并恢复命名检查点,以便探索多种实现方案:
# 1. 保存当前状态检查点
/resume save my-decision-point
# 2. 尝试方案 A...
# 3. 回滚恢复至保存的检查点
/resume resume my-decision-point
# 4. 尝试方案 B...
上下文配置文件按以下顺序依次合并加载(后盖前):
| 优先级 | 文件路径位置 |
|---|---|
| 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 show
# 强制执行重新加载所有上下文文件
/memory reload
# 将规范规则追加至全局 GEMINI.md
/memory add "Always use TypeScript strict mode"
# 为当前项目生成初始 GEMINI.md
/init
在项目根目录创建 .geminiignore 文件(语法与 .gitignore 一致):
# 忽略整个目录
/packages/
# 忽略特定敏感文件
apikeys.txt
*.log
# 忽略所有 markdown,但保留 README
*.md
!README.md
被忽略的文件对 CLI 工具不可见,但不影响 Git 与其他系统工具。
{
"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}
# 添加 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
| 属性名称 | 详细含义与功能说明 |
|---|---|
command |
Stdio 传输模式下的可执行文件命令 |
args |
命令参数数组 |
url |
SSE 传输模式下的 URL 地址 |
httpUrl |
Streamable HTTP 模式下的 URL 地址 |
env |
环境变量映射对象 |
cwd |
命令运行的基准工作目录 |
timeout |
连接超时毫秒数 (默认 600000 ms) |
trust |
信任该服务器的所有工具,跳过二次确认 |
includeTools |
允许使用的工具白名单列表 |
excludeTools |
禁止使用的工具黑名单列表 |
在 Prompt 中直接引用 MCP 资源与预设指令:
# 引用 MCP 资源对象
@server://resource/path summarize this
# 执行 MCP 提供的斜杠指令
/prompt-name --arg=value
# 从 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。
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
将可复用的 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} |
嵌入读取指定文件的内容 |
# 启动时通过 Flag 开启
$ gemini --approval-mode=plan
# 自然语言触发短语
> let's plan the refactor first
# 斜杠指令触发
/plan redesign the auth module
# 会话中通过 Shift+Tab 快捷键循环切换
在 settings.json 中设为默认模式:
{
"general": {
"defaultApprovalMode": "plan"
}
}
只读工具(无风险,全量开放):
read_file, list_directory, globgrep_search, google_web_searchweb_fetch (需要二次确认)codebase_investigator, cli_helpask_user写入限制工具(严格受限):
write_file, replace — 仅允许修改 plans 目录下的 .md 文档上下文与记忆工具:
save_memory, activate_skill1. 设定分析目标
└─ 使用自然语言或 /plan <goal>
2. 讨论方案策略
└─ Gemini 提出澄清问题与技术选型
3. 审查生成的 Plan 文档
└─ 方案文档自动保存至 plans 目录
└─ 按 Ctrl+X 在外部编辑器中修改
4. 审查通过或继续迭代方案
5. 切换模式至 YOLO / auto_edit 开始编码实现
模型自动路由:分析规划阶段使用 Pro 大模型 → 编码实现阶段切换为 Flash 模型。
| 生效范围 | 文件存放路径 |
|---|---|
| 用户级 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 指令可打开可视化配置编辑器。
| 环境变量名称 | 详细用途与功能说明 |
|---|---|
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 中持久化配置。
| 沙盒模式 | 支持操作系统平台 | 开启方法说明 |
|---|---|---|
| macOS Seatbelt | 仅限 macOS | GEMINI_SANDBOX=sandbox-exec |
| Docker/Podman | 跨平台通用 | --sandbox 或 GEMINI_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 脚本均通过 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