Key Findings
  • OpenClaw 官方文件目前沒有 Windows 移除指南——Linux 上的 systemctl disablerm -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 stopsystemctl disablerm -rf ~/.openclaw),但完全沒有 Windows 移除指南。更關鍵的是,OpenClaw 在 Windows 上使用的持久化機制(Scheduled Task)與 Linux(systemd)本質不同[3],Linux 的移除步驟無法直接套用。

我們在實測移除過程中遇到了多個陷阱:openclaw gateway uninstall 指令看似成功但實際上留下了 Scheduled Task 殘留、非管理員權限無法刪除排程任務、Gateway 進程在移除後仍然孤立運行。這篇文章完整記錄了我們的實測經驗,提供一份可重現的 Windows 移除流程。

二、移除前確認

在開始移除之前,先確認以下事項:

2.1 確認安裝方式

本文的移除流程適用於以下安裝方式:

如果你是透過 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 在 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 uninstallopenclaw 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 + taskkillsystemctl stop openclaw-gateway
反註冊服務Unregister-ScheduledTask(需管理員)systemctl --user disable openclaw-gateway
移除套件npm uninstall -g openclawnpm uninstall -g openclaw
刪設定Remove-Item ~\.openclawrm -rf ~/.openclaw
刪日誌Remove-Item C:\tmp\openclawrm -rf /tmp/openclaw
驗證Get-ScheduledTask + WMICsystemctl list-units + ps aux
需管理員是(刪排程任務)否(systemctl --user
主要陷阱Scheduled Task 殘留systemd unit file 殘留

六、移除後檢查清單

以下是完整的移除後驗證清單,建議在移除完成後逐項確認:

檢查項目檢查指令預期結果
openclaw 指令openclaw --versionnot recognized
設定目錄Test-Path ~\.openclawFalse
排程任務schtasks /Query /TN "OpenClaw*"path not found
殘留進程netstat -ano | findstr 18789無輸出
日誌目錄Test-Path $env:LOCALAPPDATA\openclaw-logsFalse
npm 全域套件npm list -g openclawempty / 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 平台上的支援進展,包括移除流程的官方改進。