Canvas (画布)
Canvas 是一个 节点托管的 WebView,代理可以用来渲染交互式 HTML/CSS/JS 界面。 画布用于:- 可视化数据(图表、图形、仪表板)
- 向用户展示工作流进度
- 构建自定义 UI 组件
- 测试和演示 Web 界面
要求
- 已配对的节点(iOS、Android 或 macOS)
- 网关画布主机已配置(默认情况下由网关 HTTP 服务器提供)
快速开始
1) 导航到画布 URL
<网关主机>可以是网关的 IP、主机名或 MagicDNS 名称。- 画布页面由网关在
/__openclaw__/canvas/路径提供。 - 源文件位于
~/.openclaw/workspace/canvas/index.html(可编辑)。
2) 执行 JavaScript
3) 拍摄快照
Canvas 命令
所有画布命令通过node.invoke 执行,并需要节点在前台运行。
canvas.navigate
导航到 URL。
参数:
url(字符串,必需): 目标 URL。- 使用
""或"/"返回默认脚手架。 - 使用
http://<网关主机>:<端口>/__openclaw__/canvas/加载网关托管的画布。
- 使用
canvas.eval
在画布上下文中执行 JavaScript。
参数:
javaScript(字符串,必需): 要执行的 JS 代码。
canvas.snapshot
捕获画布的屏幕截图。
参数:
format(可选):"jpeg"(默认) 或"png"maxWidth(可选): 最大宽度(像素)quality(可选): JPEG 质量 (0.0-1.0)
{ format, base64 }
示例:
Canvas 主机 (网关)
网关在以下路径提供画布页面:/__openclaw__/canvas/— 主画布页面 (index.html)/__openclaw__/a2ui/— A2UI 主机(用于代理到界面)
- 主画布:
~/.openclaw/workspace/canvas/index.html - A2UI: 内置,由网关提供
编辑画布 HTML
- 编辑
~/.openclaw/workspace/canvas/index.html:
- 保存后,画布会通过实时重载自动刷新(如果已连接)。
A2UI (代理到界面)
A2UI 是一种声明式 UI 协议,用于从代理构建交互式界面。A2UI 命令
canvas.a2ui.push— 推送 A2UI 元素或操作canvas.a2ui.reset— 清除画布并重置 A2UI 状态
items(数组,必需): A2UI 元素或操作的数组
text— 文本块button— 可点击按钮input— 文本输入字段image— 图像(Base64 或 URL)card— 容器卡片
故障排查
”NODE_BACKGROUND_UNAVAILABLE”
画布命令需要节点应用在前台运行。将应用切换到前台并重试。“A2UI_HOST_NOT_CONFIGURED”
网关未广播画布主机 URL。检查网关配置中的gateway.canvasHost。
画布未加载
- 确认网关 HTTP 服务正在运行(与 WebSocket 端口相同,默认
18789)。 - 检查网络连接性(节点能否访问网关主机?)。
- 使用节点的 IP 地址而非
localhost或127.0.0.1。
JavaScript 执行失败
- 确保 JavaScript 是有效的。
- 检查
window.__openclaw上下文是否可用。 - 使用
console.log调试(输出显示在节点控制台中)。