特工S: 像人一样使用计算机
🥳 更新
- 2025/10/02:发布 Agent S3 及其技术论文,在 OSWorld 上设定了 69.9% 的新 SOTA(接近 72% 的人类性能),在 WindowsAgentArena 和 AndroidWorld 上具有很强的通用性!它也更简单、更快、更灵活。
- 2025/08/01: Agent S2.5 发布(gui-agents v0.2.5):更简单、更好、更快!作系统上的新 SOTA世界验证!
- 2025/07/07: Agent S2 论文被 COLM 2025 录用!蒙特利尔见!
- 2025/04/27: Agent S 论文荣获 ICLR 2025 Agentic AI for Science Workshop 最佳论文奖🏆!
- 2025/04/01:发布了 Agent S2 论文,其中包含在 OSWorld、WindowsAgentArena 和 AndroidWorld 上的新 SOTA 结果!
- 2025/03/12:发布 Agent S2 以及 gui-agents v0.2.0,这是计算机使用代理 (CUA) 的最新技术,性能优于 OpenAI 的 CUA/Operator 和 Anthropic 的 Claude 3.7 Sonnet Computer-Use!
- 2025/01/22: Agent S 论文被 ICLR 2025 录用!
- 2025/01/21: 发布 gui-agents 库 v0.1.2,支持 Linux 和 Windows!
- 2024/12/05: 发布 gui-agents 库 v0.1.0,让您轻松使用 Agent-S for Mac、OSWorld 和 WindowsAgentArena!
- 2024/10/10:发布 Agent S 论文和代码库!
目录
- 💡 介绍
- 🎯 当前结果
- 🛠️ 安装和设置
- 🚀 用法
- 🤝 确认
- 💬 引文
💡 介绍
欢迎使用 Agent S,这是一个开源框架,旨在通过代理-计算机接口实现与计算机的自主交互。我们的使命是构建智能 GUI 代理,可以从过去的经验中学习并在您的计算机上自主执行复杂的任务。
无论您是对人工智能、自动化感兴趣,还是为基于代理的尖端系统做出贡献,我们都很高兴您来到这里!
🎯 当前结果
在 OSWorld 上,仅 Agent S3 在 100 步设置中就达到了 62.6%,已经超过了之前的 61.4%(Claude Sonnet 4.5)。随着 Behavior Best-of-N 的加入,性能甚至攀升至 69.9%,使计算机使用代理的准确率仅达到人类水平的几个点 (72%)。
Agent S3 还表现出很强的零样本泛化。在 WindowsAgentArena 上,通过从 3 个部署中进行选择,准确率从仅使用 Agent S3 的 50.2% 提高到 56.6%。同样,在 AndroidWorld 上,性能从 68.1% 提高到 71.6%
🛠️ 安装和设置
先决条件
- 单显示器:我们的代理专为单显示器屏幕而设计
- 安全性:代理运行 Python 代码来控制您的计算机 – 请谨慎使用
- 支持的平台: Linux、Mac 和 Windows
安装
要在不克隆存储库的情况下安装 Agent S3,请运行
pip install gui-agents
如果要在进行更改时测试 Agent S3,请克隆存储库并使用
pip install -e .
别忘了还 !Pytesseract 需要这个额外的安装才能工作。brew install tesseract
API 配置
选项 1:环境变量
添加到您的 (Linux) 或 (MacOS):.bashrc.zshrc
export OPENAI_API_KEY=<YOUR_API_KEY>
export ANTHROPIC_API_KEY=<YOUR_ANTHROPIC_API_KEY>
export HF_TOKEN=<YOUR_HF_TOKEN>
选项 2:Python 脚本
import os
os.environ["OPENAI_API_KEY"] = "<YOUR_API_KEY>"
支持的型号
我们支持 Azure OpenAI、Anthropic、Gemini、Open Router 和 vLLM 推理。有关详细信息,请参阅 models.md。
接地型号(必填)
为了获得最佳性能,我们建议托管在 Hugging Face 推理端点或其他提供商上 UI-TARS-1.5-7B。有关设置说明,请参阅 Hugging Face Inference Endpoints。
🚀 用法
⚡️ 推荐设置:
为了获得最佳配置,我们建议使用 OpenAI gpt-5-2025-08-07 作为主要型号,搭配 UI-TARS-1.5-7B 进行接地。
CLI
请注意,这是运行 Agent S3,这是我们改进的代理,没有 bBoN。
使用所需参数运行代理 S3:
agent_s \
--provider openai \
--model gpt-5-2025-08-07 \
--ground_provider huggingface \
--ground_url http://localhost:8080 \
--ground_model ui-tars-1.5-7b \
--grounding_width 1920 \
--grounding_height 1080
本地编码环境(可选)
对于需要执行代码的任务(例如,数据处理、文件作、系统自动化),您可以启用本地编码环境:
agent_s \
--provider openai \
--model gpt-5-2025-08-07 \
--ground_provider huggingface \
--ground_url http://localhost:8080 \
--ground_model ui-tars-1.5-7b \
--grounding_width 1920 \
--grounding_height 1080 \
--enable_local_env
⚠️ 警告:本地编码环境会在您的计算机上本地执行任意 Python 和 Bash 代码。仅在受信任的环境和受信任的输入中使用此功能。
必需参数
--provider:主要生成模型提供者(例如 openai、anthropic 等)- 默认值:“openai”--model:主代型号名称(例如,gpt-5-2025-08-07)- 默认值:“gpt-5-2025-08-07”--ground_provider:接地模型的提供程序 – 必需--ground_url:接地模型的 URL – 必填--ground_model:接地模型的型号名称 – 必填--grounding_width:接地模型输出坐标分辨率的宽度 – 必填--grounding_height:接地模型输出坐标分辨率的高度 – 必填
可选参数
--model_temperature:修复所有模型调用的温度(对于 o3 等模型,必须设置为 1.0,但对于其他模型可以留空)
接地模型尺寸
接地宽度和高度应与接地模型的输出坐标分辨率相匹配:
- UI-TARS-1.5-7B:使用
--grounding_width 1920 --grounding_height 1080 - UI-TARS-72B:使用
--grounding_width 1000 --grounding_height 1000
可选参数
--model_url:主生成模型的自定义 API URL – 默认值:“”--model_api_key:主生成模型的 API 密钥 – 默认值:“”--ground_api_key:用于接地模型终结点的 API 密钥 – 默认值:“”--max_trajectory_length:保持轨迹的最大图像转数 – 默认值:8--enable_reflection:启用反射代理以协助工作代理 – 默认值:True--enable_local_env:启用本地编码环境执行代码(警告:在本地执行任意代码)- 默认值:False
本地编码环境详细信息
本地编码环境使 Agent S3 能够直接在您的计算机上执行 Python 和 Bash 代码。这对于以下情况特别有用:
- 数据处理:作电子表格、CSV 文件或数据库
- 文件作:批量文件处理、内容提取或文件组织
- 系统自动化:配置更改、系统设置或自动化脚本
- 代码开发:编写、编辑或执行代码文件
- 文本处理:文档作、内容编辑或格式化
启用后,代理可以使用该作为可以通过编程而不是 GUI 交互完成的任务执行代码块。call_code_agent
要求:
- Python:用于运行 Agent S3 的相同 Python 解释器(自动检测)
- Bash:可在 (macOS 和 Linux 上的标准配置)
/bin/bash - 系统权限:代理以与执行它的用户相同的权限运行
安全注意事项:
- 本地环境执行与运行代理的用户具有相同权限的任意代码
- 仅在受信任的环境中启用此功能
- 代理为系统级作生成代码时要小心
- 考虑在沙盒环境中运行不受信任的任务
- Bash 脚本以 30 秒的超时执行,以防止进程挂起
gui_agentsSDK
首先,我们导入必要的模块。是 Agent S3 的主要代理类。是我们的接地代理,它将代理作转换为可执行的 Python 代码。AgentS3OSWorldACI
import pyautogui
import io
from gui_agents.s3.agents.agent_s import AgentS3
from gui_agents.s3.agents.grounding import OSWorldACI
from gui_agents.s3.utils.local_env import LocalEnv # Optional: for local coding environment
# Load in your API keys.
from dotenv import load_dotenv
load_dotenv()
current_platform = "linux" # "darwin", "windows"
接下来,我们定义引擎参数。 用于主体,用于接地。对于 ,我们支持 HuggingFace TGI、vLLM 和 Open Router 等自定义端点。engine_paramsengine_params_for_groundingengine_params_for_grounding
engine_params = {
"engine_type": provider,
"model": model,
"base_url": model_url, # Optional
"api_key": model_api_key, # Optional
"temperature": model_temperature # Optional
}
# Load the grounding engine from a custom endpoint
ground_provider = "<your_ground_provider>"
ground_url = "<your_ground_url>"
ground_model = "<your_ground_model>"
ground_api_key = "<your_ground_api_key>"
# Set grounding dimensions based on your model's output coordinate resolution
# UI-TARS-1.5-7B: grounding_width=1920, grounding_height=1080
# UI-TARS-72B: grounding_width=1000, grounding_height=1000
grounding_width = 1920 # Width of output coordinate resolution
grounding_height = 1080 # Height of output coordinate resolution
engine_params_for_grounding = {
"engine_type": ground_provider,
"model": ground_model,
"base_url": ground_url,
"api_key": ground_api_key, # Optional
"grounding_width": grounding_width,
"grounding_height": grounding_height,
}
然后,我们定义接地剂和代理 S3。
# Optional: Enable local coding environment
enable_local_env = False # Set to True to enable local code execution
local_env = LocalEnv() if enable_local_env else None
grounding_agent = OSWorldACI(
env=local_env, # Pass local_env for code execution capability
platform=current_platform,
engine_params_for_generation=engine_params,
engine_params_for_grounding=engine_params_for_grounding,
width=1920, # Optional: screen width
height=1080 # Optional: screen height
)
agent = AgentS3(
engine_params,
grounding_agent,
platform=current_platform,
max_trajectory_length=8, # Optional: maximum image turns to keep
enable_reflection=True # Optional: enable reflection agent
)
最后,我们来查询代理!
# Get screenshot.
screenshot = pyautogui.screenshot()
buffered = io.BytesIO()
screenshot.save(buffered, format="PNG")
screenshot_bytes = buffered.getvalue()
obs = {
"screenshot": screenshot_bytes,
}
instruction = "Close VS Code"
info, action = agent.predict(instruction=instruction, observation=obs)
exec(action[0])


没有回复内容