news 2026/9/4 15:38:35

如何 3 分钟本地部署 OpenHands Agent Canvas:AI 编程代理的可视化控制中心

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何 3 分钟本地部署 OpenHands Agent Canvas:AI 编程代理的可视化控制中心

如何 3 分钟本地部署 OpenHands Agent Canvas:AI 编程代理的可视化控制中心

【免费下载链接】OpenHands🙌 OpenHands: AI-Driven Development项目地址: https://gitcode.com/GitHub_Trending/ope/OpenHands

OpenHands(Agent Canvas)是一个可自托管的 AI 编程代理控制中心:你在浏览器里用自然语言指挥 OpenHands、Claude Code、Codex 等编码代理,让它读写文件、跑命令、开 PR,并把重复性工作排成定时或事件触发的自动化。适合想在自己电脑、Docker 或服务器上跑编码代理、又不想手写脚本串联 LLM 的开发者。

先搞清楚它是什么,再决定装在哪

Agent Canvas 本身不直接执行代码,它是一个前端控制台 + 本地编排器,真正干活的是后端的 Agent Server。这个分离设计带来一个关键好处:同一套界面可以切换多个后端——笔记本上跑个人代理,团队共享一台服务器上的代理做代码审查,互不干扰。

它解决的核心问题有三类:

  • 对话式干活:新建会话,描述任务,代理自动执行命令、改文件、看结果
  • 自动化:按时间表或 webhook 事件触发任务,比如 PR 打开时自动审查、每晚做安全扫描
  • 扩展能力:给代理装技能(Skills)、MCP 服务器和插件,按需增强

Agent Canvas 的自动化仪表盘:每个任务的触发源、最近运行状态和成功率一目了然

选一条安装路线:npm、Docker 还是源码

当前发布版本为 1.15.0。三条路线的差异如下,按需取一条即可:

路线隔离性前置要求适合谁
npm 全局安装无沙箱,代理直接访问本机文件系统Node.js ≥ 22.12、uv最快上手,信任本机环境
Docker 沙箱有,代理只看到挂载的目录Docker Desktop 或 Docker Engine想要隔离、生产更稳妥
从源码构建无沙箱Node.js ≥ 22.12、npmuv要改前端或跟进开发版

两条提醒:npm 和源码路线下代理对主机有完全访问权限,官方 README 里明确打了警告,建议先在小项目目录上试;Docker 路线则要求你先建好项目目录PROJECTS_PATH,代理只能看到挂载进去的文件夹。

3 步跑通本地部署

第 1 步:安装并启动。最省事的是 npm 路线,两条命令:

npm install -g @openhands/agent-canvas agent-canvas

agent-canvas默认拉起完整本地栈(Agent Server、自动化后端和前端)。如果你要前后端分离跑,可以用agent-canvas --frontend-only--backend-only分别启动。

选 Docker 的话,一条docker run即可(镜像自带全部服务):

export PROJECTS_PATH="$HOME/projects" mkdir -p "$PROJECTS_PATH" docker run -it --rm -p 8000:8000 \ -v "$HOME/.openhands:/home/openhands/.openhands" \ -v "${PROJECTS_PATH}:/projects" \ ghcr.io/openhands/agent-canvas:1.15.0

第 2 步:打开界面。npm/源码路线访问http://localhost:8000,Docker 路线访问http://localhost:8000/canvas

第 3 步:配置 LLM。左侧"Getting started"引导清单会提示你先添加 LLM API Key,这是跑通对话的前置条件。支持自带模型(BYO model),在设置里建一个 LLM Profile 填入密钥即可。

成功标志:界面左下角出现 "Local" 后端徽标且状态点为绿色,"Getting started" 中前几项打勾。看到这些,说明本地栈已经就绪。

第一次对话:让代理干一件小事

点击 "New Chat",选一个会话,直接输入任务,比如"给这个项目补一个 README,列出安装步骤"。代理会自主决定执行哪些命令、编辑哪些文件,你在事件流里能看到每一步的输入输出和文件 diff。

跑通第一个任务后,建议顺手做两件事:

  • Customize → Skills里浏览技能库(59 个开箱即用的技能,按分类筛选、逐个启用),技能只对新会话生效
  • Customize → MCP Servers / Plugins里接入你日常工具

Customize 面板下的 Skills 页面:按分类筛选并启用/禁用技能,改动只影响新会话

从对话到自动化:给代理排上定时任务

