Canvas Os 1.0.1

Polar Sponsor
爱发电 赞助
.NET 9.0

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

Canvas OS.

功能概述

Canvas OS.是一项面向实际任务的技能,主要用于Canvas 是一个应用平台.;OpenClaw Canvas 上创建,存储,运行丰富的视觉应用.;

核心要点

  • Philosophy.;
  • You是 OS.;
  • Canvas是窗口.;

使用与执行

Apps是本地建设的,运行于 Canvas.;Rich HT.。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。

结果检查与注意事项

实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。

Canvas OS

Canvas 作为一个应用平台:在 OpenClaw Canvas 上构建、存储并运行富交互可视化应用。

设计理念

你即操作系统(OS)。Canvas 是你的窗口。应用在本地构建,并在 Canvas 上运行。

富交互 HTML/CSS/JS 界面 —— 不仅限于纯文本,支持完整交互、动画与实时数据。

快捷命令

命令 Jarvis 执行操作
“Open [app]” 启动服务端、导航至 Canvas、注入数据
“Build me a [type]” 基于模板创建应用并打开
“Update [element]” 注入 JS 实时修改页面元素
“Show [data] on canvas” 快速 A2UI 展示
“Close canvas” 停止服务端、隐藏 Canvas

工作原理

核心原则:应用运行于 Canvas,而非浏览器标签页。Canvas 即你的 UI 窗口。

Canvas 加载方式

Canvas 具有安全限制,禁止访问本地文件路径。以下三种方式可行:

方式 适用场景 优势 劣势
本地服务器(localhost) 复杂应用、含外部资源 支持全部浏览器特性 需手动管理端口
直接 HTML 注入 快速展示、演示场景 即时生效,无需启动服务端 不支持外部资源,内容大小受限
Data URLs 小型内容 自包含,无依赖 部分系统下不可靠

❌ 不可用方式: file:///path/to/file.html(被 Canvas 安全策略拦截)

📖 参考文档: CANVAS-LOADING.md(含详细指南与排障说明)

辅助脚本: canvas-inject.py —— 格式化 HTML 以适配直接注入

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

~/.openclaw/workspace/apps/[app-name]/
├── index.html    # UI 页面(推荐采用自包含形式)
├── data.json     # 持久化状态数据
└── manifest.json # 应用元数据

2. 通过 localhost 启动服务

cd ~/.openclaw/workspace/apps/[app-name]
python3 -m http.server [PORT] > /dev/null 2>&1 &

3. 导航 Canvas 至 localhost 地址

NODE="Your Node Name"  # 通过命令获取:openclaw nodes status
openclaw nodes canvas navigate --node "$NODE" "http://localhost:[PORT]/"

重要提示: 此操作将应用打开在 Canvas(可视化面板)中,而非浏览器标签页。

4. Agent 通过 JS eval 注入数据

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

注意: 当前 OpenClaw 版本中 openclaw-canvas:// URL Scheme 存在兼容性问题,请改用 http://localhost:。

启动一个应用

该操作的作用: 在 Canvas(可视化面板)中显示应用,而非在浏览器标签页中打开。

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

完整执行流程:

