clear-opencode-sessions.bat 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo [1/3] 正在查找所有opencode会话...
  4. echo.
  5. set SESSIONS_FOUND=0
  6. for /f "usebackq tokens=*" %%A in (`opencode session list 2^>nul ^| findstr /R "[a-f0-9\-]\{32,\}"`) do (
  7. set "SID=%%A"
  8. for /f "tokens=* delims= " %%B in ("!SID!") do set SID=%%B
  9. if not "!SID!"=="" (
  10. echo 删除会话: !SID!
  11. opencode session delete !SID! >nul 2>&1
  12. set /a SESSIONS_FOUND+=1
  13. )
  14. )
  15. if !SESSIONS_FOUND!==0 (
  16. echo (未发现通过CLI列出的会话)
  17. ) else (
  18. echo 共删除 !SESSIONS_FOUND! 个会话(CLI方式)
  19. )
  20. echo.
  21. set DELETED=0
  22. for %%P in ("%LOCALAPPDATA%\opencode" "%APPDATA%\opencode" "%USERPROFILE%\.opencode") do (
  23. if exist "%%P\sessions" (
  24. for /r "%%P\sessions" %%F in (*.json) do (
  25. del /q /f "%%F" >nul 2>&1 && set /a DELETED+=1
  26. )
  27. for /r "%%P\sessions" %%F in (*.jsonl) do (
  28. del /q /f "%%F" >nul 2>&1 && set /a DELETED+=1
  29. )
  30. for /r "%%P\sessions" %%F in (*.sqlite) do (
  31. del /q /f "%%F" >nul 2>&1 && set /a DELETED+=1
  32. )
  33. for /r "%%P\sessions" %%F in (*.db) do (
  34. del /q /f "%%F" >nul 2>&1 && set /a DELETED+=1
  35. )
  36. rmdir /s /q "%%P\sessions" >nul 2>&1
  37. )
  38. if exist "%%P\sessionstore" (
  39. for /r "%%P\sessionstore" %%F in (*.json) do (
  40. del /q /f "%%F" >nul 2>&1 && set /a DELETED+=1
  41. )
  42. for /r "%%P\sessionstore" %%F in (*.jsonl) do (
  43. del /q /f "%%F" >nul 2>&1 && set /a DELETED+=1
  44. )
  45. for /r "%%P\sessionstore" %%F in (*.sqlite) do (
  46. del /q /f "%%F" >nul 2>&1 && set /a DELETED+=1
  47. )
  48. for /r "%%P\sessionstore" %%F in (*.db) do (
  49. del /q /f "%%F" >nul 2>&1 && set /a DELETED+=1
  50. )
  51. )
  52. )
  53. echo.
  54. echo [2/3] 直接删除 !DELETED! 个残留文件
  55. echo.
  56. echo [3/3] 清理阻塞进程...
  57. taskkill /F /FI "IMAGENAME eq opencode.exe" >nul 2>&1
  58. taskkill /F /FI "IMAGENAME eq node.exe" /FI "WINDOWTITLE eq *opencode*" >nul 2>&1
  59. for /f "tokens=5 delims=," %%P in ('netstat -ano ^| findstr ":4090"') do (
  60. taskkill /F /PID %%P >nul 2>&1
  61. )
  62. echo 清理完毕
  63. echo.
  64. echo ===== 以下文件/目录被安全保留 =====
  65. echo [技能] %USERPROFILE%\.config\opencode\skills\
  66. echo [插件] %USERPROFILE%\.config\opencode\plugins\
  67. echo [MCP] %USERPROFILE%\.config\opencode\mcp\
  68. echo [配置] %USERPROFILE%\.config\opencode\opencode.json
  69. echo [OMF链] %APPDATA%\opencode\omf.json
  70. echo.
  71. echo 会话清理完成!
  72. pause