
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 是一个聚合 350 模型供应商的统一 AI 网关使用过程中会在本地持久化大量数据——供应商凭据、Combo 组合、调用日志与自动备份等。本指南完整梳理 OmniRoute 的卸载路径从 v3.6.2 内置的保留/清除双模式脚本到 npm、pnpm、Docker、Docker Compose、Electron 桌面端与源码安装各自的手动清理步骤并深入到 src/lib/dataPaths.ts 与 scripts/build/uninstall.mjs 的源码层面说明数据目录的解析规则与卸载脚本的真实行为最后给出卸载后的残留验证方法。读完你既能留数据重装也能一次性彻底清除覆盖 Linux / macOS / Windows / Docker 全平台。一、卸载前须知两种语义截然不同的卸载OmniRoute 的卸载动作有保留数据与彻底清除两种模式区别在于是否删除~/.omniroute/数据目录中的内容。数据目录里保存着 SQLite 主数据库供应商配置、Combo、设置、API Key、请求载荷归档、自动备份与日志文件因此先用哪种模式取决于你是否计划日后重装模式命令应用本体数据目录保留数据npm run uninstall移除保留彻底清除npm run uninstall:full移除永久删除⚠️注意npm run uninstall:full不可逆。所有供应商连接、Combo 组合、API Key 与用量历史将被永久删除且无法恢复。二、快速卸载内置脚本v3.6.2从 v3.6.2 起OmniRoute 提供了两个内置脚本用于干净地移除应用。它们的定义位于仓库根目录 package.json 的scripts字段中uninstall: node scripts/build/uninstall.mjs, uninstall:full: node scripts/build/uninstall.mjs --full2.1 保留数据npm run uninstallnpm run uninstall该命令移除 OmniRoute 应用本体但保留~/.omniroute/中的数据库、配置、API Key 与供应商设置。适合计划稍后重装、希望沿用原有配置的场景。2.2 彻底清除npm run uninstall:fullnpm run uninstall:full该命令移除应用并永久擦除以下全部数据数据库storage.sqlite供应商配置与 API Key备份文件backups/日志文件~/.omniroute/目录下的所有文件⚠️警告npm run uninstall:full不可逆。所有供应商连接、Combo、API Key 和用量历史将被永久删除。2.3 源码层面卸载脚本究竟做了什么两个命令最终都执行 scripts/build/uninstall.mjs通过命令行参数--full区分模式。从源码看其执行顺序如下停止并删除 PM2 后台进程脚本首先尝试执行pm2 delete omniroute并捕获所有异常——PM2 未安装或进程不存在时静默跳过不会中断卸载流程解析数据目录const dataDir process.env.DATA_DIR || path.join(os.homedir(), .omniroute)——数据目录优先取环境变量DATA_DIR未设置时回退到~/.omniroute按模式处理数据仅当传入--full时执行fs.rmSync(dataDir, { recursive: true, force: true })递归删除整个数据目录普通模式下打印保留数据提示不触碰任何文件卸载全局 npm 包调用npm uninstall -g omniroute。值得注意的是脚本通过OMNIROUTE_SKIP_UNINSTALL_HOOK1环境变量防止 npm 生命周期钩子嵌套触发自身同时用process.env.npm_lifecycle_event uninstall判断当前是否已处于卸载流程中避免重复执行。如果步骤 4 失败脚本会提示可能需要以sudo权限执行npm uninstall -g在全局安装时通常需要管理员权限。三、手动卸载按安装方式逐一清理如果无法使用内置脚本例如版本早于 v3.6.2、或脚本因环境问题失效可按照当初的安装方式手动卸载。3.1 npm 全局安装# 移除全局包 npm uninstall -g omniroute # 可选删除数据目录 rm -rf ~/.omniroute3.2 pnpm 全局安装pnpm uninstall -g omniroute rm -rf ~/.omniroute3.3 Docker# 停止并移除容器 docker stop omniroute docker rm omniroute # 删除数据卷会删除全部数据 docker volume rm omniroute-data # 可选删除镜像 docker rmi diegosouzapw/omniroute:latest3.4 Docker Compose# 停止并移除容器 docker compose down # 同时移除卷会删除全部数据 docker compose down -v从仓库根目录的 docker-compose.yml 可以看到OmniRoute 的 compose 栈除了应用本体外还定义了多个命名卷omniroute-redis-data限流后端 Redis、omniroute-qdrant-data语义记忆侧车、omniroute-bifrost-dataBifrost LLM 路由侧车、chatgpt-web-codex-browser-data与codex-appserver-token/codex-appserver-home等。使用docker compose down -v会连带清除这些卷若只想卸载 OmniRoute 但保留其他基础设施应精确删除对应卷而不使用-v全量清空。另外注意compose 文件将DATA_DIR固定为/app/data并通过./data:/app/data以绑定挂载方式持久化宿主目录。若你曾用 compose 部署卸载后还需要清理宿主上对应的./data目录。3.5 Electron 桌面应用Windows打开设置 → 应用 → OmniRoute → 卸载或从安装目录运行 NSIS 卸载程序macOS将/Applications中的OmniRoute.app拖入废纸篓删除数据rm -rf ~/Library/Application Support/omnirouteLinux删除 AppImage 文件删除数据rm -rf ~/.omniroute3.6 源码安装git clone# 删除克隆目录 rm -rf /path/to/omniroute # 可选删除数据目录 rm -rf ~/.omniroute四、数据目录默认路径、覆盖方式与文件清单4.1 各平台默认路径OmniRoute 默认在以下位置存储数据平台默认路径覆盖方式Linux~/.omniroute/DATA_DIR环境变量macOS~/.omniroute/DATA_DIR环境变量Windows%APPDATA%/omniroute/DATA_DIR环境变量Docker/app/data/挂载卷DATA_DIR环境变量XDG-compliant$XDG_CONFIG_HOME/omniroute/XDG_CONFIG_HOME环境变量4.2 源码中的路径解析规则数据目录的解析逻辑集中在 src/lib/dataPaths.ts 的getDefaultDataDir()/resolveDataDir()中其判定顺序值得注意优先保留旧版路径如果~/.omniroute/getLegacyDotDataDir()计算得出已存在则直接返回该路径——这是为了避免升级迁移造成数据丢失源码注释明确提到 Windows 迁移场景Windows 特判process.platform win32时使用%APPDATA%/omnirouteAPPDATA未设置时回退到AppData\RoamingXDG 支持Linux/macOS 下显式配置了XDG_CONFIG_HOME时使用$XDG_CONFIG_HOME/omniroute默认回退以上均不满足时使用~/.omnirouteDATA_DIR优先级最高resolveDataDir()中任何显式设置的DATA_DIR都优先于上述全部默认逻辑。此外resolveDataDir()还有isCloud分支云模式返回/tmp并针对测试上下文NODE_TEST_CONTEXT、VITEST、NODE_ENVtest等做了隔离保护避免评估/测试进程误写操作者的真实数据库——相关逻辑详见 src/lib/dataPaths.ts。4.3 数据目录中的文件文件/目录说明storage.sqlite主数据库供应商、Combo、设置、密钥storage.sqlite-walSQLite 预写日志临时文件storage.sqlite-shmSQLite 共享内存临时文件call_logs/请求载荷归档backups/自动数据库备份log.txt旧版请求日志可选其中call_logs既是 SQLite 内的数据表也是归档目录仓库中 src/lib/db/callLogStats.ts 等模块大量基于call_logs表做用量统计与回退率聚合而storage.sqlite-wal/storage.sqlite-shm是 SQLite WAL 模式的临时伴生文件——即便storage.sqlite本身被删除这两个伴生文件也可能残留彻底卸载时应一并清除。对数据库结构与备份机制的深入说明可参考 docs/ops/DATABASE_GUIDE.md。五、卸载后验证确认残留为零卸载完成后建议按以下顺序验证系统是否已清理干净# 检查全局 npm 包是否还存在 npm list -g omniroute 2/dev/null # 检查数据目录是否还存在 ls -la ~/.omniroute/ 2/dev/null # 检查是否有仍在运行的进程 pgrep -f omniroute如果仍有进程在运行先将其停止pkill -f omniroute在 Docker 部署场景下还应追加验证容器、镜像与卷的残留docker ps -a | grep omniroute docker images | grep omniroute docker volume ls | grep omniroute六、常见问题与排障提示提示需要 sudonpm uninstall -g失败时通常是全局 Node 目录无写权限可尝试sudo npm uninstall -g omniroute此时数据目录清理需按原用户权限执行注意sudo下$HOME会指向 root。PM2 进程残留内置脚本会先执行pm2 delete omniroute并忽略失败若手动卸载可先运行pm2 delete omniroute或按上一节用pgrep/pkill处理。Compose 卷残留docker compose down不带-v不会删除数据卷Redis、Qdrant、Bifrost 等命名卷可能仍在确认不再需要后用docker volume rm 卷名清理详见 docker-compose.yml 的volumes段。想保留配置但应用报找不到数据重装前请勿删除~/.omniroute/重装后若数据目录路径解析异常可显式设置DATA_DIR指向旧目录路径解析规则见 src/lib/dataPaths.ts。其他平台的完整安装与运行步骤可参考 docs/guides/SETUP_GUIDE.md、docs/guides/DOCKER_GUIDE.md 与 docs/guides/ELECTRON_GUIDE.md本指南的英文原版见 docs/guides/UNINSTALL.md。【免费下载链接】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),仅供参考