返回顶部
c

canvas-osCanvas应用平台

Canvas as an app platform. Build, store, and run rich visual apps on the OpenClaw Canvas.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.1
安全检测
已通过
2,649
下载量
免费
免费
7
收藏
概述
安装方式
版本历史

canvas-os

Canvas OS

Canvas 作为一个应用平台。在 OpenClaw Canvas 上构建、存储和运行丰富的可视化应用。

理念

你是一个操作系统。Canvas 是窗口。应用在本地构建,在 Canvas 上运行。

丰富的 HTML/CSS/JS 用户界面 — 不仅仅是文本。完整的交互性、动画、实时数据。

快速命令

命令Jarvis 执行的操作
打开 [应用]启动服务器,导航 Canvas,注入数据
为我构建一个 [类型]
从模板创建应用,打开它 | | 更新 [元素] | 注入 JS 以实时修改 | | 在 canvas 上显示 [数据] | 快速 A2UI 显示 | | 关闭 canvas | 停止服务器,隐藏 Canvas |

工作原理

关键原则: 应用在 Canvas 上运行,而不是在浏览器标签页中。Canvas 是你的 UI 窗口。

Canvas 加载方法

Canvas 存在安全限制,会阻止文件路径访问。有三种方法可行:

方法何时使用优点缺点
本地服务器复杂应用、外部资源完整的浏览器功能需要端口管理
直接 HTML 注入
快速显示、演示 | 即时,无需服务器 | 无外部资源,大小限制 |
| 数据 URL | 小内容 | 自包含 | 在某些系统上不可靠 |

❌ 不适用: file:///path/to/file.html(被 Canvas 安全机制阻止)

📖 参见: CANVAS-LOADING.md 获取详细指南 + 故障排除

辅助脚本: canvas-inject.py — 格式化 HTML 用于直接注入

1. 应用是 HTML/CSS/JS 文件

~/.openclaw/workspace/apps/[应用名称]/
├── index.html # 用户界面(建议自包含)
├── data.json # 持久化状态
└── manifest.json # 应用元数据

2. 通过本地服务器提供服务

bash cd ~/.openclaw/workspace/apps/[应用名称] python3 -m http.server [端口] > /dev/null 2>&1 &

3. 将 Canvas 导航到本地服务器

bash NODE=你的节点名称 # 从以下命令获取:openclaw nodes status openclaw nodes canvas navigate --node $NODE http://localhost:[端口]/

重要: 这会在 Canvas(可视化面板)上打开应用,而不是在浏览器中。

4. 代理通过 JS eval 注入数据

bash openclaw nodes canvas eval --node $NODE --js app.setData({...})

注意: openclaw-canvas:// URL 方案在当前 OpenClaw 版本中存在一些问题。请使用 http://localhost: 替代。

打开应用

功能说明:Canvas(可视化面板)上显示应用,而不是在浏览器标签页中。

方法 1:本地服务器(推荐用于复杂应用)

完整流程:
bash
NODE=你的节点名称
PORT=9876
APP=my-app

1. 终止端口上的现有服务器

lsof -ti:$PORT | xargs kill -9 2>/dev/null

2. 启动服务器

cd ~/.openclaw/workspace/apps/$APP python3 -m http.server $PORT > /dev/null 2>&1 &

3. 等待服务器启动

sleep 1

4. 导航 Canvas

openclaw nodes canvas navigate --node $NODE http://localhost:$PORT/

5. 注入数据

openclaw nodes canvas eval --node $NODE --js app.loadData({...})

方法 2:直接 HTML 注入(用于快速显示)

何时使用: Canvas 中文件路径无法使用(安全沙箱)。数据 URL 可能不可靠。使用此方法无需本地服务器即可即时显示。

python

使用 canvas 工具的示例


canvas.present(url=about:blank, target=node_name)

html_content =






你的内容在这里




转义反引号并注入

js_code = fdocument.open(); document.write({html_content}); document.close();

canvas.eval(javaScript=jscode, target=nodename)

