大数跨境

OpenHands Agent Canvas 技术要点解析

OpenHands Agent Canvas 技术要点解析 苏哲管理咨询
2026-11-03
8
导读:Agent Canvas 是 OpenHands 推出的自托管编码 Agent 控制平面,依托 ACP 协议,可统一调度原生 OpenHands、Claude Code、Gemini CLI 等各类兼
编者摘要:Agent Canvas 是 OpenHands 推出的自托管编码 Agent 控制平面,依托 ACP 协议,可统一调度原生 OpenHands、Claude Code、Gemini CLI 等各类兼容 Agent,支持本地、虚拟机、Docker、云端多后端自由切换。项目采用多仓库拆分架构:本仓库承载前端 UI、编排与技能配置,Agent 运行时、API 由 software-agent-sdk 提供,automation 负责定时、Webhook 自动化调度。仓库内置两套提示体系:AGENTS.md 为全局固定指令,.agents/skills是按需触发的技能包,近期迭代重点为 Skill 与 MCP 工具联动。提供 4 种部署方案:无沙箱直跑、单 Docker 沙箱、会话隔离多容器、源码开发部署,多容器模式可实现对话级隔离。平台可对接 GitHub、Slack、Notion,实现 Issue 拆解、PR 评审等工程自动化。部署需留意安全风险,无沙箱模式 Agent 拥有宿主机文件权限,公网部署需严格加固。

10 个关键问题Q&A

  1. Q:Agent Canvas 是什么?A:OpenHands 的自托管控制中心,用来统一管理、调度多款 ACP 兼容编码 Agent。
  2. Q:ACP 协议作用是什么?A:Agent Client Protocol,基于 stdio JSON-RPC,实现不同 Agent 在同一面板接入。
  3. Q:Agent Canvas 本身包含 LLM 执行能力吗?A:不包含,仅做编排转发,Agent 后端独立完成 LLM 调用与工具执行。
  4. Q:AGENTS.md 和 .agents/skills 区别?A:AGENTS.md 会话必加载;skills 按路径、关键词条件按需动态启用。
  5. Q:四种部署模式哪个隔离性最好?A:多 Docker 沙箱模式,每个对话独立容器,互不干扰。
  6. Q:可以接入自研 Agent 吗?A:可以,只要实现 ACP 标准协议即可接入 Canvas。
  7. Q:automation 仓库负责什么?A:任务调度、定时任务、webhook 事件分发、运行历史记录。
  8. Q:无沙箱部署有什么风险?A:Agent 直接拥有宿主机完整文件读写权限,仅适合本地可信环境。
  9. Q:支持哪些第三方服务集成?A:GitHub、Slack、Linear、Notion,用于工程自动化。
  10. Q:当前版本主要迭代方向?A:强化 Skill 体系,打通 MCP 工具,打造可复用 Agent 工作流。
附录 OpenHands / Agent Canvas OpenHands logo

OpenHands 现在对外主产品叫 Agent Canvas:自托管、面向编码 Agent 的开发者控制中心,核心亮点是 ACP(Agent Client Protocol),可以统一界面调度多家编码 Agent,不绑定单一模型 / Agent 实现OpenHands

Agent Canvas界面

一、概览

Agent Canvas = 前端控制面板 + 编排层,用来启动对话、管理多后端、配置自动化(GitHub/Slack/Linear/webhook/ 定时);Agent 执行引擎不在这个仓库,拆到 software-agent-sdk仓库里。它可以调度:OpenHands 原生 Agent、Claude Code、Codex、Gemini CLI、Pi、OpenCode,任何实现 ACP 协议的 Agent 都可以接入OpenHands。

二、仓库分工(多仓库拆分,非常关键)

数据流:Canvas 前端 → TS Client → Agent Server(SDK)→ ACP 子进程(Claude Code 等第三方 Agent),自动化服务负责触发任务、派发给 Agent Server

npm


