EKO 智能体SDK架构的概述
EKO 智能体SDK(Eko框架)是由清华大学、复旦大学和斯坦福大学联合开发的智能体开发框架,旨在通过自然语言与简单代码快速构建“虚拟员工”,实现自动化任务执行。以下是其核心功能与技术特点的详细解析:
核心功能与应用场景
- 自动化任务执行
- 数据收集与分析:例如,自动抓取雅虎财经的股票数据(价格、市值、交易量),生成可视化报告。
- 系统测试:模拟用户操作进行登录页面测试,验证密码策略、生成测试报告。
- 文件管理:清理指定目录下的大文件(如删除大于1MB的文件)。
- 跨平台支持
- 浏览器自动化:通过截图和网页元素识别技术,操作网页按钮、输入框等交互元素。
- 电脑系统操作:支持命令行指令(如文件读写、进程管理),未来将扩展GUI操作。
- 插件化扩展:可作为浏览器插件使用,适应不同工作环境。
- 生产级干预机制
- 实时监控与调整:允许开发者在工作流执行前后插入逻辑(如验证输入、重试失败任务)。
- 安全控制:浏览器环境采用API密钥管理,电脑端操作需用户授权,确保系统级访问安全。
分层规划
核心是一个分层规划框架,它将任务规划与执行分离开来:
规划层
-
将自然语言描述转换为结构化的工作流
-
使用大型语言模型(如Claude/OpenAI)将复杂任务分解为离散步骤
-
在执行前验证工作流结构和工具需求
-
创建可复用、可检查的工作流定义
执行层
-
动态执行工作流,同时适应运行时条件
-
根据上下文处理工具选择和排序
-
管理工作流节点之间的依赖关系
-
提供基于钩子的执行控制
任务描述
任务描述是用自然语言输入定义需要完成的任务。它关注期望的结果,而不是需要的具体步骤或工具。在我们的示例中,“将大象放进冰箱”是一个任何人都能理解的任务描述,但实现它需要仔细的规划和执行。
子任务
当Eko接收到任务描述时,它首先在规划阶段将其分解为逻辑子任务。每个子任务代表一个有意义的工作单元,有助于实现总体目标。在我们的大象示例中,Eko识别出三个子任务:打开冰箱门、推大象进去和关闭门。这种分解在任何实际执行开始之前发生。
可用工具
每个子任务都有一组可能帮助完成它的工具。这些工具在规划阶段根据子任务的要求和工具的能力确定。在我们的示例中,我们使用三个虚构的工具 - “移动手”()、“门使用”()和“施加力量”() - 来说明这个概念。
框架对比
Web信息抽取
Eko通过一种创新的方法处理网络信息:
-
识别并用唯一标识符标记网页上的交互元素
-
创建可视化覆盖层以显示元素之间的关系
-
将截图与伪HTML结合,以实现强大的元素识别
-
通过结合视觉和结构理解,增强浏览器自动化的准确性
这项技术对于浏览器自动化任务尤为重要,能够在不同页面状态下提供可靠的元素识别。
环境感知架构
Eko在不同的JavaScript环境中提供一致的能力,同时适应每个环境的独特约束:
浏览器扩展环境
-
完整的浏览器自动化能力
-
标签页和窗口管理
-
DOM交互和内容提取
-
跨域通信处理
网络环境
-
为网络应用提供沙箱操作
-
DOM操作和事件处理
-
内容提取和处理
-
安全的API端点集成
Node.js环境
-
系统级文件操作
-
命令执行和进程管理
-
完整的Node.js API访问
-
直接访问本地资源
工具系统
工具是Eko自动化中的构建块:
工具定义
-
每个工具都有一个独特的名称和描述
-
定义其输入模式和需求
-
实现特定的执行逻辑
-
可以访问共享的执行上下文
工具注册
-
管理每个环境中可用的工具
-
处理工具注册和验证
-
提供工具枚举和元数据
-
确保工具兼容性
工具类别
-
浏览器自动化工具(OpenUrl、BrowserUse等)
-
系统交互工具(FileRead、CommandExecute等)
-
内容处理工具(ExtractContent、ExportFile等)
-
支持自定义工具以实现可扩展性
钩子系统
钩子提供了对工作流执行的深度可见性和控制:
工作流钩子
-
beforeWorkflow/afterWorkflow用于设置和清理
-
访问工作流级别的状态和变量
-
控制工作流的初始化和完成
子任务钩子
-
beforeSubtask/afterSubtask用于节点级控制
-
监控并修改子任务的执行
-
访问执行上下文和结果
工具钩子
-
beforeToolUse/afterToolUse用于细粒度控制
-
修改工具的输入和输出
-
实现自定义错误处理和恢复