项目简介
OpenHands(前身为OpenDevin)是一个创新的AI软件开发代理平台,它赋能AI代理像人类开发者一样完成复杂的软件开发工作。这包括修改代码、执行系统命令、浏览网页、调用API,甚至从StackOverflow获取代码片段。平台的设计目标是提供一个安全、可扩展的上下文服务框架,使AI代理能够高效地与开发环境互动。OpenHands内部集成了MCP协议的客户端和服务端组件,用于管理工具、资源和上下文信息。
主要功能点
- AI驱动的自主开发: 代理能够理解并执行软件开发任务,从问题分析到代码实现、测试和部署。
- 多样化工具集成: 支持广泛的开发工具,包括Shell命令行、交互式Python(Jupyter)、文件系统操作(读/写/编辑)、网页浏览等。
- 模型上下文协议 (MCP) 支持: OpenHands利用MCP协议,使其内部组件(如运行时环境和微代理)能够作为MCP服务器提供工具和上下文,同时它自身也作为MCP客户端连接和利用这些服务。这确保了代理能够以标准化方式访问所需功能。
- 多代理协作: 平台支持不同代理之间的协作,每个代理可能专注于特定类型的任务。
- 会话管理与状态持久化: 维护代理的运行状态和历史会话,支持会话的暂停、恢复和重放。
- 安全分析: 内置安全分析器,评估代理操作的潜在安全风险。
安装步骤
OpenHands提供了两种主要的本地运行方式:CLI启动器(推荐)和Docker。
1. 使用CLI启动器(推荐)
这是本地运行OpenHands最简单的方式,它能提供更好的虚拟环境隔离,并且是OpenHands默认MCP服务器的运行前提。
- 安装 'uv': 'uv' 是一个快速的Python包安装和管理工具。请访问 uv安装指南,根据您的操作系统获取最新的安装说明。
- 启动OpenHands:
在终端中执行以下命令来启动OpenHands:
- 启动GUI服务器:
GUI服务器启动后,您可以通过浏览器访问 'http://localhost:3000'。uvx --python 3.12 --from openhands-ai openhands serve - 启动CLI(命令行)模式:
uvx --python 3.12 --from openhands-ai openhands
- 启动GUI服务器:
2. 使用Docker
您也可以直接使用Docker运行OpenHands:
- 拉取Docker镜像:
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.59-nikolaik - 运行Docker容器:
注意: 如果您在公共网络上部署OpenHands,请务必查阅 加固Docker安装指南 以确保部署的安全性。docker run -it --rm --pull=always \ -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.59-nikolaik \ -e LOG_ALL_EVENTS=true \ -v /var/run/docker.sock:/var/run/docker.sock \ -v ~/.openhands:/.openhands \ -p 3000:3000 \ --add-host host.docker.internal:host-gateway \ --name openhands-app \ docker.all-hands.dev/all-hands-ai/openhands:0.59
MCP服务器配置(客户端视角)
OpenHands的内部运行时环境或微代理组件可以作为MCP服务器,为自身的AI代理或潜在的外部MCP客户端提供工具和上下文。以下是一个MCP客户端在配置连接OpenHands提供的MCP服务器时可能需要填写的信息及参数说明。请注意,这些是MCP客户端需要了解和设置的连接细节,而非OpenHands自身的启动参数。
示例配置(JSON格式的配置内容及其参数注释):
[ { "name": "OpenHands Runtime Stdio Server", "type": "stdio", ""description": "通过标准I/O (Stdio) 传输协议连接OpenHands运行时提供的MCP服务器。", "command": "openhands-runtime-stdio-server-executable", "command_description": "启动OpenHands运行时作为MCP服务器所需的本地命令行可执行文件路径或名称。例如,如果OpenHands运行时将其MCP服务暴露为一个名为'openhands-runtime-stdio-server-executable'的程序,客户端需要提供这个命令。", "args": ["--some-arg", "value"], "args_description": "启动MCP服务器命令行程序时所需的参数列表,例如指定监听端口等。请根据OpenHands运行时实际暴露的参数进行配置。" }, { "name": "OpenHands Runtime SSE Server", "type": "sse", "description": "通过Server-Sent Events (SSE) 传输协议连接OpenHands运行时提供的MCP服务器。", "url": "http://localhost:8081/mcp", "url_description": "OpenHands运行时提供的MCP SSE服务器的HTTP/HTTPS访问URL。请确保URL指向正确的服务器地址和路径。", "api_key": "your_api_key_if_required", "api_key_description": "如果OpenHands的MCP SSE服务器需要API密钥进行认证,请在此处提供。若不需要,可留空或省略。" }, { "name": "OpenHands Runtime SHTTP Server", "type": "shttp", "description": "通过Streamable HTTP (SHTTP) 传输协议连接OpenHands运行时提供的MCP服务器。", "url": "http://localhost:8082/mcp", "url_description": "OpenHands运行时提供的MCP SHTTP服务器的HTTP/HTTPS访问URL。请确保URL指向正确的服务器地址和路径。", "api_key": "your_api_key_if_required", "api_key_description": "如果OpenHands的MCP SHTTP服务器需要API密钥进行认证,请在此处提供。若不需要,可留空或省略。" } ]
配置参数说明:
- 'name': '[字符串,必填]' MCP服务器的唯一标识名称,方便客户端识别和管理。
- 'type': '[字符串,必填]' MCP服务器所使用的传输协议类型。支持 '"stdio"' (标准I/O)、'"sse"' (Server-Sent Events) 和 '"shttp"' (Streamable HTTP)。
- 'command': '[字符串,仅适用于 type="stdio"]' 启动基于标准I/O的MCP服务器的命令行可执行文件路径或名称。客户端将通过执行此命令来启动并连接到MCP服务器。
- 'args': '[字符串数组,仅适用于 type="stdio"]' 传递给 'command' 的命令行参数列表。
- 'url': '[字符串,仅适用于 type="sse" 或 "shttp"]' 基于HTTP/S的MCP服务器的访问URL。
- 'api_key': '[字符串,可选]' 连接到MCP服务器所需的API密钥。如果服务器需要认证,客户端应在此处提供正确的API密钥。
基本使用方法
启动OpenHands应用后,系统会提示您选择一个大型语言模型(LLM)提供商并输入相应的API密钥。例如,Anthropic的Claude Sonnet 4.5 ('anthropic/claude-sonnet-4-5-20250929') 是一个推荐的选择,但平台支持多种其他LLM选项。完成配置后,您可以开始向OpenHands平台中的AI代理分配软件开发任务,代理将利用其集成的工具(包括通过MCP协议从内部服务获取的工具)自主地进行工作。
信息
分类
开发者工具