Agent-E

GitHub
1.2k 184 简单 1 次阅读 2天前MITAgent
AI 解读 由 AI 自动生成,仅供参考

Agent-E 是一款基于智能体(Agent)的开源自动化系统,旨在让用户通过自然语言指令直接操控浏览器完成复杂任务。它解决了传统网页自动化工具依赖繁琐代码编写、难以应对动态网页变化的痛点,将操作门槛降低至“说话即执行”。

用户只需描述需求,Agent-E 即可自主规划并执行多项操作:包括自动填写表单、在电商平台按特定条件筛选商品、从新闻或学术网站提取关键信息、控制视频播放,乃至在 JIRA 等项目管理平台中过滤和处理任务。无论是查找本地餐厅还是整理历史资料,它都能像私人助理一样灵活响应。

这款工具特别适合希望提升工作效率的普通用户、需要快速验证想法的产品经理,以及致力于研究多智能体协作的开发者与科研人员。其核心技术亮点在于构建了分层规划机制,并基于成熟的 AG2 智能体框架开发,支持多智能体协同编排。项目不仅提供本地部署脚本,还推出了包含高级日志和云端扩展的企业级托管服务。对于想要探索"AI 驱动自动化”前沿应用的人群,Agent-E 提供了一个功能全面且易于上手的实践平台。

使用场景

某电商运营专员每天需跨多个竞品网站收集特定品类(如“降噪耳机”)的销量排名、价格波动及用户评价,以制定当日调价策略。

没有 Agent-E 时

  • 人工逐个打开亚马逊、京东等网站,手动输入搜索词并切换排序条件,耗时且易出错。
  • 遇到动态加载的页面或复杂的筛选器(如“仅看有货”、“四星以上”),需要反复点击尝试,效率极低。
  • 将不同页面的数据复制粘贴到 Excel 时,格式经常混乱,需花费大量时间清洗和对齐数据。
  • 一旦网站界面微调或增加验证码,原有的自动化脚本(如 Selenium)立即失效,维护成本高昂。
  • 无法实时响应突发需求,例如老板突然要求对比“过去一小时”的价格变化,人工根本无法完成。

使用 Agent-E 后

  • 只需输入自然语言指令(如“查找亚马逊和京东上销量前十的降噪耳机,按价格升序排列”),Agent-E 自动规划路径并完成搜索与排序。
  • 智能识别并操作复杂的网页交互元素,自动处理滚动加载、弹窗关闭及多级筛选,无需人工干预。
  • 直接提取结构化数据并整理成表格,自动对齐字段,省去了繁琐的复制粘贴和格式调整环节。
  • 基于视觉理解和多模态能力,适应网页布局的细微变化,即使界面更新也能稳定执行任务,大幅降低维护负担。
  • 支持即时响应临时指令,几分钟内即可输出跨平台的实时对比报告,让决策跟上市场节奏。

Agent-E 将原本需要数小时的人工浏览与数据搬运工作,转化为分钟级的自然语言交互,让运营人员从重复劳动中解放出来专注于策略分析。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明

依赖
notes该工具主要依赖大语言模型 API(如 OpenAI GPT-4-Turbo),也可配置为使用本地开源模型(需安装 Ollama 和 LiteLLM,但官方注明未经过充分测试)。浏览器自动化可通过安装 Playwright 驱动或使用本地 Chrome 浏览器实现。若在 macOS 上遇到 BlockingIOError,需使用 'python -u' 参数运行。
python3.11 (3.10+ 应该也可以)
uv
AG2 (AutoGen)
Playwright
FastAPI
Uvicorn
LiteLLM (可选,用于开源模型)
Ollama (可选,用于本地模型)
Agent-E hero image

快速开始

Agent-E

免费试用:托管式网络代理与编排器
试用我们的网络代理(具备企业级增强功能的Agent-E)以及多代理编排器。您可以访问高级日志记录、基于角色的访问控制和云端托管的可扩展基础设施等功能,并享受专家支持。请在此处注册这里

Discord    引用论文 注:WebVoyager验证使用了nested_chat_for_hierarchial_planning分支和GPT4-Turbo