三、目录结构解读)

  1. .agents/skills(重点,ak684 近期提交 PR19144 就是改这里)
    项目级 Skill 目录:可复用的 Agent 能力包,SKILL.md带 frontmatter(触发器、匹配路径、关键词),会话启动时加载,满足条件动态注入上下文;支持绑定 MCP 工具。
    • AGENTS.md
      :仓库全局固定提示词,每次会话必加载
    • .agents/skills/
      :按需触发的技能(code review、测试、依赖升级等),和 AGENTS.md 分工明确OpenHandsak684 是这个仓库活跃贡献者,最近两个 PR:
    • PR#19144:.agents/skills相关能力迭代(18h 前)
    • PR#19163:eslint 配置、代码规范(20h 前)
  2. .github
    CI、workflow、PR 模板
  3. .husky
    git 提交钩子
  4. .openhands
    旧配置目录,早期版本
  5. .pr
    PR 相关辅助脚本
  6. .screenshots
    截图资产
  7. __mocks__ / __tests__ / tests/e2e
    单元测试、E2E 测试(Playwright)
  8. bin
    CLI 启动脚本(agent-canvas命令)
  9. config
    前端 & 服务配置
  10. docker
    Docker 镜像定义、sandbox 方案
  11. docs
    文档,SELF_HOSTING.md 自托管安全指南
  12. electron
    Electron 桌面端打包
  13. examples/acp-docker
    ACP Agent 在 Docker 里运行示例
  14. helm/agent-canvas
    K8s Helm Chart,企业部署
  15. public
    静态资源
  16. scripts
    构建、发布脚本
  17. src
    Canvas 前端核心代码(React+Vite+Tailwind)
  18. tools
    辅助工具

根文件重点

  • package.json
    npm 包 @openhands/agent-canvas,Node24+、uv 是依赖
  • vite.config.ts
    前端构建
  • playwright.*.config.ts
    E2E 测试,支持 mock LLM
  • AGENTS.md
    仓库级 Agent 指令
  • release-please
    版本自动发布

四、4 种部署模式(README 里的 Quickstart)

  1. 无沙箱(直接宿主机跑)
:npm install -g @openhands/agent-canvas,agent 直接读写本机文件,风险高,适合本地信任场景

bash

agent-canvas # 全栈启动
agent-canvas --frontend-only
agent-canvas --backend-only

单 Docker 沙箱
所有 Agent 共用一个容器,挂载项目目录 PROJECTS_PATH
多 Docker 沙箱(推荐隔离)
每个对话独立容器,OH_CONVERSATION_RUNTIME=docker,并发隔离,互不干扰
源码启动
npm ci && npm run dev,开发调试,访问 http://127.0.0.1:8000

安全要点:默认监听 127.0.0.1;公网暴露必须读 SELF_HOSTING.md,不要随便开 AGENT_CANVAS_ALLOW_LAN_SESSION_KEY

五、ACP 协议核心(区别于其他 Agent 平台的关键)

ACP = Agent Client Protocol,基于 stdio JSON-RPC:

  • Canvas 不直接调用 LLM;Agent Server 拉起第三方 Agent CLI 作为子进程
  • 子进程(Claude Code/Gemini CLI 等)自己管理 API Key、LLM 调用、工具
  • Canvas 只负责转发对话、渲染返回、管理会话、记录历史好处:原有 Agent 订阅、模型、能力全部保留,统一用一个控制台管理、编排自动化OpenHands

六、Automation 自动化能力

可以绑定:GitHub、Slack、Linear、Notion;触发方式:

  • 定时 cron
  • Webhook(PR、Issue、CI 事件)
  • 手动触发典型场景:收到 GitHub Issue 自动拆解任务、PR 自动代码评审、日报自动生成并推送 Slack。

七、ak684 近期提交的信号

ak684 最近连续两个高频 PR:

  1. 7df1e5c
    PR19144:src + .agents/skills → Skill 系统增强(技能、触发器、MCP 编排是当前重点演进方向)
  2. c28f46f
    PR19163:eslint 配置 → 代码规范、工程化收紧说明当前版本主线:强化 Skill 体系,让用户 / 仓库可以打包可复用 Agent 工作流,搭配 MCP 工具生态。

【声明】内容源于网络
0
0
苏哲管理咨询
为企业及组织提供AI+战略、数智化转型咨询及观点、建议等
内容 2455
粉丝 0
苏哲管理咨询 为企业及组织提供AI+战略、数智化转型咨询及观点、建议等
总阅读81.7k
粉丝0
内容2.5k