这是 Agent Canvas 和普通聊天式编码工具的分水岭。进入Automate菜单,你可以:

  • Add Automation:写一段 Prompt 描述任务,再指定触发方式——按时间表(如每晚 03:30)、按事件(如pull_request_openedwebhook),或两者加过滤条件
  • Import automation / Templates:导入现成的自动化模板
  • Dashboard:看所有任务的运行次数、成功率、平均耗时,失败的任务会标红提醒

一个典型配置是"PR Review on Open":仓库有新 PR 时自动触发代码审查,把结论以行内评论发回,LLM Profile 指定用哪个模型执行。

自动化详情页:Prompt、触发事件、过滤条件和 LLM Profile 都在一个页面里管理

想暴露给团队或公网使用时,参考自托管指南 docs/SELF_HOSTING.md:核心是用LOCAL_BACKEND_API_KEY开启 public 模式,所有 API 调用必须携带密钥头,UI 首次访问时也要粘贴密钥才能操作。

常见部署问题排查

  • 端口 8000 被占用:ingress 代理默认监听 127.0.0.1:8000,先用lsof -i :8000排查占用
  • Docker 容器里看不到项目:确认PROJECTS_PATH目录在docker run之前就已存在,且挂载路径拼写一致
  • 会话一直连不上:前端连不上 Agent Server 时,检查终端日志里 18000 端口是否真正起来;uv未安装会导致 Agent Server 启动失败
  • Windows 用户:README 提供了 PowerShell 版本的命令,见 README.windows.md

架构细节可看 docs/architecture.md,多仓库分工(SDK、TypeScript 客户端、自动化服务各归各仓)在 docs/DEVELOPMENT.md 里有说明。

下一步行动清单

  1. 用 npm 路线把本地栈跑起来,完成 "Getting started" 引导清单
  2. 建一个 LLM Profile,跑通第一个对话任务
  3. 启用 3 个与你工作流匹配的技能,观察新会话行为变化
  4. 创建第一个自动化:给某个仓库加"push 后自动更新 CHANGELOG" 的定时任务
  5. 需要 7x24 运行时,按 docs/SELF_HOSTING.md 把栈迁到一台 VM 并配置 API Key

【免费下载链接】OpenHands🙌 OpenHands: AI-Driven Development项目地址: https://gitcode.com/GitHub_Trending/ope/OpenHands

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 11:25:15

自进化AI的隐形陷阱:换个Harness就变笨?工程化解法

很多做 LLM 应用的开发者都遇到过这样一种非常诡异的场景:基座模型一个版本没换,prompt 模板也只是在原有基础上微调,结果一换评估脚本,分数立刻掉了十个点;或者今天在测试环境里还能稳定运行的 Agent,部署…

作者头像 李华
网站建设 2026/9/1 14:34:50

Hermes Agent日志监控实战:从ELK采集到OTLP导出

Hermes Agent日志监控实战:从ELK采集到OTLP导出 【免费下载链接】hermes-agent The agent that grows with you 项目地址: https://gitcode.com/GitHub_Trending/he/hermes-agent 本文交付一套可运行的 Hermes Agent 日志监控 方案:用项目自带的日…

作者头像 李华
网站建设 2026/9/2 11:49:33

Git分支按最后提交时间排序:命令用法与分支清理实战

在实际 Git 仓库里,分支数量一旦多起来,按字母顺序展示的 git branch 列表几乎不提供有效信息。开发者真正想知道的是:哪些分支最近还在提交,哪些分支已经几个月没有动静,哪些分支可以进入清理流程。按最后提交时间&…

作者头像 李华
网站建设 2026/9/1 7:04:53

Redis单线程不是单任务:事件循环与YOLO多任务学习之辨

“Redis 到底是单线程还是多线程?答单线程的请回吧。”这个梗在技术社区里流传了很久,但它恰恰暴露了一个常见的概念混淆:单线程、单进程、单任务、多任务,这四个词经常被混在一起讲,结果就是讨论半天,说的…

作者头像 李华
网站建设 2026/8/31 12:00:16

MATLAB蒙特卡洛算法优化非线性规划:从原理到实战

1. 从“暴力穷举”到“智能采样”:蒙特卡洛算法的核心思想 很多刚接触数学建模的同学,一听到“优化”,尤其是“非线性规划”,第一反应就是去找现成的工具箱,比如MATLAB里的 fmincon 。这当然没错,但对于一…

作者头像 李华