OpenHands Runtime主要组件是什么?

摘要:AI Agent框架探秘:拆解 OpenHands(11) Runtime主要组件 目录AI Agent框架探秘:拆解 OpenHands(11) Runtime主要组件0x00 概要0x01 三大组件0x02 数据流0x03 插件系统3.
AI Agent框架探秘:拆解 OpenHands(11)--- Runtime主要组件 目录AI Agent框架探秘:拆解 OpenHands(11)--- Runtime主要组件0x00 概要0x01 三大组件0x02 数据流0x03 插件系统3.1 sandbox_pluginssandbox_plugins 的定义和作用具体插件功能插件在系统中的使用3.2 Plugin 基类3.3 JupyterPlugin核心特色流程图代码3.4 AgentSkillsPlugin功能概述核心特色AgentSkillsRequirement框架注册与技能发现流程图代码0x04 执行系统4.1 调用4.2action_execution_client.py4.3 action_execution_server.py4.4 流程图4.5 代码0x05 环境5.1 调用5.2 核心特色5.3 流程图5.4 代码0xFF 参考 0x00 概要 本篇继续对 runtime 的解读,主要介绍 插件、执行系统和环境这三个组件。 因为本系列借鉴的文章过多,可能在参考文献中有遗漏的文章,如果有,还请大家指出。 0x01 三大组件 本篇要介绍的几个组件如下: ActionExecutor:在 Runtime 中执行动作的核心组件 ActionExecutor 初始化时会根据配置加载指定的插件。插件注册到 ActionExecutor 的插件字典。 当接收到动作请求时,ActionExecutor 会调用相应的方法执行动作。 对于浏览动作,ActionExecutor 会使用 BrowserEnv 来处理。 如果涉及插件,ActionExecutor 会通过插件系统处理 AgentSkillsPlugin:提供智能体技能功能的插件 AgentSkillsPlugin 是一个插件,继承自 Plugin 基类。 Runtime 初始化时,插件会被加载到插件字典中。 插件通过 PluginRequirement 机制被注册到系统中。 特定动作触发时调用相应插件功能。 BrowserEnv:浏览器环境封装,使用 BrowserGym 库。 ActionExecutor 在初始化时根据配置决定是否启用浏览器环境。 当需要执行浏览相关的动作时,ActionExecutor 会调用 BrowserEnv 的方法。 BrowserEnv 运行在一个独立的多进程环境中。 0x02 数据流 Runtime 的数据流如下: Runtime 会发起动作请求 → ActionExecutor.run_action() ActionExecutor 根据动作类型调用相应的处理方法; 如果涉及插件,通过插件系统处理; 如果涉及浏览器,调用 BrowserEnv 处理; 返回观察结果给智能体。 0x03 插件系统 Runtime会遇到如下问题:新增模块(如自定义工具、新 LLM 模型)时,需修改核心代码,扩展性差;多任务并发执行时,模块间交互频繁,易出现性能瓶颈;框架部署与运维复杂,难以适配不同环境(本地、云端、边缘端)。 因此,业界大多采用微服务架构或插件化设计,模块间通过标准化接口通信,新增功能只需开发插件并注册。 3.1 sandbox_plugins sandbox_plugins 在 OpenHands 的 CodeActAgent 中起到了关键作用,主要用于定义和配置代理在沙箱环境中可以使用的工具和功能。这些插件是代理能够与环境交互并完成任务的基础工具集。 sandbox_plugins 的定义和作用 在 CodeActAgent 类中,sandbox_plugins 是一个类属性,定义了代理在沙箱环境中需要的插件: sandbox_plugins: list[PluginRequirement] = [ AgentSkillsRequirement(), JupyterRequirement(), ] 这些插件为代理提供了在沙箱环境中执行任务所需的工具和功能。 具体插件功能 AgentSkillsRequirement 和 JupyterRequirement 是两个插件需求类。 AgentSkillsRequirement:提供了一系列 Python 函数和工具,使代理能够执行各种操作,包括文件操作、目录浏览、代码执行等基本技能。需要在 JupyterRequirement 之前初始化,因为 Jupyter 需要使用这些函数。
阅读全文