Agent-E是一个基于智能体的系统,旨在自动化用户计算机上的操作。目前它主要专注于浏览器内的自动化任务。该系统基于AG2智能体框架

这提供了一种通过自然语言与网页浏览器交互的方式:

  • 使用关于您的信息或来自其他网站的信息填写表单(目前仅支持网页表单,暂不支持PDF)
  • 根据各种标准(如畅销商品或价格)在亚马逊等电商网站上搜索和排序产品。
  • 在各类网站上查找特定内容和详细信息,从ESPN上的体育比分到大学官网上的联系方式。
  • 导航并操作基于网页的媒体内容,包括播放YouTube视频以及管理全屏、静音等播放设置。
  • 执行全面的网络搜索,获取涵盖广泛主题的信息,从历史遗迹到当地顶级餐厅。
  • 通过筛选问题来管理和自动化项目管理平台(如JIRA)上的任务,从而简化用户的流程。
  • 提供个人购物协助,根据用户需求推荐产品,例如游戏卡的存储方案。

尽管Agent-E仍在不断发展,但它已经能够处理多种多样的任务,而最出色的任务往往来自于您的创意。因此,请亲自体验一下,并告诉我们您用它完成了哪些事情。更多信息请参阅我们的博客文章

使用脚本快速入门

要开始使用Agent-E,请按照以下步骤安装依赖项并配置您的环境。

1. 运行安装脚本

  • macOS/Linux:

    • 从项目根目录运行以下命令以设置环境并安装所有依赖项:
      ./install.sh
      
      • 如果需要Playwright支持,可以传递-p标志以无需进一步提示即可安装Playwright:
        ./install.sh -p
        
  • Windows:

    • 从项目根目录,在PowerShell中执行以下命令:
      .\win_install.ps1
      
      • 若要无需进一步提示地安装Playwright,可添加-p标志:
        .\win_install.ps1 -p
        

2. 配置环境变量

  • 打开新创建的.env文件和agents_llm_config.json,按照说明设置相关字段。

3. 运行Agent-E

在完成环境设置和所有依赖项的安装后,您可以通过以下命令运行Agent-E:

python -m ae.main

适用于macOS用户

python -u -m ae.main

手动设置

1. 安装uv

Agent-E使用uv来管理Python虚拟环境和包依赖。

  • macOS/Linux:

    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  • Windows:

    powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
    
  • 或者,您也可以使用pip安装uvpip install uv

2. 设置虚拟环境

使用uv为项目创建并激活虚拟环境。

uv venv --python 3.11  # 3.10及以上版本也可
source .venv/bin/activate  # Windows系统下:.venv\Scripts\activate

3. 安装依赖项

pyproject.toml生成requirements.txt文件,并安装依赖项。

uv pip compile pyproject.toml -o requirements.txt
uv pip install -r requirements.txt

若需安装开发所需的额外依赖项,可运行:

uv pip install -r pyproject.toml --extra dev

4.(可选)安装Playwright驱动程序

如果您本地未安装Google Chrome,且不想安装,可以使用Playwright进行浏览器自动化。

playwright install

5. 配置环境

通过复制提供的示例文件创建.env文件。

cp .env-example .env
  • 编辑.env文件并设置以下变量:
    • AUTOGEN_MODEL_NAME(例如,使用gpt-4-turbo以获得最佳性能)。
    • AUTOGEN_MODEL_API_KEY LLM API密钥。
    • 如果使用非OpenAI模型,则需配置AUTOGEN_MODEL_BASE_URL(即托管completion端点的URL,但不要包含/completion)、AUTOGEN_MODEL_API_TYPEAUTOGEN_MODEL_API_VERSION
  • 您还可以选择性地配置AUTOGEN_LLM_TEMPERATUREAUTOGEN_LLM_TOP_P
  • 如果希望使用本地Chrome浏览器而非Playwright浏览器,请在Chrome中打开chrome://version/,找到您的用户资料路径,并将BROWSER_STORAGE_DIR设置为该路径值。

环境变量

Agent-E的配置依赖于多个环境变量。您需要在项目根目录下的.env文件中定义这些变量。我们还提供了一个方便的.env-example示例文件。

