OpenHands 是一个自托管的开发者控制中心,面向编码智能体和自动化任务。其核心组件 Agent Canvas 让用户能够跨本地、远程和云后端运行多种智能体,包括开源的 OpenHands 智能体,以及第三方智能体如 Claude Code、Codex、Gemini CLI、Pi 和 OpenCode,或任何兼容 ACP 的智能体。
用途方面,Agent Canvas 旨在将编码智能体转变为自托管、始终在线的工程团队,用于发起对话和自动化日常任务,例如生成报告并发布到 Slack,或自动将 GitHub issue 分解为任务。它支持通过 Slack、GitHub、Datadog 等第三方服务触发智能体。
主要能力包括:支持连接多个“智能体后端”,例如在 Docker 容器、虚拟机或公司基础设施中运行智能体;可在同一 Agent Canvas 前端中切换不同后端,例如团队共享的 Agent Server 用于代码审查和依赖更新,个人智能体则在本地运行。OpenHands 由 Agent Server 提供 REST API 支持,可在单台机器上运行多个智能体,并常与 Automation Server 配对,实现按计划或响应事件运行智能体。
使用方式提供多种安装选项:
选项 1:无沙箱。直接在安装机器上运行 agent-server,智能体将拥有对文件系统的完全访问权限。前置条件:Node.js 24 或更高版本、uv。agent-canvas 命令默认启动完整本地栈。
选项 2:使用 Docker 沙箱。前置条件:Docker(macOS/Windows 上为 Docker Desktop,Linux 上为 Docker Engine/Docker Desktop),以及一个宿主机目录 PROJECTS_PATH 用于存放智能体要访问的项目文件夹,需在启动容器前创建。Windows 需参考 README.windows.md。
选项 3:使用多个 Docker 沙箱。每个新对话在独立的 Docker 容器中运行,拥有自己的 Agent Server 和工具,适合并发运行多个智能体。前置条件:Node.js 24 或更高版本、uv,以及运行中的 Docker Desktop(macOS)或 Docker Engine/Desktop(Linux)。启动 Canvas 的用户需能执行 docker 命令。访问 http://localhost:8000 并开始新对话。
选项 4:从源码安装。前置条件:Node.js 24 或更高版本、npm、uv(用于通过 uvx 运行 agent server)。UI 访问地址为 http://localhost:8000(npm/源码启动器)或 http://localhost:8000/canvas(Docker 镜像)。可从 UI 直接添加额外后端。
安全与网络方面:本地(npx / npm run dev)监听器仅绑定回环地址(127.0.0.1),以防自动注入的会话密钥从网络其他机器访问。若需监听所有接口,可传入 --host 0.0.0.0(或设置 OH_BIND_HOST),此时不会注入会话密钥,UI 使用与 --public 相同的 API 密钥输入界面。Docker 监听所有容器接口以便端口发布,但默认不会将会话密钥注入 HTML。快速启动示例在仅将主机端口发布到 127.0.0.1 的同时显式启用注入。若将 Docker 发布到局域网或公共接口,应省略 AGENT_CANVAS_ALLOW_LAN_SESSION_KEY 并在 UI 中输入 API 密钥。将 LOCAL_BACKEND_API_KEY 设为强值,或通过 docker exec <container> sh -c 'cat "$STATE_DIR/api-key.txt"' 获取生成值。面向互联网的安装需遵循自托管指南。
适用场景包括:在笔记本电脑、Mac Mini 等专用计算机或云服务器上运行智能体;云服务器方式可使智能体在笔记本关闭时继续运行,并更易通过第三方服务触发;团队共享 Agent Server 处理代码审查和依赖更新,同时个人智能体在本地运行;并发运行多个智能体;以及设置按计划或响应事件运行的自动化任务。
限制与注意事项:无沙箱模式下智能体拥有完整文件系统访问权限;使用同一宿主机工作区的对话会共享文件,需选择独立目录或工作树以避免编辑冲突;多 Docker 沙箱设置仅隔离对话执行,不会将整个 Canvas 或自动化服务移入沙箱;本地监听仅绑定回环地址,如需网络访问需显式配置并注意安全;面向互联网的安装需遵循安全加固指南。