关键限制: Canvas 出于安全原因阻止文件路径(file:///path/to/file.html)。始终使用本地服务器或直接注入。

构建应用

应用 API 约定

每个应用都应暴露一个 window.app 或 window.[应用名称] 对象:

javascript
window.app = {
// 更新值
setValue: (key, val) => {
document.getElementById(key).textContent = val;
},

// 批量更新
loadData: (data) => { / 渲染所有 / },

// 通知
notify: (msg) => { / 显示提示 / }
};

双向通信

应用通过深度链接发送命令返回:

javascript
function sendToAgent(message) {
window.location.href = openclaw://agent?message=${encodeURIComponent(message)};
}

// 按钮点击 → 代理命令
document.getElementById(btn).onclick = () => {
sendToAgent(刷新我的仪表盘);
};

模板

仪表盘

统计卡片、进度条、列表。自包含 HTML。
  • - 默认端口:9876
  • API:dashboard.setRevenue()、dashboard.setProgress()、dashboard.notify()

追踪器

带复选框和连续打卡记录的习惯/任务。自包含 HTML。
  • - 默认端口:9877
  • API:tracker.setItems()、tracker.addItem()、tracker.toggleItem()

快速显示(A2UI)

用于无需完整应用的临时显示:

bash
openclaw nodes canvas a2ui push --node $NODE --text
📊 快速状态

收入:\$500
用户:100

完成!

端口分配

应用类型默认端口
仪表盘9876
追踪器
9877 | | 计时器 | 9878 | | 显示器 | 9879 | | 自定义 | 9880+ |

设计系统

css
:root {
--bg-primary: #0a0a0a;
--bg-card: #1a1a2e;
--accent-green: #00d4aa;
--accent-blue: #4a9eff;
--accent-orange: #f59e0b;
--text-primary: #fff;
--text-muted: #888;
--border: #333;
}

最佳实践

  1. 1. 自包含 HTML — 内联 CSS/JS 以便移植
  2. 深色主题 — 匹配 OpenClaw 美学风格
  3. 暴露应用 API — 让代理通过 window.app.* 更新
  4. 使用 ID — 在代理将要更新的元素上
  5. 实时时钟 — 显示应用正在运行
  6. 深度链接 — 用于双向通信

故障排除

应用在浏览器中打开而不是在 Canvas 中?

  • - 确保你使用的是 openclaw nodes canvas navigate,而不仅仅是 open
  • Canvas 导航专门针对 Canvas 面板

Canvas 上显示未找到?

  • - 文件路径不起作用: Canvas 出于安全原因阻止 file:/// URL(沙箱)
  • 数据 URL 可能失败: 改用通过 canvas eval + document.write() 的直接 HTML 注入
  • 对于本地服务器:验证服务器是否正在运行:curl http://localhost:[端口]/
  • 检查端口是否正确
  • 使用 http://localhost: 而不是 openclaw-canvas://(URL 方案存在问题)

即使 URL 正确,Canvas 仍显示未找到?

  • - 这是安全边界:Canvas 无法访问本地文件系统
  • 解决方案: 使用打开应用部分中的方法 2(直接 HTML 注入)
  • 或通过本地服务器提供服务(方法 1)

应用不更新?

  • - 检查 window.app API 是否已定义:openclaw nodes canvas eval --js typeof window

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 canvas-os-1776369920 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 canvas-os-1776369920 技能

通过命令行安装

skillhub install canvas-os-1776369920

下载

⬇ 下载 canvas-os v1.0.1(免费)

文件大小: 13.48 KB | 发布时间: 2026-4-17 14:52

v1.0.1 最新 2026-4-17 14:52
Canvas OS 1.0.1 — Adds detailed Canvas loading instructions and direct HTML injection support.

- Added `CANVAS-LOADING.md` with detailed guidance and troubleshooting for loading content in Canvas.
- Added `canvas-inject.py` helper script for injecting HTML directly into Canvas.
- Expanded SKILL.md with a new "How It Works" section on security boundaries, supported loading methods, and direct injection usage.
- Updated SKILL.md homepage link.
- Added a troubleshooting section and clearer separation of localhost and direct HTML injection methods.

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部