关键变量:

  • AUTOGEN_MODEL_NAME
    您想要使用的大型语言模型名称(例如 gpt-4-turbo)。这是大多数设置所必需的。

  • AUTOGEN_MODEL_API_KEY
    访问该大型语言模型的 API 密钥(例如 OpenAI 的 API 密钥)。

  • AUTOGEN_MODEL_BASE_URL (可选)
    如果模型托管在 OpenAI 以外的服务上(例如 Azure OpenAI 服务),则需要提供基础 URL。示例:
    https://api.groq.com/openai/v1

    https://<YOUR_AZURE_ENDPOINT>.openai.azure.com

  • AUTOGEN_MODEL_API_TYPE (可选)
    模型 API 的类型(例如,azure 表示由 Azure 托管的模型)。

  • AUTOGEN_MODEL_API_VERSION (可选)
    要使用的模型 API 版本,通常适用于 Azure 模型(例如 2023-03-15-preview)。

  • AUTOGEN_LLM_TEMPERATURE (可选)
    设置大型语言模型的温度参数,控制输出的随机性。对于 gpt-* 模型,默认值为 0.0

  • AUTOGEN_LLM_TOP_P (可选)
    设置 top-p 值,用于控制标记采样的多样性。对于 gpt-* 模型,默认值为 0.001

  • BROWSER_STORAGE_DIR (可选)
    您本地 Chrome 浏览器配置文件的路径,如果使用本地 Chrome 实例而非 Playwright,则需要此路径。

  • SAVE_CHAT_LOGS_TO_FILE
    设置为 truefalse(默认:true)。指示是否将聊天日志保存到文件中,还是打印到标准输出。

  • LOG_MESSAGES_FORMAT
    设置为 jsontext(默认:text)。指定消息日志的格式。

  • ADDITIONAL_SKILL_DIRS (可选)
    一个以逗号分隔的目录或 .py 文件列表,从中可以加载额外的技能。这用于从指定的目录或文件动态加载技能。 示例:ADDITIONAL_SKILL_DIRS="./private_skills,./extra_skills/my_custom_skill.py" 将被添加到 .env 文件(或等效文件)中。

  • PLANNER_USER_INPUT_SKILL_ENABLED (可选)
    设置为 truefalse(默认:false)。指定规划代理是否允许获取用户输入。

运行代码

在完成环境设置并安装所有依赖项后,您可以使用 ./run.sh 脚本或以下命令运行 Agent-E:

python -m ae.main

对于 macOS 用户

如果您在 macOS 上运行程序时遇到 BlockingIOError(Errno 35),请执行以下命令以避免该问题:

python -u -m ae.main

预期行为

Agent-E 启动后,您应该会在浏览器界面中看到一个图标。单击该图标将打开类似聊天的界面,您可以在其中输入自然语言指令。您可以尝试的示例命令包括:

  • 打开 YouTube 并搜索搞笑猫咪视频
  • 在亚马逊上查找 iPhone 14,并按畅销排序

高级用法

通过 Web 端点启动

Agent-E 提供了一个 FastAPI 包装器,允许您通过 HTTP 发送命令并接收流式结果。此功能对于程序化任务自动化或将 Agent-E 集成到更大的系统中非常有用。

启动 FastAPI 服务器的方法:

  1. 在 Linux/macOS 上,运行以下命令:

    uvicorn ae.server.api_routes:app --reload --loop asyncio
    
  2. 在 Windows 上,运行相同的命令,但不带 --reload(由于不同操作系统对异步实现的支持存在差异,去掉 --reload 可以作为一种临时解决方案,请参阅 StackOverflow 上的解答):

    uvicorn ae.server.api_routes:app --loop asyncio
    
  3. 发送 POST 请求来执行任务。例如,使用 cURL 执行任务:

curl --location 'http://127.0.0.1:8000/execute_task' \
--header 'Content-Type: application/json' \
--data '{
    "command": "前往 ESPN,查看足球新闻,报告最近的足球冠军名单"
}'

可选地,API 请求可以包含一个 llm_config 对象,以便在 API 请求执行过程中应用不同的配置。llm_config 对象应分别为规划代理和浏览器导航代理提供单独的配置。有关示例,请参阅 agents_llm_config-example.json

