0 前言
多数人初见 Gemini CLI,会以为它只是个简单的命令行聊天工具。实际上,它的命令系统分为两层:一层是在系统 Shell 中执行的启动命令,另一层是在其交互式会话中使用的内置指令。理解这个双层结构,是高效使用这个工具的基础。
本文将拆解这两层指令,理清其设计思路和使用场景。
1 第一层指令:Shell 命令 (gemini ...
)
这是工具的入口,用于从系统 Shell 启动任务或执行一次性操作。
gemini [flags] [prompt]
这是主命令,用于向模型发送单个请求。其核心价值在于可以通过 Flags 实现脚本化调用。-m
:指定本地文件(图片、视频)进行多模态输入。-s
:流式输出,即时看到响应,体验更好。-o json
:以 JSON 格式输出,方便与其他脚本或程序集成。|
管道:支持将其他命令的输出作为上下文,如cat code.go | gemini "review 这段代码"
。
gemini check
诊断工具。初次配置或遇到连接问题时,首先运行此命令。它会检查 API 连接、认证和项目服务状态,快速定位问题。gemini count-tokens
Token 计数器。大模型 API 按 Token 计费,且有上下文长度限制。在提交长文本或文件前,用此命令估算成本和是否超限,很有必要。gemini version
显示当前版本号。
总结:第一层指令主要负责启动、单次任务和环境诊断。
2 第二层指令:交互式命令 (/
, @
, !
)
当你不带参数直接运行 gemini
进入交互式会话后,这一层指令才开始发挥作用。它们通过特殊前缀调用,用于在会话中进行精细化控制。
2.1 /
斜杠命令:元控制
这类命令负责控制 CLI 工具本身的状态和行为,不直接发送给 AI。
- 会话管理
/chat save|resume|list
: 核心功能。保存和恢复对话,方便切换探索不同分支,或在下次启动时继续工作。/compress
: 压缩上下文。将长对话历史总结成一段摘要来替代,保留核心记忆的同时,大幅节省后续请求的 Token 消耗。/clear
(Ctrl+L
): 清屏。/quit
或/exit
: 退出。
- 上下文管理
/memory add|show|refresh
: 管理从GEMINI.md
文件中加载的“分层指令内存”。这是一种为 AI 提供持久化背景知识和固定指令的机制,比每次重复输入提示更高效。/restore
: 回滚操作。如果 AI 工具修改了本地文件,此命令可将其恢复到执行前的状态,是重要的安全保障。
- 环境与查询
/stats
: 显示当前会话的 Token 使用量、缓存节省等统计数据。/mcp
: 列出已配置的 MCP (Model Context Protocol) 服务器及其工具。这表明 CLI 可通过协议连接外部服务,具备高扩展性。/tools
: 列出当前会话可用的所有工具。
2.2 @
符号命令:文件注入
这是作为开发者工具最实用的功能之一,用于将本地文件或目录内容注入到提示中。
@<path>
: 将指定路径下的文件内容作为上下文。例如:@src/main.go "这段代码有什么问题?"
- 核心特性:
- Git 感知: 默认忽略
.gitignore
中定义的文件和目录,避免将node_modules
等无关内容传给 AI。 - 目录支持: 可直接传入目录,工具会自动读取其中的文本文件。
- Git 感知: 默认忽略
2.3 !
感叹号命令:Shell 直通
提供在 CLI 内部直接执行系统 Shell 命令的能力。
!<command>
: 单次执行。如!git status
,执行后返回 Gemini 对话。!
: 模式切换。单独输入!
可在 Gemini 模式和纯 Shell 模式间切换,方便连续执行多条系统命令。
3 总结与思路
Gemini CLI 的命令系统是双层的:
- 外层 (Shell):负责启动、脚本化和一次性任务。
- 内层 (交互式):负责会话中的深度交互,核心是上下文管理、文件注入和环境控制。
这种设计使其远不止一个简单的聊天工具,而是一个为开发者工作流设计的生产力平台。掌握这两层指令,特别是交互式命令,才能发挥其全部效能。
发表回复