NODE="Your Node Name"
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 因安全沙箱机制禁止使用文件路径(file://);Data URLs 在部分环境下不稳定。此方式无需启动本地服务,可实现即时渲染。

# 示例:使用 canvas 工具
canvas.present(url="about:blank", target=node_name)

html_content = """


    


    

Your Content Here

""" # 转义反引号后注入 js_code = f"""document.open(); document.write(`{html_content}`); document.close();""" canvas.eval(javaScript=js_code, target=node_name)

关键限制: 文件路径(file:///path/to/file.html)因安全策略在 Canvas 中被明确禁止。请始终使用 localhost 或直接注入方式。

构建应用

应用 API 规范

每个应用应暴露 window.app 或 window.[appname] 对象:

window.app = {
  // 更新单个字段值
  setValue: (key, val) => {
    document.getElementById(key).textContent = val;
  },
  
  // 批量更新数据
  loadData: (data) => { /* 渲染全部内容 */ },
  
  // 显示通知
  notify: (msg) => { /* 弹出 toast 提示 */ }
};

双向通信

应用可通过深度链接(deep links)向 Agent 发送指令:

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

// 按钮点击 → 触发 Agent 命令
document.getElementById('btn').onclick = () => {
  sendToAgent('Refresh my dashboard');
};

模板

Dashboard

含统计卡片、进度条、列表等内容的自包含 HTML 应用。

  • 默认端口:9876
  • API 接口:dashboard.setRevenue()、dashboard.setProgress()、dashboard.notify()

Tracker

支持习惯/任务勾选与连续打卡功能的自包含 HTML 应用。

  • 默认端口:9877
  • API 接口:tracker.setItems()、tracker.addItem()、tracker.toggleItem()

快速展示(A2UI)

适用于无需完整应用结构的临时信息展示:

openclaw nodes canvas a2ui push --node "$NODE" --text "
📊 QUICK STATUS

Revenue: $500
Users: 100

Done!
"

端口分配

应用类型 默认端口
Dashboard 9876
Tracker 9877
Timer 9878
Display 9879
Custom 9880+

设计系统

: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. 自包含 HTML —— 内联 CSS/JS,提升可移植性
  2. 深色主题 —— 与 OpenClaw 整体视觉风格保持一致
  3. 暴露应用 API —— 便于 Agent 通过 window.app.* 动态更新
  4. 合理使用 ID —— 为 Agent 需更新的 DOM 元素设置唯一 ID
  5. 实时时间显示 —— 表明应用处于活跃运行状态
  6. 深度链接(Deep Links) —— 支持双向通信能力

故障排查

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

  • 确认使用的是 openclaw nodes canvas navigate,而非普通 open 命令
  • canvas navigate 明确作用于 Canvas 面板

Canvas 显示 “Not Found”?

  • 文件路径不可用: Canvas 出于安全沙箱限制,屏蔽所有 file:/// 协议 URL
  • Data URLs 可能失败: 推荐改用 canvas eval + document.write() 进行直接 HTML 注入
  • 若使用 localhost:请验证服务是否正常运行 —— curl http://localhost:[PORT]/
  • 检查端口号是否正确
  • 请使用 http://localhost:,避免使用存在兼容问题的 openclaw-canvas://

URL 正确但 Canvas 仍显示 “Not Found”?

  • 这是由 Canvas 的安全边界导致:其无法访问本地文件系统
  • 解决方案: 使用 “启动一个应用” 小节中的方法 2(直接 HTML 注入)
  • 或采用方法 1(通过 localhost 提供服务)

应用未响应更新?

  • 检查 window.app API 是否已正确定义:openclaw nodes canvas eval --js "typeof window.app"
  • 确认 JS eval 语法正确:双引号内嵌套单引号

端口已被占用?

  • 终止已有进程:lsof -ti:[PORT] | xargs kill -9

辅助脚本

canvas-inject.py

用于直接 HTML 注入(方法 2)的 Python 辅助工具。

# Python 中调用示例
from canvas_inject import inject_html_to_canvas

html = open("my-dashboard.html").read()
commands = inject_html_to_canvas(html, node_name="Your Node")

# 后续使用 canvas 工具执行返回的指令
canvas.present(**commands["step1_present"])
canvas.eval(**commands["step2_inject"])

或手动遵循 “启动一个应用” 小节中方法 2 的操作模式。

运行要求

  • 支持 Canvas 功能的 OpenClaw(macOS 应用)
  • Python 3(用于运行 http.server)
  • 已配对且具备 Canvas 能力的节点

相关专题

更多
canva可画使用技巧汇总
canva可画使用技巧汇总

本专题汇集了PHP中文网精心整理的Canva可画新手使用技巧大全,专为零基础用户打造。无论你是想制作精美海报、PPT还是社交媒体配图,这里都有从注册登录、模板搜索到AI辅助设计、导出分享的全流程保姆级教程。通过深入浅出的图文指南,帮助你快速跨越设计门槛,轻松掌握Canva可画的实用操作,让每个人都能成为设计达人!

2026.05.19

164

21

canva可画硬件门槛与适配设备指南
canva可画硬件门槛与适配设备指南

本专题聚焦Canva可画的硬件门槛与适配设备指南,全面解析网页版与App在不同终端上的运行要求。结合PHP中文网提供的专业技术教程,帮助用户精准排查设备卡顿、白屏等问题,快速判断电脑、平板及手机是否满足流畅使用Canva可画的各项硬性指标。

2026.05.19

74

11

canva可画新手使用指南
canva可画新手使用指南

本专题专为零基础用户打造,系统讲解Canva可画的核心功能与实用技巧。从注册登录、模板选择到图文编辑、导出分享,手把手带你快速上手。涵盖海报、PPT、简历等高频场景,结合AI工具提升效率,让你5分钟做出专业级设计,轻松应对学习、工作与社交需求。

2026.05.06

360

25

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

2026.11.12

0

15

Go-Zero安装与goctl环境配置教程
Go-Zero安装与goctl环境配置教程

本专题围绕Go-Zero的安装与工具链配置展开,讲清Go版本要求、goctl安装方式、代理镜像、protoc依赖与环境变量设置,说明多版本共存、升级回退与CI流水线安装的做法,并整理安装阶段的常见报错与验证步骤。

2026.11.12

0

15

Go-Zero零基础入门教程
Go-Zero零基础入门教程

本专题整理Go-Zero的入门知识,从框架定位、环境准备到跑通第一个API服务,讲清目录分层、配置加载、日志与中间件的基本用法,并对比Gin、Kratos的差异,帮助Go开发者建立整体认知,判断它是否适合当前项目。

2026.11.12

0

15

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

2026.11.06

0

12

Postman请求头Headers怎么设置
Postman请求头Headers怎么设置

围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。

2026.11.06

0

13

Postman接口请求发送教程
Postman接口请求发送教程

详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。

2026.11.06

0

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Canva使用教程
Canva使用教程

共0课时 | 0人学习