OmniRoute 卸载指南:从 npm、pnpm、Docker 到 Electron 的完整移除方案
2026/9/9 13:24:05 网站建设 项目流程

OmniRoute 卸载指南:从 npm、pnpm、Docker 到 Electron 的完整移除方案

【免费下载链接】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, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors项目地址: https://gitcode.com/GitHub_Trending/om/OmniRoute

OmniRoute 是一个统一 AI 网关,运行时会持久化数据库、Provider 配置、API Key、Combo 路由与使用历史。本文面向需要彻底清除或暂时卸载 OmniRoute 的用户,完整覆盖内置卸载脚本(保留数据与完全移除两种模式)、npm/pnpm 全局包、Docker / Docker Compose、Electron 桌面端与源码安装的手动卸载步骤,并结合仓库源码说明数据目录的解析逻辑与卸载脚本的真实行为。读完本文,你将能按场景选择正确的卸载方式,并学会验证系统是否被干净移除。


一、卸载前先理解数据存放位置

在动手卸载之前,先弄清 OmniRoute 把数据放在哪里。数据目录的解析逻辑集中在 src/lib/dataPaths.ts 中,核心函数resolveDataDir()的优先级为:

  1. 显式指定的DATA_DIR环境变量(最高优先级);
  2. Windows 上优先检查是否存在遗留的~/.omniroute目录(存在则以它为准,避免升级时丢数据),否则使用%APPDATA%/omniroute/
  3. Linux / macOS 上若显式配置了XDG_CONFIG_HOME,则使用$XDG_CONFIG_HOME/omniroute/
  4. 默认回落到~/.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环境变量

补充:源码在 src/lib/dataPaths.ts 中还实现了resolveWritableDataDir(),当用户配置的DATA_DIR不可写(EACCES/EPERM)时会自动回退到默认用户目录,保证应用不因错误路径而崩溃。

数据目录里的文件

文件/目录说明
storage.sqlite主数据库(Provider、Combo、设置、API Key)
storage.sqlite-walSQLite 预写日志(临时文件)
storage.sqlite-shmSQLite 共享内存(临时文件)
call_logs/请求负载归档
backups/自动数据库备份
log.txt旧版请求日志(可选)

关于主数据库的落地位置,可在 src/lib/db/core.ts 中看到其定义:SQLITE_FILE = path.join(DATA_DIR, "storage.sqlite"),备份目录同样挂在数据目录下的db_backups。这印证了文档中"删除~/.omniroute/即等于删除全部业务数据"的说法——你的 Provider 连接、Combo、API Key 和使用历史全部封装在这一个目录里。


二、快速卸载(v3.6.2+):两条内置脚本

自 v3.6.2 起,OmniRoute 提供两个内置卸载脚本,对应 package.json 中的两个 npm scripts:

保留数据:npm run uninstall

npm run uninstall

该命令移除 OmniRoute 应用本体,但保留~/.omniroute/中的数据库、配置、API Key 和 Provider 设置。如果你打算之后重装并保留现有配置,请使用它。

完全移除:npm run uninstall:full

npm run uninstall:full

