项目简介
OpenHands 是一个强大的 AI 驱动的软件开发平台,旨在通过智能代理自动化软件开发任务。它不仅能让 AI 代理修改代码、执行命令、浏览网页、调用 API,甚至能从 StackOverflow 复制代码片段。OpenHands 内部集成了 MCP 服务器,为 AI 代理提供标准化接口来访问其核心能力和托管的工具。
主要功能点
- AI 代理驱动的开发: 自动化代码修改、命令执行和 Web 浏览等软件开发任务。
- 工具集成: 支持 AI 代理通过标准协议调用多种内部托管和外部集成的工具及 API。
- 多环境支持: 可以在本地、Docker 容器甚至云端运行,并与 GitHub、GitLab、Bitbucket 等代码平台集成。
- 上下文管理: 为 LLM 提供结构化的上下文信息,例如代码仓库信息、运行时环境细节和会话历史。
- 可插拔架构: 允许集成自定义的 AI 代理和微代理,扩展平台功能。
- 安全分析: 集成安全分析器,评估 AI 代理操作的潜在风险。
- 灵活的 Prompt 管理: 支持可定制的 Prompt 模板,优化与 LLM 的交互。
安装步骤
OpenHands 支持通过 CLI 启动器(推荐)或 Docker 进行本地部署。
推荐方式:CLI 启动器(使用 'uv')
- 安装 'uv': 请参照 uv 官方安装指南 安装最新版本的 'uv'。
- 启动 OpenHands 服务器:
打开终端,运行以下命令启动 OpenHands 服务器(GUI 模式):
服务器启动后,你可以在浏览器中访问 'http://localhost:3000' 使用 OpenHands。uvx --python 3.12 --from openhands-ai openhands serve - 或者启动 OpenHands CLI:
如果你希望通过命令行界面与 OpenHands 交互,运行:
uvx --python 3.12 --from openhands-ai openhands
替代方式:Docker 如果你偏好使用 Docker,请运行以下命令:
docker pull docker.all-hands.dev/all-hands-ai/runtime:0.57-nikolaik docker run -it --rm --pull=always \ -e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/runtime:0.57-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.57
请注意:在公共网络上部署 Docker 时,务必参考 Hardened Docker Installation Guide 以增强安全性。
服务器配置
OpenHands 内部集成了 MCP 服务器,它负责托管和管理 AI 代理可调用的工具及上下文。如果你需要将 OpenHands 作为 MCP 服务器暴露给外部 MCP 客户端,你可以配置客户端以标准 Stdio、SSE 或 SHTTP 协议连接到 OpenHands 运行时。 以下是一个示例 JSON 配置,你可以根据实际部署情况调整。这些配置信息并非在 OpenHands 内部使用,而是供 外部 MCP 客户端 用于连接和调用 OpenHands 提供的服务:
{ "stdio_servers": [ { "name": "openhands-local-runtime", "type": "stdio", "description": "通过标准输入/输出 (Stdio) 协议连接到本地 OpenHands 运行时,提供代码执行、文件操作等工具。", "command": "openhands", "args": [ "serve", "--runtime", "local", "--headless", "true" ], "env": {}, "working_dir": "/path/to/openhands/workspace" } ], "sse_servers": [ { "name": "openhands-sse-runtime", "type": "sse", "description": "通过 Server-Sent Events (SSE) 协议连接到 OpenHands Web 服务器的 MCP 端点,适用于 Web 客户端。", "url": "http://localhost:3000/mcp/sse", "api_key": "YOUR_API_KEY_IF_NEEDED" } ], "shttp_servers": [ { "name": "openhands-shttp-runtime", "type": "shttp", "description": "通过 Streamable HTTP (SHTTP) 协议连接到 OpenHands Web 服务器的 MCP 端点,提供流式 HTTP 交互。", "url": "http://localhost:3000/mcp/shttp", "api_key": "YOUR_API_KEY_IF_NEEDED", "timeout": 60 } ] }
配置参数说明:
- 'stdio_servers': 配置通过标准输入/输出 (Stdio) 协议连接的 MCP 服务器。
- 'name': 服务器的名称,用于标识。
- 'type': 协议类型,固定为 "stdio"。
- 'description': 服务器功能描述。
- 'command': 启动 MCP 服务器进程的命令(例如 'openhands')。
- 'args': 传递给 'command' 的命令行参数(例如 'serve --runtime local --headless true')。
- 'env': 进程的环境变量(可选)。
- 'working_dir': 进程的工作目录(可选)。
- 'sse_servers': 配置通过 Server-Sent Events (SSE) 协议连接的 MCP 服务器。
- 'name': 服务器的名称。
- 'type': 协议类型,固定为 "sse"。
- 'description': 服务器功能描述。
- 'url': SSE 服务器的端点 URL(例如 OpenHands GUI 服务器提供的 '/mcp/sse')。
- 'api_key': 访问 SSE 服务器所需的 API 密钥(如果服务器要求)。
- 'shttp_servers': 配置通过 Streamable HTTP (SHTTP) 协议连接的 MCP 服务器。
- 'name': 服务器的名称。
- 'type': 协议类型,固定为 "shttp"。
- 'description': 服务器功能描述。
- 'url': SHTTP 服务器的端点 URL(例如 OpenHands GUI 服务器提供的 '/mcp/shttp')。
- 'api_key': 访问 SHTTP 服务器所需的 API 密钥。
- 'timeout': 调用工具的超时时间(秒,可选)。
基本使用方法
- 启动 OpenHands: 按照上述安装步骤,选择 CLI 启动器或 Docker 方式启动 OpenHands 服务器。
- 访问 Web 界面: 如果以 GUI 模式启动,在浏览器中访问 'http://localhost:3000'。
- 配置 LLM: 首次使用时,系统会提示你选择一个 LLM 提供商并输入 API 密钥。OpenHands 支持多种 LLM,推荐使用 Anthropic 的 Claude Sonnet 4。
- 开始任务: 在界面中输入你的软件开发任务描述,OpenHands 的 AI 代理将开始尝试解决问题。
- 交互与指导: 代理会执行代码、运行命令、修改文件,并将结果反馈给你。你可以根据需要提供进一步的指示或确认代理的行动。
信息
分类
开发者工具