openclaw-windows-node
构成我们学习最大障碍的是已知的东西,而不是未知的东西。——贝尔纳
https://github.com/openclaw/openclaw-windows-node
当 OpenClaw 穿上 Windows 外套:一篇写给效率玩家的 OpenClaw Windows Hub 深度体验文
如果说 OpenClaw 是一个聪明、能干、随叫随到的 AI 个人助理,那么 openclaw-windows-node 就像是它在 Windows 世界里的分身、管家、联络员和行动中枢。
它不只是一个简单的托盘小工具,也不只是一个配套客户端。它更像是 OpenClaw 在 Windows 桌面上亲手安放的一座前哨站:安静地待在系统托盘里,随时待命;在你需要时,它能打开聊天窗口、查看状态、连接网关、唤起命令中心、快速发消息,甚至让你的 Windows 电脑化身为一个可以被 OpenClaw 智能体调用和控制的节点。
openclaw-windows-node 的仓库描述写得很直接,也很有画面感:
Windows companion suite for OpenClaw - System Tray app, Shared library, Node, and PowerToys Command Palette extension
一句话看懂,就是它为 OpenClaw 带来了一整套 Windows 伴侣能力,包括系统托盘应用、共享库、Node 能力,以及 PowerToys 命令面板扩展。它不是孤零零的一个程序,而是一整个协同工作的套件。
而 README 里的开场也定下了基调:
A native Windows companion suite for OpenClaw - the AI-powered personal assistant.
这个项目最迷人的地方,就在于“native”这个词。它不是把网页硬塞进桌面里装成本地应用,也不是只做一个能连通就算完成任务的壳子。它是在认真地把 OpenClaw 带进 Windows 生态,让托盘、通知、WebView2、系统权限、启动项、深链接、节点能力这些本属于 Windows 桌面的体验,真正和 AI 助手揉成一体。
它到底是什么
从仓库结构来看,这是一个围绕 OpenClaw Windows 体验构建的 monorepo。README 明确列出了三个核心项目:
| 项目 | 说明 |
|---|---|
OpenClaw.Tray.WinUI |
一个基于 WinUI 3 的系统托盘应用,用来快速访问 OpenClaw |
OpenClaw.Shared |
共享网关客户端库 |
OpenClaw.Cli |
一个 CLI 校验工具,用来基于托盘设置进行 WebSocket 连接、发送与探测 |
这三个部分像三个性格不同但配合默契的角色。
OpenClaw.Tray.WinUI 像门面担当,负责你最直观的交互体验。它住在系统托盘里,负责状态展示、菜单交互、快捷入口、聊天视图、诊断页、通知等各种与人打交道的工作。
OpenClaw.Shared 像幕后协调员,它承担共享的网关客户端能力、日志接口、数据模型和频道控制逻辑,是整个 Windows Hub 可以稳定运转的基础设施。
OpenClaw.Cli 则像一个理性、安静、效率优先的工程师朋友。它不讲究 UI 漂亮不漂亮,它更关心链路是否通、消息能不能发、接口有没有响应、配置是不是正确。对于开发者和排障场景来说,它非常实用。
它想解决什么问题
很多 AI 桌面助手项目都有一个共通问题:能力强归强,但它们往往离真正“融入桌面环境”还差一截。
它们可能只停留在浏览器标签页里;
可能只能在某个 Web 控制台中使用;
可能没有系统级入口;
也可能无法把桌面设备本身纳入智能体可调用的能力边界。
而 openclaw-windows-node 做的事情很明确:把 OpenClaw 从“你需要刻意打开它才能用”的状态,变成“它一直在你电脑旁边随时能帮上忙”的状态。
它让 OpenClaw 在 Windows 上拥有了这些更像“活着”的表现:
- 住进系统托盘,低打扰但高可达
- 能通过全局快捷键快速发送消息
- 能嵌入 Web Chat 窗口
- 能显示实时状态、会话、频道、用量和节点信息
- 能发送 Windows Toast 通知
- 能通过深链接被外部自动化拉起
- 能在设置中完成首次引导与权限配置
- 能把当前 Windows 机器作为一个 Node 暴露给 OpenClaw agent 使用
换句话说,它不只是“让 OpenClaw 能在 Windows 上跑”,而是“让 OpenClaw 在 Windows 上像个本地居民”。
最抓人的地方:Molty 住进了托盘
README 里给托盘应用起了一个带点角色感的名字:Molty。
这就很妙。因为当一个工具开始有“人格化入口”的时候,用户对它的感知会从“功能集合”转向“一个陪伴式角色”。
Molty 的定位非常清楚:Modern Windows 11-style system tray companion that connects to your local OpenClaw gateway.
它是一个现代 Windows 11 风格的系统托盘伴侣,连接到你的本地 OpenClaw gateway。
这个“伴侣”二字不是空话。你去看它的功能列表,会发现它确实像一个坐在桌面角落里的机灵助手:
- 像素风龙虾品牌图标,带状态颜色
- 现代化的 Windows 11 风格菜单,支持深浅色模式
- 支持 Quick Send,全局热键一键发消息
- 支持自动更新
- 支持 Web Chat
- 支持实时状态显示
- 提供 Command Center
- 有 Activity Stream 活动流
- 支持 Toast 通知
- 支持 Telegram 和 WhatsApp 频道控制
- 提供节点观测能力
- 可以快速访问 Cron Jobs
- 支持随 Windows 自动启动
- 提供完整设置页
- 首次运行时带 6 屏引导向导
你会发现,这并不是那种“做了一个托盘图标,点开只有三项菜单”的轻量工具。它更像一座紧凑但功能密度很高的控制台,把 OpenClaw 的核心能力、系统能力和运维能力都塞进了一个 Windows 原生入口里。
它安静时像一个坐在角落里的值班员,不说话、不吵闹,只用图标颜色告诉你它状态如何。
它忙起来时又像一个干练的调度员,帮你看会话、查用量、控频道、看节点、翻日志、打开聊天、触发诊断。
真要出问题了,它甚至还像个经验丰富的技术支持,给你复制修复命令、整理支持上下文、打包调试信息。
这不是一个“摆设型托盘应用”,它是一个真正有存在感的桌面入口。
Quick Send:像把一条秘密通道藏进键盘里
如果说哪一项功能最容易让人一用就上头,我会把票投给 Quick Send。
README 写得很明白,它支持通过全局热键发送消息:
Ctrl+Alt+Shift+C
这个组合键本身就带着一点“召唤术”味道。你不需要切窗口,不需要先打开浏览器,也不需要找到某个聊天页面。只要手指一按,Molty 就会像听见暗号一样,把 OpenClaw 唤到面前。
Quick Send 背后调用的是 gateway 的 chat.send 方法,而且它需要 operator.write 作用域。README 还特别说明了两种常见失败场景:
- 如果报
missing scope: operator.write,那说明是 operator token 权限范围不够 - 如果报
pairing required或NOT_PAIRED,那说明是设备尚未审批配对
这里很能看出项目设计上的细腻。它不只是告诉你“失败了”,而是把失败原因人格化为一种可沟通的反馈过程:当权限不够时,它会把身份和修复指引复制到剪贴板;当配对没完成时,它会明确告诉你这是设备审批问题。
这种体验像极了一个懂事的助手:不是只会说“我做不到”,而是会接着补一句“我为什么做不到,以及你下一步该怎么做”。
Command Center:这个项目的中枢神经
如果说托盘菜单是前台,那么 Command Center 就是后台的总控室。
README 对它的描述很密集,几乎把所有关键诊断和状态能力都集中在这里:
- gateway 状态
- channel health
- usage 与成本数据
- sessions
- nodes
- pairing
- allowlist 诊断
- recent activity
- notification 相关事件
- repair commands
这个页面像一个不会睡觉的调度中枢。你点开它,就像推开一扇设备机房的门:所有运行状态、链路信息、节点库存、会话活动、允许的命令、权限问题、修复建议,都在这里排好队等你查看。
更有意思的是,它不是只展示数据,还尽量把这些数据变成可操作的信息。比如:
- 能区分安全命令与隐私敏感命令
- 能提供可复制的修复命令
- 能帮助识别待审批的配对状态
- 活动流里只记录命令名、状态、耗时,不记录 payload、截图、录屏或秘密信息
这背后透露出一种成熟的工程态度:既希望你看得见系统运行脉搏,又不愿意为了“可观察性”牺牲隐私和安全边界。
Command Center 的存在,让这个项目从“桌面配套工具”跃升为“桌面控制中台”。
Windows 专属味道很浓
README 里专门有一节叫 Windows-Only Features,这部分特别值得拿出来说。
这些能力在 Mac app 里没有,但在 Windows 版本里可用:
| 功能 | 说明 |
|---|---|
| Quick Send hotkey | 全局快捷键 Ctrl+Alt+Shift+C |
| Embedded Web Chat | 基于 WebView2 的聊天窗口 |
| Toast notifications | 可点击的 Windows 通知 |
| Channel control | 启停 Telegram 和 WhatsApp |
| Modern flyout menu | Windows 11 风格深浅色菜单 |
| Deep links | openclaw:// URL scheme |
| First-run onboarding | 六屏引导式设置向导 |
这说明它不是在机械地追求“平台对齐”,而是在做“平台尊重”。
它承认不同平台有不同的生态、系统能力和用户习惯。于是它没有死守完全一样的功能排列,而是根据 Windows 世界的原生特征,去做更贴近本地用户习惯的增强。
例如:
- Windows 用户习惯系统托盘和通知中心
- Windows 桌面应用天然适合与深链接、启动项、权限页打通
- WebView2 是 Windows 世界里一个非常现实且有效的嵌入方案
- PowerToys 命令面板扩展也明显是贴着 Windows 高级用户习惯设计的方向
这种“顺着平台脾气做产品”的感觉,很讨喜。
真正厉害的部分:你的 Windows 电脑可以成为 Node
如果前面的内容已经足够让人觉得这是个优秀的桌面伴侣,那么 Node Mode 才是它最有野心的一面。
README 的原话很有冲击力:
When Node Mode is enabled in Settings, your Windows PC becomes a node that the OpenClaw agent can control
也就是说,当你在设置里启用 Node Mode,你的 Windows 电脑就不再只是 OpenClaw 的一个显示终端,而是会变成一个可被 agent 控制、调用和使用的节点。
这一下,关系变了。
之前你是“在 Windows 上使用 OpenClaw”。
开启 Node Mode 后,Windows 机器本身成了 OpenClaw 能力网络的一部分。
README 列出的 Node 能力范围相当丰富:
1. System 能力
支持这些命令:
system.notifysystem.runsystem.run.preparesystem.whichsystem.execApprovals.getsystem.execApprovals.set
这意味着 agent 可以:
- 弹出 Windows 通知
- 执行命令
- 检查命令可用性
- 管理执行审批策略
2. Canvas 能力
支持:
canvas.presentcanvas.hidecanvas.navigatecanvas.evalcanvas.snapshotcanvas.a2ui.pushcanvas.a2ui.pushJSONLcanvas.a2ui.reset
这些能力让 agent 能够操控一个基于 WebView 的可视画布,去展示内容、切换页面、执行脚本、做快照,甚至渲染 A2UI JSONL。
3. Screen 能力
支持:
screen.snapshotscreen.record
也就是截图和定长 MP4 录屏。
4. Camera 能力
支持:
camera.listcamera.snapcamera.clip
也就是列出摄像头、拍照、录短视频。
5. Speech-to-text 能力
支持:
stt.transcribe
可以从默认麦克风采集音频,并在限定时长内转写文本。
6. Location 能力
支持:
location.get
读取 Windows 地理位置。
7. Device 能力
支持:
device.infodevice.status
用于返回设备元信息和轻量状态。
8. Text-to-speech 能力
支持:
tts.speak
可以通过 Windows 语音合成,或者配置 ElevenLabs 来朗读文本。
这一整组能力展开后,你会发现它的气质已经不再是“桌面助手配件”,而是“agent 控制 Windows 环境的本地执行节点”。
它就像给 OpenClaw 装上了一双能走进 Windows 房间里的脚、一双能按按钮的手、一双能看屏幕的眼睛,还有一张能说话的嘴。
Node Mode 的安全边界也写得很诚实
Node 这种能力很强,所以 README 并没有把它写成一种“开箱即用、无脑全开”的夸张宣传,而是非常认真地讲清楚了约束。
比如首次连接会创建 pairing request,需要你去 gateway 上审批设备。
比如命令需要配置在 gateway.nodes.allowCommands 下显式允许,不能用 canvas.* 这种通配符偷懒。
比如某些隐私敏感命令,例如 screen.record,需要额外明确加入 allowlist。
比如 system.run 会受 Windows 节点上的 exec-policy.json 审批策略约束。
比如摄像头、麦克风、定位等能力都与系统权限相关,MSIX 打包版本会弹系统授权提示。
这不是那种“什么都能做”式的炫技 README,而是一份对能力边界和安全模型有敬畏心的 README。
它仿佛在说:
我确实很能干,
但我不会擅自闯进你的房间;
你点头、你批准、你放行,
我才认真把事情办好。
这恰恰会让人更愿意信任它。
深链接:像给整套能力装上了传送门
openclaw:// URL scheme 是这个项目里很有桌面想象力的一部分。
它注册了一整套深链接入口,例如:
openclaw://settingsopenclaw://setupopenclaw://chatopenclaw://commandcenteropenclaw://activityopenclaw://historyopenclaw://dashboardopenclaw://healthcheckopenclaw://check-updatesopenclaw://logsopenclaw://configopenclaw://diagnosticsopenclaw://support-contextopenclaw://debug-bundleopenclaw://restart-ssh-tunnelopenclaw://send?message=Helloopenclaw://agent?message=Hello
这套设计很像给 Molty 身上每个功能都开了一扇门。
你可以从浏览器、脚本、系统自动化、外部工具甚至其他应用里,直接把 Molty 拉到你要的那个场景中去。
你要设置页,它就打开设置。
你要日志,它就去日志。
你要命令中心,它就直奔命令中心。
你要带着消息直接打开发送窗口,它连内容都替你预填好。
而且 README 还提到,这些 deep links 在 Molty 已经运行时也能工作,会通过 IPC 转发。
这种感觉特别像一个训练有素的前台:门铃一响,它知道该把客人带去会议室、档案室、值班台,还是直接领去找负责人。
首次运行体验不是冷冰冰的配置页,而是一场引导式见面
README 里对首次运行的描述非常完整,它不是让用户一上来自己研究配置文件,而是设计了一套 6 屏 onboarding wizard:
- Welcome
- Connection
- Wizard
- Permissions
- Chat
- Ready
这个流程写得很有“陪你上手”的感觉。
- Welcome 先介绍 OpenClaw,并启动设置流程
- Connection 让你选择本地网关、远程网关或稍后配置,也支持粘贴 setup code 或手动填写 gateway URL 和 token
- Wizard 页面承接 gateway 驱动的配置步骤,比如 AI provider、人格设定、通信频道
- Permissions 页面回顾 Windows 权限并提供跳转
- Chat 页面让你直接见到 agent
- Ready 页面总结功能并让你选择是否开机启动
这很像一个初次入住的新朋友,不是把钥匙和一摞说明书扔给你就算结束,而是带你一间房一间房地熟悉:
这是门口,
这是灯的开关,
这是储物柜,
这是紧急出口,
这是你以后常用的房间。
好的 onboarding 从来不是“多做几个页面”,而是减少用户第一次面对复杂系统时的心理摩擦。openclaw-windows-node 在这点上做得很认真。
开发者也没有被忘记
这个项目虽然看上去很偏终端用户体验,但它对开发者也相当友好。
README 提供了很完整的构建、运行和 CLI 校验说明。对于想自己编译、调试、验证链路的人来说,这些内容非常直接。
快速开始
先看前提条件:
- Windows 10 20H2 及以上,或 Windows 11
- .NET 10.0 SDK
- Windows 10 SDK
- WebView2 Runtime
然后最推荐的构建方式是使用构建脚本:
1 | # 检查前置条件 |
如果你习惯直接用 dotnet,也可以这样:
1 | # 构建全部 |
启动托盘应用
如果你想直接跑起这个桌面伴侣,可以用:
1 | # 构建并启动未打包的 WinUI 托盘应用 |
这些命令背后的开发体验是很友好的。它像是在对开发者说:
你只管来,我已经把常见的启动姿势给你备好了。
想快一点,有快速通道。
想隔离环境,有隔离环境。
想测更新,有更新通道。
想验证 manifest 路径,也给你预留了方式。
CLI 校验器:给连接和消息链路做一次体检
OpenClaw.Cli 这一部分特别适合开发调试或链路验证。
README 给出了几组非常实用的命令示例:
1 | # 查看帮助 |
这组命令非常像一套“心跳检测工具”。
当 UI 一切正常时,它是开发者手里的精密探针。
当 UI 表现异常时,它又像一个冷静的医生,可以绕开界面,直击底层链路去确认连接、消息发送、API 探测到底通不通。
在很多项目里,CLI 往往只是配角。但在这个仓库里,它的角色很像“托盘应用的理性后援”。
Node Mode 的配置示例也很有参考价值
README 里给出了 gateway.nodes.allowCommands 的 JSON 配置示例,这对于理解能力边界尤其重要:
1 | { |
这个列表就像门卫手中的准入名单。
谁能进,谁不能进,不靠猜,不靠模糊匹配,而是白纸黑字逐条确认。它的工程哲学很明确:强能力必须搭配可审计、可收敛的授权方式。
Node 测试命令示例很有“远程指挥官”气质
README 里还有一组非常生动的 Node 调用例子。你看这些命令,会很容易想象 agent 如何把 Windows 电脑变成一个可调度的远端执行体。
比如发送通知:
1 | openclaw nodes notify --node <id> --title "Hello" --body "From Mac!" |
比如打开画布:
1 | openclaw nodes canvas present --node <id> --url "https://example.com" |
比如执行 JavaScript:
1 | openclaw nodes canvas eval --node <id> --javaScript "document.title" |
比如截图:
1 | openclaw nodes invoke --node <id> --command screen.snapshot --params '{"screenIndex":0,"format":"png"}' |
比如录屏:
1 | openclaw nodes screen record --node <id> --duration 3000 --fps 10 --screen 0 --no-audio --out /tmp/openclaw-windows-screen-record-test.mp4 --json |
比如列出摄像头:
1 | openclaw nodes invoke --node <id> --command camera.list |
比如拍照:
1 | openclaw nodes invoke --node <id> --command camera.snap --params '{"deviceId":"<device-id>","format":"jpeg","quality":80}' |
比如朗读文本:
1 | openclaw nodes invoke --node <id> --command tts.speak --params '{"text":"Hello from OpenClaw","provider":"windows"}' |
比如执行 PowerShell 命令:
1 | openclaw nodes invoke --node <id> --command system.run --params '{"command":"Get-Process | Select -First 5","shell":"powershell","timeoutMs":10000}' |
这些例子读起来会有一种很鲜明的未来感:
你的 Windows 电脑不再只是一个被动终端,
而像是 OpenClaw 网络里一个能听懂指令、能做动作、能回传结果的现场执行员。
项目结构很清楚,读起来不累
README 给出的结构也比较清爽:
1 | openclaw-windows-node/ |
这种结构一眼看过去就能明白职责边界:
src里是功能实现tests里是测试docs里是文档和截图- 根目录干净直接,不绕
它给人的感觉不是“一个长着很多分支的实验仓库”,而是一个逐渐成型、已经开始重视组织秩序的产品型代码仓库。
配置路径也交代得很实在
README 把关键配置和日志路径都列了出来:
- Settings:
%APPDATA%\OpenClawTray\settings.json - Logs:
%LOCALAPPDATA%\OpenClawTray\openclaw-tray.log - Easy-button setup summary:
%LOCALAPPDATA%\OpenClawTray\Logs\Setup\easy-setup-latest.txt - Easy-button setup JSONL:
%LOCALAPPDATA%\OpenClawTray\Logs\Setup\easy-setup-latest.jsonl
默认网关地址是:
1 | ws://localhost:18789 |
这种信息很基础,但特别重要。一个桌面项目如果连配置、日志、默认地址都不愿意明说,用户和开发者一旦出问题就会非常痛苦。这个仓库在这方面没有遮遮掩掩,像一个把抽屉标签都贴好的管理员,愿意直接告诉你“东西放哪了”。
它为什么会吸引人
这个项目的吸引力,不是来自某一个单点炫技,而是来自整体气质的统一。
它既有桌面应用的亲和力,也有开发工具的务实;
既关心系统托盘这种高频交互入口,也关心节点能力这种更长远的 agent 场景;
既愿意做漂亮的 Windows 11 风格菜单,也愿意老老实实把日志、诊断、allowlist、审批策略写清楚;
既想让终端用户一上来就能通过向导顺滑接入,也没有忘记给开发者留好 CLI、构建脚本和调试路径。
更重要的是,它没有把自己写成一个“万能主角”,而是非常清楚自己的身份:
它是 OpenClaw 在 Windows 世界里的伴侣、桥梁、代言人和执行节点。
它不会喧宾夺主,但它会把 OpenClaw 的存在感拉到你桌面最自然的位置。
它不会要求你适应它,而是努力去适应 Windows 用户的习惯。
它不会只在宣传页上看起来很聪明,而是把聪明尽量落到热键、通知、深链接、诊断、审批、配置和 Node 能力这些真实可用的细节里。
适合谁关注这个项目
如果你属于下面几类人,我会非常建议你看看这个仓库:
- 想在 Windows 上获得更原生 OpenClaw 体验的人
- 喜欢系统托盘式工具和低打扰高效率入口的人
- 想把桌面设备接入 agent 能力体系的人
- 需要一个可调试、可诊断、可扩展的 Windows AI companion 的开发者
- 对 Node、桌面自动化、WebSocket gateway、WinUI 3、WebView2 结合场景感兴趣的人
尤其是最后两类人。因为 openclaw-windows-node 并不只是“能用”,它其实提供了很多值得借鉴的设计思路:
- AI companion 如何做成系统托盘应用
- 桌面 app 如何与 gateway 协作
- 如何在用户体验与系统安全之间做平衡
- 如何让桌面设备变成 agent 网络中的 node
- 如何把深链接、通知、画布、命令执行、设备状态这些能力统一进一个桌面控制中心
最后聊聊它给人的整体印象
读完 README 之后,我最大的感受是,这个项目不像一块冷冰冰的 Windows 客户端拼图,它更像 OpenClaw 认真派来的一位 Windows 驻场代表。
它待在托盘里,看起来低调,但心里装着很多事。
它知道你什么时候需要快速发一句话,什么时候需要看连接状态,什么时候需要翻日志,什么时候需要打开聊天,什么时候需要调试节点,什么时候需要审批一台设备,什么时候只想安安静静让它跟着系统一起启动。
如果说很多桌面助手还停留在“把网页搬到桌面”的阶段,那么 openclaw-windows-node 更像是在问一个更进一步的问题:
既然 AI 助手要长住在 Windows 上,
那它能不能真正学会 Windows 的生活方式?
从 README 和仓库 description 来看,它显然已经在认真回答这个问题了。
而且,它答得不空、不虚,也不悬浮。
它把答案写进了托盘图标、热键、Toast、Command Center、CLI、深链接、引导向导和 Node Mode 里。
这些部分合在一起,让这个项目既有产品味,也有工程味,还有一点难得的拟人温度。
它就像一只守在 Windows 桌面角落里的小龙虾,外表安静,钳子利落,眼神机灵。
你不叫它时,它乖乖守着状态灯。
你一旦叫它,它就能把 OpenClaw 的能力迅速送到你手边。
如果你想看看 AI 助手怎样更自然地融入 Windows 桌面,openclaw-windows-node 是一个很值得打开、很值得细读,也很值得亲手跑起来的仓库。