curl --location 'http://127.0.0.1:8000/execute_task' \
--header 'Content-Type: application/json' \
--data '{
    "command": "前往 ESPN,查看足球新闻,报告最近的足球冠军名单",
    "llm_config":{"planner_agent":{...}, "browser_nav_agent":{...}}
}'

自定义 LLM 参数

Agent-E 支持使用环境变量或基于 JSON 的配置文件进行高级 LLM 配置。这使用户能够自定义底层模型的行为,例如设置温度、top-p 和模型 API 的基础 URL。

要使用 JSON 文件配置 Agent-E,请在您的 .env 文件中添加以下内容:

AGENTS_LLM_CONFIG_FILE=agents_llm_config.json
AGENTS_LLM_CONFIG_FILE_REF_KEY=openai_gpt

项目根目录下提供了一个示例 JSON 配置文件:agents_llm_config-example.json

LLM 参数的默认值

如果您未在 .env 文件或 JSON 配置中设置 temperaturetop_pseed,Agent-E 将使用以下默认值:

  • 对于 gpt-* 模型:
    • "temperature": 0.0
    • "top_p": 0.001
    • "seed": 12345
  • 对于其他模型:
    • "temperature": 0.1
    • "top_p": 0.1

开源模型

Agent-E 通过 LiteLLM 和 Ollama 支持使用开源模型。这使得用户能够在本地机器上运行语言模型,LiteLLM 会将 OpenAI 格式的输入转换为本地模型的端点。

使用开源模型的步骤:

  1. 安装 LiteLLM

    pip install 'litellm[proxy]'
    
  2. 安装 Ollama

    • 对于 Mac 和 Windows,下载 Ollama
    • 对于 Linux:
      curl -fsSL https://ollama.com/install.sh | sh
      
  3. 拉取 Ollama 模型: 在使用模型之前,需从库中下载。可用模型列表请见 这里。例如,拉取 Mistral v0.3 模型:

    ollama pull mistral:v0.3
    
  4. 运行 LiteLLM: 使用已下载的模型启动 LiteLLM 代理:

    litellm --model ollama_chat/mistral:v0.3
    
  5. 在 AutoGen 中配置模型: 修改您的 .env 文件如下。由于模型在本地运行,因此无需提供模型名称或 API 密钥。

    AUTOGEN_MODEL_NAME=NotRequired
    AUTOGEN_MODEL_API_KEY=NotRequired
    AUTOGEN_MODEL_BASE_URL=http://0.0.0.0:400
    

注意事项:

  • 使用 Agent-E 运行本地大型语言模型是可行的,但尚未经过充分测试。请谨慎使用此功能。

故障排除

以下是您在设置或运行 Agent-E 时可能遇到的一些常见问题及解决方法。

1. 虚拟环境中未安装 pip

如果在设置虚拟环境后发现 pip 未安装,请按照以下步骤操作:

  1. 激活虚拟环境:

    source .venv/bin/activate  # 在 Windows 上:.venv\Scripts\activate
    
  2. 安装 pip

python -m ensurepip --upgrade
  1. 退出虚拟环境:
deactivate
  1. 再次激活虚拟环境:
source .venv/bin/activate  # 在 Windows 上:.venv\Scripts\activate
  1. 检查 .venv/bin 目录下是否有 pip,此时应已成功安装。

2. macOS 上的 BlockingIOError

如果您在 macOS 系统上遇到以下错误:

BlockingIOError: [Errno 35] write could not complete without blocking

这通常是由于 AutoGen 尝试向终端输出大量文本所致。解决方法是使用 -u 参数以启用非缓冲输出:

python -u -m ae.main

注意:启用非缓冲输出可能会导致部分输出无法显示在终端中。

3. Playwright 驱动问题

如果您本地未安装 Google Chrome,并且在进行浏览器自动化时遇到问题,请安装 Playwright 驱动:

playwright install

Playwright 将自动下载所需的浏览器二进制文件,从而无需在本地安装 Chrome 即可运行自动化任务。

4. 找不到 Chrome 配置文件

