能自己操作电脑的图形操作开源 Agent-S|Gemini CLI应用之解析 GitHub 项目全过程

谷歌开源的Gemini CLI 工具,免费下载和使用的。这个版本直接提供了 Google 强大的 Gemini -2.5-Pro 模型,让所有开发者都能无门槛地使用顶级的 AI 能力进行代码分析和生成。

picture.image

那么,除了常规的对话和超长上下文处理能力,GeminiCLI作为新一代 AI 编程助手,还有哪些独特优势呢?

今天,我们就通过两个案例,让您榨干 Gemini-2.5-Pro 的使用。

实战案例 1:分析 GitHub 项目架构

传统 AI助手只能处理零散代码片段,然而 CLI能够将整个本地项目文件夹作为上下文进行理解和分析。

GeminiCLI 对代码库的深度理解与交互 (Deep Understanding and Interaction with Local Codebases)是 其最基础也是最核心的价值。

这个案例,我们分析的,目标是 GitHub Trending 上日榜第二的开源项目,Agent S2.

picture.image

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 快速的定制了整个快速分析的计划:

picture.image

每一步骤都非常清楚明确任务内容和目标。

picture.image

仔细看这个计划,是我们正常研究一个新的 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 等。

picture.image

3-分析代码结构与关键技术

对项目有了宏观认识后,接下来需要深入其内部结构。CLI将获取项目的文件和目录列表,以识别出核心模块(如 gui_agents 目录)、配置文件和依赖项文件(如 pyproject.toml),从而确认其主要技术和库。

很有意思的是,CLI 在执行每一次操作之前,都会询问用户。这个能很大程度避免给予 AI 过大的权限范围,导致误操作,引发不可挽回的错误。

picture.image

ok,很快结构和关键技术分析完成了。

  • 依赖管理:项目使用 setup.py 和 requirements.txt 来管理。这是一个经典的 Python 项目结构。

  • 核心代码位置:所有核心逻辑都封装在 gui_agents 包里。

  • 推断出的结构:根据 README.md 的 import 语句,我们可以推断出 gui_agents 内部的关键模块:

  • gui_agents/s2/agents/agent_s.py: 这很可能是 AgentS2 类的定义文件,包含了代理的核心决策逻辑。

picture.image

  • gui_agents/s2/agents/grounding.py: 包含了 OSWorldACI 类,负责处理视觉定位(Visual

Grounding),即将抽象动作转换为屏幕坐标。

picture.image

  • gui_agents/s2/cli_app.py: 这是命令行应用的入口点,展示了如何将所有组件串联起来运行。

picture.image

4-深入核心模块,理解数据流

接下来,CLI深入这三个关键文件,以完全理解其架构和数据流。

CLI 自主规划了任务,依次阅读 agent_s.py、grounding.py 和 cli_app.py 的内容。

提前自主预设好了以下需要回答的问题:

  1. 数据输入是什么?(例如:用户指令、截图)

  2. AgentS2 如何处理输入?(它的思考过程或 Prompt 是怎样的?)

  3. AgentS2 如何与 grounding 模块交互?(它们之间传递什么数据?)

  4. grounding 模块如何将指令转换为代码?

  5. 最终输出是什么?(pyautogui 代码)

同样的,CLI 在调用工具获取这三个文件的内容之前,还是征求了我的同意。

picture.image

这里有一个小细节,因为各种原因,这个网址拒绝了 CLI 的访问。GitHub 的 API 限制了我直接抓取特定文件的能力。

当然,CLI 也不是双手一摊,直接摆烂,而是想到了一个比较讨巧的替代方案:

用 README.md 中提供的 SDK 用法示例来反向推断数据流。

同样的,一个反向推断获取的数据流拿到了。

picture.image

如果对这个信息不够有把握,还是坚持想看源码梳理,也没关系。再次提出要求:

  
你重新读一次,我给你地址 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 (命令行应用和主循环)

picture.image

这次成功获取了所有三个文件的源代码。经过源码详细阅读,很明显,CLI对这个系统的理解更加深入和精确了。

这是CLI基于源代码的最终分析:

1. 整体架构:Manager-Worker 模式

AgentS2 的核心是一个分层的 Manager-Worker(经理-工人) 架构,这比我之前推断的“通用-专用”模式更为具体和复杂。

picture.image

