基础设施 / 自托管AI智能体
在 Windows 11 上原生安装 OpenClaw #
此前,我们已经验证了在 Windows Server 2019 上原生安装 OpenClaw 的方法。
这次,我们在 Windows 11 上测试了同样的原生安装路线。
我们在此公开验证记录,看看在 Server 2019 上遇到的诸多障碍是否会在 Windows 11 上重现,
还是能够顺利运行。
Windows 11
原生安装
pnpm
GPUStack
自托管AI
本文是《在 Windows Server 2019 上安装 OpenClaw(完整版)》的延续。
关于 Server 2019 验证的详细内容,请参阅该文章。
为什么我们选择原生路线而非WSL2 #
在 Windows 11 上,只需一条 wsl --install 命令即可安装 WSL2 与 Ubuntu,
因此通常情况下 WSL2 路线要轻松得多。
但我们仍然选择了原生路线,因为我们的目标是希望操作Windows机器本身。
| 想要执行的操作 | WSL2 | 原生 |
|---|---|---|
| 文件操作(Linux侧) | ◎ | △ |
| 文件操作(Windows侧) | ○(经由 /mnt/c) | ◎ |
| 网页浏览与搜索 | ◎ | ◎ |
| 代码执行与自动化 | ◎ | ◎ |
| PowerShell执行 | ○(经由调用) | ◎ |
| Windows服务管理 | △ | ◎ |
| 注册表操作 | ✕ | ◎ |
| WMI与COM操作 | ✕ | ◎ |
| Windows GUI操作 | ✕ | ◎(需启用skill) |
| systemd服务启用 | ◎ | ✕ |
| 稳定性与功能完整性 | ◎ | △ |
如果想把Windows用作能够操作一切的智能体,原生安装是唯一选择。
如果重点在于信息收集、代码生成和任务自动化,WSL2会更轻松。
环境配置 #
OpenClaw主机
- Windows 11
- OpenClaw v2026.4.5(pnpm安装)
- Node.js v22.14.0
- 网关端口:18789
模型与搜索后端
- GPUStack + vLLM 0.17.1
- Qwen2.5-14B-Instruct
- SearXNG(本地部署)
- Custom Provider(OpenAI兼容)
安装步骤 #
安装 Git for Windows #
npm解析依赖时需要用到Git。请在管理员权限的PowerShell中运行。
curl.exe -L -o git.exe "https://github.com/git-for-windows/git/releases/download/v2.47.1.windows.1/Git-2.47.1-64-bit.exe" .\git.exe /VERYSILENT /NORESTART Start-Sleep -Seconds 30关闭并重新打开PowerShell,然后用
git --version验证。安装 Node.js 22 LTS #
curl.exe -L -o nodejs.msi "https://nodejs.org/dist/v22.14.0/node-v22.14.0-x64.msi" msiexec /i nodejs.msi /quiet /norestart Start-Sleep -Seconds 30关闭并重新打开PowerShell。用
node --version验证,应显示v22.x.x。脚本执行策略与pnpm设置 #
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force npm install -g pnpm pnpm setup关闭并重新打开PowerShell。
使用pnpm安装OpenClaw #
$env:NODE_OPTIONS="" pnpm add -g openclaw@2026.4.5下载完成后,批准构建脚本。
pnpm approve-builds -g # Select all with spacebar → Enter → y pnpm add -g openclaw@2026.4.5构建OpenClaw大约需要2分钟。
在系统级别持久化PATH #
防止每次打开新的PowerShell时PATH消失。
$paths = @( 'C:\Program Files\nodejs', "$env:APPDATA\npm", "$env:LOCALAPPDATA\pnpm" ) $current = [System.Environment]::GetEnvironmentVariable('PATH','Machine') $entries = ($current -split ';') + $paths | Select-Object -Unique [System.Environment]::SetEnvironmentVariable('PATH', ($entries -join ';'), 'Machine') $env:PATH = ($entries -join ';') Write-Host "openclaw:" (Get-Command openclaw -EA SilentlyContinue).Source引导设置(Onboarding) #
$env:NODE_OPTIONS="" openclaw onboard在向导中配置以下内容:
- 安全警告:选择
Yes继续 - 设置模式:
QuickStart - 配置处理(如检测到已有配置):选择Reset以重新开始
- 模型提供方:Custom Provider
- Base URL:
http://<GPUStack IP>/v1 - API密钥提供方式:Paste API key now
- 端点兼容性:
OpenAI-compatible - 模型ID:GPUStack上运行的模型名称
- Channel:Skip for now
- Skill依赖:Skip for now
- 网页搜索:SearXNG Search → 输入URL
- Hooks:仅启用
session-memory
如果出现“Config handling”界面
如果检测到其他机器上创建的配置文件,或此前安装遗留的配置文件,
在引导设置开始时会出现Existing config detected→Config handling选项。
如果要重新开始,请选择Reset。- 安全警告:选择
手动修正contextWindow #
引导设置完成后,OpenClaw可能会误判模型的上下文长度。
请直接编辑配置文件(provider名称需改为与你的环境相匹配)。$config = Get-Content "$env:USERPROFILE\.openclaw\openclaw.json" | ConvertFrom-Json $config.models.providers.'custom-10-255-253-205'.models[0].contextWindow = 32768 $config.models.providers.'custom-10-255-253-205'.models[0].maxTokens = 8192 $config | ConvertTo-Json -Depth 20 | Set-Content "$env:USERPROFILE\.openclaw\openclaw.json" -Encoding UTF8启动网关并验证运行状态 #
$env:NODE_OPTIONS="" openclaw gateway run当日志中出现
[gateway] ready时,在另一个窗口打开仪表盘。$env:NODE_OPTIONS="" openclaw dashboard如果能在
main会话中聊天,说明安装已完成。将ocstart.ps1保存到桌面 #
创建一个快捷方式,免去每次都要设置PATH和NODE_OPTIONS的麻烦。
$script = @' param([switch]$Stop) $env:NODE_OPTIONS="" $paths = @('C:\Program Files\nodejs', "$env:APPDATA\npm", "$env:LOCALAPPDATA\pnpm") foreach ($p in $paths) { if (($env:PATH -split ';') -notcontains $p) { $env:PATH += ";$p" } } if ($Stop) { openclaw gateway stop; exit } $action = Read-Host "[1] Start Gateway [2] Stop [3] Dashboard [4] TUI [5] Status`n> " switch ($action) { '1' { openclaw gateway run } '2' { openclaw gateway stop } '3' { openclaw dashboard } '4' { openclaw tui } '5' { openclaw gateway status; openclaw doctor } } '@ $script | Out-File "$env:USERPROFILE\Desktop\ocstart.ps1" -Encoding UTF8 $ws = New-Object -ComObject WScript.Shell $sc = $ws.CreateShortcut("$env:USERPROFILE\Desktop\OpenClaw Start.lnk") $sc.TargetPath = "powershell.exe" $sc.Arguments = "-ExecutionPolicy Bypass -File `"$env:USERPROFILE\Desktop\ocstart.ps1`"" $sc.Save() Write-Host "Complete"
GPUStack配置 #
在GPUStack管理面板的模型后端参数中添加以下内容,并重启模型。
--max-model-len 32768
--generation-config vllm
--enable-auto-tool-choice
--tool-call-parser hermes保存后会出现提示,说明“更改只有在删除并重新创建实例后才会生效”。请停止并重启模型。
与Server 2019的对比 #
Windows 11上的改进之处
- WSL2可作为一种可选方案
- 原生路线可直接沿用与Server 2019相同的步骤
- 通过Microsoft Store能更方便地获取各种工具
与Server 2019相同的行为
- npm版本可能遇到MODULE_NOT_FOUND(推荐使用pnpm)
- 需要持久化PATH
- 必须清空
NODE_OPTIONS - 需要手动调整contextWindow
- 需要配置GPUStack后端参数
在完成Server 2019验证之后于Windows 11上运行引导设置时,
系统检测到了已有配置文件,出现了
Config handling 选项。这种情况会在其他机器上配置的配置文件被共享,
或在同一台机器上重新安装时出现。
如果要重新开始,请选择Reset。
运行验证清单 #
openclaw --version有正常输出- 日志中出现
[gateway] ready - 浏览器中能打开仪表盘(
http://127.0.0.1:18789) - 在
main会话中聊天能获得响应 - GPUStack日志中显示
POST /v1/chat/completions HTTP/1.1" 200 OK - 会话界面的TOKENS显示为
xxxxx / 32768 - SearXNG搜索功能正常
总结 #
在Windows 11上的原生安装,几乎可以原样沿用在Server 2019上确立的步骤。
使用pnpm、持久化PATH、清空NODE_OPTIONS——这三条原则在Windows 11上依然不变。
与Server 2019的一个重要区别是,Windows 11提供了WSL2作为可选方案,
可以根据具体用途选择安装路线。
如果想操作Windows本身,就使用原生安装;
如果是通用的AI智能体用途,就使用WSL2——请根据自己的目标来选择。
Windows 11的原生安装并不比Server 2019更简单,
但只要按照既定步骤操作,一定能够跑起来。
从一开始就使用pnpm是最重要的一点。