Gemini CLI 是 Google 开发的一款开源人工智能智能体,可通过命令行界面调用 Gemini 系列模型。它将对话式提示与多种工具相结合,支持读取和修改文件、执行 Shell 命令、抓取网页内容以及搜索信息。与纯文本聊天机器人不同,它可以在执行策略和权限控制下,在工作环境中执行实际操作。Google 于 2025 年 6 月 25 日推出了该工具。(github.com)
起源与应用范围
Gemini CLI 最初是作为一款面向开发者的终端优先工具发布的,其应用场景不仅限于编程,还扩展到了内容生成、调研和任务管理。最初发布时,它支持调用 Gemini 2.5 Pro,并与 Google 的代码辅助工具 Gemini Code Assist 实现了集成。Gemini CLI 与 Code Assist 共享了在终端和编辑器环境中实现提示驱动开发的核心技术。这些初版发布细节仅代表最初提供的功能,并不构成对可用模型或服务配额的永久规格说明。(blog.google)
该客户端软件基于 Apache 许可证 2.0 分发。该许可证仅适用于客户端软件本身,而访问 Google 模型服务的权限则由相应的服务条款和隐私声明另行规范。因此,开源客户端并不意味着其连接的模型服务也是不受限制的或完全本地运行的系统。(geminicli.com)
架构与运行机制
该项目主要采用 TypeScript 编写,并使用 Node.js 作为运行时环境。其代码仓库将面向用户的终端界面与负责模型服务编排、提示构建和工具执行的核心包进行了拆分。终端界面基于 React 与 Ink 构建,Ink 是一个用于渲染交互式终端应用程序的框架。(github.com)
其运行模式将模型生成的请求与可执行工具衔接起来:
- 用户提供任务要求和相关上下文。
- 当需要补充信息或执行操作时,模型会发出工具调用请求。
- Gemini CLI 根据自身执行策略评估该请求。
- 获得授权的工具开始运行并返回结果。
- 模型利用该结果继续推进任务或生成最终回答。
生成命令与执行命令之间存在重要区别:命令的执行是由客户端的工具和安全机制协调管控的,而非大语言模型固有的内置能力。(google-gemini.github.io)
工具与项目上下文
内置功能包括文件操作、Shell 执行、网页抓取以及基于 Google 搜索的信息定位(grounding)。在软件工程中,这些功能支持探索陌生的代码库、生成或修改代码、运行测试以及排查构建错误等任务。搜索和网页工具使智能体能够获取项目文件之外的信息。(github.com)
用户可以通过名为 GEMINI.md 的文件提供持久化指令。这些文件可包含项目规范、架构说明或代码风格要求。Gemini CLI 会按层级加载指令上下文(包括用户级和工作区级文件),并将汇总的内容打包进发送给模型的提示中。该机制在运行期间提供上下文背景,并不属于模型训练或微调。(geminicli.com)
Gemini CLI 还支持用于连接外部工具与服务的模型上下文协议(MCP)。扩展插件封装了各种集成功能,可扩展智能体的可用能力,包括连接数据库、云环境及其他开发服务。具体功能取决于扩展插件所开放的工具和服务。(github.com)
交互与自动化使用
交互模式提供对话式终端界面。无头模式(Headless mode)则省略了该界面,使客户端可在脚本和自动化工作流中调用。通过使用 -p 或 --prompt 参数提供提示,或在非 TTY 环境中执行,均可触发无头模式。受支持的输出格式包括纯文本、单条 JSON 结果,以及流式换行分隔 JSON 事件(描述消息、工具请求、工具结果和最终产物)。(geminicli.com)
身份验证方式包括使用 Google 账号登录、使用 Gemini API 密钥,以及访问 Vertex AI。账号类型和身份验证方式决定了项目要求、配额、定价以及适用的服务条款。因此,本地终端程序与远程访问的服务在部署架构上是各自独立的部分。(geminicli.com)
权限、隔离与安全
Gemini CLI 的策略引擎能够对工具调用执行允许、拒绝或要求人工审批的操作。在基于确认的操作模式下,系统会在执行前提议中的文件更改或 Shell 命令并等待确认。受信任文件夹设置则提供了对本地环境访问权限的另一项控制手段。具体行为取决于当前生效的配置和策略。(geminicli.com)
沙箱技术限制了各项操作执行时的运行环境。支持的方案包括操作系统层面的机制,以及使用 Docker 或 Podman 的容器化隔离。沙箱环境仍可向内部公开项目工作区和受允许的网络访问:其隔离边界取决于所选用的具体实现、配置文件和挂载项。隔离机制限制了可访问的资源范围,但并不能判断生成的修改是否正确。(geminicli.com)
外部内容引入了另一个层面的安全隐患:提示注入。在这类攻击中,不受信任的输入试图诱导模型偏离更高信任级别的指令。间接攻击可能会在文档或检索到的内容中植入恶意指令。对于具备工具调用能力的智能体而言,相关风险不仅包括非预期的文本输出,还涵盖了未经意图的实际操作;权限策略与执行边界正是针对这一风险的不同环节进行防范。(csrc.nist.gov)
数据处理
数据隐私在一定程度上受所连接服务的制约,而不仅仅由客户端的源代码许可证决定。通过 Gemini Code Assist 登录的 Google 账号、免费或付费的 Gemini API 访问,以及 Vertex AI 访问,各自适用不同的条款和隐私声明。Gemini CLI 还包含使用统计控制项,包括退出收集机制。停用客户端使用统计信息,与更改模型服务的数据处理条款是两项完全独立的事项。(geminicli.com)
参考来源
- Google announces Gemini CLI: your open-source AI agentblog.google
- GitHub - google-gemini/gemini-cli: An open-source AI agent that brings the power of Gemini directly into your terminal.github.com
- gemini-cli/GEMINI.md at main · google-gemini/gemini-cli · GitHubgithub.com
- gemini-cli/docs/reference/tools.md at main · google-gemini/gemini-cli · GitHubgithub.com
- Gemini CLI toolsgoogle-gemini.github.io
- Provide context with GEMINI.md filesgeminicli.com
- Gemini CLI extensions let you customize your command lineblog.google
- Headless mode referencegeminicli.com
- Gemini CLI authentication setupgeminicli.com
- Policy enginegeminicli.com
- Sandboxing in Gemini CLIgeminicli.com
- Gemini CLI: License, Terms of Service, and Privacy Noticesgeminicli.com