谷歌开源的Gemini CLI 工具,免费下载和使用的。这个版本直接提供了 Google 强大的 Gemini -2.5-Pro 模型,让所有开发者都能无门槛地使用顶级的 AI 能力进行代码分析和生成。
那么,除了常规的对话和超长上下文处理能力,GeminiCLI作为新一代 AI 编程助手,还有哪些独特优势呢?
今天,我们就通过两个案例,让您榨干 Gemini-2.5-Pro 的使用。
传统 AI助手只能处理零散代码片段,然而 CLI能够将整个本地项目文件夹作为上下文进行理解和分析。
GeminiCLI 对代码库的深度理解与交互 (Deep Understanding and Interaction with Local Codebases)是 其最基础也是最核心的价值。
这个案例,我们分析的,目标是 GitHub Trending 上日榜第二的开源项目,Agent S2.
Agent S2 是一个开源的 GUI 智能体框架,能像人一样通过视觉与键盘鼠标操作电脑。
最新 Agent-S2 在 OSWorld、WindowsAgentArena 等基准上刷新 SOTA,显著超越 OpenAI CUA 和 Claude 3.7。
只需几行命令即可本地运行,支持用任意大模型做视觉-动作决策,并内置知识库持续学习。
项目地址如下:https://github.com/simular-ai/Agent-S
如果我们要快速理解这个陌生的 GitHub 代码库的整体架构、主要模块、数据流。
该怎么做?很简单:
启动 CLI 后,在对话框内输入提示词:
提示词如下:
我想快速理解这个 GitHub 代码库的整体架构、主要数据模块和数据流。请一步一步指导我如何完成。
GitHub 代码库地址如下:https://github.com/simular-ai/Agent-S
1-制定计划
接下来,CLI 快速的定制了整个快速分析的计划:
每一步骤都非常清楚明确任务内容和目标。
仔细看这个计划,是我们正常研究一个新的 Git 项目都会做的步骤。先看 ReadMe,接下来,再进行整体代码结构的分析,再深入核心模块,最后是总结。
2-自动读取 README.md
接下来,CLI 直接调用 web_fetch 工具来获取代码库的 README.md 和基本文件结构。 这个工具可以让 CLI 自动读取 URL 地址上的内容。
这个是 CLI 的研究成果。
-
核心目标:Agent-S 是一个开源框架,旨在构建能像人一样通过图形用户界面(GUI)自主操作计算机的智能代理(Agent)。
-
工作原理:它接收用户指令和当前屏幕截图,然后生成并执行 Python 代码(使用 pyautogui
库)来控制鼠标和键盘,完成任务。
-
关键组件:
-
Agent S2:这是核心的代理逻辑,它是一个“通用-专用”组合框架,暗示了其模块化设计。
-
Grounding Model (定位模型):代理使用一个视觉模型(如 UI-TARS、Claude 或
GPT-4V)来分析截图,并将“点击按钮”这样的抽象动作“定位”到屏幕上的具体坐标 (x,
y)。这是连接代理意图和实际操作的关键。
-
Web 检索:可以集成 Perplexica 工具,赋予代理联网搜索信息的能力。
-
知识库:代理会使用一个可下载的知识库,并在运行中不断更新,这表明它具备学习和记忆能力。
-
技术栈:
-
主要语言是 Python。
-
核心库是 gui-agents。
-
依赖 pyautogui 进行计算机控制。
-
需要接入多种大语言模型(LLM)的 API,如 OpenAI, Anthropic, Gemini 等。
3-分析代码结构与关键技术
对项目有了宏观认识后,接下来需要深入其内部结构。CLI将获取项目的文件和目录列表,以识别出核心模块(如 gui_agents 目录)、配置文件和依赖项文件(如 pyproject.toml),从而确认其主要技术和库。
很有意思的是,CLI 在执行每一次操作之前,都会询问用户。这个能很大程度避免给予 AI 过大的权限范围,导致误操作,引发不可挽回的错误。
ok,很快结构和关键技术分析完成了。
-
依赖管理:项目使用 setup.py 和 requirements.txt 来管理。这是一个经典的 Python 项目结构。
-
核心代码位置:所有核心逻辑都封装在 gui_agents 包里。
-
推断出的结构:根据 README.md 的 import 语句,我们可以推断出 gui_agents 内部的关键模块:
-
gui_agents/s2/agents/agent_s.py: 这很可能是 AgentS2 类的定义文件,包含了代理的核心决策逻辑。
- gui_agents/s2/agents/grounding.py: 包含了 OSWorldACI 类,负责处理视觉定位(Visual
Grounding),即将抽象动作转换为屏幕坐标。
- gui_agents/s2/cli_app.py: 这是命令行应用的入口点,展示了如何将所有组件串联起来运行。
4-深入核心模块,理解数据流
接下来,CLI深入这三个关键文件,以完全理解其架构和数据流。
CLI 自主规划了任务,依次阅读 agent_s.py、grounding.py 和 cli_app.py 的内容。
提前自主预设好了以下需要回答的问题:
-
数据输入是什么?(例如:用户指令、截图)
-
AgentS2如何处理输入?(它的思考过程或 Prompt 是怎样的?) -
AgentS2如何与grounding模块交互?(它们之间传递什么数据?) -
grounding模块如何将指令转换为代码? -
最终输出是什么?(pyautogui 代码)
同样的,CLI 在调用工具获取这三个文件的内容之前,还是征求了我的同意。
这里有一个小细节,因为各种原因,这个网址拒绝了 CLI 的访问。GitHub 的 API 限制了我直接抓取特定文件的能力。
当然,CLI 也不是双手一摊,直接摆烂,而是想到了一个比较讨巧的替代方案:
用 README.md 中提供的 SDK 用法示例来反向推断数据流。
同样的,一个反向推断获取的数据流拿到了。
如果对这个信息不够有把握,还是坚持想看源码梳理,也没关系。再次提出要求:
你重新读一次,我给你地址 https://github.com/simular-ai/Agent-S/
CLI 并不是选择再次尝试碰壁,而是又走了另外一条路:通过访问每个文件的“原始”链接来获取其源代码。
而且,它选用的三个文件,是在上一个步骤确定的三个关键文件:
gui_agents/s2/agents/agent_s.py (核心代理逻辑) 2. 2. gui_agents/s2/agents/grounding.py (视觉定位模块)
gui_agents/s2/cli_app.py (命令行应用和主循环)
这次成功获取了所有三个文件的源代码。经过源码详细阅读,很明显,CLI对这个系统的理解更加深入和精确了。
这是CLI基于源代码的最终分析:
1. 整体架构:Manager-Worker 模式
AgentS2 的核心是一个分层的 Manager-Worker(经理-工人) 架构,这比我之前推断的“通用-专用”模式更为具体和复杂。
2. 顶层 - 协调层 (AgentS2):
-
这是整个系统的入口和主控制器。它接收来自用户的原始指令和来自电脑屏幕的截图。
-
它的核心职责是驱动整个流程,调用 Manager 进行规划,然后将计划中的任务逐一派发给 Worker。
- 中层 - 规划与执行层 (
Manager&Worker):
-
Manager(项目经理): 负责思考“做什么”。它将用户模糊的、高级的指令分解成一个清晰、有序的子任务列表。这个过程会借助一个大型语言模型(LLM)和从知识库(KB)中学习到的经验。 -
Worker(工人): 负责思考“如何做”。它接收一个具体的子任务,并生成完成这个任务的抽象步骤(例如,不是直接生成pyautogui.click(100, 200),而是生成 agent.click("文件菜单"))。
- 底层 - 接地层 (
OSWorldACI):
-
OSWorldACI(手眼系统): 这是连接数字世界和物理操作(模拟)的关键。它负责将 Worker生成的抽象动作“接地”(Grounding)。 -
它接收如“点击'X'按钮”的指令,并调用一个多模态视觉模型(VLM)来分析截图,找到“X”按钮在屏幕上的精确坐标。
-
最后,它将坐标填充到 pyautogui 函数模板中,生成最终可以在操作系统上执行的代码。
3. 主要数据模块与数据流
现在我们可以构建一个更精确的数据流图:
🎁
CLI基于源代码的分析,让我们对 Agent-S的内部机制有了更精确的理解。
这不仅仅是一个简单的“感知-行动”循环,而是一个复杂、分层、具备 规划、执行、反思和学习能力的系统。
通过这个简单的案例,CLI 可以协助开发者瞬间获得一个陌生代码库的架构分析、模块职责、数据流和依赖关系的全面报告。这极大地缩短了学习曲线,无论是接手新项目还是参与开源贡献,都能迅速进入状态。
那么,CLI 可以指导或者辅助部署么?
当然可以!
只需要输入提示词:
我想部署和使用这个项目,请你一步一步指导我完成。
CLI 接收到指令后,先给了一个直接控制我的鼠标和键盘,生成并执行代码的警告。
我不怕,你搞吧。
1-自动检查 python 版本
2-自动检查 并安装操作系统依赖
3-自动创建并激活 python 虚拟环境
4-自动安装 Agent-S 核心 python 包
这一步耗时比较长,大概用了半个小时。
5-配置模型和密钥
这个环节很有意思。系统默认的配置是 Claude-Sonnet-3.7,众所周知,这个玩意儿基本搞不到 apikey。
现在,我需要您提供您的 Anthropic API 密钥,以便我将其配置为环境变量。
这将允许 Agent-S 连接到 Claude 3.7 Sonnet模型。
请直接在此处粘贴您的 API 密钥。
安全提示: 我会立即使用这个密钥,并且不会在对话历史中保留它。这个密钥只用于本次执行
于是,我提出了更换为 DeepSeek 的要求。
CLI 分析了 API 兼容可行性和大模型的用途后,给了我一个综合的解决方案。
先说结论哈,不完全行。因为 AgentS 里的大模型有两大用途:
一个是思考(Manager/Worker),这部分可以使用 DeepSeek 的 chat 模式来完成。
第二个是视觉定位(grounding),这个部分需要图像理解能力。很明显,DeepSeek 搞不定。
怎么办?CLI给了一个综合解决方案。思考引擎用 DeepSeek,视觉模型用 Claude 或者 GPT-4V。
同时,很贴心的给了我配置方法,当然,它还是可以继续为我代劳。我只需要给它 API-Key 就好了。
理论上我应该让他搞。但是,Claude 密钥我没有啊,换成其他的吧。比如豆包。
1 # 激活虚拟环境
2 source agent-s-env/bin/activate
3
4 # 运行 Agent-S
5 agent\_s2 \
6 --provider "openai" \
7 --model "deepseek-chat" \
8 --model\_url "https://api.deepseek.com/v1" \
9 --model\_api\_key "$DEEPSEEK\_API\_KEY" \
10 --grounding\_model\_provider "anthropic" \
11 --grounding\_model "claude-3-7-sonnet-20240718"
跟AI 沟通最大的好处就是,不用不好意思。于是,我又问:
可以把视觉模型更换成豆包的么?
当然可以。将视觉模型更换为火山引擎(VolcEngine)的豆包(Doubao)多模态模型是完全可行的,因为豆包同样提供了 OpenAI 兼容的 API 接口。因为不太放心,我最后还是选择请CLI 指导我手动完成 API 配置。
过程比较漫长,我就不演示了。
通过今天的两个案例,相信能够让大家体会到Gemini CLI 不仅仅是一个“聊天机器人”,它还是一个可以被授权直接执行操作的“智能代理”。
-
不“建议”,是“完成”: 传统的 AI 助手可能会告诉你“你应该运行 npm install xxx”,然后你需要手动复制、粘贴并执行。Gemini CLI则会直接请求:“我需要运行 npm install xxx,是否允许?”。用户只需一次确认,即可完成从分析、决策到执行的完整闭环。
-
自动化复杂工作流: 在安装Agent-S 的案例中,Gemini CLI 不仅安装了依赖包,还 会自动提前确认 python 版本和操作系统依赖。
自动修改了多个配置文件。这种跨文件、多步骤的自动化能力,可以将开发者从繁琐的配置工作中解放出来,极大地提升了效率。
这些使得 Gemini CLI 不再仅仅是一个“工具”,而更像一个真正能融入开发工作流、并肩作战的“AI 队友”!
关于 GeminiCLI,还有其他什么想了解的,欢迎评论区留言。
关注我,带您解锁更多 AI 应用实操。
