Platforms overview
Windows
OpenClaw از هر دو حالت Windows بومی و WSL2 پشتیبانی میکند. WSL2 مسیر پایدارتر است و برای تجربه کامل توصیه میشود؛ CLI، Gateway و ابزارها داخل Linux با سازگاری کامل اجرا میشوند. Windows بومی برای استفاده اصلی از CLI و Gateway کار میکند، با چند نکته احتیاطی که در ادامه آمده است.
برنامههای همراه بومی Windows برنامهریزی شدهاند.
WSL2 (توصیهشده)
- شروع به کار (داخل WSL استفاده شود)
- نصب و بهروزرسانیها
- راهنمای رسمی WSL2 (Microsoft): https://learn.microsoft.com/windows/wsl/install
وضعیت Windows بومی
جریانهای CLI در Windows بومی در حال بهبود هستند، اما WSL2 همچنان مسیر توصیهشده است.
مواردی که امروز در Windows بومی خوب کار میکنند:
- نصبکننده وبسایت از طریق
install.ps1 - استفاده محلی از CLI مانند
openclaw --version،openclaw doctorوopenclaw plugins list --json - دودآزمایی عامل/ارائهدهنده محلی تعبیهشده مانند:
openclaw agent --local --agent main --thinking low -m "Reply with exactly WINDOWS-HATCH-OK."نکات احتیاطی فعلی:
openclaw onboard --non-interactiveهمچنان انتظار دارد یک gateway محلی دردسترس باشد، مگر اینکه--skip-healthرا پاس دهیدopenclaw onboard --non-interactive --install-daemonوopenclaw gateway installابتدا Windows Scheduled Tasks را امتحان میکنند- اگر ایجاد Scheduled Task رد شود، OpenClaw به یک آیتم ورود پوشه Startup مخصوص هر کاربر برمیگردد و gateway را بلافاصله شروع میکند
- اگر خود
schtasksگیر کند یا پاسخ ندهد، OpenClaw اکنون آن مسیر را سریع قطع میکند و بهجای معطلماندن همیشگی، به مسیر جایگزین برمیگردد - Scheduled Tasks همچنان در صورت دردسترسبودن ترجیح داده میشوند، چون وضعیت ناظر بهتری ارائه میکنند
اگر فقط CLI بومی را میخواهید، بدون نصب سرویس gateway، از یکی از اینها استفاده کنید:
openclaw onboard --non-interactive --skip-healthopenclaw gateway runاگر راهاندازی مدیریتشده را روی Windows بومی میخواهید:
openclaw gateway installopenclaw gateway status --jsonاگر ایجاد Scheduled Task مسدود شده باشد، حالت سرویس جایگزین همچنان پس از ورود، از طریق پوشه Startup کاربر فعلی بهطور خودکار شروع میشود.
Gateway
نصب سرویس Gateway (CLI)
داخل WSL2:
openclaw onboard --install-daemonیا:
openclaw gateway installیا:
openclaw configureهنگام درخواست، سرویس Gateway را انتخاب کنید.
ترمیم/مهاجرت:
openclaw doctorشروع خودکار Gateway پیش از ورود به Windows
برای راهاندازیهای headless، مطمئن شوید زنجیره کامل بوت حتی وقتی کسی وارد Windows نمیشود اجرا میشود.
1) اجرای سرویسهای کاربر بدون ورود را فعال نگه دارید
داخل WSL:
sudo loginctl enable-linger "$(whoami)"2) سرویس کاربری gateway در OpenClaw را نصب کنید
داخل WSL:
openclaw gateway install3) WSL را هنگام بوت Windows بهطور خودکار شروع کنید
در PowerShell با دسترسی Administrator:
schtasks /create /tn "WSL Boot" /tr "wsl.exe -d Ubuntu --exec /bin/true" /sc onstart /ru SYSTEMUbuntu را با نام توزیع خود از خروجی زیر جایگزین کنید:
wsl --list --verboseراستیآزمایی زنجیره راهاندازی
پس از راهاندازی مجدد (پیش از ورود به Windows)، از داخل WSL بررسی کنید:
systemctl --user is-enabled openclaw-gateway.servicesystemctl --user status openclaw-gateway.service --no-pagerپیشرفته: ارائه سرویسهای WSL روی LAN (portproxy)
WSL شبکه مجازی خودش را دارد. اگر ماشین دیگری باید به سرویسی که داخل WSL اجرا میشود دسترسی داشته باشد (SSH، یک سرور TTS محلی، یا Gateway)، باید یک پورت Windows را به IP فعلی WSL فوروارد کنید. IP مربوط به WSL پس از راهاندازی مجدد تغییر میکند، بنابراین ممکن است لازم باشد قانون فوروارد را تازهسازی کنید.
مثال (PowerShell با دسترسی Administrator):
$Distro = "Ubuntu-24.04"$ListenPort = 2222$TargetPort = 22 $WslIp = (wsl -d $Distro -- hostname -I).Trim().Split(" ")[0]if (-not $WslIp) { throw "WSL IP not found." } netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=$ListenPort ` connectaddress=$WslIp connectport=$TargetPortاجازه عبور پورت از Windows Firewall را بدهید (یکباره):
New-NetFirewallRule -DisplayName "WSL SSH $ListenPort" -Direction Inbound ` -Protocol TCP -LocalPort $ListenPort -Action Allowپس از راهاندازی مجدد WSL، portproxy را تازهسازی کنید:
netsh interface portproxy delete v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 | Out-Nullnetsh interface portproxy add v4tov4 listenport=$ListenPort listenaddress=0.0.0.0 ` connectaddress=$WslIp connectport=$TargetPort | Out-Nullنکات:
- SSH از ماشین دیگر، IP میزبان Windows را هدف میگیرد (مثال:
ssh user@windows-host -p 2222). - گرههای ریموت باید به یک URL مربوط به Gateway که قابل دسترسی است اشاره کنند (نه
127.0.0.1)؛ برای تایید ازopenclaw status --allاستفاده کنید. - برای دسترسی LAN از
listenaddress=0.0.0.0استفاده کنید؛127.0.0.1آن را فقط محلی نگه میدارد. - اگر میخواهید این کار خودکار باشد، یک Scheduled Task ثبت کنید تا مرحله تازهسازی را هنگام ورود اجرا کند.
نصب گامبهگام WSL2
1) نصب WSL2 + Ubuntu
PowerShell را باز کنید (Admin):
wsl --install# Or pick a distro explicitly:wsl --list --onlinewsl --install -d Ubuntu-24.04اگر Windows درخواست کرد، راهاندازی مجدد کنید.
2) فعالکردن systemd (برای نصب gateway لازم است)
در ترمینال WSL خود:
sudo tee /etc/wsl.conf >/dev/null <<'EOF'[boot]systemd=trueEOFسپس از PowerShell:
wsl --shutdownUbuntu را دوباره باز کنید، سپس بررسی کنید:
systemctl --user status3) نصب OpenClaw (داخل WSL)
برای راهاندازی عادی بار اول داخل WSL، جریان شروع به کار Linux را دنبال کنید:
git clone https://github.com/openclaw/openclaw.gitcd openclawpnpm installpnpm buildpnpm ui:buildpnpm openclaw onboard --install-daemonاگر بهجای onboarding بار اول، از سورس توسعه میدهید، از حلقه توسعه سورس در راهاندازی استفاده کنید:
pnpm install# First run only (or after resetting local OpenClaw config/workspace)pnpm openclaw setuppnpm gateway:watchراهنمای کامل: شروع به کار
برنامه همراه Windows
هنوز برنامه همراه Windows نداریم. اگر میخواهید در تحقق آن کمک کنید، مشارکتها پذیرفته میشوند.
اتصال Git و GitHub (مشارکتکنندگان)
بعضی شبکهها HTTPS به GitHub را مسدود یا محدود میکنند. اگر git clone با timeout یا بازنشانی اتصال شکست خورد، شبکهای دیگر، VPN، یا یک پراکسی HTTP/HTTPS ارائهشده توسط سازمانتان را امتحان کنید.
اگر gh auth login هنگام جریان دستگاه مرورگر شکست خورد (برای مثال timeout هنگام دسترسی به github.com:443)، بهجای آن با یک personal access token احراز هویت کنید:
- یک token با حداقل scope مربوط به
repo(PAT کلاسیک) یا دسترسی fine-grained معادل بسازید. - در PowerShell برای نشست فعلی:
$env:GH_TOKEN="<your-token>"gh auth statusgh auth setup-git- اگر
gh auth statusدرباره نبودنread:orgهشدار داد، token بسازید که شامل آن scope باشد و متغیر را دوباره اختصاص دهید:
$env:GH_TOKEN="<your-token-with-repo-and-read:org>"gh auth statusgh auth refresh -s read:org فقط زمانی اعمال میشود که از طریق gh auth login احراز هویت کرده باشید و اعتبارنامههای ذخیرهشده برای تازهسازی داشته باشید (نه هنگام استفاده از GH_TOKEN).
هرگز tokenها را commit نکنید یا آنها را در issueها یا pull requestها نچسبانید.