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
OmniRoute 是一个统一的 AI 网关与路由器项目,提供单一 OpenAI 兼容端点,聚合数百家提供商与上千个模型,并内置配额感知自动回退、RTK+Caveman 压缩、MCP/A2A 等能力。本文围绕仓库中的官方发布检查清单(docs/ops/RELEASE_CHECKLIST.md 及其 i18n 镜像 docs/i18n/hu/docs/ops/RELEASE_CHECKLIST.md)展开,完整梳理一次正规发布从版本号、CHANGELOG、OpenAPI 同步,到代码质量、测试、文档/i18n、数据库迁移、Provider 目录、Electron 桌面端、构建产物校验、打标签、部署与回滚的每一个闸门。读完本文,你将掌握 OmniRoute 发布全流程的可执行命令、每个检查项的底层实现与失败时的正确处置方式。
一、清单的定位:多语言同步的单一事实源
OmniRoute 的发布检查清单以 docs/ops/RELEASE_CHECKLIST.md 为英文原版,并在 docs/i18n/ 下维护了 40+ 个语言镜像(如 匈牙利语镜像、波兰语镜像)。这些镜像并非独立文档,而是由同步守卫强制的翻译副本。
从 scripts/check/check-docs-sync.mjs 的源码可以看到同步机制的本质:
- 脚本会读取
package.json的version、docs/openapi.yaml 的info.version、CHANGELOG.md 的各个## [版本号]段落,逐一比对一致性; - 对于
llm.txt这类纯镜像,要求与源逐字节一致;对于多语言CHANGELOG.md,则校验所有版本段落完整存在且顺序一致,行数偏差不超过 25%; - 任一不满足即输出
[docs-sync] FAIL - ...并以退出码 1 结束,本地与 CI 都会因此红灯。
这意味着清单本身也是发布质量的一部分:只有npm run check:docs-sync通过,版本三件套(package.json / openapi.yaml / CHANGELOG)与所有语言镜像才被视为"就绪"。
二、开跑前的 TL;DR 流水线
英文原版清单在开头给出了六步发布流水线(其中依赖 Claude Code 技能),匈牙利语镜像与之对应的是手动检查项。先看全局:
# 1. 升版本号 + 生成 CHANGELOG(技能) /version-bump-cc patch # 或 minor / major # 2. 本地质量闸门 npm run check # lint + tests npm run test:coverage # 完整覆盖率闸门(60/60/60/60) # 3. 构建与冒烟 npm run build npm run test:e2e # 可选但推荐 # 4. 生成发布(技能) /generate-release-cc # 5. 部署(技能) /deploy-vps-both-cc # 或 akamai-cc / local-cc # 6. 采集发布证据(技能) /capture-release-evidences-cc这套流水线的背后是一条硬性纪律:保持队列/分支在两次发布之间常绿。发布前应先运行npm run check:release-green(对应 scripts/quality/validate-release-green.mjs)与 nightly 检查,让发布 PR 从零开始就是绿色。
三、版本号与 CHANGELOG:三处必须对齐
1. 版本号提升
在发布分支中提升package.json的version(x.y.z)。注意 package.json 当前版本为3.8.51,且electron/package.json必须与根目录版本保持一致(见下文 Desktop 章节)。使用技能时,/version-bump-cc <patch|minor|major>会同时完成:提升package.json与electron/package.json、根据最近一次 tag 以来的 git 提交重新生成CHANGELOG.md、更新 README 徽章。
2. CHANGELOG 格式纪律
- 将
## [Unreleased]中的发布说明移动到带日期的版本段落:## [x.y.z] — YYYY-MM-DD; - 永远保留
## [Unreleased]作为第一个 changelog 段落,用于承接后续工作; - 最新的 semver 段落必须等于
package.json的版本号。
check-docs-sync.mjs会强校验这一点:extractChangelogSections会检查第一个段落是否为Unreleased,且第一个 semver 段落等于packageJson.version,否则 FAIL。
3. OpenAPI 版本对齐
清单要求docs/openapi.yaml(匈牙利语镜像中误写为docs/reference/openapi.yaml,以仓库实际存在的 docs/openapi.yaml 为准)的info.version必须等于package.json版本。check-docs-sync.mjs中extractOpenApiVersion会解析info:块下的version:字段并做精确比对;若 API 契约有变更,还需验证端点示例仍然有效(仓库提供 scripts/check/check-openapi-coverage.mjs、scripts/check/check-openapi-breaking.mjs 等辅助闸门)。
四、运行时文档与 Node 版本安全下限
1. 文档漂移审查
发布前需要人工复查两类"漂移":
- docs/architecture/ARCHITECTURE.md:存储/运行时结构是否有变化;
- docs/guides/TROUBLESHOOTING.md:环境变量与运维细节是否有变化。
2. Node 运行时安全下限
清单要求校验发布/运行所用的 Node.js 版本仍满足受支持的安全下限,并运行:
npm run check:node-runtime该命令背后是 scripts/check/check-supported-node-runtime.ts,它调用 src/shared/utils/nodeRuntimeSupport.ts 中导出的策略常量。从源码看,当前受支持范围为:
export const SECURE_NODE_LINES = [ { major: 22, minor: 22, patch: 2 }, { major: 24, minor: 0, patch: 0 }, { major: 25, minor: 0, patch: 0 }, { major: 26, minor: 0, patch: 0 }, ]; export const SUPPORTED_NODE_RANGE = ">=22.22.2 <23 || >=24.0.0 <27"; export const RECOMMENDED_NODE_VERSION = "24.14.1";这与 package.json 的engines字段("node": ">=22.22.2 <23 || >=24.0.0 <27")一致。该模块对每个主版本维护一个"安全下限"(secure floor),低于下限即判定below-security-floor并给出明确警告;同时支持 Bun(Bun >=1.1.0)作为兼容运行时。发布前务必确认部署机与 CI 的 Node 版本落在该区间内。
3. npm 发布产物校验
构建独立包后必须校验发布产物没有本地残留:
npm run build:cli npm run check:pack-artifactcheck:pack-artifact对应 scripts/build/validate-pack-artifact.ts。从源码可见它执行npm pack --dry-run --json并检查四类问题:
- 意外文件(如
app.__qa_backup、scripts/scratch、package-lock.json、bin/*.sh等未在白名单中的内容); - 必需运行时文件缺失(
dist/下的关键路径); - 测试/规格文件泄漏(
*.test.*、__tests__/混入包体,靠package.json的files否定规则兜底); - MCP 可达源码缺失(
--mcp场景下闭包不全会导致 404)。
它还执行构建溯源校验:dist/BUILD_SHA必须是 release 分支的祖先提交(resolveBuildProvenance),防止"从过期特性分支打包出假装携带修复的版本"这类事故。这是 2026-08-14 网关事故之后引入的 #10427 护栏。
4. 本地化文档同步
若源英文文档发生显著变更,需在打 tag 前更新各语言镜像。多语言同步由 scripts/i18n/ 下的工具链负责,其中npm run i18n:run(需要.env中的OMNIROUTE_TRANSLATION_API_KEY)执行翻译,npm run i18n:check校验漂移。若某语言更新量小可推迟到下一版本,但需在 CHANGELOG 中记录。
五、自动化检查:开 PR 前的同步守卫
清单的最后一步(也是两个语言版本都强调的)是在开 PR 前本地运行同步守卫:
npm run check:docs-syncCI 也会在 .github/workflows/ci.yml 的 lint 任务中运行它。如第一节所述,该守卫校验版本三件套的一致性以及docs/i18n镜像的完整性——这正是匈牙利语镜像能够与英文原版保持内容同步的机制保证。
check:docs-sync还包含一条反回归规则:被取代的旧文档不得复活(如docs/CLI-TOOLS.md这类旧路径若重新出现会直接 FAIL,应以docs/reference/下的单一事实源为准)。
六、深入清单:发布前的全量检查项
1. Pre-release(发布前)
- 所有面向该版本的 PR 已合并到
release/vX.Y.0分支; - 该版本的 Linear/issue 项全部关闭或推迟到下一里程碑;
release/vX.Y.0分支 CI 全绿;- 代码中无
TODO(release)标记:grep -r "TODO(release)" src/ open-sse/; - Docker 基础镜像保持最新(当前为
node:24.15.0-trixie-slim,见 Dockerfile)。
2. Code Quality(代码质量)
npm run lint # 0 错误(已有警告可接受) npm run typecheck:core # 干净 npm run typecheck:noimplicit:core # 严格模式干净 npm run check:cycles # 无循环依赖 npm run check:any-budget:t11 # 预算内 npm run check:route-validation:t06 # 干净 npm run check:node-runtime # 运行时下限达标其中typecheck:core/typecheck:noimplicit:core分别使用 tsconfig.typecheck-core.json 与 tsconfig.typecheck-noimplicit-core.json;check:cycles由 scripts/check/check-cycles.mjs 实现,保证src/、open-sse/等核心模块不出现循环依赖。
3. Testing(测试矩阵)
npm run test:unit # 单元测试 npm run test:vitest # MCP server、autoCombo、cache 相关(vitest.mcp.config.ts) npm run test:coverage # 覆盖率闸门 60/60/60/60(statements/lines/functions/branches) npm run test:integration # 触碰 DB / handlers 时必须 npm run test:combo:matrix # combo 策略矩阵:确定性验证全部 19 个公开路由策略的选择 RUN_COMBO_LIVE=1 npm run test:combo:live # 可选/手动:真实上游冒烟,消耗配额,绝不在 CI 运行 npm run test:combo:live:vps # 可选/手动:针对线上 .15 服务器的 7 个 HTTP 场景 npm run test:e2e # UI 变更时 npm run test:protocols:e2e # MCP/A2A 变更时 npm run test:ecosystem # 生态兼容测试其中test:coverage由 c8 驱动,--statements 60 --lines 60 --functions 60 --branches 60是硬性下限(见 package.json 的test:coverage脚本)。combo 矩阵测试(tests/integration/combo-matrix/*.test.ts)在触碰 combo 路由、策略解析或回退逻辑时必须运行——它证明路由策略的决策具有确定性,这正是 OmniRoute 自动回退可靠性的根基。
4. Hooks(Husky 钩子)
钩子位于.husky/目录,git 操作时自动执行:
- pre-commit:
npx lint-staged+node scripts/check/check-docs-sync.mjs+npm run check:any-budget:t11(从 .husky/pre-commit 实际内容看还包括check-git-identity.sh与check-tracked-artifacts.mjs); - pre-push:
npm run check:any-budget:t11 && npm run check:tracked-artifacts(自 2026-06-13 起启用)。刻意排除test:unit(慢,交给 CI 的test-unitjob)——因此推送发布分支前请手动运行npm run test:unit。
钩子失败时修复根本问题,不要用--no-verify绕过(这是清单硬规则之一)。
5. Conventional Commits 纪律
发布相关的所有提交必须遵循type(scope): subject格式:
- 有效类型:
feat、fix、refactor、docs、test、chore、perf、style、ci; - 有效作用域:
db、sse、oauth、dashboard、api、cli、docker、ci、mcp、a2a、memory、skills、cloud-agent、guardrails、compression、auto-combo、resilience、providers、executors、translator、domain、authz; - 破坏性变更:在 footer 添加
BREAKING CHANGE:或在 scope 后加!(如feat(api)!: drop /v0)。
6. Documentation(文档闸门)
npm run check:docs-sync # 文档同步(pre-commit 自动运行) npm run check:docs-all # 伞形检查:docs-sync + docs-counts + env-doc-sync + deprecated-versions + doc-links npm run check:env-doc-sync # 代码 ↔ .env.example ↔ docs/reference/ENVIRONMENT.md 契约完整 npm run check:doc-links # 无失效的内部 markdown 引用规则约定:.env.example变更则更新 docs/reference/ENVIRONMENT.md;新功能有 UI 则在 docs/guides/USER_GUIDE.md 提及;新功能有 API 则更新 docs/reference/API_REFERENCE.md 与 docs/openapi.yaml;新模块则建立专属docs/<MODULE>.md;破坏性变更则在 docs/guides/TROUBLESHOOTING.md 加入迁移说明。
7. i18n(国际化闸门)
npm run i18n:check # 翻译漂移:严格模式下源文档不得漂移;打 tag 前应归零 npm run i18n:check-ui-coverage # 每个 UI locale 覆盖率 ≥ 80% 下限 npm run i18n:sync-ui:dry # 42 个 locale 缺键数为 0 npm run i18n:run # 源英文文档变更后重跑翻译(需要 OMNIROUTE_TRANSLATION_API_KEY)从 scripts/i18n/ 目录可见完整的工具链:check-translation-drift.mjs、check-ui-keys-coverage.mjs、sync-ui-keys.mjs、run-translation.mjs等,对应清单中的每一项。
8. Database Migrations(数据库迁移)
若 src/lib/db/migrations/ 出现新迁移文件:
- 每个迁移必须幂等(
CREATE TABLE IF NOT EXISTS等); - 迁移必须包裹在事务中;
- 编号必须连续(无跳号;
npm run check:migration-numbering可辅助校验); - 全新安装测试:删除
~/.omniroute/omniroute.db后运行npm run dev; - 既有安装测试:备份 DB、运行迁移、校验 schema;
- 若迁移重写表结构,需正确处理 WAL 文件(
-wal、-shm)。
9. Provider Catalog(Zod 校验)
Provider 目录在 src/shared/constants/providers.ts 中以 Zod schema 校验:
- 所有 provider 具备必填字段(
id、label、kind等); - 新免费 provider 提供
freeNote; - OAuth provider 在 src/lib/oauth/constants/oauth.ts 注册
oauthConfig; - 新增 provider 需在 open-sse/executors/ 有对应 executor;非 OpenAI 格式则需 open-sse/translator/ 翻译器;
- 模型注册于 open-sse/config/providerRegistry.ts;
- tests/unit/ 中要有覆盖 provider 分类与路由的单元测试。
10. Desktop(Electron)
若 electron/ 有变更:
npm run electron:smoke:packaged # 打包后冒烟- 至少构建并测试
:win、:mac、:linux之一; - 签名证书未过期(如启用签名);
electron/package.json版本与根package.json一致;- 若发布到
stable频道,更新自动更新频道指针。
11. Build Layout(构建布局)
仓库使用三个输出目录,切勿混淆:
| 目录 | 用途 | 是否纳入版本控制 |
|---|---|---|
src/ | 应用源码(TypeScript / TSX) | 是 |
.build/ | 构建中间产物(next build输出,distDir) | 否(gitignored) |
dist/ | 可发布的 npm 包体(assembleStandalone组装) | 否(gitignored) |
运维注意:远程 VPS 镜像目录仍为
/usr/lib/node_modules/omniroute/app/。仓库内构建输出从app/移到dist/,部署技能将dist/内容 rsync 到远程app/目录,VPS 路径无需变更。
单一构建流程(部署请勿分别执行npm run build+npm run build:cli,必须用下面这一个命令):
npm run build:release └─ rm -rf .build dist (clean) └─ next build → .build/next/ (中间产物) └─ assembleStandalone (standalone + static + public + natives → dist/) └─ 写入 dist/BUILD_SHA (HEAD 哨兵)对应 package.json 中的build:release脚本:rm -rf .build dist && OMNIROUTE_BUILD_SHA=$(git rev-parse --short HEAD) npm run build && npm run build:cli && node scripts/build/write-build-sha.mjs。
12. Artifact Validation(产物校验)
npm run build:release成功且dist/BUILD_SHA==git rev-parse --short HEAD;npm run check:pack-artifact干净(无app.__qa_backup、scripts/scratch、package-lock.json等残留);- 构建后
dist/server.js存在。
七、打标签与 GitHub Release
推荐使用/generate-release-cc技能,它会:创建 tagvX.Y.Z、推送 tag 与分支、以 changelog 为正文打开 GitHub Release、附加 Electron 安装包(若已构建)。手动等价操作:
git tag -a vX.Y.Z -m "Release vX.Y.Z" git push origin vX.Y.Z gh release create vX.Y.Z --notes-from-tag八、npm 可信发布与 Docker 渠道(v3.8.51 起)
1. npm Trusted Publishing(OIDC,默认)
.github/workflows/npm-publish.yml 默认通过npm Trusted Publishing(OIDC)发布:GitHub 的 id-token 在每次运行时换取短期 npm 凭证,仓库 secrets 中不再存放长期 npm token,无需 2FA 提示,且自动附带 provenance。这符合 npm 对跳过 2FA 的 token 的退役政策,恢复了 v3.8.48 之前的全自动流程,同时保留"泄露的 token 无法单独发布"的保证。
一次性设置(owner):npmjs.com → 包omniroute→ Settings → Trusted Publisher → GitHub:ownerdiegosouzapw、repoOmniRoute、workflownpm-publish.yml。在配置完成前,自动步骤会以ENEEDAUTH失败,此时可改用publish_mode=staged或direct重新派发。
2. Staged 发布(按需,publish_mode=staged)
npm-publish 工作流不再直接发布:它先启动打包好的 tarball(check:pack-boot),再运行npm stage publish——字节先停放在 registry 上,不可安装,直到 owner 批准。人的 2FA 闸门移到了"证据之后"。
Owner 在工作流变绿后的流程:
npm stage list omniroute—— 找到 stage id(工作流摘要中也会打印);- 建议校验暂存字节:
npm stage download <id>,安装下载的 tarball 并启动(CI 中npm run check:pack-boot自动化同样的 pack→install→boot 判定); npm stage approve <id>—— 2FA 提示本身就是发布;npm stage reject <id>丢弃;- 发布后验证:post-publish verifier 在干净容器中从公共 registry 安装已发布版本并启动。
紧急回退:workflow_dispatch传入publish_mode=direct恢复传统立即npm publish(仅当 staged 本身出问题时使用,并记录原因)。
破损产物剧本(不变):默认反射是npm deprecate omniroute@<bad> "<reason> — use <fixed>"(几分钟内可逆);npm unpublish仅在 72 小时/无依赖窗口内使用,且绝不作第一步。Docker 方面绝不重写版本 tag——回滚即把latest重新指向最后一个好的 digest。
3. Docker Hublatest(每次稳定 SemVer 发布必需)
.github/workflows/docker-publish.yml 必须同时打X.Y.Z与(当 scripts/ci/should-promote-latest.sh 判定这是最高稳定 SemVer 时):latest,且使用同一 digest。发布后 Hublatestdigest 应等于新 SemVer digest,last_updated应更新。不要把latest留在旧构建上却让 release notes 讲只存在于 git 上的修复。Compose 快速入门用:latest,GitOps 应持续固定X.Y.Z。详见 docs/guides/DOCKER_GUIDE.md 的 Release Channels 章节。
九、Hotfix 快车道(labelhotfix)
带hotfixlabel 的 PR 跳过重 CI 矩阵(9 分片 E2E、覆盖率棘轮、quality-gate、quality-extended),保留快速高信号闸门:build、unit shards、integration、vitest、lint/typecheck、docs-sync、check:pack-artifact与 tarball 启动冒烟(check:pack-boot)。目标:≤15 分钟变绿(常规约 33 分钟)。
进入条件(四项全满足,参照 Chromium/VS Code/Node 紧急通道):
- 严重性:生产环境已损坏——发布产物启动即崩溃 / 安全修复 / 影响该发布的所有用户。"重要"不等于"损坏";
- 权限:仅仓库 owner 可打
hotfixlabel。label 本身就是批准——不得在活动 PR 上自助申请; - 证据:PR 正文链接此前完全通过的 heavy 运行(被跳过任务本会重新校验的套件)以及修复自身的"先失败后通过"测试;
- 范围:仅 cherry-pick——最小修复,无重构,无搭车变更。
被跳过的覆盖/棘轮面由发布分支上下一次完整运行(持续 release-green)重新校验——快车道跳过等待,从不跳过验证。纯测试变更(所有文件都在tests/下、且都不在tests/e2e/下)无需 label 也会自动跳过 E2E 矩阵。
十、部署与冒烟
部署技能采用轻量 rsync 流程(无npm pack、无npm i -g),按目标选择:
/deploy-vps-local-cc—— 本地 VPS(192.168.0.15);/deploy-vps-akamai-cc—— Akamai VPS;/deploy-vps-both-cc—— 两者都部署。
部署前确认dist/BUILD_SHA==git rev-parse --short HEAD;构建必须在node_modules真实存在的环境进行(主 checkout 或npm ci后的 worktree,不能是 symlink worktree)。
部署后冒烟:
- 打开
/dashboard/health,版本字符串与发布版本一致; - 对已知 provider 发起
/v1/chat/completions请求; - 验证
/api/monitoring/health返回CLOSED熔断器状态; - 确认 MCP 传输正常响应(
/mcpHTTP、/mcp-sseSSE)。
十一、嵌入式服务冒烟(v3.8.4+)
若发布涉及嵌入式服务变更,需额外验证(含新鲜 DB 启动,捕捉迁移冲突):
DATA_DIR=$(mktemp -d) npm start & # 等待 10 秒启动 curl -s http://127.0.0.1:20128/api/services/9router/status | jq '.tool' # 应返回 "9router" sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(version_manager);" | grep -E "provider_expose|logs_buffer_path|last_sync_at" # 3 行 sqlite3 $DATA_DIR/storage.sqlite "PRAGMA table_info(webhooks);" | grep -E "kind|metadata_encrypted" # 2 行 node --import tsx/esm --test tests/unit/db/no-migration-collisions.test.ts # 防未来迁移冲突9Router 与 CLIProxyAPI 各自验证 install / start / status / stop / logs 的完整生命周期,例如:POST /api/services/9router/install2 分钟内返回 200 且含installedVersion;POST /v1/chat/completions携带"model": "9router/auto/..."端到端路由;GET /api/services/9router/logs?tail=50返回含snapshot事件的 SSE 流;无npm环境安装返回友好(非堆栈)错误。
安全回归:curl -H "X-Forwarded-For: 1.2.3.4" http://localhost:20128/api/services/9router/start必须返回403 LOCAL_ONLY(CLIProxyAPI 同理);/api/services/*的错误响应不得包含err.stack或绝对文件路径。
十二、v3.8.x 附加检查与回滚
v3.8.0+ 附加项(节选)
omniroute --tray在 macOS / Linux(需 DISPLAY)/ Windows 均可启动;omniroute config tray enable/disable创建/移除自启动项;npm install -g omniroute@<version>的 postinstall 不致命退出;- 更新路径保留可选依赖(
--include=optional):better-sqlite3、keytar、tls-client、llmlingua SLM 栈(@atjsh/llmlingua-2@2.0.5、js-tiktoken)在升级后依然存活; omniroute status无.env也可工作(CLI token 路径、仅回环);curl http://localhost:20128/api/shutdown返回 401(始终受保护);curl -H "host: evil.com" http://localhost:20128/api/mcp/sse返回 401(回环守卫);- SQLite 运行时首跑解析为
bundled,删除node_modules/better-sqlite3后回退runtime。
回滚剧本
发布出现严重问题时:
gh release edit vX.Y.Z --prerelease(标记为非最新);git tag -d vX.Y.Z && git push --delete origin vX.Y.Z(仅当用户尚未采用);- 或在
release/vX.Y.0上热修复 → patch 发布vX.Y.(Z+1); - 立即在 GitHub Discussions 与 Discord 同步沟通。
十三、硬规则(不可谈判)
- 绝不直接提交到
main; - 绝不
git push --force到main或release/*分支; - 绝不跳过 Husky 钩子(
--no-verify); - 绝不提交 secrets、凭证或
.env文件; - 覆盖率必须保持 ≥60/60/60/60(statements/lines/functions/branches);
- 修改
src/、open-sse/、electron/或bin/的生产代码时,必须同步新增或更新测试。
十四、发布证据采集(Post-release)
- 运行
/capture-release-evidences-cc:采集新功能的 WebP 截图/录屏,附加到 release notes / 博客; - 在 GitHub Discussions / Discord 发布公告;
- 为下一版本打开里程碑;
- 若关键:置顶讨论或在 news.json 发布应用内横幅(如 Radar 公共发布闸门所述,
active: false的公告需在全部闸门通过后单独激活)。
结语
OmniRoute 的发布检查清单是一套可执行的工程制度:从package.json版本号、docs/openapi.yaml 与 CHANGELOG.md 的机械对齐,到 scripts/check/check-docs-sync.mjs 对多语言镜像的强制同步,再到 npm Trusted Publishing 与 staged 发布的供应链安全设计。无论是日常小版本、hotfix快车道,还是 v3.8.x 这样带嵌入式服务的复杂发布,遵循清单中的每一项闸门与回滚剧本,就能让每一次发布都可追溯、可验证、可回退——这正是多语言文档版本(英文原版 与 匈牙利语镜像)共同传达的核心纪律。
【免费下载链接】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),仅供参考