.agents/skills是按需触发的技能包,近期迭代重点为 Skill 与 MCP 工具联动。提供 4 种部署方案:无沙箱直跑、单 Docker 沙箱、会话隔离多容器、源码开发部署,多容器模式可实现对话级隔离。平台可对接 GitHub、Slack、Notion,实现 Issue 拆解、PR 评审等工程自动化。部署需留意安全风险,无沙箱模式 Agent 拥有宿主机文件权限,公网部署需严格加固。
10 个关键问题Q&A
-
Q:Agent Canvas 是什么?A:OpenHands 的自托管控制中心,用来统一管理、调度多款 ACP 兼容编码 Agent。 -
Q:ACP 协议作用是什么?A:Agent Client Protocol,基于 stdio JSON-RPC,实现不同 Agent 在同一面板接入。 -
Q:Agent Canvas 本身包含 LLM 执行能力吗?A:不包含,仅做编排转发,Agent 后端独立完成 LLM 调用与工具执行。 -
Q:AGENTS.md 和 .agents/skills 区别?A:AGENTS.md 会话必加载;skills 按路径、关键词条件按需动态启用。 -
Q:四种部署模式哪个隔离性最好?A:多 Docker 沙箱模式,每个对话独立容器,互不干扰。 -
Q:可以接入自研 Agent 吗?A:可以,只要实现 ACP 标准协议即可接入 Canvas。 -
Q:automation 仓库负责什么?A:任务调度、定时任务、webhook 事件分发、运行历史记录。 -
Q:无沙箱部署有什么风险?A:Agent 直接拥有宿主机完整文件读写权限,仅适合本地可信环境。 -
Q:支持哪些第三方服务集成?A:GitHub、Slack、Linear、Notion,用于工程自动化。 -
Q:当前版本主要迭代方向?A:强化 Skill 体系,打通 MCP 工具,打造可复用 Agent 工作流。
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
三、目录结构解读)
.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 前) .githubCI、workflow、PR 模板 .huskygit 提交钩子 .openhands旧配置目录,早期版本 .prPR 相关辅助脚本 .screenshots截图资产 __mocks__ / __tests__ / tests/e2e单元测试、E2E 测试(Playwright) binCLI 启动脚本( agent-canvas命令)config前端 & 服务配置 dockerDocker 镜像定义、sandbox 方案 docs文档,SELF_HOSTING.md 自托管安全指南 electronElectron 桌面端打包 examples/acp-dockerACP Agent 在 Docker 里运行示例 helm/agent-canvasK8s Helm Chart,企业部署 public静态资源 scripts构建、发布脚本 srcCanvas 前端核心代码(React+Vite+Tailwind) tools辅助工具
根文件重点
package.jsonnpm 包 @openhands/agent-canvas,Node24+、uv 是依赖vite.config.ts前端构建 playwright.*.config.tsE2E 测试,支持 mock LLM AGENTS.md仓库级 Agent 指令 release-please版本自动发布
四、4 种部署模式(README 里的 Quickstart)
- 无沙箱(直接宿主机跑)
npm install -g @openhands/agent-canvas,agent 直接读写本机文件,风险高,适合本地信任场景
bash
agent-canvas # 全栈启动
agent-canvas --frontend-only
agent-canvas --backend-only
PROJECTS_PATH
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:
7df1e5cPR19144:src + .agents/skills → Skill 系统增强(技能、触发器、MCP 编排是当前重点演进方向) c28f46fPR19163:eslint 配置 → 代码规范、工程化收紧说明当前版本主线:强化 Skill 体系,让用户 / 仓库可以打包可复用 Agent 工作流,搭配 MCP 工具生态。