如果您希望使用本地的 Chrome 浏览器而非 Playwright,并且遇到无法找到浏览器配置文件路径的问题,请按照以下步骤操作:

  1. 打开 Chrome 浏览器并访问 chrome://version/
  2. 找到“配置文件路径”。
  3. .env 文件中将 BROWSER_STORAGE_DIR 环境变量设置为该路径:
BROWSER_STORAGE_DIR=/path/to/your/chrome/profile

如您遇到其他问题,请参考项目的 GitHub Issues 或在 Discord 上寻求帮助。

演示视频

视频 命令 描述
奥本海默视频 YouTube 上有一段 Veritasium 制作的奥本海默视频,你能找到并播放它吗?
  • 导航至 www.youtube.com
  • 使用搜索栏查找“奥本海默 Veritasium”
  • 播放正确的视频
示例 2:利用信息填写表单 你能完成这项任务吗?请先让我审核后再提交。 根据邮件中高亮显示的文本作为指令内容。
  • 导航至表单网址
  • 识别表单中的填写项
  • 根据 user preferences.txt 中的记忆信息填写表单
  • 等待用户审核后再提交表单
示例 3:在亚马逊上找到特定商品并加入购物车 在亚马逊上找到 Finish 洗碗机清洁片,按畅销排序后将第一个商品加入我的购物车
  • 导航至 www.amazon.com
  • 使用亚马逊搜索功能查找 Finish 洗碗机清洁片
  • 按畅销排序搜索结果
  • 选择第一个产品进入商品详情页
  • 将商品加入购物车
示例 4:在 Google Flights 上比较航班价格 请在 Google Flights 上比较 2024 年 9 月 15 日从里斯本飞往新加坡的单程商务舱航班选项吗?
  • 设置行程类型为单程。
  • 设置乘客人数为 1 人。
  • 设置出发日期为 9 月 15 日。
  • 设置日期为 2024 年 9 月 15 日。
  • 设置机票类型为商务舱。
  • 执行搜索。
  • 提取航班信息。

架构

Agent-E 系统视图

基于 AG2 代理框架(原 AutoGen)的基础之上,Agent-E 的架构充分利用了技能与代理之间的协同作用。每个技能代表一个原子级的操作,是构建复杂网络自动化工作流的基本单元。当这些技能被执行时,会返回对其执行结果的自然语言描述。这种细粒度的设计使得 Agent-E 能够灵活地组合这些技能来应对复杂的网页自动化任务。

Agent-E AutoGen 配置

上图展示了我们在 AutoGen 基础之上所采用的配置。虽然技能可以有不同的划分方式,但我们目前选择了这种方式。我们倾向于使用与人类对网页浏览器操作相对应的技能,而不是让大模型随意编写代码。我们认为,通过预定义的技能来进行操作更加安全且结果更可预测。当然,它仍有可能点击错误的内容,但至少不会执行未知的恶意代码。

代理

目前有两个代理:用户代理(负责执行技能)和浏览器导航代理。浏览器导航代理包含了所有用于与网页浏览器交互的技能。

技能库

Agent-E 的核心能力在于其技能库,这是一个包含代理可执行的、定义明确的操作的存储库;目前主要是网络操作。这些技能被分为两大类:

  • 感知技能:如 get_dom_with_content_typegeturl 等技能,帮助代理理解当前网页或浏览器的状态。
  • 动作技能:允许代理与网络环境交互并进行操作的技能,例如 clickenter textopen url

每项技能的设计都力求尽可能地接近对话式交互,从而使与 LLM 的交互更加直观且容错性更高。例如,与其简单地返回一个布尔值,技能可能会用自然语言解释其执行过程中发生了什么,以便 LLM 更好地理解上下文,并在必要时调整方向。

以下是我们已实现的技能:

