📌 项目地址:openclaw/openclaw-windows-node | ⭐ 1,171 颗星 | 🔧 C# | 📜 未标注
OpenClaw是一款AI个人助手,但它的Windows客户端并没有把整个后端服务跑在Windows上,而是设计为轻量托盘应用加WSL网关的组合。这个仓库(1171星,C#,作者是Scott Hanselman和Molty)包含三个组件:系统托盘UI、共享库、以及一个针对WebSocket的CLI验证工具。对开发者和普通用户来说,它提供的不是AI本身,而是Windows上管理OpenClaw网关的本地环境和调试手段。
三个组件各自干什么
OpenClaw.Tray.WinUI:WinUI 3写的系统托盘应用。常驻任务栏右下角,启动/停止/访问OpenClaw服务都通过它。普通用户安装后主要面对的就是这个。
OpenClaw.Shared:共享客户端库。网关客户端逻辑都封装在这里,托盘和CLI都引用它。如果要做自定义集成,这个库是入口。
OpenClaw.Cli:命令行验证器。它能用托盘应用的配置去连接WebSocket、发送消息、探测服务状态。调试时不用开GUI,直接跑一条命令就能知道网关通不通。我试过,对排查连接问题很实用。
安装:两种路径,不用纠结
最终用户直接下载exe安装包,不需要.NET SDK、不需要Visual Studio。项目提供了x64和ARM64两个安装包,以及SHA256校验文件:
安装步骤看 docs/SETUP.md,按向导走就行。
如果要从源码构建(比如你想改点东西或者跑CI),需要准备:
- Windows 10 (20H2+) 或 Windows 11
- .NET 10.0 SDK
- Windows 10 SDK(编译WinUI必须,要么装Visual Studio,要么装独立SDK)
- WebView2 Runtime(现代Windows自带,没有的去微软官网下载)
然后运行项目提供的 build.ps1 脚本。推荐用脚本而不用裸 dotnet build,因为脚本会检查依赖是否齐全:
# 只检查环境,不编译
.build.ps1 -CheckOnly
# 编译全部项目
.build.ps1
# 只编译WinUI托盘
.build.ps1 -Project WinUI
如果非要自己用 dotnet build 编译WinUI,必须指定运行时标识符,否则会缺少WebView2支持:
dotnet build src/OpenClaw.Tray.WinUI/OpenClaw.Tray.WinUI.csproj -r win-arm64
dotnet build src/OpenClaw.Tray.WinUI/OpenClaw.Tray.WinUI.csproj -r win-x64
要打MSIX包(这样摄像头/麦克风权限弹窗会走系统标准流程),加 -p:PackageMsix=true:
dotnet build src/OpenClaw.Tray.WinUI -r win-arm64 -p:PackageMsix=true
dotnet build src/OpenClaw.Tray.WinUI -r win-x64 -p:PackageMsix=true
运行托盘:隔离模式是个好设计
构建后启动用 run-app-local.ps1:
# 先构建再启动
.run-app-local.ps1
# 跳过构建,直接启动已有的Debug输出
.run-app-local.ps1 -NoBuild
# 隔离模式:新建一套独立的托盘设置,多个工作树可以同时跑不冲突
.run-app-local.ps1 -Isolated
隔离模式对开发者很友好。比如你同时在维护两个分支,git worktree 拉到不同目录,每个目录里用 -Isolated 启动,它们各自用独立的配置,互相不干扰。
为什么要用WSL网关
项目没有在Windows上直接跑OpenClaw后端,而是自动创建一个名为 OpenClawGateway 的WSL发行版(“app-owned”,归应用管理)。网关运行在这个Linux环境里,和Windows宿主隔离开。这样设计有两个好处:
- 隔离性:网关崩溃或者被恶意利用,影响范围限制在WSL里。
- 权限管理:WSL内部的
openclaw用户管理配置,root管理受保护文件。如果手动修改openclaw.json,必须通过openclaw用户操作;操作受保护文件则用root。具体流程看docs/WSL_GATEWAY_ADMIN.md。
这种思路把复杂的东西(权限、系统服务、网络监听)放在Linux容器里,Windows只做轻量托盘和CLI。对开发者来说,CLI可以脱离图形环境单独验证WebSocket健康状态,排错路径清晰。
说几个值得注意的点
- README里没写许可证,商用前需要自行确认。
- CLI的配置依赖托盘应用。必须先启动托盘、完成基本设置,CLI才能读出正确的网关地址和密钥。
- 如果打包MSIX,生成的文件会带有签名和权限声明,适合企业分发。
- WSL发行版是自动管理的,不要手工
wsl --install别的版本,项目会自己处理。
整体来看,这个项目把“本地AI助手的Windows端”拆成了两个层次:用户可见的托盘和CLI,以及隐藏的WSL网关。隔离做得彻底,调试工具也趁手。如果你需要给OpenClaw开发插件或者排查网关问题,CLI和隔离模式是你最常碰到的。