网淘吧来吧,欢迎您!

Canvas技能使用说明

2026-04-01 新闻来源:网淘吧 围观:13
电脑广告
手机广告

画布技能

在已连接的OpenClaw节点上显示HTML内容(Mac应用、iOS、Android)。

概述

画布工具允许您在任意已连接节点的画布视图中呈现网页内容。非常适用于:

Canvas

  • 展示游戏、可视化效果、仪表盘
  • 显示生成的HTML内容
  • 交互式演示

工作原理

架构

┌─────────────────┐     ┌──────────────────┐     ┌─────────────┐
│  Canvas Host    │────▶│   Node Bridge    │────▶│  Node App   │
│  (HTTP Server)  │     │  (TCP Server)    │     │ (Mac/iOS/   │
│  Port 18793     │     │  Port 18790      │     │  Android)   │
└─────────────────┘     └──────────────────┘     └─────────────┘
  1. 画布主机服务器:从canvasHost.root目录提供静态HTML/CSS/JS文件
  2. 节点桥接:将画布URL传递给已连接的节点
  3. 节点应用:在WebView中渲染内容

Tailscale集成

画布主机服务器基于gateway.bind设置进行绑定:

绑定模式服务器绑定到画布URL使用
环回地址127.0.0.1本地主机(仅限本地)
局域网局域网接口局域网IP地址
尾网Tailscale接口Tailscale主机名
自动最佳可用Tailscale > 局域网 > 环回地址

关键洞察:画布主机桥接主机源自桥接主机。当绑定到Tailscale时,节点接收到的URL类似:

http://<tailscale-hostname>:18793/__openclaw__/canvas/<file>.html

这就是为什么本地主机URL不起作用——节点从桥接接收到的是Tailscale主机名!

操作

操作描述
呈现显示画布(可选目标URL)
隐藏隐藏画布
导航导航至新URL
执行在画布中执行JavaScript
截图捕获画布截图

配置

位于~/.openclaw/openclaw.json

{
  "canvasHost": {
    "enabled": true,
    "port": 18793,
    "root": "/Users/you/clawd/canvas",
    "liveReload": true
  },
  "gateway": {
    "bind": "auto"
  }
}

实时重载

liveReload: true(默认)时,画布主机:

  • 监控根目录的变化(通过chokidar)
  • 将WebSocket客户端注入HTML文件
  • 文件变化时自动重载连接的画布

非常适合开发!

工作流程

1. 创建HTML内容

将文件放在画布根目录(默认为~/clawd/canvas/):

cat > ~/clawd/canvas/my-game.html << 'HTML'
<!DOCTYPE html>
<html>
<head><title>My Game</title></head>
<body>
  <h1>Hello Canvas!</h1>
</body>
</html>
HTML

2. 找到您的画布主机URL

检查您的网关是如何绑定的:

cat ~/.openclaw/openclaw.json | jq '.gateway.bind'

然后构建URL:

  • 回环地址http://127.0.0.1:18793/__openclaw__/canvas/<文件>.html
  • 局域网/Tailscale网络/自动http://<主机名>:18793/__openclaw__/canvas/<文件>.html

找到您的Tailscale主机名:

tailscale status --json | jq -r '.Self.DNSName' | sed 's/\.$//'

3. 查找已连接的节点

openclaw nodes list

寻找具有画布功能的Mac/iOS/Android节点。

4. 呈现内容

canvas action:present node:<node-id> target:<full-url>

示例:

canvas action:present node:mac-63599bc4-b54d-4392-9048-b97abd58343a target:http://peters-mac-studio-1.sheep-coho.ts.net:18793/__openclaw__/canvas/snake.html

5. 导航、截图或隐藏

canvas action:navigate node:<node-id> url:<new-url>
canvas action:snapshot node:<node-id>
canvas action:hide node:<node-id>

调试

白屏/内容未加载

原因:服务器绑定与节点期望的URL不匹配。

调试步骤:

  1. 检查服务器绑定:cat ~/.openclaw/openclaw.json | jq '.gateway.bind'
  2. 检查画布所在端口:lsof -i :18793
  3. 直接测试URL:curl http://<主机名>:18793/__openclaw__/canvas/<文件>.html

解决方案:使用与绑定模式匹配的完整主机名,而非localhost。

“需要节点”错误

请始终指定node:<节点ID>参数。

“节点未连接”错误

节点处于离线状态。请使用openclaw nodes list查找在线节点。

内容未更新

若实时重载未生效:

  1. 请检查配置中liveReload: true的设置
  2. 并确保文件位于画布根目录下
  3. 检查日志中的监视器错误

URL路径结构

画布主机从/__openclaw__/canvas/前缀提供服务:

http://<host>:18793/__openclaw__/canvas/index.html  → ~/clawd/canvas/index.html
http://<host>:18793/__openclaw__/canvas/games/snake.html → ~/clawd/canvas/games/snake.html

/__openclaw__/canvas/前缀由CANVAS_HOST_PATH常量定义。

提示

  • 为获得最佳效果,请保持HTML自包含(内联CSS/JS)
  • 使用默认的index.html作为测试页面(包含桥接诊断功能)
  • 画布将持续存在,直到您隐藏它或导航离开
  • 实时重载让开发更快捷——只需保存即可更新!
  • A2UI JSON推送功能正在开发中——目前请使用HTML文件

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏

文章底部电脑广告
手机广告位-内容正文底部

相关文章

您是本站第394038名访客 今日有1篇新文章/评论