拓冰建站拓冰建站
首页 / 资讯中心 / 正文

从快速上手到三层弹性体系:OmniRoute 仓库 CLAUDE.md(巴西葡语版)技术指南深度解读

从快速上手到三层弹性体系OmniRoute 仓库 CLAUDE.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本文以 OmniRoute 仓库中的 CLAUDE.mdpt-BR 为主体系统解读这份面向 AI 编码助手Claude Code的仓库开发指南从依赖安装、开发服务器启动到测试门禁的完整命令矩阵从请求处理管线到“熔断器 / 连接冷却 / 模型锁定”三层弹性机制的原理与源码佐证以及代码风格、数据库、安全等方面的强制约定。读完本文你不仅能独立跑通 OmniRoute 的开发流程还能理解其路由与容错体系的设计取舍为参与该仓库贡献打下基础。CLAUDE.md 的定位与阅读对象该文档的开篇即说明其用途“为 Claude Code 在此仓库中工作时提供指引”。它不是一般性的用户手册而是一份面向编码助手与贡献者的工程规范文档既有命令速查也有架构地图、强制规则和调试决策树。仓库通过docs/i18n/目录提供了 50 余个语言的镜像版本docs/i18n/README.md本文解读的正是巴西葡语版其内容与英文版一一对应所有路径与命令均可直接在仓库根目录验证。快速上手开发命令矩阵文档给出的快速启动命令如下原文完整继承npm install # 安装依赖自动从 .env.example 生成 .env npm run dev # 开发服务器运行在 http://localhost:20128 npm run build # 生产构建Next.js 16 standalone npm run lint # ESLint期望 0 错误存量告警已知 npm run typecheck:core # TypeScript 校验必须干净 npm run typecheck:noimplicit:core # 严格校验禁止隐式 any npm run test:coverage # 单元测试 覆盖率门禁 npm run check # lint 测试的组合 npm run check:cycles # 循环依赖检测这些脚本在 package.json 中均可找到实际实现例如dev走的是scripts/dev/run-next.mjsbuild是scripts/build/build-next-isolated.mjstest:coverage则用c8包裹原生 Node 测试运行器执行tests/unit/全量用例。结合仓库配置可以补充几点关键事实运行时要求package.json的engines字段要求 Node22.22.2 23 || 24.0.0 27文档文本中还列出了20.20.2 21的兼容区间实际执行时应以当前engines为准。TypeScript 配置tsconfig.json 确认了文档所述——strict: false、目标ES2022、模块esnext、moduleResolution: bundler路径别名/*→src/、omniroute/open-sse→open-sse/。端口API 与 Dashboard 同端口20128electron:dev脚本中的wait-on http://localhost:20128也可佐证。测试执行方面文档区分了两套运行器# 单个测试文件Node.js 原生测试运行器覆盖大多数测试 node --import tsx/esm --test tests/unit/your-file.test.ts # VitestMCP 服务器、autoCombo、cache 等场景 npm run test:vitest # 全部测试集 npm run test:all从package.json的test:unit定义可以看出绝大多数单元测试走Node 原生--test运行器并以--test-concurrency4并发、--import tsx/esm直接执行 TypeScripttest:all则串联 unit、vitest、ecosystem 与 Playwright e2e 多个阶段。文档同时指引完整测试矩阵见 CONTRIBUTING.md 的“Executando Testes”一节深度架构见 AGENTS.md。项目概览分层架构地图文档用一张表把 OmniRoute 的核心模块与目录对应起来原文继承层位置职责API 路由src/app/api/v1/Next.js App Router 入口处理器open-sse/handlers/请求处理chat、embeddings 等执行器open-sse/executors/各提供商专属 HTTP dispatch翻译器open-sse/translator/格式转换OpenAI↔Claude↔Gemini变换器open-sse/transformer/Responses API ↔ Chat Completions服务open-sse/services/组合路由、限流、缓存等数据库src/lib/db/SQLite 领域模块与版本化迁移领域/策略src/domain/策略引擎、成本规则、fallback 逻辑MCP 服务器open-sse/mcp-server/多传输stdio / SSE / Streamable HTTP、多 scope 工具集A2A 服务器src/lib/a2a/JSON-RPC 2.0 智能体协议技能src/lib/skills/可扩展的技能结构记忆src/lib/memory/持久化对话记忆文档将项目定义为“统一 AI 代理/路由器一个端点、300 多个 LLM 提供商、自动 fallback”并把仓库定性为 monoreposrc/Next.js 应用、open-sse/流式引擎 workspaceopen-sse/package.json 为独立包、electron/桌面端、tests/与 CLI 入口bin/。当前package.json的workspaces字段声明了open-sse与packages/browser-pool两个子包bin/下定义了omniroute可执行入口与文档描述一致。请求管线从 HTTP 进入到 SSE 流文档给出的管线图值得完整保留Cliente → /v1/chat/completions (rota Next.js) → CORS → validação Zod → auth? → verificação de política → proteção contra injeção de prompt → handleChatCore() [open-sse/handlers/chatCore.ts] → verificação de cache → limite de taxa → roteamento combinado? → resolveComboTargets() → handleSingleModel() por alvo → translateRequest() → getExecutor() → executor.execute() → fetch() upstream → retry w/ backoff → tradução de resposta → stream SSE ou JSON → Se Responses API: responsesTransformer.ts TransformStream即客户端请求先经过 CORS 预检、Zod 校验、可选鉴权extractApiKey/isValidApiKey、策略检查与提示注入防护再进入handleChatCore()后者依次做缓存检查、限流、组合路由判断——若命中 combo则由resolveComboTargets()解析目标并逐个调用handleSingleModel()随后translateRequest()→getExecutor()→executor.execute()完成上游请求与退避重试最后翻译响应并以 SSE 或 JSON 流式返回Responses API 走responsesTransformer.ts的 TransformStream。文档还强调了一个重要约定没有全局 Next.js 中间件拦截逻辑全部内聚在各路由内遵循路由 → CORS → Zod 校验 → 可选鉴权 → 策略应用 → 委托 open-sse 处理器的固定模式。关于组合路由Combo routing文档指出open-sse/services/combo.ts提供了 priority、weighted、fill-first、round-robin、p2c、random、least-used、cost-optimized、reset-aware、reset-window、headroom、strict-random、auto、lkgp、context-optimized、cache-optimized、context-relay、fusion、pipeline 等策略每个目标都通过handleSingleModel()单独包装错误处理与熔断检查。从当前源码结构看combo 的解析逻辑已经拆分到open-sse/services/combo/子目录如comboStructure.ts中的resolveComboTargetscombo.ts主体保留导出门面——这是该模块持续演进的体现。更细的 Auto-Combo 13 因子评分可参阅 docs/routing/AUTO-COMBO.md。弹性体系三层机制本文档的核心价值文档用专门一节“Estado de Execução de Resiliência”要求开发者在调试路由行为时保持三个机制的职责边界清晰提供商熔断器、连接冷却、模型锁定。这一节是全文技术密度最高的部分。提供商熔断器Provider Circuit Breaker作用域整个提供商如glm、openai、anthropic。目的当一个提供商在上游/服务层面持续失败时停止向其发送流量避免不健康的提供商拖慢每一笔请求。文档列出的实现位置主类src/shared/utils/circuitBreaker.ts聊天链路的接线src/sse/handlers/chatHelpers.ts、src/sse/handlers/chat.ts运行时状态 APIsrc/app/api/monitoring/health/route.ts共享封装open-sse/services/accountFallback.ts持久化状态表domain_circuit_breakers状态机CLOSED正常放行→OPEN提供商被临时封锁调用方收到 circuit-open 响应或 combo 跳到下一个目标→HALF_OPENreset 超时到期允许一笔探测请求成功则闭合失败则重新打开。对照当前源码可以确认文档描述的机制仍然成立且有增强。src/shared/utils/circuitBreaker.ts 文件头注释显示这是 v2.0 版本实际状态机比文档多了一个DEGRADED中间态L129–L134 定义CLOSED / DEGRADED / OPEN / HALF_OPEN并带有自适应退避连续 open→probe→open 循环时 resetTimeout 逐级放大、按失败类别分别计数、以及状态迁移历史用于诊断。文件还导出了isLocalStreamLifecycleError与isLocalExecutionError两个谓词用于把本地流生命周期错误如AbortError、Controller is already closed与本地执行错误ENOENT/EACCES/EPIPE 等 spawn 失败排除在提供商失败统计之外——这正是“只有 408/500/502/503/504 这类提供商级失败才应触发熔断”这一原则的落地。参数默认值文档给出的快照是 OAuth 提供商3 次/60s、API Key 提供商5 次/30s、本地提供商2 次/15s。需要注意当前代码中的默认值已经演进并支持通过环境变量覆盖。open-sse/config/constants.ts 中的PROVIDER_PROFILES显示oauthcircuitBreakerThreshold默认 8envOMNIROUTE_CIRCUIT_BREAKER_OAUTH_THRESHOLD覆盖reset 60stransientCooldown5smaxBackoffLevel8apikey阈值默认 12OMNIROUTE_CIRCUIT_BREAKER_API_KEY_THRESHOLDreset 30stransientCooldown3srateLimitCooldown0表示遵循上游Retry-Afterlocal阈值默认 2OMNIROUTE_CIRCUIT_BREAKER_LOCAL_THRESHOLDreset 15stransientCooldown2s。此外每个 profile 还有一组提供商级参数providerFailureThreshold、providerFailureWindowMs、providerCooldownMs、degradationThreshold、maxBackoffMultiplier等对应窗口内累计失败触发整提供商冷却且同样可用OMNIROUTE_PROVIDER_BREAKER_*系列环境变量调节。阅读这份文档时应理解文档数值是某个时点的快照运行行为以PROVIDER_PROFILES与环境变量为准。文档还明确了两条边界规则源码与之吻合不要把普通的账号/密钥/模型错误大多数 401、403、429升级为整个提供商的熔断——它们属于连接冷却或模型锁定泛型 API Key 的 403 默认应是可恢复的除非被归类为终态错误。熔断采用惰性恢复而非后台定时器当OPEN到期后getStatus()、canExecute()、getRetryAfterMs()这类读取调用会顺带把状态刷新为HALF_OPEN避免面板与 combo 候选构建器永远排除一个已经恢复资格的提供商。连接冷却Connection Cooldown作用域单条提供商/账号/密钥连接。目的临时跳过坏掉的那把钥匙同时让同一提供商的其他连接继续服务。实现位置原文继承写入/更新路径src/sse/services/auth.ts的markAccountUnavailable()账号选择/过滤src/sse/services/auth.ts的getProviderCredentials...系列冷却计算open-sse/services/accountFallback.ts的checkFallbackError()配置src/lib/resilience/settings.ts连接对象上的关键字段rateLimitedUntil、testStatus: unavailable、lastError、lastErrorType、errorCode、backoffLevel。选号阶段只要new Date(rateLimitedUntil).getTime() Date.now()该连接即被跳过冷却同样是惰性的——时间戳进入过去后连接自动重新成为候选成功使用后clearAccountError()会清空testStatus、rateLimitedUntil、错误字段与backoffLevel。文档给出的冷却行为参数OAuth 基础冷却 5s、API Key 基础冷却 3s与PROVIDER_PROFILES的transientCooldown完全对应API Key 遇到 429 时优先采用上游重试提示Retry-After、reset 头或可解析的 reset 文本重复的可恢复失败采用指数退避baseCooldownMs * 2 ** failureIndex;当前源码中该逻辑位于 open-sse/services/accountFallback.ts 的getScaledCooldown()以failureCount - 1为指数、封顶在maxBackoffLevelMath.min(Math.max(0, failureCount - 1), maxBackoffLevel)后计算safeBase * 2 ** exponent最终再与maxCooldownMs上限取小——即文档公式的带上限工程化版本。文档提到的防惊群守卫anti-thundering-herd也确有实据src/sse/services/auth.ts 中为markAccountUnavailable实现了按连接互斥注释明确其目的是防止并发请求同时把同一连接标记为不可用从而避免级联 502 锁死。最后一层语义区分终态不是冷却。banned、expired、credits_exhausted应当保持不可用直到凭据/配置变更或运维手动重置不允许用瞬态冷却状态覆盖终态。模型锁定Model Lockout作用域提供商 连接 模型。目的当只有某个模型在该连接上不可用或受配额限制时避免把整条连接拖下水。典型场景按模型计配额的上游返回 429本地提供商对缺失模型返回 404提供商特有的模式/模型权限失败如某些 Grok 模式。文档指出该机制同样落在open-sse/services/accountFallback.ts允许同一连接继续服务其他模型。从源码结构看还存在open-sse/services/accountFallback/子目录如exactModelLock.ts、nonRetryableUpstream.ts模型锁定已进一步拆分为独立单元。调试决策清单文档给出了五条可直接照用的排障规则建议在调试路由异常时按序检查某提供商的所有钥匙都被跳过 → 同时检查提供商熔断器状态与每条连接的rateLimitedUntil/testStatus某提供商在 reset 窗口后仍被“永久”排除 → 检查代码是否直接读了裸state而没有走getStatus()/canExecute()绕过惰性刷新一把钥匙坏了但其他钥匙应继续工作 → 用连接冷却而不是提供商熔断只有一个模型失败 → 用模型锁定而不是连接冷却;任何“应自动恢复”的状态必须同时具备“未来时间戳/reset 超时”和“能刷新过期状态的读取路径”永久状态则必须依赖凭据或配置的人工变更。核心工程约定代码风格2 空格、分号、双引号、100 字符宽、ES5 尾逗号由 lint-staged 经 Prettier 应用见 package.json 的lint-staged段导入顺序外部 → 内部/、omniroute/open-sse→ 相对路径命名文件 camelCase/kebab-case组件 PascalCase常量 UPPER_SNAKEESLintno-eval、no-implied-eval、no-new-func全局为 errorno-explicit-any在open-sse/与tests/为 warningTypeScriptstrict: false、ES2022 目标、esnext 模块、bundler 解析偏好显式类型。数据库永远经由src/lib/db/的领域模块访问数据禁止在路由或处理器中写裸 SQL禁止在src/lib/localDb.ts添加逻辑它只是 re-export 层也禁止把它当桶文件导入——应直接 importdb/下的具体模块数据库单例来自src/lib/db/core.ts的getDbInstance()WAL journaling迁移位于src/lib/db/migrations/——版本化、幂等、在事务中执行的 SQL 文件。仓库中scripts/check/check-db-rules.mjscheck:db-rules与check:migration-numbering等脚本从工程层面守护这些规则。错误处理与 SSEtry/catch 配合具体错误类型用 pino 记录带上下文的日志绝不在 SSE 流中吞错——用 abort 信号做清理返回恰当的 HTTP 状态码4xx/5xx。安全约定文档列出的安全红线原文要点继承每一条都指向可验证的实现或文档禁用eval()、new Function()与任何隐式 eval所有入口用 Zod schema 校验凭据静态存储加密AES-256-GCM上游头 deny 列表src/shared/constants/upstreamHeaders.ts——编辑时须同步保持清洗逻辑、Zod schema 与单元测试三者一致上游公共凭据Gemini/Antigravity/Windsurf 风格的 OAuth client_id/secret以及从公开 CLI 中提取的 Firebase Web 密钥必须经由open-sse/utils/publicCreds.ts的resolvePublicCred()引入禁止字符串字面量规范见 docs/security/PUBLIC_CREDS.md并有check:public-creds脚本与tests/unit/中的断言配合错误响应HTTP / SSE / executor / MCP 处理器必须经过open-sse/utils/error.ts的buildErrorBody()或sanitizeErrorMessage()绝不允许把err.stack/err.message原样放入响应体规范见 docs/security/ERROR_SANITIZATION.md由变量拼装 shell 命令需要运行时值时通过exec()/spawn()的env选项传递自动转义绝不在脚本体内插值外部/不可信的路径字符串参考实现src/mitm/cert/install.ts的updateNssDatabases优先选用默认安全的成熟库如 Helmet.js、DOMPurify、ssrf-req-filter、safe-regex、Google Tink而非自研安全组件。常见修改场景六类扩展任务的固定配方文档为高频改动场景各给了一份“步骤清单”是贡献前最实用的 checklist。以下按原文结构整理新增提供商在src/shared/constants/providers.ts注册加载时经 Zod 校验若需要定制 HTTP 逻辑在open-sse/executors/添加执行器继承BaseExecutor若上游格式非 OpenAI在open-sse/translator/添加翻译器OAuth 类提供商在src/lib/oauth/constants/oauth.ts配置若上游 CLI 携带公共 client_id/secret必须走resolvePublicCred()禁止字面量在open-sse/config/providerRegistry.ts注册模型在tests/unit/编写测试新增嵌入凭据模式时包含 publicCreds 断言。新增 API 路由建目录src/app/api/v1/sua-rota/route.ts实现GET/POST遵循固定模式CORS → Zod 校验 → 可选鉴权 → 委托处理器处理器放在open-sse/handlers/从那里 import禁止内联错误响应用buildErrorBody()/errorResponse()自动脱敏绝不外泄 stack/message补测试且至少包含一条“错误响应不泄漏堆栈”的断言形如!body.error.message.includes(at /)。新增 DB 模块建src/lib/db/seuModulo.ts从./core.ts导入getDbInstance导出对应领域表的 CRUD 函数需要新表时在src/lib/db/migrations/添加迁移仅在src/lib/localDb.ts的 re-export 列表中追加条目写测试。新增 MCP 工具在open-sse/mcp-server/tools/添加工具定义Zod 输入 schema 异步处理器注册到工具集由createMcpServer()装配分配合适的 scope写测试工具调用会记入mcp_audit表测试可据此断言。新增 A2A 技能在src/lib/a2a/skills/创建技能已有 smart-routing、quota-management、provider-discovery、cost-analysis、health-report 五个技能接收任务上下文消息、元数据→ 返回结构化结果在src/lib/a2a/taskExecution.ts的A2A_SKILL_HANDLERS注册在src/app/.well-known/agent.json/route.tsAgent Card暴露tests/unit/补测试更新 docs/frameworks/A2A-SERVER.md 的技能表。新增云端智能体在src/lib/cloudAgent/agents/创建类继承CloudAgentBase已有 codex-cloud、devin、jules 三个实现createTask、getStatus、approvePlan、sendMessage、listSources注册到src/lib/cloudAgent/registry.ts需要时在src/lib/oauth/providers/添加 OAuth/凭据处理测试 在 docs/frameworks/CLOUD_AGENT.md 文档化。此外文档还给出四个“同构”扩展点Guardrailsrc/lib/guardrails/→ docs/security/GUARDRAILS.md、Eval 集src/lib/evals/→ docs/frameworks/EVALS.md、沙箱 Skillsrc/lib/skills/→ docs/frameworks/SKILLS.md、Webhook 事件src/lib/webhookDispatcher.ts→ docs/frameworks/WEBHOOKS.md。测试体系与覆盖率政策原文的测试命令表完整继承场景命令单元测试npm run test:unit单个文件node --import tsx/esm --test tests/unit/file.test.tsVitestMCP、autoCombonpm run test:vitestE2EPlaywrightnpm run test:e2e协议 E2EMCPA2Anpm run test:protocols:e2e生态测试npm run test:ecosystem覆盖率门禁npm run test:coverage覆盖率报告npm run coverage:report文档中的三条硬政策值得注意PR 规则只要改动src/、open-sse/、electron/或bin/下的生产代码同一 PR 必须包含或更新对应测试分层偏好单元测试优先 → 集成测试多模块或 DB 状态→ e2e仅 UI/workflowbug 修复应“先写或同步写复现测试”覆盖率政策文档口径为声明/行/函数 ≥75%、分支 ≥70%并声明当时实测约 82%。需要说明的是当前 package.json 中test:coverage实际启用的c8 --check-coverage参数是--statements 60 --lines 60 --functions 60 --branches 60——即文档代表团队的目标线脚本是当下自动执行的底线二者口径不同执行 CI 时以脚本为准。Git 工作流# 绝不允许直接 commit 到 main git checkout -b feat/sua-funcionalidade git commit -m feat: descreva sua alteração git push -u origin feat/sua-funcionalidade分支前缀feat/、fix/、refactor/、docs/、test/、chore/提交格式Conventional Commitsfeat(db): adicionar circuito de interrupção可用 scopedb、sse、oauth、dashboard、api、cli、docker、ci、mcp、a2a、memory、skillsHusky 钩子pre-commit执行 lint-staged check-docs-synccheck:any-budget:t11pre-push执行npm run test:unit。package.json的prepare脚本会自动安装 huskylint-staged配置覆盖*.{js,jsx,ts,tsx,mjs}与*.{json,md,yml,yaml,css}。环境事实速查运行时Node文档口径 ≥20.20.221 / ≥22.22.223 / ≥2425engines口径 ≥22.22.223 / ≥2427ES 模块TypeScript5.9 口径当前 devDependencies 中已引入更高版本的 TypeScriptES2022 目标、esnext 模块、bundler 解析路径别名/*→src/omniroute/open-sse→open-sse/omniroute/open-sse/*→open-sse/*tsconfig.json 另含omniroute/browser-pool默认端口20128API 与 Dashboard 同端口数据目录DATA_DIR环境变量默认~/.omniroute/主要环境变量PORT、JWT_SECRET、API_KEY_SECRET、INITIAL_PASSWORD、REQUIRE_API_KEY、APP_LOG_LEVEL初始化cp .env.example .env随后生成JWT_SECRETopenssl rand -base64 48与API_KEY_SECRETopenssl rand -hex 32。npm install会通过 postinstall 从.env.example自动生成.env。十六条硬性规则Regas Rigorosas文档以编号清单形式给出 16 条不可妥协的规则此处完整列出其要点不提交任何秘密或凭据不在localDb.ts中添加逻辑不使用eval()/new Function()/隐式 eval不直接提交到main路由中不写裸 SQL——一律走src/lib/db/模块不在 SSE 流中吞掉错误输入必须经 Zod schema 校验改动生产代码必须附带测试覆盖率保持 ≥75%声明/行/函数/ ≥70%分支——文档声明当时实测约 82%未经操作员明确批准不得绕过 Husky 钩子--no-verify、--no-gpg-sign不将公共 OAuth client_id/secret 或 Firebase Web 密钥写成字符串字面量——一律走resolvePublicCred()HTTP/SSE/executor 响应中不返回裸err.stack/err.message——一律走buildErrorBody()/sanitizeErrorMessage()不把外部路径或运行时值内插到传给exec()/spawn()的 shell 脚本里——改用env选项不得随手消掉 CodeQL/Secret-Scanning 告警先核对上述规范文档确认 helper 是否适用再在驳回评论中记录技术理由文档特别指出对已经走sanitizeErrorMessage()的调用点报出的js/stack-trace-exposure属 CodeQL 已知限制不识别自定义脱敏器可按“误报”驳回并注明 docs/security/ERROR_SANITIZATION.md不得暴露会派生子进程的路由/api/mcp/、/api/cli-tools/runtime/而不带src/server/authz/routeGuard.ts中isLocalOnlyPath()的分类——loopback 强制在鉴权之前无条件执行确保经隧道泄漏的 JWT 无法触发子进程生成见 docs/security/ROUTE_GUARD_TIERS.md提交中不得包含把 AI 助手、LLM 或自动化账号列为Co-Authored-By的 trailer例如名称含 “Claude”/“GPT”/“Copilot”/“Bot”、或 bot 的 noreply 邮箱——那会把 commit 归属路由到 bot 账号、遮蔽真实作者人类协作者包括上游 PR 作者与移植的 issue 报告者则应当按标准Co-authored-by:trailer 正常署名上游移植流程依赖这一点。参考文档索引文档最后要求任何非平凡改动前先读对应分析文档。原文表格路径已按仓库根目录口径整理领域文档仓库导航docs/architecture/REPOSITORY_MAP.md架构docs/architecture/ARCHITECTURE.md工程参考docs/architecture/CODEBASE_DOCUMENTATION.mdAuto-Combo13 因子评分、公开策略集docs/routing/AUTO-COMBO.md弹性三个机制docs/architecture/RESILIENCE_GUIDE.md推理回放docs/routing/REASONING_REPLAY.md技能结构docs/frameworks/SKILLS.md记忆系统FTS5 Qdrantdocs/frameworks/MEMORY.md云端智能体docs/frameworks/CLOUD_AGENT.mdGuardrailsPII/注入/视觉docs/security/GUARDRAILS.md上游公共凭据docs/security/PUBLIC_CREDS.md错误消息脱敏docs/security/ERROR_SANITIZATION.md评测docs/frameworks/EVALS.md合规/审计docs/security/COMPLIANCE.mdWebhooksdocs/frameworks/WEBHOOKS.md授权管线docs/architecture/AUTHZ_GUIDE.mdStealthTLS/指纹docs/security/STEALTH_GUIDE.md智能体协议A2A/ACP/云docs/frameworks/AGENT_PROTOCOLS_GUIDE.mdMCP 服务器docs/frameworks/MCP-SERVER.mdA2A 服务器docs/frameworks/A2A-SERVER.mdAPI 参考 OpenAPIdocs/reference/API_REFERENCE.md docs/reference/PROVIDER_REFERENCE.md发布流程docs/ops/RELEASE_CHECKLIST.md文档同时给出三层弹性示意图的渲染产物 docs/diagrams/exported/resilience-3layers.svg 及其源文件 docs/diagrams/resilience-3layers.mmd可作为调试路由异常时的快速心智地图。小结这份 CLAUDE.md 的价值不在“教你装软件”而在于把 OmniRoute 的工程契约固化成了可执行文本请求管线的固定模式、三层弹性机制的职责边界提供商熔断 vs 连接冷却 vs 模型锁定、DB 访问与错误脱敏的强制路径、以及 16 条硬性红线。结合package.json的脚本矩阵与open-sse/config/constants.ts、src/shared/utils/circuitBreaker.ts、open-sse/services/accountFallback.ts等源码证据文档中每条约定都找到了可验证的落点对于随版本演进的参数如熔断阈值与覆盖率门禁以仓库当前源码与脚本为准、把文档当作设计意图与决策依据是阅读这类仓库指南的最佳姿势。【免费下载链接】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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门