大家好, 这里是 CodeAgent, 今天来简单了解下 Gemini Cli
📌 Gemini Cli 是什么
想象一下,你可以对终端说:"帮我找到所有 JavaScript 文件并按大小排序",然后系统自动执行:
find . -name "*.js" -exec ls -lh {} + | sort -k5 -h
Gemini Cli 就是这样一个工具, 终端操作,并且展示步骤的命令行工具.
安装步骤直接根据:
https://github.com/google-gemini/gemini-cli
安装完成后, 询问下 "weather about Beijing, China"
同时可以看到, cli 也支持 mcp
📌 架构设计
原文:
https://github.com/google-gemini/gemini-cli/blob/main/docs/architecture.md
gemini-cli 做了三层设计
- Cli :用户界面和交互
- Core:AI通信和工具调度
- Tools:具体功能执行
为什么这么设计?
- 模块职责分明:Cli 前端 专注交互体验,Core 专注逻辑处理,工具模块 拓展能力。
- 确保安全性:对写操作和执行命令进行确认,避免误操作。
- 易于扩展:新增工具只需在 Core 注册即可,无需改动前端或模型调用逻辑。
📌 工具链
工具(Tools)API 是Gemini Cli 中一种插件机制,模型通过 FunctionCall 请求工具执行具体任务,Core 接收并触发对应 handler,然后将结果再反馈回模型,实现推理 + 工具执行。
Tools 执行流程如下:
User Prompt
↓
1. Model Request
- 模型根据用户 prompt 和 tool schemas,决定使用某个工具
- 返回一个 FunctionCall,包含 tool 名和参数
↓
2. Core Receives Request
- 核心接收并解析这个 FunctionCall
↓
3. Tool Retrieval
- 在 ToolRegistry 中查找目标工具
↓
4. Parameter Validation
- 调用工具的 validateToolParams() 方法进行参数校验
↓
5. Confirmation (if needed)
- 调用 shouldConfirmExecute() 判断是否需要用户确认
- 如果需要确认:
- Core 把确认详情发回 CLI → CLI 提示用户确认
- 用户选择(如继续、取消)反馈回 Core
↓
6. Execution
- 若参数合法且已确认(或无需确认)
- 调用工具的 execute() 方法,附带 AbortSignal(支持取消)
↓
7. Result Processing
- Core 接收到工具执行返回的 ToolResult
↓
8. Response to Model
- 将 ToolResult 中的 llmContent 打包为 FunctionResponse
- 返回给模型用于后续生成
↓
9. Display to User
- 将 ToolResult 中的 returnDisplay 返回给 CLI
- 呈现给用户查看工具执行的实际效果
同时在 packages/core/src/tools 下也提供了内置的几类 tools
- File System Tools
- Execution Tools
- Web Tools
- Memory Tools
这些工具都继承自 BaseTool,并实现了其特定功能所需的方法。
更多Tools 的可以直达
https://github.com/google-gemini/gemini-cli/blob/HEAD/docs/core/tools-api.md
📌 文档
Gemini Cli 的文档都在仓库下,以及 G 家的博客还有codelabs:
https://github.com/google-gemini/gemini-cli/tree/main/docs
https://blog.google/technology/developers/introducing-gemini-cli-open-source-ai-agent/
https://codelabs.developers.google.com/codelabs/codelabs
💬 好了,今天就到这里,周末愉快.
欢迎关注我的公众号 CodeAgent