- OpenClaw 官方文件目前沒有 Windows 移除指南——Linux 上的
systemctl disable與rm -rf在 Windows 上完全不適用,需要專屬的移除流程 openclaw gateway uninstall在 Windows 上無法完全清除 Scheduled Task,殘留的排程任務會在每次開機時嘗試啟動已不存在的 Gateway,產生錯誤事件- 完整移除需要六個步驟:停止進程 → 反註冊排程任務 → npm 全域移除 → 刪除設定目錄 → 刪除日誌與快取 → 驗證清除,任何一步遺漏都會留下殘留檔案
- Windows 原生環境下的 OpenClaw 殘留物分散在至少四個位置:
%USERPROFILE%\.openclaw\、%APPDATA%\npm\、%LOCALAPPDATA%\openclaw-logs\、以及 Windows Task Scheduler
一、為什麼需要 Windows 專屬移除指南
在我們完成了 OpenClaw Windows 原生安裝實戰之後,下一個自然的問題是:如果決定不繼續使用,要怎麼完全移除?
這看似是個簡單的問題,但實測後我們發現情況遠比預期複雜。OpenClaw 的官方文件[1]提供了 Linux 環境下的移除步驟(systemctl stop、systemctl disable、rm -rf ~/.openclaw),但完全沒有 Windows 移除指南。更關鍵的是,OpenClaw 在 Windows 上使用的持久化機制(Scheduled Task)與 Linux(systemd)本質不同[3],Linux 的移除步驟無法直接套用。
我們在實測移除過程中遇到了多個陷阱:openclaw gateway uninstall 指令看似成功但實際上留下了 Scheduled Task 殘留、非管理員權限無法刪除排程任務、Gateway 進程在移除後仍然孤立運行。這篇文章完整記錄了我們的實測經驗,提供一份可重現的 Windows 移除流程。
二、移除前確認
在開始移除之前,先確認以下事項:
2.1 確認安裝方式
本文的移除流程適用於以下安裝方式:
- PowerShell 一行指令安裝(
iwr -useb https://openclaw.ai/install.ps1 | iex) - npm 全域安裝(
npm install -g openclaw)
如果你是透過 WSL2 安裝的,請參考 Windows 部署完整指南中的 Linux 移除步驟。
2.2 備份重要資料
移除前,請檢查是否有需要保留的資料:
# 檢查 OpenClaw 設定檔
type %USERPROFILE%\.openclaw\openclaw.json
# 檢查對話歷史
dir %USERPROFILE%\.openclaw\sessions\
如果你在 openclaw.json 中設定了自訂的 API Key、Telegram Bot Token 或其他整合設定,建議先複製一份備份。
三、六步驟完整移除流程
以下六個步驟須按順序執行。建議以系統管理員身份開啟 PowerShell,以確保有足夠權限完成所有操作。
步驟一:停止 Daemon 與 Gateway 進程
首先停止所有正在運行的 OpenClaw 進程:
openclaw daemon stop
在我們的實測中,輸出如下:
Stopped Scheduled Task: OpenClaw Gateway
停止後,執行 openclaw gateway status 確認狀態。我們看到的回覆是:
Service: Scheduled Task (registered)
Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Runtime: stopped (state Ready, last run time 2026/2/27 06:43:26)
RPC probe: ok
Service is loaded but not running (likely exited immediately).
注意關鍵字眼:「Service is loaded but not running」——進程已停止,但 Scheduled Task 仍然處於 registered 狀態。這是接下來步驟二需要處理的問題。
如果 openclaw daemon stop 沒有回應或失敗,可以透過 WMIC 查找 Gateway 進程並強制終止:
# 查找 openclaw 相關的 Node.js 進程
WMIC process where "name='node.exe'" get ProcessId,CommandLine | findstr /i "openclaw"
# 實測輸出範例:
# "C:\Program Files\nodejs\node.exe" ...openclaw\dist\index.js gateway --port 18789 26472
# 強制終止
taskkill /F /PID 26472
注意:如果你是以 Start-Job 方式在背景運行 Gateway,需要先停止 PowerShell Job:
# 列出背景 Job
Get-Job
# 停止並移除 Job
Get-Job | Stop-Job
Get-Job | Remove-Job
步驟二:反註冊 Scheduled Task
這是 Windows 移除中最容易出錯的步驟。如果你曾執行過 openclaw gateway install,系統中會存在一個自動啟動的排程任務[3]。
# 先嘗試 OpenClaw 內建的反安裝指令
openclaw daemon uninstall
# 或
openclaw gateway uninstall
在我們的實測中,兩個指令都嘗試了,但都無法完全清除:
$ openclaw daemon uninstall
Stopped Scheduled Task: OpenClaw Gateway
Removed task script: C:\Users\HYC\.openclaw\gateway.cmd
Gateway service still loaded after uninstall.
$ openclaw gateway uninstall
Stopped Scheduled Task: OpenClaw Gateway
Task script not found at C:\Users\HYC\.openclaw\gateway.cmd
Gateway service still loaded after uninstall.
注意那句關鍵的錯誤訊息:「Gateway service still loaded after uninstall」。這表示雖然腳本檔案被移除了,但 Windows Scheduled Task 的註冊仍然存在。
這時需要以管理員身份開啟 PowerShell,使用 Unregister-ScheduledTask 手動清除[4]:
# 以管理員 PowerShell 執行
Unregister-ScheduledTask -TaskName "OpenClaw Gateway" -Confirm:$false
驗證排程任務是否真的被移除:
# 如果已清除,這個指令不應回傳任何結果
Get-ScheduledTask | Where-Object {$_.TaskName -like "*OpenClaw*"}
步驟三:npm 全域移除
npm uninstall -g openclaw
在我們的實測中,輸出:
removed 682 packages in 7s
驗證移除成功:
openclaw --version
# 應該顯示 'openclaw' is not recognized
如果 openclaw --version 仍然可執行,表示系統中可能存在多個 Node.js 安裝(例如 nvm 管理的多個版本),需要在每個 Node.js 版本下都執行 npm uninstall -g openclaw。
步驟四:刪除設定目錄
OpenClaw 的所有設定、Session 資料與 OAuth Token 都儲存在使用者目錄下[4]:
# 刪除 OpenClaw 設定目錄
Remove-Item -Recurse -Force "$env:USERPROFILE\.openclaw"
# 驗證
Test-Path "$env:USERPROFILE\.openclaw"
# 應該回傳 False
在我們的實測中,這個目錄的完整內容如下:
$ ls ~/.openclaw/
agents/ canvas/ completions/ credentials/ cron/ devices/
identity/ logs/ memory/ telegram/ workspace/
openclaw.json openclaw.json.bak openclaw.json.bak.1
openclaw.json.bak.2 openclaw.json.bak.3 update-check.json
主要內容包含:
openclaw.json(及多個.bak備份)——主設定檔,含 API Key、Telegram Token、Gateway 設定agents/、canvas/、completions/——代理設定與對話歷史credentials/、identity/——認證與身份資訊telegram/——Telegram Bot 整合資料memory/——語義記憶儲存cron/——定時任務設定
步驟五:刪除日誌與快取
OpenClaw 在 Windows 上的日誌和快取可能分散在以下位置:
在我們的實測中,OpenClaw 的日誌檔案位於 /tmp/openclaw/(Git Bash 環境)或 C:\tmp\openclaw\(Windows 原生路徑):
# 如果是透過 Git Bash 安裝/使用
Remove-Item -Recurse -Force "C:\tmp\openclaw" -ErrorAction SilentlyContinue
# 標準 Windows 日誌位置
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\openclaw-logs" -ErrorAction SilentlyContinue
# 檢查全域 node_modules 是否有殘留
dir "$env:APPDATA\npm\node_modules\" | findstr /i "openclaw"
如果 node_modules 中仍有 openclaw 目錄,手動刪除:
Remove-Item -Recurse -Force "$env:APPDATA\npm\node_modules\openclaw" -ErrorAction SilentlyContinue
步驟六:驗證完全移除
執行以下檢查清單,確認所有殘留都已清除:
# 1. 指令不存在
openclaw --version
# 預期:'openclaw' is not recognized
# 2. 設定目錄已刪除
Test-Path "$env:USERPROFILE\.openclaw"
# 預期:False
# 3. 排程任務已移除
schtasks /Query /TN "OpenClaw*" 2>$null
# 預期:ERROR: The system cannot find the path specified.
# 4. 無殘留進程
tasklist | findstr /i "openclaw"
# 預期:無輸出
# 5. 日誌目錄已刪除
Test-Path "$env:LOCALAPPDATA\openclaw-logs"
# 預期:False
如果以上五項全部通過,OpenClaw 已從你的 Windows 系統完全移除。
四、踩坑紀錄
以下是我們在實測移除過程中遇到的具體問題與解決方案:
踩坑 #1:daemon/gateway uninstall 均無法完全清除 Scheduled Task
症狀:執行 openclaw daemon uninstall 與 openclaw gateway uninstall,兩者都輸出「Gateway service still loaded after uninstall」,且 PowerShell 查詢仍能找到排程任務:
$ powershell -Command 'Get-ScheduledTask | Where-Object {$_.TaskName -like "*OpenClaw*"}'
TaskPath TaskName State
-------- -------- -----
\ OpenClaw Gateway Ready
根因:OpenClaw 的 uninstall 指令雖然移除了 gateway.cmd 腳本檔案,但底層呼叫的 schtasks /Delete 在非管理員權限下靜默失敗,未能實際刪除 Windows Task Scheduler 中的註冊。
解決方案:以管理員身份開啟 PowerShell,手動反註冊[4]:
# 管理員 PowerShell
Unregister-ScheduledTask -TaskName "OpenClaw Gateway" -Confirm:$false
踩坑 #2:非管理員權限的 HRESULT 0x80070005 錯誤
症狀:在非管理員 PowerShell 中執行 Unregister-ScheduledTask 時出現以下錯誤:
Unregister-ScheduledTask : 存取被拒。
+ CategoryInfo : PermissionDenied: (PS_ScheduledTask:Root/Microsoft/...T_ScheduledTask)
[Unregister-ScheduledTask], CimException
+ FullyQualifiedErrorId : HRESULT 0x80070005,Unregister-ScheduledTask
根因:openclaw gateway install 以管理員權限建立排程任務[3],刪除同樣需要管理員權限。HRESULT 0x80070005 是 Windows 的 ACCESS_DENIED 錯誤碼。
解決方案:以系統管理員身份重新開啟 PowerShell:
# 右鍵 PowerShell → 以系統管理員身分執行
# 或從現有 PowerShell 提權執行單一指令
Start-Process powershell -Verb RunAs -ArgumentList "-Command Unregister-ScheduledTask -TaskName 'OpenClaw Gateway' -Confirm:`$false"
踩坑 #3:Gateway 孤立進程佔用 18789 埠
症狀:執行 npm uninstall -g openclaw 後,Gateway 的 Node.js 進程仍在背景運行,佔用 18789 埠。
根因:如果在移除 npm 套件前沒有先停止 Gateway 進程,Node.js 子進程會變成孤兒進程。在我們的實測中,透過 WMIC 找到了這個進程:
$ WMIC process where "name='node.exe'" get ProcessId,CommandLine | findstr /i "openclaw"
"C:\Program Files\nodejs\node.exe" ...\openclaw\dist\index.js gateway --port 18789 26472
解決方案:
# 強制終止該進程
taskkill /F /PID 26472
# SUCCESS: The process with PID 26472 has been terminated.
這也是為什麼我們建議步驟一(停止進程)必須在步驟三(npm 移除)之前執行。
踩坑 #4:Git Bash 中的路徑轉義問題
症狀:在 Git Bash 中執行 schtasks 時出現莫名其妙的錯誤:
$ schtasks /Delete /TN "OpenClaw Gateway" /F
ERROR: Invalid argument/option - 'C:/Program Files/Git/Delete'.
Type "SCHTASKS /QUERY /?" for usage.
根因:Git Bash(MSYS2)會自動將以 / 開頭的引數轉換為 Windows 路徑[5]。/Delete 被解讀為 C:/Program Files/Git/Delete,導致 schtasks 收到完全錯誤的參數。即便嘗試透過 cmd 中繼,引號處理也會出問題:
$ cmd //c 'schtasks /Delete /TN "OpenClaw Gateway" /F'
ERROR: Invalid argument/option - 'Gateway"'.
Type "SCHTASKS /DELETE /?" for usage.
解決方案:
# 方法 1:雙斜線繞過路徑轉換
schtasks //Delete //TN "OpenClaw Gateway" //F
# 方法 2:暫時關閉路徑轉換
MSYS_NO_PATHCONV=1 schtasks /Delete /TN "OpenClaw Gateway" /F
# 方法 3(建議):直接從 Git Bash 呼叫 PowerShell
powershell.exe -Command "Unregister-ScheduledTask -TaskName 'OpenClaw Gateway' -Confirm:`$false"
# 方法 4(最佳):改用 PowerShell 或 CMD 而非 Git Bash
五、Windows vs Linux 移除對照表
| 步驟 | Windows(原生) | Linux / WSL2 |
|---|---|---|
| 停止服務 | openclaw gateway stop + taskkill | systemctl stop openclaw-gateway |
| 反註冊服務 | Unregister-ScheduledTask(需管理員) | systemctl --user disable openclaw-gateway |
| 移除套件 | npm uninstall -g openclaw | npm uninstall -g openclaw |
| 刪設定 | Remove-Item ~\.openclaw | rm -rf ~/.openclaw |
| 刪日誌 | Remove-Item C:\tmp\openclaw | rm -rf /tmp/openclaw |
| 驗證 | Get-ScheduledTask + WMIC | systemctl list-units + ps aux |
| 需管理員 | 是(刪排程任務) | 否(systemctl --user) |
| 主要陷阱 | Scheduled Task 殘留 | systemd unit file 殘留 |
六、移除後檢查清單
以下是完整的移除後驗證清單,建議在移除完成後逐項確認:
| 檢查項目 | 檢查指令 | 預期結果 |
|---|---|---|
| openclaw 指令 | openclaw --version | not recognized |
| 設定目錄 | Test-Path ~\.openclaw | False |
| 排程任務 | schtasks /Query /TN "OpenClaw*" | path not found |
| 殘留進程 | netstat -ano | findstr 18789 | 無輸出 |
| 日誌目錄 | Test-Path $env:LOCALAPPDATA\openclaw-logs | False |
| npm 全域套件 | npm list -g openclaw | empty / not found |
| 啟動資料夾 | dir "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup" | findstr openclaw | 無輸出 |
如果以上七項全部通過,你的 Windows 系統已完全清除 OpenClaw 的所有痕跡。
結語
回顧整個移除流程,核心問題可以歸結為一句話:OpenClaw 的安裝是一行指令,但移除需要六個步驟——而官方文件只涵蓋了其中一個。
npm uninstall -g openclaw 確實能移除 OpenClaw 的執行檔,但它不會清除設定目錄、不會反註冊 Scheduled Task、不會停止已在運行的 Gateway 進程。這些殘留物不僅佔用磁碟空間,更會在每次開機時產生錯誤事件——Scheduled Task 嘗試啟動一個已不存在的程式,Windows 事件檢視器中就會累積大量失敗紀錄。
對於正在評估 AI 代理工具的技術團隊而言,「可以安全移除」與「安裝便利」同等重要。一個無法乾淨卸載的工具會增加技術債務評估的不確定性[2]。我們希望這份實測指南能降低您在 Windows 環境中試用 OpenClaw 的風險——知道可以完全移除,才能更安心地開始嘗試。
如果您在移除過程中遇到本文未涵蓋的問題,歡迎與我們的研究團隊交流。我們將持續追蹤 OpenClaw 在 Windows 平台上的支援進展,包括移除流程的官方改進。



