openclaw/openclaw-windows-node

GitHub: openclaw/openclaw-windows-node

OpenClaw 的原生 Windows 配套套件,提供系统托盘应用、gateway 连接管理和 Node 模式远程控制能力,将 Windows PC 接入 OpenClaw AI 助手生态。

Stars: 1875 | Forks: 226

# 🦞 OpenClaw Windows Hub ![OpenClaw Windows Node banner](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/727f0e546a213537.jpg) [OpenClaw](https://openclaw.ai) 的原生 Windows 配套套件——这是一款 AI 驱动的个人助手。 *由 Scott Hanselman 和 Molty 充满 🦞 爱意地打造* ![OpenClaw Windows Hub 托盘菜单](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/71caac70ef213542.png) ![OpenClaw Windows Hub 指挥中心](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/fb173dc0bb213543.png) ![OpenClaw Windows Hub 配对与连接设置](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/c78ab5b435213553.png) ![OpenClaw Windows Hub 活动与诊断](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ed430a5a29213559.png) ## 项目 这个 monorepo 包含了 Windows hub、共享客户端库和 CLI 工具: | 项目 | 描述 | |---------|-------------| | **OpenClaw.Tray.WinUI** | 用于快速访问 OpenClaw 的系统托盘应用 | | **OpenClaw.Shared** | 共享的 gateway 客户端库 | | **OpenClaw.Cli** | 使用托盘设置进行 WebSocket 连接/发送/探测的 CLI 验证器 | ## 🚀 快速开始 从最新的 OpenClaw 发布版直接下载: - [OpenClawCompanion-Setup-x64.exe](https://github.com/openclaw/openclaw/releases/latest/download/OpenClawCompanion-Setup-x64.exe) - [OpenClawCompanion-Setup-arm64.exe](https://github.com/openclaw/openclaw/releases/latest/download/OpenClawCompanion-Setup-arm64.exe) - [OpenClawCompanion-SHA256SUMS.txt](https://github.com/openclaw/openclaw/releases/latest/download/OpenClawCompanion-SHA256SUMS.txt) ### 前置条件 - Windows 10 (20H2+) 或 Windows 11 - .NET 10.0 SDK - https://dotnet.microsoft.com/download/dotnet/10.0 - Windows 10 SDK(用于 WinUI 构建)- 通过 Visual Studio 安装或独立安装 - WebView2 Runtime - 在现代 Windows 上已预装,或从 https://developer.microsoft.com/microsoft-edge/webview2 获取 ### 构建 使用构建脚本来检查前置条件并进行构建: ``` # 检查先决条件 .\build.ps1 -CheckOnly # 构建所有项目 .\build.ps1 # 构建特定项目 .\build.ps1 -Project WinUI ``` 或者直接使用 dotnet 构建: ``` # 构建全部(为获得最佳效果,请使用 build.ps1) dotnet build # 构建 WinUI(需要 runtime identifier 以支持 WebView2) dotnet build src/OpenClaw.Tray.WinUI/OpenClaw.Tray.WinUI.csproj -r win-arm64 # ARM64 dotnet build src/OpenClaw.Tray.WinUI/OpenClaw.Tray.WinUI.csproj -r win-x64 # x64 # 构建 MSIX package(用于摄像头/麦克风同意提示) dotnet build src/OpenClaw.Tray.WinUI -r win-arm64 -p:PackageMsix=true # ARM64 MSIX dotnet build src/OpenClaw.Tray.WinUI -r win-x64 -p:PackageMsix=true # x64 MSIX ``` ### 运行托盘应用 ``` # 构建并启动未打包的 WinUI 托盘应用 .\run-app-local.ps1 # 如果您已经构建过,请跳过重新构建并启动现有的 Debug 输出 .\run-app-local.ps1 -NoBuild # 独立运行,与您的常规托盘设置隔离,以便多个 worktree 可以同时运行 .\run-app-local.ps1 -Isolated # 从 Release 构建版本进行 Alpha 更新测试 .\run-app-local.ps1 -Configuration Release -Isolated -UpdateChannel alpha # 可选:通过 WinAppCLI 使用 Package.appxmanifest 启动 .\run-app-local.ps1 -UseWinApp -NoBuild ``` 默认路径会直接启动未打包的可执行文件。`-UseWinApp` 需要 Microsoft WinAppCLI(`winget install Microsoft.WinAppCLI`),且仅在 您需要进行 manifest/MSIX 相关的启动验证时才需要。 ### 运行 CLI WebSocket 验证器 使用 CLI 在托盘 UI 之外验证 gateway 连接性和 `chat.send`。 ``` # 显示帮助 dotnet run --project src/OpenClaw.Cli -- --help # 使用 %APPDATA%\OpenClawTray\settings.json 中的托盘设置并发送一条消息 dotnet run --project src/OpenClaw.Cli -- --message "quick send validation" # 循环发送并探测 sessions/usage/nodes APIs dotnet run --project src/OpenClaw.Cli -- --repeat 5 --delay-ms 1000 --probe-read --verbose # 覆盖 gateway URL/token 以进行隔离测试 dotnet run --project src/OpenClaw.Cli -- --url ws://127.0.0.1:18789 --token "" --message "override test" ``` ## 📦 OpenClaw.Tray (Molty) 现代 Windows 11 风格的系统托盘配套应用,可连接到您本地的 OpenClaw gateway。 ### 功能 - 🦞 **龙虾品牌设计** - 带有状态颜色的像素风龙虾托盘图标 - 🎨 **现代 UI** - 带有深色/浅色模式支持的 Windows 11 浮出菜单 - 💬 **快速发送** - 通过全局热键 (Ctrl+Alt+Shift+C) 发送消息 - 🔄 **自动更新** - 从 GitHub Releases 自动获取更新 - 🌐 **Web Chat** - 带有 WebView2 的嵌入式聊天窗口 - 📊 **实时状态** - 实时显示会话、频道和使用量 - 🧭 **指挥中心** - 在一个窗口中展示密集的 gateway、频道、使用量、node、配对和白名单诊断 - ⚡ **活动流** - 用于显示实时会话、使用量、node 和通知事件的指挥中心页面 - 🔔 **Toast 通知** - 带有[智能分类](docs/NOTIFICATION_CATEGORIZATION.md)的可点击 Windows 通知 - 📡 **频道控制** - 从菜单中启动/停止 Telegram & WhatsApp - 🖥️ **Node 可观测性** - 带有在线/离线状态和可复制摘要的 Node 清单 - ⏱ **Cron 任务** - 快速访问计划任务 - 🚀 **自启动** - 随 Windows 启动 - ⚙️ **设置** - 完整的配置页面 - 🎯 **首次运行引导** — 6 屏设置向导(连接、权限、聊天、配置) #### 快速发送 scope 要求 快速发送使用 gateway 的 `chat.send` 方法,并要求 operator 设备具有 `operator.write` scope。 如果快速发送失败并提示 `missing scope: operator.write`,Molty 现在会将身份和修复指南复制到您的剪贴板,内容包括: - operator 角色以及托盘应用使用的 `client.id` - gateway 报告的 operator 设备 ID(如果有提供) - 当前授予的 scope(如果有提供) 对于这个特定的错误(`missing scope: operator.write`),原因是 **operator token 的 scope 问题**。更新托盘应用使用的 token 使其包含 `operator.write`,然后重试快速发送。 如果快速发送失败并提示 `pairing required` / `NOT_PAIRED`,这是一个**设备批准**问题。在 gateway 配对批准中批准该托盘设备,重新连接并重试。 ### 菜单部分 - **状态** - Gateway 连接状态,点击查看详情 - **指挥中心** - 包含诊断、频道健康、使用量、会话、node 和可复制修复命令的 Hub - **会话** - 活跃的 agent 会话,带有预览和单会话控制 - **使用量** - 提供商/成本摘要,可快速跳转至活动详情 - **频道** - Telegram/WhatsApp 状态及切换控制 - **Node** - 在线/离线 Node 清单及可复制摘要 - **最近活动** - 带有时间戳的会话、使用量、Node 和通知事件流 - **操作** - Dashboard、Web Chat、快速发送、活动流、历史记录 - **支持与调试** - 日志、配置、诊断文件夹、脱敏后的支持上下文、浏览器设置、端口/功能/node/频道/活动摘要,以及托管的 SSH 隧道重启 - **设置** - 配置与自启动 ### Mac 功能对齐状态 与 [openclaw-menubar](https://github.com/magimetal/openclaw-menubar)(macOS Swift 菜单栏应用)的比较: | 功能 | Mac | Windows | 备注 | |---------|-----|---------|-------| | 菜单栏/托盘图标 | ✅ | ✅ | 彩色编码状态 | | Gateway 状态显示 | ✅ | ✅ | 已连接/已断开 | | PID 显示 | ✅ | ✅ | 指挥中心显示 gateway 监听进程/PID | | 频道状态 | ✅ | ✅ | Mac: Discord / Win: Telegram+WhatsApp | | 会话计数 | ✅ | ✅ | | | 最后检查时间戳 | ✅ | ✅ | 显示在托盘提示中 | | Gateway 启动/停止/重启 | ✅ | ⚠️ | Windows 可以通过托盘的支持与调试以及指挥中心重启托管的 SSH 隧道;未实现外部 gateway 进程控制 | | 查看日志 | ✅ | ✅ | | | 打开 Web UI | ✅ | ✅ | | | 刷新 | ✅ | ✅ | 菜单打开时自动刷新 | | 登录时启动 | ✅ | ✅ | | | 通知切换 | ✅ | ✅ | | ### Windows 专属功能 这些功能在 Windows 版本中可用,但在 Mac 应用中不可用: | 功能 | 描述 | |---------|-------------| | 快速发送热键 | Ctrl+Alt+Shift+C 全局热键 | | 嵌入式 Web Chat | 基于 WebView2 的聊天窗口 | | Toast 通知 | 可点击的 Windows 通知 | | 频道控制 | 启动/停止 Telegram & WhatsApp | | 现代浮出菜单 | 带有深色/浅色模式的 Windows 11 风格 | | Deep links | 带有 IPC 的 `openclaw://` URL scheme | | 首次运行引导 | 6 屏引导设置向导 (欢迎 → 连接 → 向导 → 权限 → 聊天 → 准备就绪) | ### 🔌 Node 模式 (Agent 控制) 在设置中启用 Node 模式后,您的 Windows PC 将成为 OpenClaw agent 可以控制的 **node** —— 就像 Mac 应用一样!该 agent 可以: | 功能 | 命令 | 描述 | |------------|----------|-------------| | **System** | `system.notify`, `system.run`, `system.run.prepare`, `system.which`, `system.execApprovals.get`, `system.execApprovals.set` | 显示 Windows toast 通知,在策略控制下执行命令 | | **Canvas** | `canvas.present`, `canvas.hide`, `canvas.navigate`, `canvas.eval`, `canvas.snapshot`, `canvas.a2ui.push`, `canvas.a2ui.pushJSONL`, `canvas.a2ui.reset` | 显示并控制 WebView2 窗口 | | **Screen** | `screen.snapshot`, `screen.record` | 捕获屏幕截图和固定时长的 MP4 屏幕录像 | | **Camera** | `camera.list`, `camera.snap`, `camera.clip` | 枚举摄像头并捕获静态照片或短视频片段 | | **Speech-to-text** | `stt.transcribe` | 在限定时间内从默认麦克风捕获音频并返回转录后的文本。默认关闭;通过设置开启。启用后,将同时向 gateway 调用者(受 gateway 白名单限制)和本地 MCP 客户端(受 bearer token 限制)播报。 | | **Location** | `location.get` | 在授予权限时返回 Windows 地理位置 | | **Device** | `device.info`, `device.status` | 返回 Windows 主机/应用元数据和轻量级状态 | | **Text-to-speech** | `tts.speak` | 通过 Windows 语音合成朗读文本,或在配置后使用 ElevenLabs | 打包安装的程序会声明摄像头、麦克风和位置功能。当 node 功能首次使用这些受保护的资源之一时,Windows 可能会要求您同意。 #### Node 设置 1. 在设置中**启用 Node 模式**(默认启用) 2. **首次连接**会在 gateway 上创建一个配对请求 3. 在您的 gateway 上**批准该设备**: openclaw devices list # 查找您的 Windows 设备 openclaw devices approve # 批准它 4. **配置 gateway allowCommands** - 将您想要允许的命令添加到 `~/.openclaw/openclaw.json` 的 `gateway.nodes` 下: { "gateway": { "nodes": { "allowCommands": [ "system.notify", "system.run", "system.run.prepare", "system.which", "system.execApprovals.get", "system.execApprovals.set", "canvas.present", "canvas.hide", "canvas.navigate", "canvas.eval", "canvas.snapshot", "canvas.a2ui.push", "canvas.a2ui.pushJSONL", "canvas.a2ui.reset", "screen.snapshot", "camera.list", "camera.snap", "camera.clip", "location.get", "device.info", "device.status", "tts.speak" ] } } } 5. 从您的 Mac/gateway **进行测试**: # 显示通知 openclaw nodes notify --node --title "Hello" --body "From Mac!" # 打开 canvas 窗口 openclaw nodes canvas present --node --url "https://example.com" # 执行 JavaScript (注意:CLI 发送 "javaScript" 参数) openclaw nodes canvas eval --node --javaScript "document.title" # 在 canvas 中渲染 A2UI JSONL (将文件内容作为字符串传递) openclaw nodes canvas a2ui push --node --jsonl "$(cat ./ui.jsonl)" # 截图 openclaw nodes invoke --node --command screen.snapshot --params '{"screenIndex":0,"format":"png"}' # 录制短视频片段 (需要在 gateway 上明确允许 screen.record) openclaw nodes screen record --node --duration 3000 --fps 10 --screen 0 --no-audio --out /tmp/openclaw-windows-screen-record-test.mp4 --json # 列出摄像头 openclaw nodes invoke --node --command camera.list # 拍照 (NV12/MediaCapture 回退) openclaw nodes invoke --node --command camera.snap --params '{"deviceId":"","format":"jpeg","quality":80}' # 在 Windows node 上朗读文本 (需要在设置中启用 TTS,并在 gateway 上允许 tts.speak) openclaw nodes invoke --node --command tts.speak --params '{"text":"Hello from OpenClaw","provider":"windows"}' # 在 Windows node 上执行命令 openclaw nodes invoke --node --command system.run --params '{"command":"Get-Process | Select -First 5","shell":"powershell","timeoutMs":10000}' # 查看 exec 批准策略 openclaw nodes invoke --node --command system.execApprovals # 更新 exec 批准策略 (添加自定义规则) openclaw nodes invoke --node --command system.execApprovals.set --params '{"rules":[{"pattern":"echo *","action":"allow"},{"pattern":"*","action":"deny"}],"defaultAction":"deny"}' #### 指挥中心诊断 从托盘菜单或使用 `openclaw://commandcenter` 打开状态详情/指挥中心。它显示: - 来自 gateway `health` 事件的频道健康状况,包括在没有单独 operator 连接的情况下接收到的 node 模式健康状况 - 活动会话、使用量/成本数据、Node 清单、声明的命令和 Mac 对齐说明 - 白名单诊断,将安全的配套命令与隐私敏感的可选项(如 `screen.record`、`camera.snap` 和 `camera.clip`)区分开来 - 可复制的修复命令,用于安全的白名单修复和待处理的配对批准 - 通过活动流展示的最近活动和 node 调用结果,仅存储命令名称/状态/持续时间(不包含 payload、截图、录像或机密信息) #### 托盘菜单中的 Node 状态 托盘菜单显示 node 连接状态: - 启用时出现 **🔌 Node 模式** 部分 - **⏳ 等待批准...** - 设备需要在 gateway 上进行批准 - **✅ 已配对并连接** - 准备好接收命令 - 点击设备 ID 可将其复制以用于批准命令 ### Deep links OpenClaw 注册了 `openclaw://` URL scheme 以实现自动化和集成: | 链接 | 描述 | |------|-------------| | `openclaw://settings` | 打开设置页面 | | `openclaw://setup` | 打开设置向导 | | `openclaw://chat` | 打开聊天页面 | | `openclaw://commandcenter` | 打开指挥中心诊断 | | `openclaw://activity` | 打开活动页面 | | `openclaw://history` | 打开筛选为通知历史的活动页面 | | `openclaw://dashboard` | 在浏览器中打开 Dashboard | | `openclaw://dashboard/sessions` | 打开特定的 Dashboard 页面 | | `openclaw://dashboard/channels` | 打开频道 Dashboard 页面 | | `openclaw://dashboard/skills` | 打开技能 Dashboard 页面 | | `openclaw://dashboard/cron` | 打开 Cron Dashboard 页面 | | `openclaw://healthcheck` | 运行手动健康检查 | | `openclaw://check-updates` | 运行手动更新检查 | | `openclaw://logs` | 打开当前的托盘日志文件 | | `openclaw://log-folder` | 打开日志文件夹 | | `openclaw://config` | 打开配置文件夹 | | `openclaw://diagnostics` | 打开诊断 JSONL 文件夹 | | `openclaw://support-context` | 复制脱敏后的支持上下文 | | `openclaw://debug-bundle` | 为技术支持复制组合的调试包 | | `openclaw://browser-setup` | 复制 browser.proxy/browser-control 设置指南 | | `openclaw://port-diagnostics` | 复制 gateway/浏览器/隧道端口诊断以及所有者 PID 停止提示 | | `openclaw://capability-diagnostics` | 复制权限、白名单和对齐诊断 | | `openclaw://node-inventory` | 复制 node 功能、命令和策略状态 | | `openclaw://channel-summary` | 复制频道健康状况和启动/停止可用性 | | `openclaw://activity-summary` | 复制最近的托盘活动以进行故障排除 | | `openclaw://extensibility-summary` | 复制频道、技能和 Cron Dashboard 表面指南 | | `openclaw://restart-ssh-tunnel` | 启用时重启由托盘管理的 SSH 隧道 | | `openclaw://send?message=Hello` | 使用预填充文本打开快速发送 | | `openclaw://agent?message=Hello` | 将消息直接发送到已连接的 gateway | 即使 Molty 已经在运行,Deep links 也能工作 - 它们通过 IPC 转发。 ## 📦 OpenClaw.Shared 包含以下内容的共享库: - `OpenClawGatewayClient` - 用于 gateway 协议的 WebSocket 客户端 - `IOpenClawLogger` - 日志记录接口 - 数据模型(SessionInfo、ChannelHealth 等) - 频道控制(通过 gateway 启动/停止频道) ## 开发 ### 项目结构 ``` openclaw-windows-node/ ├── src/ │ ├── OpenClaw.Shared/ # Shared gateway library │ └── OpenClaw.Tray.WinUI/ # System tray app (WinUI 3) ├── tests/ │ ├── OpenClaw.Shared.Tests/ # Shared library tests │ └── OpenClaw.Tray.Tests/ # Tray app helper tests ├── docs/ │ └── images/ # Screenshots ├── openclaw-windows-node.slnx # Solution file ├── README.md ├── LICENSE └── .gitignore ``` ### 配置 设置存储在: - 设置: `%APPDATA%\OpenClawTray\settings.json` - 日志: `%LOCALAPPDATA%\OpenClawTray\openclaw-tray.log` - 一键设置摘要: `%LOCALAPPDATA%\OpenClawTray\Logs\Setup\easy-setup-latest.txt` - 一键设置 JSONL: `%LOCALAPPDATA%\OpenClawTray\Logs\Setup\easy-setup-latest.jsonl` 默认 gateway:`ws://localhost:18789` ### 首次运行 首次运行时,Molty 会启动一个引导式向导,带您完成设置: 1. **欢迎** — 介绍 OpenClaw 并开始设置流程 2. **连接** — 选择本地 gateway、远程 gateway,或稍后配置。粘贴设置代码或手动输入 gateway URL 和 token。使用 Ed25519 设备身份验证测试连接。 3. **向导** — gateway 驱动的配置步骤(AI 提供商选择、个性化设置、通信频道)。步骤由您的 gateway 定义。 4. **权限** — 审查 Windows 系统权限(通知、摄像头、麦克风、屏幕捕获、位置)并提供指向系统设置的链接以授予这些权限。 5. **聊天** — 在由 gateway Web UI 驱动的实时聊天中与您的 agent 见面。 6. **准备就绪** — 总结可用功能,提供登录时启动的选项,以及一个完成按钮。 有关详细的设置说明,请参阅 [docs/SETUP.md](docs/SETUP.md)。有关完整的引导架构,请参阅 [docs/ONBOARDING_WIZARD.md](docs/ONBOARDING_WIZARD.md)。 ## 许可证 MIT 许可证 - 详见 [LICENSE](LICENSE) *前身为 Moltbot,原名为 Clawdbot*
标签:AI助手配套, AI合规, Windows桌面应用, WinUI 3, 系统托盘工具