感知技能 动作技能
geturl - 获取并返回当前 URL。 click - 根据提供的 DOM 查询选择器,点击该元素。
get_dom_with_content_type - 根据指定的内容类型,获取当前页面的 HTML DOM。内容类型包括:
- text_only:提取 HTML DOM 的纯文本内容,以文本形式返回。
- input_fields:提取 DOM 中的交互元素(按钮、输入框、文本区域等),并以简洁的 JSON 对象形式返回。
- all_fields:提取 DOM 中的所有字段,并以简洁的 JSON 对象形式返回。
enter_text_and_click - 优化方法,结合了输入文本和点击技能。这种优化适用于诸如在输入框中输入文本并点击搜索按钮的场景。由于 DOM 在此过程中不会发生变化,或者变化对操作影响不大,因此可以基于同一份 DOM 快照同时识别输入框和可点击按钮的选择器。
get_user_input - 为编排器提供一种机制,用于接收用户反馈,以消除歧义或澄清如何完成用户的请求。 bulk_enter_text - 优化方法,封装了 enter_text 方法,以便一次性完成多个文本输入。
enter_text - 根据提供的 DOM 查询选择器,在指定的输入框中输入文本。
openurl - 在当前标签页或新标签页中打开给定的 URL。

DOM 精炼

Agent-E 对待庞大 HTML DOM 的方式是系统而有条理的,坦率地说,这对于提高效率至关重要。我们引入了 DOM 精炼技术,将 DOM 压缩至仅与用户任务相关的元素。

具体来说,就是将庞大的 DOM 转换为更易于理解的 JSON 快照。这不仅仅是减少数据量,更重要的是聚焦于相关性,只向 LLM 提供完成请求所需的信息。目前我们支持三种内容类型:

  • 纯文本:当任务是信息检索,目标就是文本时使用。不带任何干扰信息。
  • 输入字段:专注于需要用户交互的元素。目的是简化操作流程。
  • 全部内容:完整的精炼 DOM,涵盖所有元素,适用于需要全面理解页面的任务。

这一过程就像外科手术一样,仔细剔除冗余信息,同时保留代理运行所需的结构和内容。当然,在精炼过程中可能会丢失一些信息,但我们的目标是通过不断优化来尽量减少甚至消除这种损失。

由于我们无法依赖所有网页开发者遵循最佳实践,比如为每个 HTML 元素添加唯一 ID,因此我们不得不在每个 DOM 元素中注入我们自己的属性 (mmid)。这样就可以引导 LLM 在生成的 DOM 查询中使用 mmid 属性。

为了进一步减少 DOM 中的噪声,我们使用 DOM 可访问性树,而不是普通的 HTML DOM。可访问性树本身就是为了辅助屏幕阅读器而设计的,这比单纯的 HTML DOM 更符合 Web 自动化的目标。

DOM 精炼过程仍在持续改进中。我们希望进一步优化这一流程,压缩 DOM 数据,从而实现更快、更经济、更准确的交互。

测试与基准测试

Agent-E 基于 Web Arena 在测试和评估方面的工作成果。test 目录下包含一个 tasks 子目录,其中存放着定义测试用例的 JSON 文件,这些文件同时也作为示例。

Agent-E 运行在真实的网络环境中,这使得测试结果存在一定的变异性。因此,由于实时网站的变化,并非所有测试都能始终通过。我们的目标是在广泛的任务范围内确保 Agent-E 能够按预期工作,重点放在实际的 Web 自动化上。

运行测试

要运行完整的测试套件,可以使用以下命令:

python -m test.run_tests

macOS 用户

如果您在 macOS 上运行测试时遇到 BlockingIOError 错误,请使用无缓冲输出运行测试:

python -u -m test.run_tests

运行特定测试

如果只想运行部分测试,可以修改最小和最大任务索引。这样将只运行测试配置文件中定义的一部分任务。

示例:

python -m test.run_tests --min_task_index 0 --max_task_index 28 --test_results_id first_28_tests

该命令将运行从索引 0 到 27 的测试,并将结果标记为 first_28_tests

run_tests 的参数

以下是可用于自定义测试执行的其他参数:

  • --min_task_index:开始测试的最小任务索引(默认值为 0)。
  • --max_task_index:结束测试的最大任务索引,不包括该索引。
  • --test_results_id:测试结果的唯一标识符。如果不提供,则会使用时间戳。
  • --test_config_file:测试配置文件的路径。默认值为 test/tasks/test.json
  • --wait_time_non_headless:非无头模式下两次测试之间的等待时间。
  • --take_screenshots:在每次操作后拍摄截图。例如:--take_screenshots true。默认值为 false

