🎨 OpenClaw Canvas 完全指南

AI 驱动的可视化 · 交互式演示 · 数据看板
让 AI 直接"画"出你想要的内容

📅 2026-06-09⏱️ 阅读 10 分钟🏷️ Canvas · Visualization · A2UI

1. 什么是 Canvas?

Canvas 是 OpenClaw 的可视化功能,允许 AI Agent 创建、展示、交互和截图网页内容。它本质上是一个受控的浏览器环境,AI 可以:

能力说明操作
🖥️ 展示页面打开一个 URL 或本地 HTMLpresent
⚡ 执行代码在页面中执行 JavaScripteval
📸 截图捕获对页面进行截图snapshot
🤖 AI 生成 UIAI 直接生成可交互的 UIa2ui_push
🔄 重置清空 Canvas 内容a2ui_reset / hide
💡 核心价值:Canvas 让 AI 从"生成文本"进化到"生成可视化内容"。你可以让 AI 画图表、做数据看板、生成交互式演示,然后截图保存或直接展示。

2. Canvas 操作一览

// 展示一个页面 canvas({ action: "present", url: "https://example.com" }) // 执行 JavaScript canvas({ action: "eval", javaScript: "document.body.style.background = 'linear-gradient(135deg, #667eea, #764ba2)'" }) // 截图 canvas({ action: "snapshot", outputFormat: "png" }) // AI 生成 UI canvas({ action: "a2ui_push", jsonl: '{"type":"heading","text":"数据看板"}\n{"type":"paragraph","text":"实时数据"}' }) // 隐藏 Canvas canvas({ action: "hide" })

3. present:展示页面

// 展示远程 URL canvas({ action: "present", url: "https://miaoquai.com/tools/", width: 1200, height: 800 }) // 展示本地文件 canvas({ action: "present", url: "file:///var/www/miaoquai/index.html" }) // 在指定 Gateway 上展示 canvas({ action: "present", url: "https://miaoquai.com", gatewayUrl: "https://my-gateway.example.com" })

4. eval:执行 JavaScript

在 Canvas 中的当前页面上执行 JavaScript,可以实现动态修改、数据提取、交互操作等。

📊 动态修改页面样式

canvas({ action: "eval", javaScript: ` // 修改背景色 document.body.style.background = 'linear-gradient(135deg, #1a1a2e, #16213e)'; document.body.style.color = '#fff'; // 添加动画 const style = document.createElement('style'); style.textContent = '@keyframes fadeIn { from { opacity:0 } to { opacity:1 } }'; document.head.appendChild(style); ` })

📈 提取页面数据

canvas({ action: "eval", javaScript: ` // 提取所有链接 const links = Array.from(document.querySelectorAll('a')) .map(a => ({ text: a.textContent.trim(), href: a.href })); JSON.stringify(links); ` })

5. snapshot:截图捕获

// PNG 截图 canvas({ action: "snapshot", outputFormat: "png", quality: 90 }) // JPEG 截图(更小体积) canvas({ action: "snapshot", outputFormat: "jpeg", quality: 80 }) // 全页面截图 canvas({ action: "snapshot", fullPage: true })
💡 实战技巧:先用 present 打开页面,再用 eval 调整样式,最后用 snapshot 截图。这个三步组合可以生成精美的分享图片。

6. A2UI:AI 生成 UI

A2UI(AI to UI)是 Canvas 最强大的功能,让 AI 直接生成可交互的 UI 组件。

📋 JSONL 格式

// A2UI 使用 JSONL(每行一个 JSON 对象)描述 UI canvas({ action: "a2ui_push", jsonl: [ '{"type":"heading","text":"📊 网站数据看板","level":1}', '{"type":"paragraph","text":"实时监控 miaoquai.com 的关键指标"}', '{"type":"divider"}', '{"type":"heading","text":"今日数据","level":2}', '{"type":"list","items":["页面浏览量: 12,345","独立访客: 3,456","平均停留: 2m 30s"]}', '{"type":"heading","text":"趋势图","level":2}', '{"type":"chart","chartType":"line","data":{"labels":["Mon","Tue","Wed"],"values":[100,150,130]}}' ].join('\n') })

🎨 支持的组件类型

类型说明示例
heading标题{"type":"heading","text":"标题","level":2}
paragraph段落{"type":"paragraph","text":"内容"}
list列表{"type":"list","items":["项1","项2"]}
code代码块{"type":"code","language":"js","code":"..."}
chart图表{"type":"chart","chartType":"bar","data":{}}
table表格{"type":"table","headers":[],"rows":[]}
divider分隔线{"type":"divider"}
image图片{"type":"image","src":"url","alt":"描述"}

7. 实战场景

场景实现方式输出
📊 数据看板A2UI 生成图表 + snapshot 截图分享图片
📰 新闻日报present 本地 HTML + eval 美化精美页面
📈 SEO 报告A2UI 生成表格 + snapshot飞书卡片
🎨 海报生成eval 注入样式 + snapshot社交媒体图片
🔍 代码审查A2UI 代码块 + 高亮审查报告
📱 移动端预览present + 设定小尺寸响应式检查

8. 最佳实践

🚀 让 AI 直接"画"出你想要的内容

探索妙趣AI →