OpenHands 智能体框架详解
OpenHands(原 OpenDevin)是开源的通用软件工程智能体框架,其核心创新在于 Agent-Computer Interface(ACI)——为 LLM 设计的交互接口,使智能体能像人类开发者一样操作代码仓库。
核心架构
OpenHands 的架构由三个核心组件构成:
- Agent:基于 LLM 的决策引擎,负责分析问题、制定计划、调用工具
- Runtime:沙箱化的代码执行环境,基于 Docker 容器
- Controller:编排 Agent 和 Runtime 的交互循环
python
# OpenHands 核心循环
class AgentController:
def step(self, task: str) -> Action:
# 获取当前环境状态
observation = self.runtime.observe()
# Agent 决策
action = self.agent.think(task, observation, self.history)
# 执行动作
result = self.runtime.execute(action)
# 记录历史
self.history.append((action, result))
return actionACI 设计
Agent-Computer Interface 是 OpenHands 的核心抽象,为 LLM 提供结构化的环境交互:
- 文件操作:read、write、edit,带行号精确定位
- 命令执行:bash 命令,带超时和输出截断
- 浏览器操作:网页浏览和交互(用于 Web 开发任务)
- 信息查询:搜索代码、查看 Git 历史
ACI vs 直接 Shell
ACI 的关键优势在于为 LLM 提供了结构化的观察格式。直接使用 Shell 输出作为观察会导致信息噪声过大,ACI 通过格式化和截断确保观察信息的信息密度。
Runtime 沙箱
Runtime 基于 Docker 容器,提供完全隔离的执行环境:
- 独立的文件系统,可挂载项目目录
- 独立的网络栈,可配置访问策略
- 资源限制(CPU、内存、磁盘)
- 快照和回滚能力