示例命令

以下是使用这些参数的示例(macOS 用户需在命令前加 -u 参数):

python -m test.run_tests --min_task_index 0 --max_task_index 28 --test_results_id first_28_tests

贡献

感谢您对参与 Agent-E 项目的兴趣!我们欢迎社区的贡献,并非常感激您为改进该项目所做出的努力。

如何贡献:

  1. Fork 仓库
    首先将 Agent-E 仓库 Fork 到您的 GitHub 账户。

  2. 创建新分支
    为您的功能或 bug 修复创建一个新分支:

    git checkout -b my-feature-branch
    
  3. 进行更改
    在您的新分支中实现更改。请确保遵循项目的编码风格和最佳实践。

  4. 运行测试
    在提交 Pull Request 之前,请确保所有测试都通过,运行以下命令:

    python -m test.run_tests
    
  5. 提交 Pull Request
    当您的更改准备就绪后,将您的分支推送到您的 GitHub Fork,并向主仓库提交 Pull Request。请务必包含清晰的更改描述以及这些更改的必要性说明。

贡献指南:

  • 请参阅 贡献指南,以获取更详细的贡献信息。
  • 请确保编写清晰简洁的提交信息。
  • 提交 Pull Request 时,请务必链接相关问题,并提供详细的更改描述。

行为准则:

请注意,我们有一份 行为准则,所有贡献者均应遵守。我们致力于为所有人提供一个友好且包容的环境。

报告问题:

如果您遇到 bug 或有功能请求,请在 GitHub 问题跟踪器 中提交一个问题。请务必提供详细信息,以便我们能够有效地解决问题。

加入讨论:

我们鼓励您加入我们的 Discord 社区,参与讨论、提问以及了解 Agent-E 的最新动态。

文档生成

Agent-E 使用 Sphinx 生成其文档。要本地贡献或生成文档,请按照以下步骤操作:

前置条件

在生成文档之前,请确保已安装开发依赖项。您可以使用以下命令进行安装:

uv pip install -r pyproject.toml --extra dev

生成文档的步骤

  1. 导航到项目根目录:
cd Agent-E
  1. 如果 docs 目录不存在,请创建它:
mkdir docs
cd docs
  1. 使用 quickstart 命令初始化 Sphinx:
sphinx-quickstart
  1. 编辑 docs/conf.py 文件以配置 Sphinx。添加以下内容,将项目路径添加到 Sphinx 搜索路径,并启用扩展:
import os
import sys
sys.path.insert(0, os.path.abspath('..'))
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.napoleon']
html_theme = 'sphinx_rtd_theme'
  1. 生成 API 文档:
    从项目根目录运行以下命令以生成 API 文档文件:

    sphinx-apidoc -o docs/source .
    
  2. 构建文档:
    生成 API 文档后,进入 docs 目录并构建 HTML 文档:

    sphinx-build -b html . _build
    

查看文档

文档构建完成后,您可以通过浏览器打开 _build 目录中的 index.html 文件来查看生成的文档:

open _build/index.html

这将在您的默认网页浏览器中显示生成的文档。

加入社区

我们诚挚地邀请您加入 Agent-E 社区!无论您是想提问、分享反馈,还是为项目贡献力量,我们都欢迎您的参与。

参与交流:

  • Discord:在我们的 Discord 社区 中与其他用户和开发者交流。欢迎您提出问题、分享经验,或与社区成员一起讨论潜在的功能。

保持更新:

关注项目的最新动态、功能更新和公告,积极参与社区互动。

  • GitHub:随时查看最新的问题和 Pull Request,并直接在 GitHub 上为代码库做出贡献。

我们期待在社区中见到您!

引用

如果您在研究或项目中使用了本工作,请引用以下文章:

