OmniRoute CLI 集成实战:用 setup-* 命令与 run 启动器把任意编码 CLI 接入统一网关 OmniRoute CLI 集成实战用 setup-* 命令与 run 启动器把任意编码 CLI 接入统一网关【免费下载链接】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/OmniRouteOmniRoute 提供了一组setup-*命令和通用启动器omniroute run target可以把 Codex、Claude Code、OpenCode、Cline、Aider、Goose、Qwen Code、Gemini CLI 等编码 CLI 统一指向同一个 OmniRoute 端点由 OmniRoute 负责路由到正确的上游提供商并自动降级auto-fallback。读完本篇你可以掌握各工具配置命令会写入什么文件、支持哪些参数、本地/远程两种用法、Base URL 约定以及从仓库源码层面验证这些命令的实现契约清单驱动、环境注入、退出码语义与冒烟测试。以下内容基于文档版本 3.8.502026-08-18 更新适用前提是本机已安装并运行 OmniRoute默认localhost:20128。核心机制一个端点多套工具配置每个setup-*命令的工作流程是从一个正在运行的 OmniRoute本地或远程实时读取模型目录live model catalog然后把该工具自己的配置文件写到你自己的机器上。API Key 在工具支持的地方一律以环境变量方式引用而不是落盘明文会持久化工具本地环境文件的命令会在后文标注。除了写配置的命令还有一类API-first 的提供商管理命令它们与管理面认证分离、绝不会在结构化输出中打印凭据omniroute providers add glm --credential-env GLM_API_KEY --name work omniroute providers import ./providers.json --dry-run --json omniroute providers auth openai omniroute providers edit connection-id --default-model glm/glm-5.2 omniroute providers remove connection-id --yes对脚本化场景优先使用--credential-stdin或--credential-env--credential仅保留给受控的本地使用。providers remove在非交互终端下必须加--yes以上五个命令都尊重当前激活的 context 或全局--base-url/--api-key选项。主表14 个命令各写什么、支持哪些 flag所有命令都遵循同一个解析规则无 flag 时目标为http://localhost:20128带--remote url --api-key key或存在激活的远程 context见 远程模式 中的omniroute connect时从该服务器拉取目录但配置仍写在本地机器上。命令工具写入内容主要 flag本地/远程omniroute setup-codexOpenAI Codex CLI~/.codex/name.config.toml— 每个兼容文本模型一个 profilecodex --profile name--remote--api-key--only--dry-run--port--codex-home两者omniroute setup-claudeClaude Code~/.claude/profiles/name/settings.json— 每个匹配模型一个 profileCLAUDE_CONFIG_DIR--remote--api-key--only--dry-run--port--claude-home两者omniroute setup-opencodeOpenCodeopenai 兼容~/.config/opencode/opencode.json—omnirouteprovider含目录中全部模型opencode -m omniroute/model--remote--api-key--only--model--dry-run--port两者omniroute setup-clineCline~/.cline/data/{globalState,secrets}.jsonCLI 模式 打印 VS Code 扩展配置--remote--api-key--model--yes--dry-run--port--cline-dir两者omniroute setup-kiloKilo Code~/.local/share/kilo/auth.jsonCLI 若存在则把kilocode.*合并进 VS Codesettings.json--remote--api-key--model--yes--dry-run--port--auth-path--vscode-settings两者omniroute setup-continueContinue /cnCLI~/.continue/config.yaml—provider: openai模型key 经${{ secrets.OMNIROUTE_API_KEY }}注入--remote--api-key--only--dry-run--port--config-path两者omniroute setup-cursorCursor不写文件 — 打印应用内操作步骤Cursor 配置是透明的 SQLite 存储--remote--api-key--only--port两者omniroute setup-rooRoo Code~/.omniroute/roo-settings.jsonimport 文档 若存在 VS Codesettings.json则设置roo-cline.autoImportSettingsPath--remote--api-key--model--yes--dry-run--port--import-path--vscode-settings两者omniroute setup-crushCrush~/.config/crush/crush.json—openai-compatproviderkey 经$OMNIROUTE_API_KEY注入--remote--api-key--only--dry-run--port--config-path两者omniroute setup-gooseGoose~/.config/goose/config.yamlGOOSE_PROVIDER/OPENAI_HOST/GOOSE_MODEL 打印环境变量配方--remote--api-key--model--yes--dry-run--port--config-path两者omniroute setup-aiderAider~/.aider.conf.ymlopenai-api-basemodel: openai/id 打印环境变量配方--remote--api-key--model--yes--dry-run--port--config-path两者omniroute setup-qwenQwen Code~/.qwen/settings.json— V4modelProviders.openai数组 OMNIROUTE_API_KEY写入~/.qwen/.env--remote--api-key--model--yes--dry-run--port--config-path--env-path两者omniroute run target运行时启动通用不写任何文件 — 以正确的环境和参数启动claude/codex/aider/goose/opencode/qwen/geminiQwen 与 Gemini 使用临时隔离目录--remote--base-url--context--provider--model--api-key--api-key-env--dry-run--json--port--profile--token两者omniroute launchClaude Code不写文件 — 注入ANTHROPIC_BASE_URL/ANTHROPIC_AUTH_TOKEN后启动claude--remote--api-key--token--profile--port两者omniroute launch-codexOpenAI Codex CLI不写文件 — 通过-cflag 注入omnirouteprovider 后启动codex--remote--api-key--profile-p--port两者flag 语义已在命令源码中验证--remote url从远程 OmniRoute 拉取目录覆盖--port与激活的 context。--api-key key提供该服务器的凭据默认取环境变量OMNIROUTE_API_KEY或激活 context 的 token。--only patterns逗号分隔的子串仅保留匹配的模型 ID如--only glm,kimi。仅setup-codex、setup-claude、setup-opencode、setup-continue、setup-cursor、setup-crush支持。--dry-run打印将要写入的确切内容而不触碰文件系统。除setup-cursor它从不写文件外所有setup-*命令都支持。--model id对没有模型自动发现的工具Cline、Kilo、Roo、Goose、Qwen、Aider必填或交互式选择。这些工具同时接受--yes用于非交互运行此时必须提供--model。setup-opencode用--model设置顶层默认模型。--model id在omniroute run下按目标的清单接线传递aider收到--model openai/idopencode收到--model omniroute/id仅当 id 没有该前缀时才补上qwen和gemini原样收到 idclaude经ANTHROPIC_MODEL环境变量goose经GOOSE_MODELcodex经-c model_providers.omniroute.*参数。Qwen 是唯一硬性要求--model的 run 目标— 缺失时退出码为2并给出显式错误。--port port本地 OmniRoute 端口默认20128设置--remote时忽略。所有setup-*与两个 launcher 均有。omniroute run退出码子 CLI 的退出码原样透传2 参数无效目标不支持、缺少必需的--model、容器保护127 目标二进制不在PATH130/143/129分别对应SIGINT/SIGTERM/SIGHUP终止1 其他运行时启动失败。两个 launcherlaunch、launch-codex接受--profile name来选择setup-claude/setup-codex写出的 profile其余参数透传给底层claude/codex二进制。源码印证清单是唯一事实来源run、configure、completion三个命令面的目标列表、别名解析与--model接线全部派生自单一权威清单 bin/cli/cli-manifest.mjs而非各自维护私有拷贝。从源码结构看每个目标条目声明description、aliases、run/configure能力位、runModel接线{ flag, prefix, required }。例如qwen的runModel为{ flag: --model, prefix: , required: true }这正是qwen 必须带--model这一契约的出处claude与goose的runModel为null注释标明模型经ANTHROPIC_MODEL/GOOSE_MODEL环境变量注入。manifestModelArgs()负责仅当 id 未带前缀才补前缀的逻辑manifestRequiresModel()导出硬性--model检查。服务端运行时目录src/shared/services/cliRuntime.ts是二进制、配置路径与健康检查的事实来源漂移测试 tests/unit/cli/cli-manifest-drift.test.ts 断言两个世界与所有消费面保持同步 — 也就是说清单与实现不会静默分叉。omniroute completion提供的补全词同样是这份清单派生的目标名。交互式选择器omniroute configure交互式 picker 也被 setup 配方共享# 从激活的本地或远程模型目录中选择然后配置目标 omniroute configure claude omniroute configure opencode --provider glm omniroute configure qwen --model qwen/qwen3.8-max-preview --yesconfigure目前委派给经过测试的codex、claude、opencode、qwen、aider、goose、cline、continue与kilo配方。仅 IDE、MITM 与仅指南的目录条目仍保持显式setup-*/手动流程不作为可启动目标呈现。注意区分两个 OpenCode 集成setup-opencode连字符是轻量的 openai 兼容集成写opencode.json而omniroute setup opencode空格是更丰富的插件集成会安装omniroute/opencode-plugin。两者是不同命令。插件包分 v1/v2 两个发行包v1 对应 OpenCode v1v2 对应 OpenCode v2因为两个主版本的加载器期望不同的入口点v2 通过向opencode.json添加plugins条目安装选项与凭据查找顺序见其包 README。本地使用OmniRoute 运行在localhost:20128时直接运行对应工具的 setup 命令即可目录从本地服务器拉取。# Codex为每个匹配模型在 ~/.codex/ 写一个 profile omniroute setup-codex codex --profile glm52 # 使用生成的 profile # Claude Code写 per-model profile然后启动一个 omniroute setup-claude omniroute launch --profile glm52 # OpenCode写入 openai 兼容 provider 与目录中全部模型 omniroute setup-opencode export OMNIROUTE_API_KEYsk-... # 经 {env:OMNIROUTE_API_KEY} 引用绝不落盘 opencode -m omniroute/glm/glm-5.2 ... # 无自动发现的工具需要显式模型 omniroute setup-aider --model glm/glm-5.2 omniroute setup-qwen --model qwen/qwen3.8-max-preview # 只预览、不写任何东西 omniroute setup-continue --dry-run不写任何配置、仅注入环境变量即可启动omniroute launch # Claude Code → 本地 OmniRoute omniroute launch-codex # Codex CLI → 本地 OmniRoute omniroute launch-codex --profile glm52 omniroute run claude --model openai/gpt-5.4 omniroute run codex --model openai/gpt-5.4 --dry-run --json omniroute run aider --model glm/glm-5.2 -- --message reply OK omniroute run goose --model glm/glm-5.2 omniroute run opencode --model glm/glm-5.2 -- run reply OK omniroute run qwen --model glm/glm-5.2 -- -p reply OK omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p reply OK # 显式命令路径-- 之后的内容原样透传 omniroute run claude -- --print-system-prompt review this diff源码印证run的凭据解析顺序bin/cli/commands/run.mjs 中的toAuthSource()实现了确定的凭据优先级且计划plan输出中永远不打印 token 值显式选项--token/--api-key→--api-key-env指定的环境变量 → 激活 context 的 tokenresolveActiveContext可用OMNIROUTE_CONTEXT选择→ 回落到OMNIROUTE_API_KEY/ANTHROPIC_AUTH_TOKEN。--provider与--model的归一化规则也很明确model 本身含/时原样保留否则拼成provider/model。远程使用用--remote--api-key把任意 setup 命令指向远程 OmniRoute目录从远程拉取配置写在本地机器。# OpenCode 指向远程 VPS只保留 glm/kimi 模型 omniroute setup-opencode --remote http://192.168.0.15:20128 --api-key oma_live_xxx \ --only glm,kimi opencode -m omniroute/glm/glm-5.2 ... # 先 export OMNIROUTE_API_KEY # 从远程目录生成 Codex profile omniroute setup-codex --remote http://192.168.0.15:20128 --api-key oma_live_xxx # 直接对远程启动 CLI omniroute launch --remote http://192.168.0.15:20128 --api-key oma_live_xxx omniroute launch-codex --remote http://192.168.0.15:20128 --api-key oma_live_xxx与其每次传--remote/--api-key不如登录一次让激活 context自动提供omniroute connect 192.168.0.15 # 生成带作用域的 token保存 context omniroute setup-codex # ← 现在自动使用远程目录 omniroute setup-opencode # ← 同上 omniroute launch # ← Claude Code 指向远程context、token 作用域与管理的完整说明见 远程模式。Base URL 约定哪些工具要/v1OmniRoute 把 OpenAI 表面暴露在/v1Anthropic 表面在根路径原生 Gemini 表面在/v1beta。每个集成都按其工具的期望接线已在命令源码中验证集成写入的 Base URL带/v1setup-clineopenAiBaseUrl根否 — Cline 自己拼/v1/chat/completionssetup-gooseOPENAI_HOST根否 — Goose 自己拼路径setup-aiderOPENAI_API_BASE根否 — LiteLLM 自己拼/v1/chat/completionssetup-kilo、setup-roo、setup-continue、setup-crush、setup-cursor带/v1是setup-claudeANTHROPIC_BASE_URL、launch根否 — Claude Code 自己拼/v1/messagessetup-codex、launch-codexmodel_providers.omniroute.base_url带/v1是setup-qwenmodelProviders.openai[].baseUrl带/v1是run geminiGOOGLE_GEMINI_BASE_URL根否 — SDK 自己拼/v1beta/models/…更新时保留原生依赖--includeoptional用omniroute update更新时确认后执行或加--applyOmniRoute 以内置的--includeoptional运行安装npm install -g omniroutelatest --includeoptional这不是你传给omniroute update的 flag — 它由更新器始终施加见 bin/cli/commands/update.mjs。它保证optionalDependenciesbetter-sqlite3、keytar、tls-client、LLMLingua SLM 栈在更新后依然存活即使你的 npm 配置设了omitoptional— 否则原生 SQLite 驱动与系统 keyring 绑定会被静默丢弃。预览确切命令而不实际执行omniroute update --dry-run # [DRY RUN] Would run: npm install -g omniroutelatest --includeoptional其他omniroute update参数已在源码中验证--check版本过期时退出码 1、--apply不询问直接安装、--changelog、--no-backup、--yes。Google Gemini CLIomniroute run gemini的启动契约该契约针对google/gemini-cli0.50.0 验证Gemini CLI 尊重GOOGLE_GEMINI_BASE_URL并向其发送POST /v1beta/models/model:generateContent以及:streamGenerateContent?altsse— 正好对上 OmniRoute 的原生 Gemini 表面/v1beta。omniroute run gemini自动完成如下接线均可在 bin/cli/commands/run.mjs 中核对GOOGLE_GEMINI_BASE_URL→ 激活的 OmniRoute base URL根不带/v1GEMINI_API_KEY→ 解析后的 OmniRoute 凭据选项/env/context 按前述优先级临时隔离的GEMINI_CLI_HOME其中的.gemini/settings.json选择gemini-api-key认证使已存储的 Google OAuth 会话Code Assist永远不会覆盖 OmniRoute 定向的启动 — 进程退出后删除env 卫生处理子进程环境被清理掉GOOGLE_API_KEY、GOOGLE_GENAI_USE_VERTEXAI、GOOGLE_GENAI_USE_GCA这些变量会把认证重定向到 Vertex/Code Assist并设置GEMINI_DEFAULT_AUTH_TYPEgemini-api-key作为双保险 — 其他run目标对各自的冲突变量做同样处理源码中的清理正则见 run.mjs从--provider/--model注入--model id。omniroute run gemini --model glm/glm-5.2 -- --skip-trust -p helloGemini 的工作区信任守卫在 headless 模式下依然生效 — 请自行传--skip-trust或交互地信任该目录launcher 刻意不绕过它。此 launcher 与ACP 注册是两回事ACP 侧src/lib/acp/registry.tsgemini --acp仍是/dashboard/acp-agents的 agent 协议集成。真实二进制冒烟扫描可选启动计划的确定性回归在 CI 中运行tests/unit/cli/run-command.test.ts 覆盖 dry-run 计划tests/unit/cli/run-execution.test.ts 覆盖子进程隔离。要验证真实二进制对真实 OmniRoute 服务器仓库提供了可选的扫描框架 tests/integration/upstream-cli-smoke.int.test.ts。它的行为约束见该文件头部注释从不自动运行 — 除非RUN_CLI_SMOKE1每个子测试都跳过凭据只通过环境变量名--api-key-env传递绝不传值、绝不记录值对任何被记录的输出做 key 形态字符串脱敏自动跳过未安装二进制的目标command -v探测失败被归类为 binary-missing / server-unreachable / auth / upstream / config而不是裸布尔每个目标执行一次性的非交互调用如 codex 用exec --skip-git-repo-checkgemini 用--skip-trust -p并先探测/api/monitoring/health确认服务器可达。RUN_CLI_SMOKE1 \ OMNIROUTE_SMOKE_BASE_URLhttp://localhost:20128 \ OMNIROUTE_SMOKE_MODELprovider/model \ OMNIROUTE_SMOKE_API_KEY_ENVOMNIROUTE_API_KEY \ node --import tsx/esm --test tests/integration/upstream-cli-smoke.int.test.ts可选开关OMNIROUTE_SMOKE_TARGETScodex,opencode,qwen限定扫描范围OMNIROUTE_SMOKE_TIMEOUT_MS覆盖每目标 120 秒的默认超时。相关文档Claude Code 配置 — 更深入的 Claude Code 指南Codex CLI 配置 — 一次性的[model_providers.omniroute]基础配置远程模式 — context、带作用域的访问 token、控制远程服务器VS Code Copilot Chat — OmniCopilot 扩展可在编辑器内替你运行这些setup-*命令CLI 工具参考 — 受支持工具完整目录 面板页面安装指南 — 安装方式与首次运行入门【免费下载链接】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),仅供参考