该命令移除应用并永久擦除以下所有数据:

  • 数据库(storage.sqlite
  • Provider 配置与 API Key
  • 备份文件
  • 日志文件
  • ~/.omniroute/目录下的所有文件

⚠️警告:npm run uninstall:full不可逆。所有 Provider 连接、Combo、API Key 与使用历史都会被永久删除。

脚本内部究竟做了什么

阅读卸载脚本源码 scripts/build/uninstall.mjs 可以确认它的完整执行顺序:

  1. 停止并移除 PM2 后台进程:通过pm2 delete omniroute清理常驻后台进程(pm2 未安装或进程不存在时静默跳过);
  2. 清理数据目录--full模式下读取DATA_DIR环境变量或默认的~/.omniroute,用fs.rmSync(dataDir, { recursive: true, force: true })递归删除;非 full 模式则仅打印"保留数据"提示,不触碰数据目录;
  3. 卸载 npm 全局包:执行npm uninstall -g omniroute,同时通过OMNIROUTE_SKIP_UNINSTALL_HOOK=1与对npm_lifecycle_event的检测防止递归触发卸载钩子;若因权限失败,脚本会提示可能需要sudo重试。

也就是说,npm run uninstall等效于"删程序 + 留数据",npm run uninstall:full等效于"删程序 + 删数据",并且两者都会主动清理 PM2 托管进程,这正是它被称为"clean removal"的原因。


三、手动卸载:按安装方式分场景

如果不走内置脚本,可以按最初的安装方式手动卸载。

npm 全局安装

# 移除全局包 npm uninstall -g omniroute # (可选)删除数据目录 rm -rf ~/.omniroute

pnpm 全局安装

pnpm uninstall -g omniroute rm -rf ~/.omniroute

Docker

# 停止并移除容器 docker stop omniroute docker rm omniroute # 移除数据卷(删除所有数据) docker volume rm omniroute-data # (可选)移除镜像 docker rmi diegosouzapw/omniroute:latest

关于 Docker 中的数据目录:仓库的 docker-compose.yml 中可以看到DATA_DIR=/app/data必须与卷挂载./data:/app/data保持一致的注释说明,docker-compose.prod.yml 与 contrib/vps/compose.yaml 则使用命名卷(如omniroute-prod-dataomniroute-data)挂载到/app/data。因此删除数据卷(docker volume rm)才是真正清除业务数据的步骤,只删容器不会删除数据。

Docker Compose

# 停止并移除容器 docker compose down # 同时移除卷(删除所有数据) docker compose down -v

注意docker compose down默认保留命名卷,加上-v才会连卷一起删除——这正是文档中特别强调"deletes all data"的原因。

Electron 桌面应用

Windows:

  • 打开设置 → 应用 → OmniRoute → 卸载
  • 或从安装目录运行 NSIS 卸载程序

macOS:

  • /Applications中的OmniRoute.app拖入废纸篓
  • 删除数据:rm -rf ~/Library/Application Support/omniroute

Linux:

  • 删除 AppImage 文件
  • 删除数据:rm -rf ~/.omniroute

提示:macOS 桌面的数据目录独立于 CLI 版默认路径,且 src/lib/dataPaths.ts 的源码逻辑也印证了 Windows 端默认数据目录是%APPDATA%/omniroute/,与文档一致。

源码安装(git clone)

# 删除克隆的目录 rm -rf /path/to/omniroute # (可选)删除数据目录 rm -rf ~/.omniroute

四、验证彻底移除

卸载完成后,用以下命令确认没有残留:

# 检查全局 npm 包是否还存在 npm list -g omniroute 2>/dev/null # 检查数据目录是否还存在 ls -la ~/.omniroute/ 2>/dev/null # 检查是否有残留进程 pgrep -f omniroute

如果仍有进程在运行,将其停止:

pkill -f omniroute

若你在 Windows 上安装或使用过,还应确认%APPDATA%/omniroute/是否被删除;若自定义过DATA_DIR,则需检查对应自定义目录。参照 docs/guides/UNINSTALL.md 的数据目录表逐项核对,即可确认系统已处于干净状态。更进一步,如果你需要重装或换机器迁移,可参考 docs/guides/SETUP_GUIDE.md 了解安装方式,并在卸载前主动备份~/.omniroute/(含storage.sqlitebackups/)以备后续恢复。


五、卸载决策速查

场景推荐命令是否保留数据
临时卸载、之后要重装npm run uninstall保留
彻底清除(含数据库/Key/历史)npm run uninstall:full永久删除
npm 全局手动卸载npm uninstall -g omniroute(可选加rm -rf ~/.omniroute默认保留,按需删除
Docker 手动卸载docker stop/rm+docker volume rm omniroute-data删卷才删数据
Docker Compose 手动卸载docker compose down -v永久删除
Electron 桌面卸载系统卸载入口 / 拖入废纸篓需手动删数据目录

核心结论:"卸载应用"与"删除数据"是两个独立动作。内置脚本把两者拆成了uninstalluninstall:full两个命令,手动方式下则体现在"是否删~/.omniroute/"或"是否删 Docker 卷"上。理解这一点,你就能在任何安装方式下安全、可控地完成 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, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors项目地址: https://gitcode.com/GitHub_Trending/om/OmniRoute

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询