双重指令: Gemini CLI 的正确打开方式

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。
    • 目录支持: 可直接传入目录,工具会自动读取其中的文本文件。

2.3 ! 感叹号命令:Shell 直通

提供在 CLI 内部直接执行系统 Shell 命令的能力。

  • !<command>: 单次执行。如 !git status,执行后返回 Gemini 对话。
  • !: 模式切换。单独输入 ! 可在 Gemini 模式和纯 Shell 模式间切换,方便连续执行多条系统命令。

3 总结与思路

Gemini CLI 的命令系统是双层的:

  • 外层 (Shell):负责启动、脚本化和一次性任务。
  • 内层 (交互式):负责会话中的深度交互,核心是上下文管理、文件注入和环境控制。

这种设计使其远不止一个简单的聊天工具,而是一个为开发者工作流设计的生产力平台。掌握这两层指令,特别是交互式命令,才能发挥其全部效能。


已发布

分类

来自

标签:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注