2. 顶层 - 协调层 (AgentS2):

  • 这是整个系统的入口和主控制器。它接收来自用户的原始指令和来自电脑屏幕的截图。

  • 它的核心职责是驱动整个流程,调用 Manager 进行规划,然后将计划中的任务逐一派发给 Worker。

  1. 中层 - 规划与执行层 (Manager & Worker):
  • Manager (项目经理): 负责思考“做什么”。它将用户模糊的、高级的指令分解成一个清晰、有序的子任务列表。这个过程会借助一个大型语言模型(LLM)和从知识库(KB)中学习到的经验。

  • Worker (工人): 负责思考“如何做”。它接收一个具体的子任务,并生成完成这个任务的抽象步骤(例如,不是直接生成pyautogui.click(100, 200),而是生成 agent.click("文件菜单"))。

  1. 底层 - 接地层 (OSWorldACI):
  • OSWorldACI (手眼系统): 这是连接数字世界和物理操作(模拟)的关键。它负责将 Worker生成的抽象动作“接地”(Grounding)。

  • 它接收如“点击'X'按钮”的指令,并调用一个多模态视觉模型(VLM)来分析截图,找到“X”按钮在屏幕上的精确坐标。

  • 最后,它将坐标填充到 pyautogui 函数模板中,生成最终可以在操作系统上执行的代码。

3. 主要数据模块与数据流

现在我们可以构建一个更精确的数据流图:

picture.image

🎁

CLI基于源代码的分析,让我们对 Agent-S的内部机制有了更精确的理解。

这不仅仅是一个简单的“感知-行动”循环,而是一个复杂、分层、具备 规划、执行、反思和学习能力的系统。

通过这个简单的案例,CLI 可以协助开发者瞬间获得一个陌生代码库的架构分析、模块职责、数据流和依赖关系的全面报告。这极大地缩短了学习曲线,无论是接手新项目还是参与开源贡献,都能迅速进入状态。

那么,CLI 可以指导或者辅助部署么?

当然可以!

实战案例 2:指导下载和部署安装 GitHub 项目

只需要输入提示词:

  
我想部署和使用这个项目,请你一步一步指导我完成。 

picture.image

CLI 接收到指令后,先给了一个直接控制我的鼠标和键盘,生成并执行代码的警告。

我不怕,你搞吧。

1-自动检查 python 版本

picture.image

2-自动检查 并安装操作系统依赖

picture.image

3-自动创建并激活 python 虚拟环境

picture.image

4-自动安装 Agent-S 核心 python 包

picture.image

这一步耗时比较长,大概用了半个小时。

picture.image

5-配置模型和密钥

这个环节很有意思。系统默认的配置是 Claude-Sonnet-3.7,众所周知,这个玩意儿基本搞不到 apikey。

picture.image

现在,我需要您提供您的 Anthropic API 密钥,以便我将其配置为环境变量。

这将允许 Agent-S 连接到 Claude 3.7 Sonnet模型。

请直接在此处粘贴您的 API 密钥。

安全提示: 我会立即使用这个密钥,并且不会在对话历史中保留它。这个密钥只用于本次执行

于是,我提出了更换为 DeepSeek 的要求。

CLI 分析了 API 兼容可行性和大模型的用途后,给了我一个综合的解决方案。

先说结论哈,不完全行。因为 AgentS 里的大模型有两大用途:

一个是思考(Manager/Worker),这部分可以使用 DeepSeek 的 chat 模式来完成。

第二个是视觉定位(grounding),这个部分需要图像理解能力。很明显,DeepSeek 搞不定。

怎么办?CLI给了一个综合解决方案。思考引擎用 DeepSeek,视觉模型用 Claude 或者 GPT-4V。

picture.image

同时,很贴心的给了我配置方法,当然,它还是可以继续为我代劳。我只需要给它 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 配置。

过程比较漫长,我就不演示了。

picture.image

通过今天的两个案例,相信能够让大家体会到Gemini CLI 不仅仅是一个“聊天机器人”,它还是一个可以被授权直接执行操作的“智能代理”。

  • 不“建议”,是“完成”: 传统的 AI 助手可能会告诉你“你应该运行 npm install xxx”,然后你需要手动复制、粘贴并执行。Gemini CLI则会直接请求:“我需要运行 npm install xxx,是否允许?”。用户只需一次确认,即可完成从分析、决策到执行的完整闭环。

  • 自动化复杂工作流: 在安装Agent-S 的案例中,Gemini CLI 不仅安装了依赖包,还 会自动提前确认 python 版本和操作系统依赖。

自动修改了多个配置文件。这种跨文件、多步骤的自动化能力,可以将开发者从繁琐的配置工作中解放出来,极大地提升了效率。

这些使得 Gemini CLI 不再仅仅是一个“工具”,而更像一个真正能融入开发工作流、并肩作战的“AI 队友”!

关于 GeminiCLI,还有其他什么想了解的,欢迎评论区留言。

关注我,带您解锁更多 AI 应用实操。

0
0
0
0
评论
未登录
暂无评论