
OmniRoute 卸载完全指南内置卸载脚本、多方式手动清理与数据目录安全清除【免费下载链接】OmniRouteNever stop coding. Free MIT AI gateway: one endpoint, 352 providers (150 free), 1200 models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline Copilot. Quota-aware auto-fallback, RTKCaveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550 contributors项目地址: https://gitcode.com/GitHub_Trending/om/OmniRoute本篇指南围绕 OmniRoute 官方卸载文档docs/guides/UNINSTALL.md及多语言版本如 中文版展开系统讲解从 v3.6.2 起内置的两种卸载脚本、NPM/pnpm/Docker/Electron/源码安装等多种部署形态下的手动卸载步骤、数据目录的默认位置与文件构成并深入仓库源码验证卸载脚本的真实执行逻辑与数据目录解析规则。读完本文你可以根据自己选择的安装方式干净、彻底且不误删数据地移除 OmniRoute并在卸载后完成残留校验。一、快速卸载v3.6.2 内置脚本自 v3.6.2 起OmniRoute 在package.json的 scripts 中提供了两个专门用于干净移除的 npm 脚本命令行为npm run uninstall移除 OmniRoute 应用但保留数据目录npm run uninstall:full移除应用并永久删除全部数据1.1 保留数据npm run uninstallnpm run uninstall该命令移除 OmniRoute 应用本身但会保留数据库、配置文件、API Key 以及 Provider 设置默认位于~/.omniroute/。如果你打算以后重新安装、希望保留既有配置请使用此命令。1.2 彻底清除npm run uninstall:fullnpm run uninstall:full该命令移除应用并永久擦除以下所有数据数据库storage.sqliteProvider 配置与 API Key备份文件日志文件~/.omniroute/目录下的所有文件⚠️警告npm run uninstall:full不可逆。所有 Provider 连接、Combo 组合、API Key 与用量历史都将被永久删除。执行前请务必确认不需要再保留任何数据。1.3 卸载脚本的源码级实现两个脚本在 package.json 中定义如下uninstall: node scripts/build/uninstall.mjs, uninstall:full: node scripts/build/uninstall.mjs --full可见它们指向同一个脚本 scripts/build/uninstall.mjs以是否传入--full参数区分两种模式。从源码看该脚本的实际执行流程分为三步停止并移除 PM2 后台进程脚本首先尝试执行pm2 delete omniroute。若系统未安装 PM2 或不存在该进程异常会被静默吞掉不会中断卸载流程。按模式处理数据目录脚本通过process.env.DATA_DIR || path.join(os.homedir(), .omniroute)解析数据目录。仅当--full被传入时才会对数据目录执行递归删除fs.rmSync(dataDir, { recursive: true, force: true })否则打印 Keeping data files ... intact. 明确保留数据。移除全局 npm 包脚本执行npm uninstall -g omniroute并通过环境变量OMNIROUTE_SKIP_UNINSTALL_HOOK1防止 npm 卸载生命周期事件再次触发本卸载钩子造成嵌套执行。若因权限问题失败会提示可能需要以sudo运行。二、手动卸载Manual Uninstall如果内置脚本不可用例如版本低于 v3.6.2或包管理器行为差异可以按部署形态手动移除。2.1 NPM 全局安装# 移除全局包 npm uninstall -g omniroute # 可选移除数据目录 rm -rf ~/.omniroute2.2 pnpm 全局安装pnpm uninstall -g omniroute rm -rf ~/.omniroute2.3 Docker# 停止并移除容器 docker stop omniroute docker rm omniroute # 移除数据卷会删除全部数据 docker volume rm omniroute-data # 可选移除镜像 docker rmi diegosouzapw/omniroute:latest需要说明的是当前仓库的 docker-compose.yml 中应用容器使用container_name: omniroute并将宿主机的./data目录挂载为容器内/app/data同时设置DATA_DIR/app/data而 VPS 部署模板 contrib/vps/compose.yaml 则使用命名卷omniroute-data挂载到/app/data。因此删除容器后务必按你所采用的部署方式选择删除对应的宿主机目录./data或命名卷omniroute-data才能真正清除数据。2.4 Docker Compose# 停止并移除容器 docker compose down # 同时移除数据卷会删除全部数据 docker compose down -vdocker compose down只移除容器与默认网络数据卷仍保留只有加上-v才会连卷一并删除。若还希望清理镜像可补充docker compose down --rmi all会同时移除镜像。仓库 contrib/podman 下还提供了 Podman 的容器与卷定义文件Podman 用户可参照相同思路用podman stop/rm、podman volume rm omniroute.volume完成清理。2.5 Electron 桌面应用Windows打开设置 → 应用 → OmniRoute → 卸载或直接运行安装目录中的 NSIS 卸载程序macOS将/Applications中的OmniRoute.app拖入废纸篓删除数据rm -rf ~/Library/Application Support/omnirouteLinux删除 AppImage 文件删除数据rm -rf ~/.omniroute从源码看Electron 主进程 electron/main.js 通过app.getPath(userData)获取应用数据目录macOS 上即~/Library/Application Support/omniroute并提供get-data-dirIPC 通道返回该路径详见 electron/README.md。卸载桌面应用时这部分应用数据需要单独清除。2.6 源码安装git clone# 删除克隆下来的目录 rm -rf /path/to/omniroute # 可选移除数据目录 rm -rf ~/.omniroute如果源码安装时设置了自定义DATA_DIR环境变量请记得同时清理该自定义路径。三、数据目录Data Directories3.1 各平台默认位置与覆盖方式OmniRoute 默认在以下位置存放数据平台默认路径覆盖方式Linux~/.omniroute/DATA_DIR环境变量macOS~/.omniroute/DATA_DIR环境变量Windows%APPDATA%/omniroute/DATA_DIR环境变量Docker/app/data/挂载卷DATA_DIR环境变量XDG 兼容环境$XDG_CONFIG_HOME/omniroute/XDG_CONFIG_HOME环境变量3.2 数据目录的源码解析规则这些路径规则并非文档杜撰而是由 src/lib/dataPaths.ts 中的resolveDataDir()/getDefaultDataDir()实际实现优先级最高的是显式设置的DATA_DIR环境变量未设置时Windows 平台回落到%APPDATA%\omniroute即os.homedir()/AppData/Roaming/omnirouteLinux/macOS 若显式配置了XDG_CONFIG_HOME则使用$XDG_CONFIG_HOME/omniroute否则使用传统的~/.omniroute源码中称为 legacy 路径且getDefaultDataDir()会在该旧目录已存在时优先保留以避免升级时数据丢失。数据库主文件与备份目录同样由该解析结果派生见 src/lib/db/core.tsSQLITE_FILE path.join(DATA_DIR, storage.sqlite)、DB_BACKUPS_DIR path.join(DATA_DIR, db_backups)。3.3 数据目录中的文件文件/目录说明storage.sqlite主数据库Provider、Combo 组合、设置、Keystorage.sqlite-walSQLite 预写日志临时storage.sqlite-shmSQLite 共享内存临时call_logs/请求载荷归档backups/自动数据库备份log.txt旧版请求日志可选结合源码补充说明文档表格中备份目录写作backups/而 src/lib/db/backup.ts 的实际实现为DB_BACKUPS_DIR || path.join(DATA_DIR, db_backups)即默认db_backups/并受DB_BACKUPS_DIR环境变量覆盖call_logs则是请求调用记录表所在用于保留未截断的请求载荷。storage.sqlite-wal与storage.sqlite-shm是 SQLite 在 WAL 模式下产生的临时文件若程序异常退出而残留可安全删除。上述文件全部位于数据目录内因此只要清除了整个数据目录这些内容便一并移除。四、卸载后验证完整移除执行卸载后建议按以下命令逐项确认没有任何残留# 检查是否仍有全局 npm 包 npm list -g omniroute 2/dev/null # 检查数据目录是否残留 ls -la ~/.omniroute/ 2/dev/null # 检查是否仍有运行中的进程 pgrep -f omniroute如果仍有进程在运行将其停止pkill -f omniroute五、卸载前的注意事项确认删除范围npm run uninstall:full、docker volume rm、docker compose down -v以及rm -rf ~/.omniroute都属于不可逆操作。若仍计划重装建议优先使用保留数据的npm run uninstall或先备份storage.sqlite与配置。PM2 进程内置卸载脚本会自动执行pm2 delete omniroute手动卸载时若曾用 PM2 托管也需自行执行该命令停止常驻进程。Docker 部署的数据落点同一镜像在不同部署模板下数据存放位置不同——docker-compose.yml 使用宿主机目录挂载./data:/app/datacontrib/vps/compose.yaml 使用命名卷omniroute-data。清理时请对应删除目录或卷二者不要混淆。自定义DATA_DIR若运行期通过DATA_DIR将数据目录指向了非默认位置卸载脚本同样会以该环境变量为准见 scripts/build/uninstall.mjs 中的process.env.DATA_DIR || ...逻辑手动清理时也要到该自定义路径下检查残留。桌面端额外残留Electron 桌面应用的数据位于系统 userData 目录如 macOS 的~/Library/Application Support/omniroute与~/.omniroute相互独立需分别清理。完成以上步骤后OmniRoute 的应用本体、数据、配置与后台进程均已彻底移除。若之后需要重新部署可参考仓库的 QUICK-START 指南 与 SETUP_GUIDE 从零开始。【免费下载链接】OmniRouteNever stop coding. Free MIT AI gateway: one endpoint, 352 providers (150 free), 1200 models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline Copilot. Quota-aware auto-fallback, RTKCaveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550 contributors项目地址: https://gitcode.com/GitHub_Trending/om/OmniRoute创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考