@misc{abuelsaad2024-agente,
      title={Agent-E: From Autonomous Web Navigation to Foundational Design Principles in Agentic Systems},
      author={Tamer Abuelsaad and Deepak Akkil and Prasenjit Dey and Ashish Jagmohan and Aditya Vempaty and Ravi Kokku},
      year={2024},
      eprint={2407.13032},
      archivePrefix={arXiv},
      primaryClass={cs.AI},
      url={https://arxiv.org/abs/2407.13032},
}

您也可以在 arXiv 上查看该论文。

待办事项

以下是 Agent-E 未来版本计划推出的一些功能和改进:

  • 健壮的下拉菜单处理:改进对旅游预订平台(如 Booking.com、Expedia、Google Flights)等网站下拉菜单的处理。这些菜单中许多都包含动态内容,或将多个方面整合到同一个菜单中,例如在同一个菜单里同时选择出发日期和返回日期。
  • 任务缓存:为已执行过的任务实现缓存功能,允许用户无需再次调用 LLM 即可重新运行任务。该缓存应具备智能性,仅对 DOM 定位器等元素进行缓存,而排除信息检索结果等项目,以提升 token 使用效率。
  • 开源与本地 LLM 兼容性:调整 Agent-E 以兼容开源 LLM,理想情况下使其能够在本地运行。这可能需要简化提示词或重构技能,以适配这些模型的能力。
  • 多标签页与书签管理:新增支持书签和多标签页使用的技能。目前,Agent-E 每次只能处理一个标签页,一旦打开其他标签页就会丢失状态,用户需重新启动。
  • PDF 文本处理:增强对 PDF 中超出 LLM 上下文窗口限制的大量文本的管理能力,可通过适当重叠分块的方式保留上下文信息。
  • 浏览器导航代理历史记录优化:通过开发修剪浏览器历史记录的方法来优化浏览器导航代理,从而减少 token 使用量并降低 LLM 的认知负担。
  • 收集用户偏好:集成长期记忆(LTM)支持,以便随时间自动填充用户偏好,并提供让用户手动注入偏好选项的功能。这可能涉及在本地使用 FAISS 等向量数据库,或采用外部托管的向量数据库。
  • DOM 精炼测试框架:开发用于 DOM 精炼的测试框架,以便衡量精炼效果的准确性和性能提升。
  • DOM 精炼优化:持续提升 DOM 精炼的速度和效率。
  • Shadow DOM 支持:部分网站使用 Shadow DOM,支持从无障碍树中提取其内容。
  • Google 套件兼容性:增加对 Google Docs、Sheets、Slides 和 Gmail 的支持,这些应用通常使用传统 DOM 方法无法访问的 canvas 元素。
  • 跨平台安装程序:创建兼容 Windows、Mac 以及理想的 Ubuntu 系统的安装程序,面向非技术用户。该安装程序应在应用程序内支持环境变量配置。
  • 执行过程视频录制:按照议题 #106 的要求,实现执行过程的视频录制功能。
  • DOM 精炼优化:替换已弃用的 snapshot() 方法,用于 DOM 精炼。
  • Token 优化:研究如何减少 AutoGen 所需提示词和注释中使用的 token 数量。
  • 动作验证:为每个技能实现响应机制,通过 Mutation Observers 检测 DOM 变化,使 LLM 能够判断技能是否正确执行。
  • 执行规划器:开发规划代理,让 LLM 能够提前规划多个步骤,以加快执行速度。
  • 【嵌套聊天奏效】群聊:启用群聊功能,并将部分技能分配至不同代理。

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架

OpenHands

OpenHands 是一个专注于 AI 驱动开发的开源平台,旨在让智能体(Agent)像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点,通过自动化流程显著提升开发速度。 无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员,还是需要快速原型验证的技术团队,都能从中受益。OpenHands 提供了灵活多样的使用方式:既可以通过命令行(CLI)或本地图形界面在个人电脑上轻松上手,体验类似 Devin 的流畅交互;也能利用其强大的 Python SDK 自定义智能体逻辑,甚至在云端大规模部署上千个智能体并行工作。 其核心技术亮点在于模块化的软件智能体 SDK,这不仅构成了平台的引擎,还支持高度可组合的开发模式。此外,OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩,证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能,支持与 Slack、Jira 等工具集成,并提供细粒度的权限管理,适合从个人开发者到大型企业的各类用户场景。

70.6k|★★★☆☆|今天
语言模型Agent开发框架