omniroute 2.1.0 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/README.md +1 -1
  2. package/app/.next/BUILD_ID +1 -1
  3. package/app/.next/app-path-routes-manifest.json +55 -55
  4. package/app/.next/build-manifest.json +2 -2
  5. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/.well-known/agent.json/route_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/_global-error.html +2 -2
  42. package/app/.next/server/app/_global-error.rsc +1 -1
  43. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  44. package/app/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  45. package/app/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  46. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  47. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  48. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  49. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  50. package/app/.next/server/app/a2a/route_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/api/a2a/status/route_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/api/a2a/tasks/[id]/cancel/route_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/api/a2a/tasks/[id]/route_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/api/a2a/tasks/route_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/api/acp/agents/route_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/api/auth/login/route_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/api/auth/logout/route_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/api/auth/status/route_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/api/cache/route_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/api/cache/stats/route_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
  62. package/app/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
  63. package/app/.next/server/app/api/cli-tools/backups/route_client-reference-manifest.js +1 -1
  64. package/app/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
  65. package/app/.next/server/app/api/cli-tools/cline-settings/route_client-reference-manifest.js +1 -1
  66. package/app/.next/server/app/api/cli-tools/codex-profiles/route_client-reference-manifest.js +1 -1
  67. package/app/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
  68. package/app/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
  69. package/app/.next/server/app/api/cli-tools/guide-settings/[toolId]/route_client-reference-manifest.js +1 -1
  70. package/app/.next/server/app/api/cli-tools/kilo-settings/route_client-reference-manifest.js +1 -1
  71. package/app/.next/server/app/api/cli-tools/openclaw/auto-order/route_client-reference-manifest.js +1 -1
  72. package/app/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
  73. package/app/.next/server/app/api/cli-tools/runtime/[toolId]/route_client-reference-manifest.js +1 -1
  74. package/app/.next/server/app/api/cli-tools/status/route_client-reference-manifest.js +1 -1
  75. package/app/.next/server/app/api/cloud/auth/route_client-reference-manifest.js +1 -1
  76. package/app/.next/server/app/api/cloud/credentials/update/route_client-reference-manifest.js +1 -1
  77. package/app/.next/server/app/api/cloud/model/resolve/route_client-reference-manifest.js +1 -1
  78. package/app/.next/server/app/api/cloud/models/alias/route_client-reference-manifest.js +1 -1
  79. package/app/.next/server/app/api/combos/[id]/route_client-reference-manifest.js +1 -1
  80. package/app/.next/server/app/api/combos/auto/route_client-reference-manifest.js +1 -1
  81. package/app/.next/server/app/api/combos/metrics/route_client-reference-manifest.js +1 -1
  82. package/app/.next/server/app/api/combos/route_client-reference-manifest.js +1 -1
  83. package/app/.next/server/app/api/combos/test/route_client-reference-manifest.js +1 -1
  84. package/app/.next/server/app/api/compliance/audit-log/route_client-reference-manifest.js +1 -1
  85. package/app/.next/server/app/api/db-backups/export/route_client-reference-manifest.js +1 -1
  86. package/app/.next/server/app/api/db-backups/exportAll/route_client-reference-manifest.js +1 -1
  87. package/app/.next/server/app/api/db-backups/import/route_client-reference-manifest.js +1 -1
  88. package/app/.next/server/app/api/db-backups/route_client-reference-manifest.js +1 -1
  89. package/app/.next/server/app/api/evals/[suiteId]/route_client-reference-manifest.js +1 -1
  90. package/app/.next/server/app/api/evals/route_client-reference-manifest.js +1 -1
  91. package/app/.next/server/app/api/fallback/chains/route_client-reference-manifest.js +1 -1
  92. package/app/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  93. package/app/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
  94. package/app/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
  95. package/app/.next/server/app/api/logs/console/route_client-reference-manifest.js +1 -1
  96. package/app/.next/server/app/api/mcp/audit/route_client-reference-manifest.js +1 -1
  97. package/app/.next/server/app/api/mcp/audit/stats/route_client-reference-manifest.js +1 -1
  98. package/app/.next/server/app/api/mcp/sse/route_client-reference-manifest.js +1 -1
  99. package/app/.next/server/app/api/mcp/status/route_client-reference-manifest.js +1 -1
  100. package/app/.next/server/app/api/mcp/stream/route_client-reference-manifest.js +1 -1
  101. package/app/.next/server/app/api/mcp/tools/route_client-reference-manifest.js +1 -1
  102. package/app/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
  103. package/app/.next/server/app/api/models/availability/route_client-reference-manifest.js +1 -1
  104. package/app/.next/server/app/api/models/catalog/route_client-reference-manifest.js +1 -1
  105. package/app/.next/server/app/api/models/openrouter-catalog/route_client-reference-manifest.js +1 -1
  106. package/app/.next/server/app/api/models/route.js +1 -1
  107. package/app/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
  108. package/app/.next/server/app/api/monitoring/health/route.js +1 -1
  109. package/app/.next/server/app/api/monitoring/health/route_client-reference-manifest.js +1 -1
  110. package/app/.next/server/app/api/oauth/[provider]/[action]/route_client-reference-manifest.js +1 -1
  111. package/app/.next/server/app/api/oauth/cursor/auto-import/route_client-reference-manifest.js +1 -1
  112. package/app/.next/server/app/api/oauth/cursor/import/route_client-reference-manifest.js +1 -1
  113. package/app/.next/server/app/api/oauth/kiro/auto-import/route_client-reference-manifest.js +1 -1
  114. package/app/.next/server/app/api/oauth/kiro/import/route_client-reference-manifest.js +1 -1
  115. package/app/.next/server/app/api/oauth/kiro/social-authorize/route_client-reference-manifest.js +1 -1
  116. package/app/.next/server/app/api/oauth/kiro/social-exchange/route_client-reference-manifest.js +1 -1
  117. package/app/.next/server/app/api/policies/route_client-reference-manifest.js +1 -1
  118. package/app/.next/server/app/api/pricing/defaults/route_client-reference-manifest.js +1 -1
  119. package/app/.next/server/app/api/pricing/models/route_client-reference-manifest.js +1 -1
  120. package/app/.next/server/app/api/pricing/route_client-reference-manifest.js +1 -1
  121. package/app/.next/server/app/api/provider-metrics/route_client-reference-manifest.js +1 -1
  122. package/app/.next/server/app/api/provider-models/route_client-reference-manifest.js +1 -1
  123. package/app/.next/server/app/api/provider-nodes/[id]/route_client-reference-manifest.js +1 -1
  124. package/app/.next/server/app/api/provider-nodes/route_client-reference-manifest.js +1 -1
  125. package/app/.next/server/app/api/provider-nodes/validate/route_client-reference-manifest.js +1 -1
  126. package/app/.next/server/app/api/providers/[id]/models/route_client-reference-manifest.js +1 -1
  127. package/app/.next/server/app/api/providers/[id]/route_client-reference-manifest.js +1 -1
  128. package/app/.next/server/app/api/providers/[id]/test/route_client-reference-manifest.js +1 -1
  129. package/app/.next/server/app/api/providers/client/route_client-reference-manifest.js +1 -1
  130. package/app/.next/server/app/api/providers/route.js +1 -1
  131. package/app/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
  132. package/app/.next/server/app/api/providers/test-batch/route_client-reference-manifest.js +1 -1
  133. package/app/.next/server/app/api/providers/validate/route_client-reference-manifest.js +1 -1
  134. package/app/.next/server/app/api/rate-limit/route_client-reference-manifest.js +1 -1
  135. package/app/.next/server/app/api/rate-limits/route_client-reference-manifest.js +1 -1
  136. package/app/.next/server/app/api/resilience/reset/route_client-reference-manifest.js +1 -1
  137. package/app/.next/server/app/api/resilience/route_client-reference-manifest.js +1 -1
  138. package/app/.next/server/app/api/restart/route_client-reference-manifest.js +1 -1
  139. package/app/.next/server/app/api/sessions/route_client-reference-manifest.js +1 -1
  140. package/app/.next/server/app/api/settings/background-degradation/route_client-reference-manifest.js +1 -1
  141. package/app/.next/server/app/api/settings/combo-defaults/route_client-reference-manifest.js +1 -1
  142. package/app/.next/server/app/api/settings/ip-filter/route_client-reference-manifest.js +1 -1
  143. package/app/.next/server/app/api/settings/model-aliases/route_client-reference-manifest.js +1 -1
  144. package/app/.next/server/app/api/settings/proxy/route_client-reference-manifest.js +1 -1
  145. package/app/.next/server/app/api/settings/proxy/test/route_client-reference-manifest.js +1 -1
  146. package/app/.next/server/app/api/settings/require-login/route_client-reference-manifest.js +1 -1
  147. package/app/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
  148. package/app/.next/server/app/api/settings/system-prompt/route_client-reference-manifest.js +1 -1
  149. package/app/.next/server/app/api/settings/thinking-budget/route_client-reference-manifest.js +1 -1
  150. package/app/.next/server/app/api/shutdown/route_client-reference-manifest.js +1 -1
  151. package/app/.next/server/app/api/storage/health/route_client-reference-manifest.js +1 -1
  152. package/app/.next/server/app/api/sync/cloud/route_client-reference-manifest.js +1 -1
  153. package/app/.next/server/app/api/sync/initialize/route_client-reference-manifest.js +1 -1
  154. package/app/.next/server/app/api/tags/route_client-reference-manifest.js +1 -1
  155. package/app/.next/server/app/api/telemetry/summary/route_client-reference-manifest.js +1 -1
  156. package/app/.next/server/app/api/token-health/route_client-reference-manifest.js +1 -1
  157. package/app/.next/server/app/api/translator/detect/route_client-reference-manifest.js +1 -1
  158. package/app/.next/server/app/api/translator/history/route_client-reference-manifest.js +1 -1
  159. package/app/.next/server/app/api/translator/load/route_client-reference-manifest.js +1 -1
  160. package/app/.next/server/app/api/translator/save/route_client-reference-manifest.js +1 -1
  161. package/app/.next/server/app/api/translator/send/route_client-reference-manifest.js +1 -1
  162. package/app/.next/server/app/api/translator/translate/route_client-reference-manifest.js +1 -1
  163. package/app/.next/server/app/api/usage/[connectionId]/route_client-reference-manifest.js +1 -1
  164. package/app/.next/server/app/api/usage/analytics/route_client-reference-manifest.js +1 -1
  165. package/app/.next/server/app/api/usage/budget/route_client-reference-manifest.js +1 -1
  166. package/app/.next/server/app/api/usage/call-logs/[id]/route_client-reference-manifest.js +1 -1
  167. package/app/.next/server/app/api/usage/call-logs/route_client-reference-manifest.js +1 -1
  168. package/app/.next/server/app/api/usage/history/route_client-reference-manifest.js +1 -1
  169. package/app/.next/server/app/api/usage/logs/route_client-reference-manifest.js +1 -1
  170. package/app/.next/server/app/api/usage/proxy-logs/route_client-reference-manifest.js +1 -1
  171. package/app/.next/server/app/api/usage/quota/route_client-reference-manifest.js +1 -1
  172. package/app/.next/server/app/api/usage/request-logs/route_client-reference-manifest.js +1 -1
  173. package/app/.next/server/app/api/v1/api/chat/route_client-reference-manifest.js +1 -1
  174. package/app/.next/server/app/api/v1/audio/speech/route_client-reference-manifest.js +1 -1
  175. package/app/.next/server/app/api/v1/audio/transcriptions/route_client-reference-manifest.js +1 -1
  176. package/app/.next/server/app/api/v1/chat/completions/route_client-reference-manifest.js +1 -1
  177. package/app/.next/server/app/api/v1/embeddings/route_client-reference-manifest.js +1 -1
  178. package/app/.next/server/app/api/v1/images/generations/route_client-reference-manifest.js +1 -1
  179. package/app/.next/server/app/api/v1/messages/count_tokens/route_client-reference-manifest.js +1 -1
  180. package/app/.next/server/app/api/v1/messages/route_client-reference-manifest.js +1 -1
  181. package/app/.next/server/app/api/v1/models/route_client-reference-manifest.js +1 -1
  182. package/app/.next/server/app/api/v1/moderations/route_client-reference-manifest.js +1 -1
  183. package/app/.next/server/app/api/v1/music/generations/route_client-reference-manifest.js +1 -1
  184. package/app/.next/server/app/api/v1/providers/[provider]/chat/completions/route_client-reference-manifest.js +1 -1
  185. package/app/.next/server/app/api/v1/providers/[provider]/embeddings/route_client-reference-manifest.js +1 -1
  186. package/app/.next/server/app/api/v1/providers/[provider]/images/generations/route_client-reference-manifest.js +1 -1
  187. package/app/.next/server/app/api/v1/rerank/route_client-reference-manifest.js +1 -1
  188. package/app/.next/server/app/api/v1/responses/route_client-reference-manifest.js +1 -1
  189. package/app/.next/server/app/api/v1/route_client-reference-manifest.js +1 -1
  190. package/app/.next/server/app/api/v1/videos/generations/route_client-reference-manifest.js +1 -1
  191. package/app/.next/server/app/api/v1beta/models/[...path]/route_client-reference-manifest.js +1 -1
  192. package/app/.next/server/app/api/v1beta/models/route_client-reference-manifest.js +1 -1
  193. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  194. package/app/.next/server/app/docs/page.js +1 -1
  195. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  196. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  197. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  198. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  199. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  200. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  201. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  202. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  203. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  204. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  205. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  206. package/app/.next/server/app-paths-manifest.json +55 -55
  207. package/app/.next/server/chunks/1909.js +1 -1
  208. package/app/.next/server/chunks/8252.js +1 -1
  209. package/app/.next/server/chunks/8907.js +1 -1
  210. package/app/.next/server/pages/500.html +2 -2
  211. package/app/.next/server/server-reference-manifest.js +1 -1
  212. package/app/.next/server/server-reference-manifest.json +1 -1
  213. package/app/.next/static/chunks/{5846-2907f9dda1834c88.js → 5846-d3aa3ba9dd16fa55.js} +1 -1
  214. package/app/package.json +1 -1
  215. package/package.json +1 -1
  216. package/README.ar.md +0 -1683
  217. package/README.bg.md +0 -1691
  218. package/README.da.md +0 -1692
  219. package/README.de.md +0 -1696
  220. package/README.es.md +0 -1436
  221. package/README.fi.md +0 -1586
  222. package/README.fr.md +0 -1435
  223. package/README.he.md +0 -1586
  224. package/README.hu.md +0 -1586
  225. package/README.id.md +0 -1586
  226. package/README.in.md +0 -1225
  227. package/README.it.md +0 -1434
  228. package/README.ja.md +0 -1583
  229. package/README.ko.md +0 -1586
  230. package/README.ms.md +0 -1587
  231. package/README.nl.md +0 -1586
  232. package/README.no.md +0 -1586
  233. package/README.phi.md +0 -1587
  234. package/README.pl.md +0 -1586
  235. package/README.pt-BR.md +0 -1499
  236. package/README.pt.md +0 -1586
  237. package/README.ro.md +0 -1588
  238. package/README.ru.md +0 -1433
  239. package/README.sk.md +0 -1590
  240. package/README.sv.md +0 -1587
  241. package/README.th.md +0 -1577
  242. package/README.uk-UA.md +0 -1592
  243. package/README.vi.md +0 -1586
  244. package/README.zh-CN.md +0 -1432
  245. /package/app/.next/static/{jBXsbnBQXxbuL3eAmEO72 → xYoMYiq2lWi73ieYn-e4s}/_buildManifest.js +0 -0
  246. /package/app/.next/static/{jBXsbnBQXxbuL3eAmEO72 → xYoMYiq2lWi73ieYn-e4s}/_ssgManifest.js +0 -0
package/README.vi.md DELETED
@@ -1,1586 +0,0 @@
1
- <div align="center">
2
- <img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute Dashboard" width="800"/>
3
-
4
- # 🚀 OmniRoute — Cổng AI miễn phí
5
-
6
- ### Không bao giờ ngừng viết mã. Định tuyến thông minh tới **Mô hình AI MIỄN PHÍ và chi phí thấp** với tính năng dự phòng tự động.
7
-
8
- _Proxy API phổ quát của bạn — một điểm cuối, hơn 36 nhà cung cấp, không có thời gian ngừng hoạt động._
9
-
10
- **Hoàn thành cuộc trò chuyện • Nhúng • Tạo hình ảnh • Âm thanh • Sắp xếp lại • 100% TypeScript**
11
-
12
- ---
13
-
14
- ### 🚀 New in v2.0.9+ — Playground, CLI Fingerprints & ACP
15
-
16
- | Feature | What It Does |
17
- | ------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
18
- | 🎮 **Model Playground** | Dashboard page to test any model directly — provider/model/endpoint selectors, Monaco Editor, streaming, abort, timing |
19
- | 🔏 **CLI Fingerprint Matching** | Per-provider header/body ordering to match native CLI signatures — toggle per provider in Settings > Security. **Your proxy IP is preserved** |
20
- | 🤝 **ACP Support (Agent Client Protocol)** | CLI agent discovery (Codex, Claude, Goose, Gemini CLI, OpenClaw), process spawner, `/api/acp/agents` endpoint |
21
- | 🤖 **ACP Agents Dashboard** | Debug > Agents page — grid of 14 agents with install status, version, custom agent form for any CLI tool |
22
- | 🔧 **Custom Model `apiFormat` Routing** | Custom models with `apiFormat: "responses"` now correctly route to the Responses API translator |
23
- | 🏢 **Codex Workspace Isolation** | Multiple Codex workspaces per email — OAuth correctly separates connections by workspace ID |
24
- | 🔄 **Electron Auto-Update** | Desktop app checks for updates + auto-install on restart |
25
-
26
- ### 🤖 Nhà cung cấp AI miễn phí cho các tác nhân mã hóa yêu thích của bạn
27
-
28
- _Kết nối mọi công cụ IDE hoặc CLI được hỗ trợ bởi AI thông qua OmniRoute — cổng API miễn phí để mã hóa không giới hạn._
29
-
30
- <table>
31
- <tr>
32
- <td align="center" width="110">
33
- <a href="https://github.com/cline/cline">
34
- <img src="./public/providers/openclaw.png" alt="OpenClaw" width="48"/><br/>
35
- <b>OpenClaw</b>
36
- </a><br/>
37
- <sub>⭐ 205K</sub>
38
- </td>
39
- <td align="center" width="110">
40
- <a href="https://github.com/HKUDS/nanobot">
41
- <img src="./public/providers/nanobot.png" alt="NanoBot" width="48"/><br/>
42
- <b>NanoBot</b>
43
- </a><br/>
44
- <sub>⭐ 20.9K</sub>
45
- </td>
46
- <td align="center" width="110">
47
- <a href="https://github.com/sipeed/picoclaw">
48
- <img src="./public/providers/picoclaw.jpg" alt="PicoClaw" width="48"/><br/>
49
- <b>PicoClaw</b>
50
- </a><br/>
51
- <sub>⭐ 14.6K</sub>
52
- </td>
53
- <td align="center" width="110">
54
- <a href="https://github.com/zeroclaw-labs/zeroclaw">
55
- <img src="./public/providers/zeroclaw.png" alt="ZeroClaw" width="48"/><br/>
56
- <b>ZeroClaw</b>
57
- </a><br/>
58
- <sub>⭐ 9.9K</sub>
59
- </td>
60
- <td align="center" width="110">
61
- <a href="https://github.com/nearai/ironclaw">
62
- <img src="./public/providers/ironclaw.png" alt="IronClaw" width="48"/><br/>
63
- <b>IronClaw</b>
64
- </a><br/>
65
- <sub>⭐ 2.1K</sub>
66
- </td>
67
- </tr>
68
- <tr>
69
- <td align="center" width="110">
70
- <a href="https://github.com/anomalyco/opencode">
71
- <img src="./public/providers/opencode.svg" alt="OpenCode" width="48"/><br/>
72
- <b>OpenCode</b>
73
- </a><br/>
74
- <sub>⭐ 106K</sub>
75
- </td>
76
- <td align="center" width="110">
77
- <a href="https://github.com/openai/codex">
78
- <img src="./public/providers/codex.png" alt="Codex CLI" width="48"/><br/>
79
- <b>Codex CLI</b>
80
- </a><br/>
81
- <sub>⭐ 60.8K</sub>
82
- </td>
83
- <td align="center" width="110">
84
- <a href="https://github.com/anthropics/claude-code">
85
- <img src="./public/providers/claude.png" alt="Claude Code" width="48"/><br/>
86
- <b>Claude Code</b>
87
- </a><br/>
88
- <sub>⭐ 67.3K</sub>
89
- </td>
90
- <td align="center" width="110">
91
- <a href="https://github.com/google-gemini/gemini-cli">
92
- <img src="./public/providers/gemini-cli.png" alt="Gemini CLI" width="48"/><br/>
93
- <b>Gemini CLI</b>
94
- </a><br/>
95
- <sub>⭐ 94.7K</sub>
96
- </td>
97
- <td align="center" width="110">
98
- <a href="https://github.com/Kilo-Org/kilocode">
99
- <img src="./public/providers/kilocode.png" alt="Kilo Code" width="48"/><br/>
100
- <b>Kilo Code</b>
101
- </a><br/>
102
- <sub>⭐ 15.5K</sub>
103
- </td>
104
- </tr>
105
- </table>
106
-
107
- <sub>📡 Tất cả đại lý kết nối qua <code>http://localhost:20128/v1</code> hoặc <code>http://cloud.omniroute.online/v1</code> — một cấu hình, số mô hình và hạn ngạch không giới hạn</sub>
108
-
109
- ---
110
-
111
- [![npm version](https://img.shields.io/npm/v/omniroute?color=cb3837&logo=npm)](https://www.npmjs.com/package/omniroute)
112
- [![Docker Hub](https://img.shields.io/docker/v/diegosouzapw/omniroute?label=Docker%20Hub&logo=docker&color=2496ED)](https://hub.docker.com/r/diegosouzapw/omniroute)
113
- [![License](https://img.shields.io/github/license/diegosouzapw/OmniRoute)](https://github.com/diegosouzapw/OmniRoute/blob/main/LICENSE)
114
- [![Website](https://img.shields.io/badge/Website-omniroute.online-blue?logo=google-chrome&logoColor=white)](https://omniroute.online)
115
- [![WhatsApp](https://img.shields.io/badge/WhatsApp-Community-25D366?logo=whatsapp&logoColor=white)](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
116
-
117
- [🌐 Website](https://omniroute.online) • [🚀 Quick Start](#-quick-start) • [💡 Features](#-key-features) • [📖 Docs](#-documentation) • [💰 Pricing](#-pricing-at-a-glance) • [💬 WhatsApp](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
118
-
119
- 🌐 **Available in:** 🇺🇸 [English](README.md) | 🇧🇷 [Português (Brasil)](README.pt-BR.md) | 🇪🇸 [Español](README.es.md) | 🇫🇷 [Français](README.fr.md) | 🇮🇹 [Italiano](README.it.md) | 🇷🇺 [Русский](README.ru.md) | 🇨🇳 [中文 (简体)](README.zh-CN.md) | 🇩🇪 [Deutsch](README.de.md) | 🇮🇳 [हिन्दी](README.in.md) | 🇹🇭 [ไทย](README.th.md) | 🇺🇦 [Українська](README.uk-UA.md) | 🇸🇦 [العربية](README.ar.md) | 🇯🇵 [日本語](README.ja.md) | 🇻🇳 [Tiếng Việt](README.vi.md) | 🇧🇬 [Български](README.bg.md) | 🇩🇰 [Dansk](README.da.md) | 🇫🇮 [Suomi](README.fi.md) | 🇮🇱 [עברית](README.he.md) | 🇭🇺 [Magyar](README.hu.md) | 🇮🇩 [Bahasa Indonesia](README.id.md) | 🇰🇷 [한국어](README.ko.md) | 🇲🇾 [Bahasa Melayu](README.ms.md) | 🇳🇱 [Nederlands](README.nl.md) | 🇳🇴 [Norsk](README.no.md) | 🇵🇹 [Português (Portugal)](README.pt.md) | 🇷🇴 [Română](README.ro.md) | 🇵🇱 [Polski](README.pl.md) | 🇸🇰 [Slovenčina](README.sk.md) | 🇸🇪 [Svenska](README.sv.md) | 🇵🇭 [Filipino](README.phi.md)
120
-
121
- </div>
122
-
123
- ---
124
-
125
- ## 🖼️
126
-
127
- <div align="center">
128
- <img src="./docs/screenshots/MainOmniRoute.png" alt="OmniRoute" width="800"/>
129
- </div>
130
-
131
- ---
132
-
133
- ## 📸
134
-
135
- <details>
136
- <summary><b>...</b></summary>
137
-
138
- | # | # |
139
- | ----- | ---------------------------------------- |
140
- | **1** | ![1](docs/screenshots/01-providers.png) |
141
- | **2** | ![2](docs/screenshots/02-combos.png) |
142
- | **3** | ![3](docs/screenshots/03-analytics.png) |
143
- | **4** | ![4](docs/screenshots/04-health.png) |
144
- | **5** | ![5](docs/screenshots/05-translator.png) |
145
- | **6** | ![6](docs/screenshots/06-settings.png) |
146
- | **7** | ![7](docs/screenshots/07-cli-tools.png) |
147
- | **8** | ![8](docs/screenshots/08-usage.png) |
148
- | **9** | ![9](docs/screenshots/09-endpoint.png) |
149
-
150
- </details>
151
-
152
- ---
153
-
154
- ## 🤔 Tại sao lại là OmniRoute?
155
-
156
- **Ngưng lãng phí tiền và đạt đến giới hạn:**
157
-
158
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Hạn mức đăng ký hết hạn không được sử dụng hàng tháng
159
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Giới hạn tốc độ khiến bạn không thể viết mã giữa chừng
160
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> API đắt tiền ($20-50/tháng cho mỗi nhà cung cấp)
161
- - <img src="https://img.shields.io/badge/✗-e74c3c?style=flat-square" height="16"/> Chuyển đổi thủ công giữa các nhà cung cấp
162
-
163
- **OmniRoute giải quyết vấn đề này:**
164
-
165
- - ✅ **Tối đa hóa số lượt đăng ký** - Theo dõi hạn ngạch, sử dụng từng bit trước khi đặt lại
166
- - ✅ **Tự động dự phòng** - Đăng ký → Khóa API → Giá rẻ → Miễn phí, không có thời gian ngừng hoạt động
167
- - ✅ **Nhiều tài khoản** - Luân chuyển giữa các tài khoản cho mỗi nhà cung cấp
168
- - ✅ **Universal** - Hoạt động với Claude Code, Codex, Gemini CLI, Cursor, Cline, OpenClaw, mọi công cụ CLI
169
-
170
- ---
171
-
172
- ## 📧 Hỗ trợ
173
-
174
- > 💬 **Tham gia cộng đồng của chúng tôi!** [WhatsApp Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t) — Nhận trợ giúp, chia sẻ mẹo và luôn cập nhật.
175
-
176
- - **Trang web**: [omniroute.online](https://omniroute.online)
177
- - **GitHub**: [github.com/diegosouzapw/OmniRoute](https://github.com/diegosouzapw/OmniRoute)
178
- - **Vấn đề**: [github.com/diegosouzapw/OmniRoute/issues](https://github.com/diegosouzapw/OmniRoute/issues)
179
- - **WhatsApp**: [Community Group](https://chat.whatsapp.com/JI7cDQ1GyaiDHhVBpLxf8b?mode=gi_t)
180
- - **Dự án gốc**: [9router by decolua](https://github.com/decolua/9router)
181
-
182
- ---
183
-
184
- ## 🔄 Nó hoạt động như thế nào
185
-
186
- ```
187
- ┌─────────────┐
188
- │ Your CLI │ (Claude Code, Codex, Gemini CLI, OpenClaw, Cursor, Cline...)
189
- │ Tool │
190
- └──────┬──────┘
191
- │ http://localhost:20128/v1
192
-
193
- ┌─────────────────────────────────────────┐
194
- │ OmniRoute (Smart Router) │
195
- │ • Format translation (OpenAI ↔ Claude) │
196
- │ • Quota tracking + Embeddings + Images │
197
- │ • Auto token refresh │
198
- └──────┬──────────────────────────────────┘
199
-
200
- ├─→ [Tier 1: SUBSCRIPTION] Claude Code, Codex, Gemini CLI
201
- │ ↓ quota exhausted
202
- ├─→ [Tier 2: API KEY] DeepSeek, Groq, xAI, Mistral, NVIDIA NIM, etc.
203
- │ ↓ budget limit
204
- ├─→ [Tier 3: CHEAP] GLM ($0.6/1M), MiniMax ($0.2/1M)
205
- │ ↓ budget limit
206
- └─→ [Tier 4: FREE] iFlow, Qwen, Kiro (unlimited)
207
-
208
- Result: Never stop coding, minimal cost
209
- ```
210
-
211
- ---
212
-
213
- ## 🎯 OmniRoute giải quyết được gì — 30 điểm khó thực sự và trường hợp sử dụng
214
-
215
- > **Mọi nhà phát triển sử dụng công cụ AI đều phải đối mặt với những vấn đề này hàng ngày.** OmniRoute được xây dựng để giải quyết tất cả — từ chi phí vượt mức cho đến chặn khu vực, từ luồng OAuth bị hỏng đến hoạt động giao thức và khả năng quan sát của doanh nghiệp.
216
-
217
- <details>
218
- <summary><b>💸 1. "Tôi trả tiền cho một thuê bao đắt tiền nhưng vẫn bị gián đoạn bởi các giới hạn"</b></summary>
219
-
220
- Các nhà phát triển trả 20–200 USD/tháng cho Claude Pro, Codex Pro hoặc GitHub Copilot. Ngay cả khi trả tiền, hạn ngạch vẫn có mức trần - 5 giờ sử dụng, giới hạn hàng tuần hoặc giới hạn tốc độ mỗi phút. Giữa phiên mã hóa, nhà cung cấp ngừng phản hồi và nhà phát triển mất đi dòng chảy và năng suất.
221
-
222
- **Cách OmniRoute giải quyết vấn đề này:**
223
-
224
- - **Dự phòng 4 tầng thông minh** — Nếu hết hạn ngạch đăng ký, tự động chuyển hướng đến Khóa API → Giá rẻ → Miễn phí mà không cần can thiệp thủ công
225
- - **Theo dõi hạn ngạch theo thời gian thực** — Hiển thị mức tiêu thụ mã thông báo trong thời gian thực với tính năng đếm ngược đặt lại (5 giờ, hàng ngày, hàng tuần)
226
- - **Hỗ trợ nhiều tài khoản** — Nhiều tài khoản cho mỗi nhà cung cấp với tính năng tự động quay vòng — khi hết một tài khoản, hãy chuyển sang tài khoản tiếp theo
227
- - **Combo tùy chỉnh** — Chuỗi dự phòng có thể tùy chỉnh với 6 chiến lược cân bằng (điền trước, quay vòng, P2C, ngẫu nhiên, ít sử dụng nhất, tối ưu hóa chi phí)
228
- - **Hạn ngạch kinh doanh Codex** — Giám sát hạn ngạch không gian làm việc của Doanh nghiệp/Nhóm trực tiếp trong bảng điều khiển
229
-
230
- </details>
231
-
232
- <details>
233
- <summary><b>🔌 2. "Tôi cần sử dụng nhiều nhà cung cấp nhưng mỗi nhà cung cấp có một API khác nhau"</b></summary>
234
-
235
- OpenAI sử dụng một định dạng, Claude (Anthropic) sử dụng một định dạng khác, Gemini lại sử dụng một định dạng khác. Nếu nhà phát triển muốn thử nghiệm các mô hình từ các nhà cung cấp khác nhau hoặc dự phòng giữa các nhà cung cấp đó, họ cần phải định cấu hình lại SDK, thay đổi điểm cuối, xử lý các định dạng không tương thích. Các nhà cung cấp tùy chỉnh (FriendLI, NIM) có các điểm cuối mô hình không chuẩn.
236
-
237
- **Cách OmniRoute giải quyết vấn đề này:**
238
-
239
- - **Điểm cuối hợp nhất** — Một `http://localhost:20128/v1` duy nhất đóng vai trò là proxy cho tất cả hơn 36 nhà cung cấp
240
- - **Dịch định dạng** — Tự động và minh bạch: OpenAI ↔ Claude ↔ Gemini ↔ API phản hồi
241
- - **Sạch hóa phản hồi** — Loại bỏ các trường không chuẩn (`x_groq`, `usage_breakdown`, `service_tier`) phá vỡ OpenAI SDK v1.83+
242
- - **Chuẩn hóa vai trò** — Chuyển đổi `developer` → `system` cho các nhà cung cấp không thuộc OpenAI; `system` → `user` cho GLM/ERNIE
243
- - **Think Tag Extraction** — Trích xuất các khối `<think>` từ các mô hình như DeepSeek R1 thành `reasoning_content` được tiêu chuẩn hóa
244
- - **Đầu ra có cấu trúc cho Gemini** — `json_schema` → `responseMimeType`/`responseSchema` chuyển đổi tự động
245
- - **`stream` mặc định là `false`** — Phù hợp với thông số OpenAI, tránh SSE không mong muốn trong SDK Python/Rust/Go
246
-
247
- </details>
248
-
249
- <details>
250
- <summary><b>🌐 3. "Nhà cung cấp AI của tôi chặn khu vực/quốc gia của tôi"</b></summary>
251
-
252
- Các nhà cung cấp như OpenAI/Codex chặn quyền truy cập từ các khu vực địa lý nhất định. Người dùng gặp phải các lỗi như `unsupported_country_region_territory` trong quá trình kết nối OAuth và API. Điều này đặc biệt gây khó chịu cho các nhà phát triển từ các nước đang phát triển.
253
-
254
- **Cách OmniRoute giải quyết vấn đề này:**
255
-
256
- - **Cấu hình proxy 3 cấp** — Proxy có thể định cấu hình ở 3 cấp độ: toàn cầu (tất cả lưu lượng truy cập), mỗi nhà cung cấp (chỉ một nhà cung cấp) và mỗi kết nối/khóa
257
- - **Huy hiệu proxy được mã hóa màu** — Chỉ báo trực quan: 🟢 proxy toàn cầu, 🟡 proxy nhà cung cấp, 🔵 proxy kết nối, luôn hiển thị IP
258
- - **Trao đổi mã thông báo OAuth thông qua proxy** — Luồng OAuth cũng đi qua proxy, giải quyết `unsupported_country_region_territory`
259
- - **Kiểm tra kết nối qua Proxy** — Kiểm tra kết nối sử dụng proxy đã định cấu hình (không cần bỏ qua trực tiếp nữa)
260
- - **Hỗ trợ SOCKS5** — Hỗ trợ proxy SOCKS5 đầy đủ cho định tuyến đi
261
- - **Giả mạo dấu vân tay TLS** — Dấu vân tay TLS giống trình duyệt thông qua `wreq-js` để vượt qua khả năng phát hiện bot
262
-
263
- </details>
264
-
265
- <details>
266
- <summary><b>🆓 4. "Tôi muốn sử dụng AI để viết mã nhưng tôi không có tiền"</b></summary>
267
-
268
- Không phải ai cũng có thể trả 20–200 USD/tháng để đăng ký AI. Sinh viên, nhà phát triển từ các quốc gia mới nổi, những người có sở thích và người làm nghề tự do cần được tiếp cận với các mô hình chất lượng với chi phí bằng 0.
269
-
270
- **Cách OmniRoute giải quyết vấn đề này:**
271
-
272
- - **Tích hợp sẵn nhà cung cấp cấp miễn phí** — Hỗ trợ riêng cho các nhà cung cấp miễn phí 100%: iFlow (8 mẫu không giới hạn), Qwen (3 mẫu không giới hạn), Kiro (Claude miễn phí), Gemini CLI (miễn phí 180K/tháng)
273
- - **Ollama Cloud** — Cloud-hosted Ollama models at `api.ollama.com` with free "Light usage" tier; use `ollamacloud/<model>` prefix
274
- - **Combo chỉ miễn phí** — Chuỗi `gc/gemini-3-flash → if/kimi-k2-thinking → qw/qwen3-coder-plus` = $0/tháng mà không có thời gian ngừng hoạt động
275
- - **Tín dụng miễn phí NVIDIA NIM** — Tích hợp 1000 tín dụng miễn phí
276
- - **Chiến lược tối ưu hóa chi phí** — Chiến lược định tuyến tự động chọn nhà cung cấp sẵn có rẻ nhất
277
-
278
- </details>
279
-
280
- <details>
281
- <summary><b>🔒 5. "Tôi cần bảo vệ cổng AI của mình khỏi bị truy cập trái phép"</b></summary>
282
-
283
- Khi đưa cổng AI vào mạng (LAN, VPS, Docker), bất kỳ ai có địa chỉ đều có thể sử dụng mã thông báo/hạn ngạch của nhà phát triển. Nếu không có biện pháp bảo vệ, các API dễ bị lạm dụng, chèn ép và lạm dụng.
284
-
285
- **Cách OmniRoute giải quyết vấn đề này:**
286
-
287
- - **Quản lý khóa API** — Tạo, xoay vòng và xác định phạm vi cho mỗi nhà cung cấp bằng trang `/dashboard/api-manager` chuyên dụng
288
- - **Quyền cấp mô hình** — Hạn chế khóa API đối với các mô hình cụ thể (`openai/*`, mẫu ký tự đại diện), với nút chuyển đổi Cho phép tất cả/Hạn chế
289
- - **Bảo vệ điểm cuối API** — Yêu cầu khóa cho `/v1/models` và chặn các nhà cung cấp cụ thể khỏi danh sách
290
- - **Auth Guard + CSRF Protection** — Tất cả các tuyến bảng điều khiển được bảo vệ bằng phần mềm trung gian `withAuth` + mã thông báo CSRF
291
- - **Giới hạn tốc độ** — Giới hạn tốc độ trên mỗi IP với các cửa sổ có thể định cấu hình
292
- - **Lọc IP** — Danh sách cho phép/danh sách chặn để kiểm soát truy cập
293
- - **Prompt Tiêm Guard** — Khử trùng các mẫu nhắc nhở độc hại
294
- - **Mã hóa AES-256-GCM** — Thông tin xác thực được mã hóa ở trạng thái lưu trữ
295
-
296
- </details>
297
-
298
- <details>
299
- <summary><b>🛑 6. "Nhà cung cấp của tôi ngừng hoạt động và tôi mất luồng mã hóa"</b></summary>
300
-
301
- Các nhà cung cấp AI có thể trở nên không ổn định, trả về lỗi 5xx hoặc đạt giới hạn tốc độ tạm thời. Nếu một nhà phát triển phụ thuộc vào một nhà cung cấp duy nhất thì họ sẽ bị gián đoạn. Nếu không có bộ ngắt mạch, việc thử lại nhiều lần có thể làm hỏng ứng dụng.
302
-
303
- **Cách OmniRoute giải quyết vấn đề này:**
304
-
305
- - **Bộ ngắt mạch cho mỗi nhà cung cấp** — Tự động mở/đóng với ngưỡng có thể định cấu hình và thời gian hồi chiêu (Đóng/Mở/Nửa mở)
306
- - **Thời gian chờ theo cấp số nhân** — Độ trễ thử lại lũy tiến
307
- - **Bầy chống sấm sét** — Mutex + bảo vệ semaphore chống lại các cơn bão thử lại đồng thời
308
- - **Chuỗi dự phòng kết hợp** — Nếu nhà cung cấp chính không thành công, nó sẽ tự động rơi qua chuỗi mà không cần can thiệp
309
- - **Combo Circuit Breaker** — Tự động vô hiệu hóa các nhà cung cấp bị lỗi trong chuỗi kết hợp
310
- | 🎯 **Endpoint-Aware Models** | Custom models declare supported endpoints + API format |
311
- - **Bảng thông tin sức khỏe** — Giám sát thời gian hoạt động, trạng thái ngắt mạch, khóa, số liệu thống kê bộ nhớ đệm, độ trễ p50/p95/p99
312
-
313
- </details>
314
-
315
- <details>
316
- <summary><b>🔧 7. "Cấu hình từng công cụ AI thật tẻ nhạt và lặp đi lặp lại"</b></summary>
317
-
318
- Nhà phát triển sử dụng Cursor, Claude Code, Codex CLI, OpenClaw, Gemini CLI, Kilo Code... Mỗi công cụ cần một cấu hình khác nhau (điểm cuối API, khóa, mô hình). Việc cấu hình lại khi chuyển đổi nhà cung cấp hoặc mô hình là một sự lãng phí thời gian.
319
-
320
- **Cách OmniRoute giải quyết vấn đề này:**
321
-
322
- - **Bảng điều khiển công cụ CLI** — Trang chuyên dụng với thiết lập bằng một cú nhấp chuột cho Claude Code, Codex CLI, OpenClaw, Kilo Code, AntiGravity, Cline
323
- - **Trình tạo cấu hình GitHub Copilot** — Tạo `chatLanguageModels.json` cho Mã VS với lựa chọn mô hình hàng loạt
324
- - **Trình hướng dẫn tích hợp** — Thiết lập 4 bước có hướng dẫn cho người dùng lần đầu
325
- - **Một điểm cuối, tất cả các kiểu máy** — Định cấu hình `http://localhost:20128/v1` một lần, truy cập hơn 36 nhà cung cấp
326
-
327
- </details>
328
-
329
- <details>
330
- <summary><b>🔑 8. "Quản lý mã thông báo OAuth từ nhiều nhà cung cấp là địa ngục"</b></summary>
331
-
332
- Claude Code, Codex, Gemini CLI, Copilot — tất cả đều sử dụng OAuth 2.0 với các mã thông báo sắp hết hạn. Các nhà phát triển cần liên tục xác thực lại, xử lý `client_secret is missing`, `redirect_uri_mismatch` và các lỗi trên máy chủ từ xa. OAuth trên LAN/VPS đặc biệt có vấn đề.
333
-
334
- **Cách OmniRoute giải quyết vấn đề này:**
335
-
336
- - **Tự động làm mới mã thông báo** — Làm mới mã thông báo OAuth ở chế độ nền trước khi hết hạn
337
- - **Tích hợp OAuth 2.0 (PKCE)** — Luồng tự động cho Claude Code, Codex, Gemini CLI, Copilot, Kiro, Qwen, iFlow
338
- - **OAuth nhiều tài khoản** — Nhiều tài khoản cho mỗi nhà cung cấp thông qua trích xuất mã thông báo JWT/ID
339
- - **OAuth LAN/Remote Fix** — Phát hiện IP riêng cho `redirect_uri` + chế độ URL thủ công cho máy chủ từ xa
340
- - **OAuth đằng sau Nginx** — Sử dụng `window.location.origin` để tương thích với proxy ngược
341
- - **Hướng dẫn OAuth từ xa** — Hướng dẫn từng bước về thông tin đăng nhập Google Cloud trên VPS/Docker
342
-
343
- </details>
344
-
345
- <details>
346
- <summary><b>📊 9. "Tôi không biết mình đang chi bao nhiêu hay ở đâu"</b></summary>
347
-
348
- Các nhà phát triển sử dụng nhiều nhà cung cấp trả phí nhưng không có quan điểm thống nhất về chi tiêu. Mỗi nhà cung cấp có trang tổng quan thanh toán riêng nhưng không có chế độ xem tổng hợp. Chi phí bất ngờ có thể chồng chất.
349
-
350
- **Cách OmniRoute giải quyết vấn đề này:**
351
-
352
- - **Bảng thông tin phân tích chi phí** — Theo dõi chi phí mỗi mã thông báo và quản lý ngân sách cho mỗi nhà cung cấp
353
- - **Giới hạn ngân sách cho mỗi cấp** — Mức chi tiêu trần cho mỗi cấp kích hoạt dự phòng tự động
354
- - **Cấu hình định giá theo mẫu** — Giá có thể định cấu hình cho mỗi mẫu
355
- - **Thống kê sử dụng trên mỗi khóa API** — Số lượng yêu cầu và dấu thời gian được sử dụng lần cuối trên mỗi khóa
356
- - **Bảng thông tin phân tích** — Thẻ thống kê, biểu đồ sử dụng mô hình, bảng nhà cung cấp với tỷ lệ thành công và độ trễ
357
-
358
- </details>
359
-
360
- <details>
361
- <summary><b>🐛 10. "Tôi không thể chẩn đoán lỗi và sự cố trong cuộc gọi AI"</b></summary>
362
-
363
- Khi cuộc gọi không thành công, nhà phát triển không biết liệu đó có phải là giới hạn tốc độ, mã thông báo đã hết hạn, sai định dạng hay lỗi nhà cung cấp hay không. Nhật ký bị phân mảnh trên các thiết bị đầu cuối khác nhau. Nếu không có khả năng quan sát được thì việc gỡ lỗi chỉ là thử và sai.
364
-
365
- **Cách OmniRoute giải quyết vấn đề này:**
366
-
367
- - **Bảng điều khiển nhật ký hợp nhất** — 4 tab: Nhật ký yêu cầu, Nhật ký proxy, Nhật ký kiểm tra, Bảng điều khiển
368
- - **Trình xem nhật ký bảng điều khiển** — Trình xem kiểu thiết bị đầu cuối thời gian thực với các cấp độ được mã hóa màu, tự động cuộn, tìm kiếm, lọc
369
- - **Nhật ký proxy SQLite** — Nhật ký liên tục vẫn tồn tại khi máy chủ khởi động lại
370
- - **Sân chơi dịch thuật** — 4 chế độ gỡ lỗi: Sân chơi (dịch định dạng), Trình kiểm tra trò chuyện (khứ hồi), Bàn thử nghiệm (hàng loạt), Giám sát trực tiếp (thời gian thực)
371
- - **Yêu cầu đo từ xa** — độ trễ p50/p95/p99 + truy tìm X-Request-Id
372
- - **Ghi nhật ký dựa trên tệp bằng xoay vòng** — Trình chặn chặn bảng điều khiển ghi lại mọi thứ vào nhật ký JSON bằng cách xoay vòng dựa trên kích thước
373
-
374
- </details>
375
-
376
- <details>
377
- <summary><b>🏗️ 11. "Việc triển khai và bảo trì cổng rất phức tạp"</b></summary>
378
-
379
- Việc cài đặt, định cấu hình và duy trì proxy AI trên các môi trường khác nhau (cục bộ, VPS, Docker, đám mây) tốn nhiều công sức. Các vấn đề như đường dẫn được mã hóa cứng, `EACCES` trên thư mục, xung đột cổng và các bản dựng đa nền tảng sẽ gây thêm rắc rối.
380
-
381
- **Cách OmniRoute giải quyết vấn đề này:**
382
-
383
- - **npm cài đặt toàn cầu** — `npm install -g omniroute && omniroute` — đã xong
384
- - **Docker Đa nền tảng** — AMD64 + ARM64 gốc (Apple Silicon, AWS Graviton, Raspberry Pi)
385
- - **Hồ sơ soạn thảo Docker** — `base` (không có công cụ CLI) và `cli` (với Claude Code, Codex, OpenClaw)
386
- - **Ứng dụng máy tính để bàn điện tử** — Ứng dụng gốc dành cho Windows/macOS/Linux với khay hệ thống, tự động khởi động, chế độ ngoại tuyến
387
- - **Chế độ chia cổng** — API và Bảng điều khiển trên các cổng riêng biệt cho các tình huống nâng cao (proxy ngược, mạng vùng chứa)
388
- - **Cloud Sync** — Đồng bộ hóa cấu hình giữa các thiết bị thông qua Cloudflare Workers
389
- - **Sao lưu DB** — Tự động sao lưu, khôi phục, xuất và nhập tất cả cài đặt
390
-
391
- </details>
392
-
393
- <details>
394
- <summary><b>🌍 12. "Giao diện chỉ có tiếng Anh và nhóm của tôi không nói được tiếng Anh"</b></summary>
395
-
396
- Các đội ở các quốc gia không nói tiếng Anh, đặc biệt là ở Châu Mỹ Latinh, Châu Á và Châu Âu, gặp khó khăn với giao diện chỉ có tiếng Anh. Rào cản ngôn ngữ làm giảm khả năng tiếp nhận và tăng lỗi cấu hình.
397
-
398
- **Cách OmniRoute giải quyết vấn đề này:**
399
-
400
- - **Bảng điều khiển i18n — 30 ngôn ngữ** — Tất cả hơn 500 phím được dịch bao gồm tiếng Ả Rập, tiếng Bungari, tiếng Đan Mạch, tiếng Đức, tiếng Tây Ban Nha, tiếng Phần Lan, tiếng Pháp, tiếng Do Thái, tiếng Hindi, tiếng Hungary, tiếng Indonesia, tiếng Ý, tiếng Nhật, tiếng Hàn, tiếng Mã Lai, tiếng Hà Lan, tiếng Na Uy, tiếng Ba Lan, tiếng Bồ Đào Nha (PT/BR), tiếng Rumani, tiếng Nga, tiếng Slovak, tiếng Thụy Điển, tiếng Thái, tiếng Ukraina, tiếng Việt, tiếng Trung, tiếng Philipin, tiếng Anh
401
- - **Hỗ trợ RTL** — Hỗ trợ từ phải sang trái cho tiếng Ả Rập và tiếng Do Thái
402
- - **README đa ngôn ngữ** — 30 bản dịch tài liệu hoàn chỉnh
403
- - **Bộ chọn ngôn ngữ** — Biểu tượng quả cầu trong tiêu đề để chuyển đổi theo thời gian thực
404
-
405
- </details>
406
-
407
- <details>
408
- <summary><b>🔄 13. "Tôi cần nhiều hơn là trò chuyện - tôi cần nội dung nhúng, hình ảnh, âm thanh"</b></summary>
409
-
410
- AI không chỉ hoàn thành cuộc trò chuyện. Nhà phát triển cần tạo hình ảnh, phiên âm âm thanh, tạo phần nhúng cho RAG, sắp xếp lại tài liệu và kiểm duyệt nội dung. Mỗi API có điểm cuối và định dạng khác nhau.
411
-
412
- **Cách OmniRoute giải quyết vấn đề này:**
413
-
414
- - **Nhúng** — `/v1/embeddings` với 6 nhà cung cấp và hơn 9 mẫu máy
415
- - **Tạo hình ảnh** — `/v1/images/generations` với 10 nhà cung cấp và hơn 20 mô hình (OpenAI, xAI, Together, Fireworks, Nebius, Hyperbolic, NanoBanana, AntiGravity, SD WebUI, ComfyUI)
416
- - **Chuyển văn bản thành video** — `/v1/videos/generations` — ComfyUI (AnimateDiff, SVD) và SD WebUI
417
- - **Chuyển văn bản thành nhạc** — `/v1/music/generations` — ComfyUI (Mở âm thanh ổn định, MusicGen)
418
- - **Phiên âm âm thanh** — `/v1/audio/transcriptions` — Whisper + Nvidia NIM, HuggingFace, Qwen3
419
- - **Chuyển văn bản thành giọng nói** — `/v1/audio/speech` — ElevenLabs, Nvidia NIM, HuggingFace, Coqui, Tortoise, Qwen3, Inworld, Cartesia, PlayHT, + các nhà cung cấp hiện có
420
- - **Kiểm duyệt** — `/v1/moderations` — Kiểm tra an toàn nội dung
421
- - **Sắp xếp lại** — `/v1/rerank` — Sắp xếp lại mức độ liên quan của tài liệu
422
- - **API phản hồi** — Hỗ trợ đầy đủ `/v1/responses` cho Codex
423
-
424
- </details>
425
-
426
- <details>
427
- <summary><b>🧪 14. "Tôi không có cách nào để kiểm tra và so sánh chất lượng giữa các mẫu"</b></summary>
428
-
429
- Các nhà phát triển muốn biết mô hình nào là tốt nhất cho trường hợp sử dụng của họ — mã, dịch thuật, lý luận — nhưng việc so sánh thủ công rất chậm. Không có công cụ đánh giá tích hợp nào tồn tại.
430
-
431
- **Cách OmniRoute giải quyết vấn đề này:**
432
-
433
- - **Đánh giá LLM** — Bộ thử nghiệm vàng với 10 trường hợp tải sẵn bao gồm lời chào, toán, địa lý, tạo mã, tuân thủ JSON, dịch thuật, đánh dấu, từ chối an toàn
434
- - **4 Chiến lược kết hợp** — `exact`, `contains`, `regex`, `custom` (chức năng JS)
435
- - **Băng thử nghiệm sân chơi dịch giả** — Thử nghiệm hàng loạt với nhiều đầu vào và đầu ra dự kiến, so sánh giữa các nhà cung cấp
436
- - **Trình kiểm tra trò chuyện** — Toàn bộ chuyến đi với kết xuất phản hồi trực quan
437
- - **Live Monitor** — Luồng thời gian thực của tất cả các yêu cầu truyền qua proxy
438
-
439
- </details>
440
-
441
- <details>
442
- <summary><b>📈 15. "Tôi cần mở rộng quy mô mà không làm giảm hiệu suất"</b></summary>
443
-
444
- Khi khối lượng yêu cầu tăng lên mà không lưu vào bộ nhớ đệm thì các câu hỏi tương tự sẽ tạo ra chi phí trùng lặp. Nếu không có tính tạm thời, các yêu cầu trùng lặp sẽ bị lãng phí. Giới hạn tỷ lệ cho mỗi nhà cung cấp phải được tôn trọng.
445
-
446
- **Cách OmniRoute giải quyết vấn đề này:**
447
-
448
- - **Bộ nhớ đệm ngữ nghĩa** — Bộ nhớ đệm hai tầng (chữ ký + ngữ nghĩa) giúp giảm chi phí và độ trễ
449
- - **Yêu cầu Idempotency** — Khoảng thời gian loại bỏ trùng lặp 5 giây cho các yêu cầu giống hệt nhau
450
- - **Phát hiện giới hạn tỷ lệ** — RPM của mỗi nhà cung cấp, khoảng cách tối thiểu và theo dõi đồng thời tối đa
451
- - **Giới hạn tỷ lệ có thể chỉnh sửa** — Giá trị mặc định có thể định cấu hình trong Cài đặt → Khả năng phục hồi với tính bền bỉ
452
- - **Bộ đệm xác thực khóa API** — Bộ đệm 3 tầng cho hiệu suất sản xuất
453
- - **Bảng thông tin sức khỏe với phép đo từ xa** — độ trễ p50/p95/p99, số liệu thống kê bộ nhớ đệm, thời gian hoạt động
454
-
455
- </details>
456
-
457
- <details>
458
- <summary><b>🤖 16. "Tôi muốn kiểm soát hành vi của mô hình trên toàn cầu"</b></summary>
459
-
460
- Các nhà phát triển muốn tất cả phản hồi bằng một ngôn ngữ cụ thể, với giọng điệu cụ thể hoặc muốn giới hạn các mã thông báo lý luận. Việc định cấu hình điều này trong mọi công cụ/yêu cầu là không thực tế.
461
-
462
- **Cách OmniRoute giải quyết vấn đề này:**
463
-
464
- - **Tiêm nhắc nhở hệ thống** — Lời nhắc chung được áp dụng cho tất cả các yêu cầu
465
- - **Xác thực ngân sách tư duy** — Kiểm soát phân bổ mã thông báo hợp lý cho mỗi yêu cầu (chuyển qua, tự động, tùy chỉnh, thích ứng)
466
- - **6 Chiến lược định tuyến** — Chiến lược toàn cầu xác định cách phân phối yêu cầu
467
- - **Bộ định tuyến ký tự đại diện** — Các mẫu `provider/*` tự động định tuyến tới bất kỳ nhà cung cấp nào
468
- - **Bật/Tắt kết hợp chuyển đổi** — Chuyển đổi kết hợp trực tiếp từ bảng điều khiển
469
- - **Chuyển đổi nhà cung cấp** — Bật/tắt tất cả kết nối cho nhà cung cấp chỉ bằng một cú nhấp chuột
470
- - **Nhà cung cấp bị chặn** — Loại trừ các nhà cung cấp cụ thể khỏi danh sách `/v1/models`
471
-
472
- </details>
473
-
474
- <details>
475
- <summary><b>🧰 17. "Tôi cần các công cụ MCP làm khả năng của sản phẩm hạng nhất"</b></summary>
476
-
477
- Nhiều cổng AI chỉ hiển thị MCP dưới dạng chi tiết triển khai ẩn. Các nhóm cần một lớp hoạt động rõ ràng và dễ quản lý.
478
-
479
- **Cách OmniRoute giải quyết vấn đề này:**
480
-
481
- - MCP xuất hiện trong tab điều hướng bảng điều khiển và giao thức điểm cuối
482
- - Trang quản lý MCP chuyên dụng với quy trình, công cụ, phạm vi và kiểm tra
483
- - Tích hợp tính năng khởi động nhanh cho `omniroute --mcp` và quá trình cài đặt ứng dụng khách
484
-
485
- </details>
486
-
487
- <details>
488
- <summary><b>🧠 18. "Tôi cần phối hợp A2A với đường dẫn tác vụ đồng bộ hóa + truyền phát"</b></summary>
489
-
490
- Quy trình làm việc của tổng đài viên cần cả phản hồi trực tiếp và thực thi theo luồng trong thời gian dài với khả năng kiểm soát vòng đời.
491
-
492
- **Cách OmniRoute giải quyết vấn đề này:**
493
-
494
- - Điểm cuối JSON-RPC A2A (`POST /a2a`) với `message/send` và `message/stream`
495
- - Truyền phát SSE với sự lan truyền trạng thái đầu cuối
496
- - API vòng đời tác vụ cho `tasks/get` và `tasks/cancel`
497
-
498
- </details>
499
-
500
- <details>
501
- <summary><b>🛰️ 19. "Tôi cần tình trạng quy trình MCP thực sự, trạng thái không đoán được"</b></summary>
502
-
503
- Các nhóm vận hành cần biết liệu MCP có thực sự tồn tại hay không, chứ không chỉ là liệu API có thể truy cập được hay không.
504
-
505
- **Cách OmniRoute giải quyết vấn đề này:**
506
-
507
- - Tệp nhịp tim thời gian chạy với PID, dấu thời gian, vận chuyển, số lượng công cụ và chế độ phạm vi
508
- - API trạng thái MCP kết hợp nhịp tim + hoạt động gần đây
509
- - Thẻ trạng thái giao diện người dùng về độ mới của quy trình/thời gian hoạt động/nhịp tim
510
-
511
- </details>
512
-
513
- <details>
514
- <summary><b>📋 20. "Tôi cần thực thi công cụ MCP có thể kiểm tra được"</b></summary>
515
-
516
- Khi các công cụ thay đổi cấu hình hoặc kích hoạt các hành động vận hành, các nhóm cần truy xuất nguồn gốc pháp lý.
517
-
518
- **Cách OmniRoute giải quyết vấn đề này:**
519
-
520
- - Ghi nhật ký kiểm tra được hỗ trợ bởi SQLite cho các lệnh gọi công cụ MCP
521
- - Bộ lọc theo công cụ, thành công/thất bại, khóa API và phân trang
522
- - Bảng kiểm tra bảng điều khiển + điểm cuối thống kê để tự động hóa
523
-
524
- </details>
525
-
526
- <details>
527
- <summary><b>🔐 21. "Tôi cần quyền MCP trong phạm vi cho mỗi lần tích hợp"</b></summary>
528
-
529
- Các khách hàng khác nhau phải có quyền truy cập ít đặc quyền nhất vào các danh mục công cụ.
530
-
531
- **Cách OmniRoute giải quyết vấn đề này:**
532
-
533
- - 9 phạm vi MCP chi tiết để truy cập công cụ được kiểm soát
534
- - Thực thi phạm vi và khả năng hiển thị trong giao diện người dùng quản lý MCP
535
- - Tư thế mặc định an toàn cho dụng cụ vận hành
536
-
537
- </details>
538
-
539
- <details>
540
- <summary><b>⚙️ 22. "Tôi cần kiểm soát hoạt động mà không cần triển khai lại"</b></summary>
541
-
542
- Các nhóm cần thay đổi thời gian chạy nhanh trong các sự cố hoặc sự kiện tốn kém.
543
-
544
- **Cách OmniRoute giải quyết vấn đề này:**
545
-
546
- - Chuyển đổi kích hoạt kết hợp trực tiếp từ bảng điều khiển MCP
547
- - Áp dụng hồ sơ khả năng phục hồi từ các gói chính sách được xác định trước
548
- - Đặt lại trạng thái ngắt mạch từ cùng bảng vận hành
549
-
550
- </details>
551
-
552
- <details>
553
- <summary><b>🔄 23. "Tôi cần khả năng hiển thị và hủy trực tiếp trong vòng đời nhiệm vụ A2A"</b></summary>
554
-
555
- Nếu không có khả năng hiển thị vòng đời, các sự cố trong nhiệm vụ sẽ khó phân loại.
556
-
557
- **Cách OmniRoute giải quyết vấn đề này:**
558
-
559
- - Liệt kê/lọc nhiệm vụ theo trạng thái/kỹ năng với phân trang
560
- - Xem chi tiết về siêu dữ liệu, sự kiện và hiện vật của nhiệm vụ
561
- - Điểm cuối hủy tác vụ và hành động UI có xác nhận
562
-
563
- </details>
564
-
565
- <details>
566
- <summary><b>🌊 24. "Tôi cần số liệu luồng hoạt động cho tải A2A"</b></summary>
567
-
568
- Luồng công việc phát trực tuyến yêu cầu hiểu biết sâu sắc về hoạt động đồng thời và kết nối trực tiếp.
569
-
570
- **Cách OmniRoute giải quyết vấn đề này:**
571
-
572
- - Bộ đếm luồng hoạt động được tích hợp vào trạng thái A2A
573
- - Dấu thời gian nhiệm vụ cuối cùng và số lượng trên mỗi trạng thái
574
- - Thẻ bảng điều khiển A2A để theo dõi hoạt động theo thời gian thực
575
-
576
- </details>
577
-
578
- <details>
579
- <summary><b>🪪 25. "Tôi cần phát hiện đại lý tiêu chuẩn cho khách hàng"</b></summary>
580
-
581
- Máy khách và người điều phối bên ngoài cần siêu dữ liệu có thể đọc được bằng máy để triển khai.
582
-
583
- **Cách OmniRoute giải quyết vấn đề này:**
584
-
585
- - Thẻ đại lý bị lộ tại `/.well-known/agent.json`
586
- - Khả năng và kỹ năng thể hiện trong UI quản lý
587
- - API trạng thái A2A bao gồm siêu dữ liệu khám phá để tự động hóa
588
-
589
- </details>
590
-
591
- <details>
592
- <summary><b>🧭 26. "Tôi cần khả năng khám phá giao thức trong UX sản phẩm"</b></summary>
593
-
594
- Nếu người dùng không thể khám phá các bề mặt giao thức, chất lượng chấp nhận và hỗ trợ sẽ giảm.
595
-
596
- **Cách OmniRoute giải quyết vấn đề này:**
597
-
598
- - Các mục thanh bên cho MCP và A2A
599
- - Tab Giao thức của trang điểm cuối với trạng thái và khởi động nhanh
600
- - Liên kết từ tổng quan đến bảng điều khiển quản lý chuyên dụng
601
-
602
- </details>
603
-
604
- <details>
605
- <summary><b>🧪 27. "Tôi cần xác thực giao thức end-to-end với khách hàng thực"</b></summary>
606
-
607
- Các thử nghiệm mô phỏng không đủ để xác thực tính tương thích của giao thức trước khi phát hành.
608
-
609
- **Cách OmniRoute giải quyết vấn đề này:**
610
-
611
- - Bộ E2E khởi động ứng dụng và sử dụng vận chuyển máy khách MCP SDK thực
612
- - Máy khách A2A kiểm tra các luồng khám phá, gửi, truyền phát, nhận và hủy
613
- - Kiểm tra chéo các xác nhận đối với kiểm tra MCP và API nhiệm vụ A2A
614
-
615
- </details>
616
-
617
- <details>
618
- <summary><b>📡 28. "Tôi cần khả năng quan sát thống nhất trên tất cả các giao diện"</b></summary>
619
-
620
- Việc phân chia khả năng quan sát theo giao thức sẽ tạo ra các điểm mù và MTTR dài hơn.
621
-
622
- **Cách OmniRoute giải quyết vấn đề này:**
623
-
624
- - Bảng điều khiển/nhật ký/phân tích thống nhất trong một sản phẩm
625
- - Sức khỏe + kiểm toán + yêu cầu đo từ xa trên các lớp OpenAI, MCP và A2A
626
- - API hoạt động cho trạng thái và tự động hóa
627
-
628
- </details>
629
-
630
- <details>
631
- <summary><b>💼 29. "Tôi cần một thời gian chạy cho proxy + công cụ + điều phối tác nhân"</b></summary>
632
-
633
- Việc chạy nhiều dịch vụ riêng biệt làm tăng chi phí vận hành và các chế độ lỗi.
634
-
635
- **Cách OmniRoute giải quyết vấn đề này:**
636
-
637
- - Proxy tương thích với OpenAI, máy chủ MCP và máy chủ A2A trong một ngăn xếp
638
- - Chia sẻ xác thực, khả năng phục hồi, lưu trữ dữ liệu và khả năng quan sát
639
- - Mô hình chính sách nhất quán trên tất cả các bề mặt tương tác
640
-
641
- </details>
642
-
643
- <details>
644
- <summary><b>🚀 30. "Tôi cần gửi quy trình công việc tổng thể mà không cần sử dụng quá nhiều mã keo"</b></summary>
645
-
646
- Các nhóm bị mất tốc độ khi kết hợp nhiều dịch vụ và tập lệnh đặc biệt.
647
-
648
- **Cách OmniRoute giải quyết vấn đề này:**
649
-
650
- - Chiến lược điểm cuối thống nhất cho khách hàng và đại lý
651
- - Giao diện người dùng quản lý giao thức tích hợp và đường dẫn xác thực khói
652
- - Nền tảng sẵn sàng sản xuất (bảo mật, ghi nhật ký, khả năng phục hồi, sao lưu)
653
-
654
- </details>
655
-
656
- ### Sách hướng dẫn ví dụ (Trường hợp sử dụng tích hợp)
657
-
658
- **Playbook A: Tối đa hóa đăng ký trả phí + dự phòng giá rẻ**
659
-
660
- ```txt
661
- Combo: "maximize-claude"
662
- 1. cc/claude-opus-4-6
663
- 2. glm/glm-4.7
664
- 3. if/kimi-k2-thinking
665
-
666
- Monthly cost: $20 + small backup spend
667
- Outcome: higher quality, near-zero interruption
668
- ```
669
-
670
- **Playbook B: Ngăn xếp mã hóa không tốn phí**
671
-
672
- ```txt
673
- Combo: "free-forever"
674
- 1. gc/gemini-3-flash
675
- 2. if/kimi-k2-thinking
676
- 3. qw/qwen3-coder-plus
677
-
678
- Monthly cost: $0
679
- Outcome: stable free coding workflow
680
- ```
681
-
682
- **Playbook C: chuỗi dự phòng luôn hoạt động 24/7**
683
-
684
- ```txt
685
- Combo: "always-on"
686
- 1. cc/claude-opus-4-6
687
- 2. cx/gpt-5.2-codex
688
- 3. glm/glm-4.7
689
- 4. minimax/MiniMax-M2.1
690
- 5. if/kimi-k2-thinking
691
-
692
- Outcome: deep fallback depth for deadline-critical workloads
693
- ```
694
-
695
- **Playbook D: Tác nhân hoạt động với MCP + A2A**
696
-
697
- ```txt
698
- 1) Start MCP transport (`omniroute --mcp`) for tool-driven operations
699
- 2) Run A2A tasks via `message/send` and `message/stream`
700
- 3) Observe via /dashboard/mcp and /dashboard/a2a
701
- 4) Control incidents with resilience profile + task cancellation
702
- ```
703
-
704
- ---
705
-
706
- ## ⚡ Bắt đầu nhanh
707
-
708
- **1. Cài đặt trên toàn cầu:**
709
-
710
- ```bash
711
- npm install -g omniroute
712
- omniroute
713
- ```
714
-
715
- 🎉 Trang tổng quan mở lúc `http://localhost:20128`
716
-
717
- | Lệnh | Mô tả |
718
- | ----------------------- | --------------------------------------- |
719
- | `omniroute` | Máy chủ khởi động (cổng mặc định 20128) |
720
- | `omniroute --port 3000` | Sử dụng cổng tùy chỉnh |
721
- | `omniroute --no-open` | Không tự động mở trình duyệt |
722
- | `omniroute --help` | Hiển thị trợ giúp |
723
-
724
- **2. Kết nối nhà cung cấp MIỄN PHÍ:**
725
-
726
- Bảng điều khiển → Nhà cung cấp → Kết nối **Mã Claude** hoặc **AntiGravity** → Đăng nhập OAuth → Xong!
727
-
728
- **3. Sử dụng trong công cụ CLI của bạn:**
729
-
730
- ```
731
- Claude Code/Codex/Gemini CLI/OpenClaw/Cursor/Cline Settings:
732
- Endpoint: http://localhost:20128/v1
733
- API Key: [copy from dashboard]
734
- Model: if/kimi-k2-thinking
735
- ```
736
-
737
- **Chỉ vậy thôi!** Bắt đầu viết mã với các mô hình AI MIỄN PHÍ.
738
-
739
- **Thay thế - chạy từ nguồn:**
740
-
741
- ```bash
742
- cp .env.example .env
743
- npm install
744
- PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev
745
- ```
746
-
747
- ---
748
-
749
- ## 🐳 Docker
750
-
751
- OmniRoute có sẵn dưới dạng hình ảnh Docker công khai trên [Docker Hub](https://hub.docker.com/r/diegosouzapw/omniroute).
752
-
753
- **Chạy nhanh:**
754
-
755
- ```bash
756
- docker run -d \
757
- --name omniroute \
758
- --restart unless-stopped \
759
- -p 20128:20128 \
760
- -v omniroute-data:/app/data \
761
- diegosouzapw/omniroute:latest
762
- ```
763
-
764
- **Với tệp môi trường:**
765
-
766
- ```bash
767
- # Copy and edit .env first
768
- cp .env.example .env
769
-
770
- docker run -d \
771
- --name omniroute \
772
- --restart unless-stopped \
773
- --env-file .env \
774
- -p 20128:20128 \
775
- -v omniroute-data:/app/data \
776
- diegosouzapw/omniroute:latest
777
- ```
778
-
779
- **Sử dụng Docker Compose:**
780
-
781
- ```bash
782
- # Base profile (no CLI tools)
783
- docker compose --profile base up -d
784
-
785
- # CLI profile (Claude Code, Codex, OpenClaw built-in)
786
- docker compose --profile cli up -d
787
- ```
788
-
789
- | Hình ảnh | Gắn thẻ | Kích thước | Mô tả |
790
- | ------------------------ | -------- | ---------- | ------------------------------ |
791
- | `diegosouzapw/omniroute` | `latest` | ~250MB | Bản phát hành ổn định mới nhất |
792
- | `diegosouzapw/omniroute` | `1.0.3` | ~250MB | Phiên bản hiện tại |
793
-
794
- ---
795
-
796
- ---
797
-
798
- ## 🖥️
799
-
800
- > 🆕 **NEW!** OmniRoute is now available as a **native desktop application** for Windows, macOS, and Linux.
801
-
802
- - 🖥️ **Native Window** — Dedicated app window with system tray integration
803
- - 🔄 **Auto-Start** — Launch OmniRoute on system login
804
- - 🔔 **Native Notifications** — Get alerts for quota exhaustion or provider issues
805
- - ⚡ **One-Click Install** — NSIS (Windows), DMG (macOS), AppImage (Linux)
806
- - 🌐 **Offline Mode** — Works fully offline with bundled server
807
-
808
- ```bash
809
- npm run electron:dev # Development mode
810
- npm run electron:build # Current platform
811
- npm run electron:build:win # Windows (.exe)
812
- npm run electron:build:mac # macOS (.dmg)
813
- npm run electron:build:linux # Linux (.AppImage)
814
- ```
815
-
816
- 📖 Full documentation: [`electron/README.md`](electron/README.md)
817
-
818
- ---
819
-
820
- ## 💰 Sơ lược về giá
821
-
822
- | Bậc | Nhà cung cấp | Chi phí | Đặt lại hạn ngạch | Tốt nhất cho |
823
- | --------------- | ------------------- | ---------------------------- | --------------------- | ----------------------- |
824
- | **💳 ĐĂNG KÝ** | Mã Claude (Pro) | $20/tháng | 5h + hàng tuần | Đã đăng ký |
825
- | | Codex (Plus/Pro) | $20-200/tháng | 5h + hàng tuần | Người dùng OpenAI |
826
- | | Song Tử CLI | **MIỄN PHÍ** | 180K/tháng + 1K/ngày | Mọi người! |
827
- | | Phi công phụ GitHub | $10-19/tháng | Hàng tháng | Người dùng GitHub |
828
- | **🔑 KHÓA API** | NVIDIA NIM | **MIỄN PHÍ** (1000 tín dụng) | Một lần | Kiểm tra bậc miễn phí |
829
- | | DeepSeek | Trả tiền cho mỗi lần sử dụng | Không có | Giá/chất lượng tốt nhất |
830
- | | Groq | Cấp miễn phí + trả phí | Tỷ lệ giới hạn | Suy luận cực nhanh |
831
- | | xAI (Grok) | Trả tiền cho mỗi lần sử dụng | Không có | Mô hình Grok |
832
- | | Mistral | Cấp miễn phí + trả phí | Tỷ lệ giới hạn | AI Châu Âu |
833
- | | OpenRouter | Trả tiền cho mỗi lần sử dụng | Không có | Hơn 100 mẫu |
834
- | **💰 RẺ** | GLM-4.7 | 0,6 USD/1 triệu USD | 10 giờ sáng hàng ngày | Dự phòng ngân sách |
835
- | | MiniMax M2.1 | 0,2 USD/1 triệu USD | lăn 5 giờ | Lựa chọn rẻ nhất |
836
- | | Kimi K2 | $9/tháng căn hộ | 10 triệu token/tháng | Chi phí dự đoán |
837
- | **🆓 MIỄN PHÍ** | iFlow | $0 | Không giới hạn | 8 mẫu miễn phí |
838
- | | Qwen | $0 | Không giới hạn | 3 mẫu miễn phí |
839
- | | Kiro | $0 | Không giới hạn | Claude miễn phí |
840
-
841
- **💡 Mẹo chuyên nghiệp:** Bắt đầu với Gemini CLI (180K miễn phí/tháng) + combo iFlow (miễn phí không giới hạn) = chi phí $0!
842
-
843
- ---
844
-
845
- ## 💡 Tính năng chính
846
-
847
- ### 🧠 Định tuyến lõi & thông minh
848
-
849
- | Tính năng | Nó làm gì |
850
- | --------------------------------------------- | ----------------------------------------------------------------------------------------- |
851
- | 🎯 **Dự phòng 4 tầng thông minh** | Tự động định tuyến: Đăng ký → Khóa API → Giá rẻ → Miễn phí |
852
- | 📊 **Theo dõi hạn ngạch theo thời gian thực** | Số lượng mã thông báo trực tiếp + đếm ngược đặt lại cho mỗi nhà cung cấp |
853
- | 🔄 **Dịch định dạng** | OpenAI ↔ Claude ↔ Gemini ↔ Con trỏ ↔ Kiro liền mạch + vệ sinh phản hồi |
854
- | 👥 **Hỗ trợ nhiều tài khoản** | Nhiều tài khoản cho mỗi nhà cung cấp với lựa chọn thông minh |
855
- | 🔄 **Tự động làm mới mã thông báo** | Mã thông báo OAuth tự động làm mới bằng thử lại |
856
- | 🎨 **Combo tùy chỉnh** | 6 chiến lược: điền trước, quay vòng, p2c, ngẫu nhiên, ít sử dụng nhất, tối ưu hóa chi phí |
857
- | 🧩 **Mẫu tùy chỉnh** | Thêm bất kỳ ID mẫu nào vào bất kỳ nhà cung cấp nào |
858
- | 🌐 **Bộ định tuyến ký tự đại diện** | Định tuyến động các mẫu `provider/*` tới bất kỳ nhà cung cấp nào |
859
- | 🧠 **Ngân sách suy nghĩ** | Các chế độ truyền qua, tự động, tùy chỉnh và thích ứng cho các mô hình lý luận |
860
- | 🔀 **Model Aliases** | Auto-forward deprecated model IDs to current replacements (built-in + custom) |
861
- | ⚡ **Background Degradation** | Auto-route background tasks (titles, summaries) to cheaper models |
862
- | 💬 **Tiêm nhắc nhở hệ thống** | Lời nhắc hệ thống toàn cầu được áp dụng cho tất cả các yêu cầu |
863
- | 📄 **API phản hồi** | Hỗ trợ đầy đủ API phản hồi OpenAI (`/v1/responses`) cho Codex |
864
-
865
- ### 🎵 API đa phương thức
866
-
867
- | Tính năng | Nó làm gì |
868
- | ------------------------------------- | ------------------------------------------------------------ |
869
- | 🖼️ **Tạo hình ảnh** | `/v1/images/generations` — 4 nhà cung cấp, hơn 9 mô hình |
870
- | 📐 **Nhúng** | `/v1/embeddings` — 6 nhà cung cấp, hơn 9 mô hình |
871
- | 🎤 **Phiên âm âm thanh** | `/v1/audio/transcriptions` — Tương thích với lời thì thầm |
872
- | 🔊 **Chuyển văn bản thành giọng nói** | `/v1/audio/speech` — Tổng hợp âm thanh từ nhiều nhà cung cấp |
873
- | 🛡️ **Kiểm duyệt** | `/v1/moderations` — Kiểm tra an toàn nội dung |
874
- | 🔀 **Sắp xếp lại** | `/v1/rerank` — Sắp xếp lại mức độ liên quan của tài liệu |
875
-
876
- ### 🛡️ Khả năng phục hồi và bảo mật
877
-
878
- | Tính năng | Nó làm gì |
879
- | -------------------------------------- | -------------------------------------------------------------------------------------- |
880
- | 🔌 **Ngắt mạch** | Tự động mở/đóng theo từng nhà cung cấp với các ngưỡng có thể định cấu hình |
881
- | 🛡️ **Bầy chống sấm sét** | Mutex + giới hạn tốc độ semaphore cho nhà cung cấp khóa API |
882
- | 🧠 **Bộ đệm ngữ nghĩa** | Bộ đệm hai lớp (chữ ký + ngữ nghĩa) giảm chi phí và độ trễ |
883
- | ⚡ **Yêu cầu quyền bình đẳng** | Khoảng thời gian loại trừ 5 giây đối với các yêu cầu trùng lặp |
884
- | 🔒 **Giả mạo vân tay TLS** | Bỏ qua việc phát hiện bot dựa trên TLS thông qua wreq-js |
885
- | 🌐 **Lọc IP** | Danh sách cho phép/danh sách chặn để kiểm soát truy cập API |
886
- | 📊 **Giới hạn tỷ lệ có thể chỉnh sửa** | RPM có thể định cấu hình, khoảng cách tối thiểu và đồng thời tối đa ở cấp hệ thống |
887
- | 💾 **Rate Limit Persistence** | Learned limits survive restarts via SQLite with 60s debounce + 24h staleness |
888
- | 🔄 **Token Refresh Resilience** | Per-provider circuit breaker (5 fails→30min) + 30s timeout per attempt |
889
- | 🛡 **Bảo vệ điểm cuối API** | Kiểm soát xác thực + chặn nhà cung cấp cho điểm cuối `/models` |
890
- | 🔒 **Khả năng hiển thị proxy** | Huy hiệu được mã hóa màu: 🟢 toàn cầu, 🟡 nhà cung cấp, 🔵 mỗi kết nối với màn hình IP |
891
- | 🌐 **Cấu hình proxy 3 cấp** | Định cấu hình proxy ở cấp độ toàn cầu, theo nhà cung cấp hoặc theo từng kết nối |
892
-
893
- ### 📊 Khả năng quan sát & phân tích
894
-
895
- | Tính năng | Nó làm gì |
896
- | ---------------------------------------- | --------------------------------------------------------------------------------------------- |
897
- | 📝 **Yêu cầu ghi nhật ký** | Chế độ gỡ lỗi với nhật ký yêu cầu/phản hồi đầy đủ |
898
- | 💾 **Nhật ký proxy SQLite** | Nhật ký proxy liên tục vẫn tồn tại khi khởi động lại máy chủ |
899
- | 📊 **Bảng thông tin phân tích** | Recharts-Powered: thẻ thống kê, biểu đồ sử dụng mô hình, bảng nhà cung cấp |
900
- | 📈 **Theo dõi tiến độ** | Chọn tham gia các sự kiện tiến trình SSE để phát trực tuyến |
901
- | 🧪 **Đánh giá LLM** | Thử nghiệm set vàng với 4 chiến thuật trận đấu |
902
- | 🔍 **Yêu cầu đo từ xa** | tổng hợp độ trễ p50/p95/p99 + theo dõi X-Request-Id |
903
- | 📋 **Bảng điều khiển nhật ký** | Trang 4 tab hợp nhất: Nhật ký yêu cầu, Nhật ký proxy, Nhật ký kiểm tra, Bảng điều khiển |
904
- | 🖥️ **Trình xem nhật ký bảng điều khiển** | Trình xem kiểu thiết bị đầu cuối thời gian thực với bộ lọc cấp độ, tìm kiếm, tự động cuộn |
905
- | 📑 **Ghi nhật ký dựa trên tệp** | Trình chặn chặn của bảng điều khiển ghi lại tất cả đầu ra vào tệp nhật ký JSON bằng cách xoay |
906
- | 🏥 **Bảng thông tin sức khỏe** | Thời gian hoạt động của hệ thống, trạng thái ngắt mạch, khóa, số liệu thống kê bộ đệm |
907
- | 💰 **Theo dõi chi phí** | Quản lý ngân sách + cấu hình giá theo từng mô hình |
908
-
909
- ### ☁️ Triển khai & đồng bộ
910
-
911
- | Tính năng | Nó làm gì |
912
- | ---------------------------------- | --------------------------------------------------------------------------------------- |
913
- | 💾 **Đồng bộ đám mây** | Đồng bộ hóa cấu hình trên các thiết bị thông qua Cloudflare Workers |
914
- | 🌐 **Triển khai mọi nơi** | Localhost, VPS, Docker, Công nhân Cloudflare |
915
- | 🔑 **Quản lý khóa API** | Tạo, xoay vòng và phạm vi khóa API cho mỗi nhà cung cấp |
916
- | 🧙 **Trình hướng dẫn giới thiệu** | Thiết lập có hướng dẫn 4 bước cho người dùng lần đầu |
917
- | 🔧 **Bảng điều khiển công cụ CLI** | Định cấu hình bằng một cú nhấp chuột Claude, Codex, Cline, OpenClaw, Kilo, AntiGravity |
918
- | 🔄 **Sao lưu DB** | Tự động sao lưu, khôi phục, xuất và nhập cho tất cả cài đặt |
919
- | 🌐 **Quốc tế hóa** | I18n đầy đủ với hỗ trợ next-intl — Tiếng Anh + Tiếng Bồ Đào Nha (Brazil) |
920
- | 🌍 **Bộ chọn ngôn ngữ** | Biểu tượng quả địa cầu trong tiêu đề để chuyển đổi ngôn ngữ theo thời gian thực (🇺🇸/🇧🇷) |
921
- | 📂 **Thư mục dữ liệu tùy chỉnh** | `DATA_DIR` env var để ghi đè đường dẫn lưu trữ `~/.omniroute` mặc định |
922
-
923
- <details>
924
- <summary><b>📖 Chi tiết tính năng</b></summary>
925
-
926
- ### 🎯 Dự phòng 4 tầng thông minh
927
-
928
- Tạo combo với dự phòng tự động:
929
-
930
- ```
931
- Combo: "my-coding-stack"
932
- 1. cc/claude-opus-4-6 (your subscription)
933
- 2. nvidia/llama-3.3-70b (free NVIDIA API)
934
- 3. glm/glm-4.7 (cheap backup, $0.6/1M)
935
- 4. if/kimi-k2-thinking (free fallback)
936
-
937
- → Auto switches when quota runs out or errors occur
938
- ```
939
-
940
- ### 📊 Theo dõi hạn ngạch theo thời gian thực
941
-
942
- - Tiêu thụ mã thông báo trên mỗi nhà cung cấp
943
- - Đặt lại đếm ngược (5 giờ, hàng ngày, hàng tuần)
944
- - Ước tính chi phí cho các bậc trả phí
945
- - Báo cáo chi tiêu hàng tháng
946
-
947
- ### 🔄 Dịch định dạng
948
-
949
- Dịch liền mạch giữa các định dạng:
950
-
951
- - **OpenAI** ↔ **Claude** ↔ **Gemini** ↔ **Phản hồi của OpenAI**
952
- - Công cụ CLI của bạn gửi định dạng OpenAI → OmniRoute dịch → Nhà cung cấp nhận định dạng gốc
953
- - Hoạt động với mọi công cụ hỗ trợ điểm cuối OpenAI tùy chỉnh
954
- - **Sạch hóa phản hồi** — Loại bỏ các trường không chuẩn để tương thích nghiêm ngặt với OpenAI SDK
955
- - **Chuẩn hóa vai trò** — `developer` → `system` đối với non-OpenAI; `system` → `user` dành cho kiểu máy GLM/ERNIE
956
- - **Trích xuất thẻ suy nghĩ** — `<think>` khối → `reasoning_content` cho các mô hình tư duy
957
- - **Đầu ra có cấu trúc** — `json_schema` → `responseMimeType`/`responseSchema` của Gemini
958
-
959
- ### 👥 Hỗ trợ nhiều tài khoản
960
-
961
- - Thêm nhiều tài khoản cho mỗi nhà cung cấp
962
- - Tự động định tuyến vòng tròn hoặc dựa trên mức độ ưu tiên
963
- - Dự phòng tài khoản tiếp theo khi đạt hạn ngạch
964
-
965
- ### 🔄 Tự động làm mới mã thông báo
966
-
967
- - Mã thông báo OAuth tự động làm mới trước khi hết hạn
968
- - Không cần xác thực lại thủ công
969
- - Trải nghiệm liền mạch trên tất cả các nhà cung cấp
970
-
971
- ### 🎨 Combo tùy chỉnh
972
-
973
- - Tạo kết hợp mô hình không giới hạn
974
- - 6 chiến lược: điền trước, quay vòng, sức mạnh của hai lựa chọn, ngẫu nhiên, ít sử dụng nhất, tối ưu hóa chi phí
975
- - Chia sẻ combo trên các thiết bị với Cloud Sync
976
-
977
- ### 🏥 Bảng thông tin sức khỏe
978
-
979
- - Trạng thái hệ thống (thời gian hoạt động, phiên bản, mức sử dụng bộ nhớ)
980
- - Trạng thái ngắt mạch của mỗi nhà cung cấp (Đóng/Mở/Nửa mở)
981
- - Trạng thái giới hạn tỷ lệ và khóa hoạt động
982
- - Thống kê bộ đệm chữ ký
983
- - Đo từ xa độ trễ (p50/p95/p99) + bộ đệm nhắc nhở
984
- - Đặt lại tình trạng sức khỏe chỉ bằng một cú nhấp chuột
985
-
986
- ### 🔧 Sân chơi dịch thuật
987
-
988
- OmniRoute bao gồm Sân chơi dịch thuật tích hợp mạnh mẽ với **4 chế độ** để gỡ lỗi, kiểm tra và giám sát các bản dịch API:
989
-
990
- | Chế độ | Mô tả |
991
- | -------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
992
- | **💻Sân chơi** | Dịch định dạng trực tiếp - dán bất kỳ nội dung yêu cầu API nào và xem ngay cách OmniRoute dịch nó giữa các định dạng nhà cung cấp (OpenAI ↔ Claude ↔ Gemini ↔ API phản hồi). Bao gồm các mẫu ví dụ và tự động phát hiện định dạng. |
993
- | **💬 Trình kiểm tra trò chuyện** | Gửi các yêu cầu trò chuyện thực tế thông qua OmniRoute và xem toàn bộ hành trình: thông tin đầu vào của bạn, yêu cầu được dịch, phản hồi của nhà cung cấp và phản hồi được dịch lại. Vô giá để xác nhận định tuyến kết hợp. |
994
- | **🧪 Ghế thử nghiệm** | Chế độ thử nghiệm hàng loạt - xác định nhiều trường hợp thử nghiệm với đầu vào và đầu ra dự kiến ​​khác nhau, chạy tất cả chúng cùng một lúc và so sánh kết quả giữa các nhà cung cấp và mô hình. |
995
- | **📱 Giám sát trực tiếp** | Giám sát yêu cầu theo thời gian thực — xem các yêu cầu đến khi chúng truyền qua OmniRoute, xem các bản dịch định dạng đang diễn ra trực tiếp và xác định các vấn đề ngay lập tức. |
996
-
997
- **Truy cập:** Bảng điều khiển → Trình dịch (thanh bên)
998
-
999
- ### 💾 Đồng bộ đám mây
1000
-
1001
- - Đồng bộ hóa nhà cung cấp, combo và cài đặt trên các thiết bị
1002
- - Đồng bộ nền tự động
1003
- - Lưu trữ được mã hóa an toàn
1004
-
1005
- </details>
1006
-
1007
- ## 🧪 Đánh giá (Evals)
1008
-
1009
- OmniRoute bao gồm khung đánh giá tích hợp để kiểm tra chất lượng phản hồi LLM dựa trên bộ vàng. Truy cập thông qua **Analytics → Đánh giá** trong bảng điều khiển.
1010
-
1011
- ### Bộ vàng tích hợp
1012
-
1013
- "Bộ vàng OmniRoute" được tải sẵn chứa 10 trường hợp thử nghiệm bao gồm:
1014
-
1015
- - Lời chào, toán, địa lý, tạo mã
1016
- - Tuân thủ định dạng JSON, dịch thuật, đánh dấu
1017
- - Từ chối an toàn (nội dung có hại), đếm, logic boolean
1018
-
1019
- ### Chiến lược đánh giá
1020
-
1021
- | Chiến lược | Mô tả | Ví dụ |
1022
- | ---------- | --------------------------------------------------------------- | -------------------------------- |
1023
- | `exact` | Đầu ra phải khớp chính xác | `"4"` |
1024
- | `contains` | Đầu ra phải chứa chuỗi con (không phân biệt chữ hoa chữ thường) | `"Paris"` |
1025
- | `regex` | Đầu ra phải khớp với mẫu biểu thức chính quy | `"1.*2.*3"` |
1026
- | `custom` | Hàm JS tùy chỉnh trả về true/false | `(output) => output.length > 10` |
1027
-
1028
- ---
1029
-
1030
- ## 📖 Hướng dẫn thiết lập
1031
-
1032
- <details>
1033
- <summary><b>💳 Nhà cung cấp đăng ký</b></summary>
1034
-
1035
- ### Mã Claude (Pro/Max)
1036
-
1037
- ```bash
1038
- Dashboard → Providers → Connect Claude Code
1039
- → OAuth login → Auto token refresh
1040
- → 5-hour + weekly quota tracking
1041
-
1042
- Models:
1043
- cc/claude-opus-4-6
1044
- cc/claude-sonnet-4-5-20250929
1045
- cc/claude-haiku-4-5-20251001
1046
- ```
1047
-
1048
- **Mẹo chuyên nghiệp:** Sử dụng Opus cho các tác vụ phức tạp, Sonnet cho tốc độ. OmniRoute theo dõi hạn ngạch cho mỗi mô hình!
1049
-
1050
- ### OpenAI Codex (Plus/Pro)
1051
-
1052
- ```bash
1053
- Dashboard → Providers → Connect Codex
1054
- → OAuth login (port 1455)
1055
- → 5-hour + weekly reset
1056
-
1057
- Models:
1058
- cx/gpt-5.2-codex
1059
- cx/gpt-5.1-codex-max
1060
- ```
1061
-
1062
- ### Gemini CLI (MIỄN PHÍ 180K/tháng!)
1063
-
1064
- ```bash
1065
- Dashboard → Providers → Connect Gemini CLI
1066
- → Google OAuth
1067
- → 180K completions/month + 1K/day
1068
-
1069
- Models:
1070
- gc/gemini-3-flash-preview
1071
- gc/gemini-2.5-pro
1072
- ```
1073
-
1074
- **Giá trị tốt nhất:** Cấp miễn phí rất lớn! Sử dụng điều này trước các bậc trả phí.
1075
-
1076
- ### Phi công phụ GitHub
1077
-
1078
- ```bash
1079
- Dashboard → Providers → Connect GitHub
1080
- → OAuth via GitHub
1081
- → Monthly reset (1st of month)
1082
-
1083
- Models:
1084
- gh/gpt-5
1085
- gh/claude-4.5-sonnet
1086
- gh/gemini-3-pro
1087
- ```
1088
-
1089
- </details>
1090
-
1091
- <details>
1092
- <summary><b>🔑 Nhà cung cấp khóa API</b></summary>
1093
-
1094
- ### NVIDIA NIM (1000 tín dụng MIỄN PHÍ!)
1095
-
1096
- 1. Đăng ký: [build.nvidia.com](https://build.nvidia.com)
1097
- 2. Nhận khóa API miễn phí (bao gồm 1000 tín dụng suy luận)
1098
- 3. Bảng điều khiển → Thêm nhà cung cấp → NVIDIA NIM:
1099
- - Khóa API: `nvapi-your-key`
1100
-
1101
- **Mẫu máy:** `nvidia/llama-3.3-70b-instruct`, `nvidia/mistral-7b-instruct` và hơn 50 mẫu khác
1102
-
1103
- **Mẹo chuyên nghiệp:** API tương thích với OpenAI — hoạt động trơn tru với tính năng dịch định dạng của OmniRoute!
1104
-
1105
- ### Tìm kiếm sâu
1106
-
1107
- 1. Đăng ký: [platform.deepseek.com](https://platform.deepseek.com)
1108
- 2. Nhận khóa API
1109
- 3. Trang tổng quan → Thêm nhà cung cấp → DeepSeek
1110
-
1111
- **Mẫu xe:** `deepseek/deepseek-chat`, `deepseek/deepseek-coder`
1112
-
1113
- ### Groq (Có sẵn bậc miễn phí!)
1114
-
1115
- 1. Đăng ký: [console.groq.com](https://console.groq.com)
1116
- 2. Nhận khóa API (bao gồm bậc miễn phí)
1117
- 3. Bảng điều khiển → Thêm nhà cung cấp → Groq
1118
-
1119
- **Mẫu xe:** `groq/llama-3.3-70b`, `groq/mixtral-8x7b`
1120
-
1121
- **Mẹo chuyên nghiệp:** Suy luận cực nhanh — tốt nhất cho mã hóa thời gian thực!
1122
-
1123
- ### OpenRouter (Hơn 100 mẫu)
1124
-
1125
- 1. Sign up: [openrouter.ai](https://openrouter.ai)
1126
- 2. Nhận khóa API
1127
- 3. Bảng điều khiển → Thêm nhà cung cấp → OpenRouter
1128
-
1129
- **Mô hình:** Truy cập hơn 100 mô hình từ tất cả các nhà cung cấp chính thông qua một khóa API duy nhất.
1130
-
1131
- </details>
1132
-
1133
- <details>
1134
- <summary><b>💰 Nhà cung cấp giá rẻ (Dự phòng)</b></summary>
1135
-
1136
- ### GLM-4.7 (Đặt lại hàng ngày, 0,6 USD/1 triệu)
1137
-
1138
- 1. Đăng ký: [Zhipu AI](https://open.bigmodel.cn/)
1139
- 2. Nhận khóa API từ Gói mã hóa
1140
- 3. Bảng điều khiển → Thêm khóa API:
1141
- - Nhà cung cấp: `glm`
1142
- - Khóa API: `your-key`
1143
-
1144
- **Sử dụng:** `glm/glm-4.7`
1145
-
1146
- **Mẹo chuyên nghiệp:** Gói mã hóa cung cấp hạn ngạch 3× với chi phí 1/7! Đặt lại vào 10:00 sáng hàng ngày.
1147
-
1148
- ### MiniMax M2.1 (đặt lại 5 giờ, 0,20 USD/1M)
1149
-
1150
- 1. Đăng ký: [MiniMax](https://www.minimax.io/)
1151
- 2. Nhận khóa API
1152
- 3. Bảng điều khiển → Thêm khóa API
1153
-
1154
- **Sử dụng:** `minimax/MiniMax-M2.1`
1155
-
1156
- **Mẹo chuyên nghiệp:** Tùy chọn rẻ nhất cho ngữ cảnh dài (1 triệu mã thông báo)!
1157
-
1158
- ### Kimi K2 ($9/tháng cố định)
1159
-
1160
- 1. Đăng ký: [Moonshot AI](https://platform.moonshot.ai/)
1161
- 2. Nhận khóa API
1162
- 3. Bảng điều khiển → Thêm khóa API
1163
-
1164
- **Sử dụng:** `kimi/kimi-latest`
1165
-
1166
- **Mẹo chuyên nghiệp:** Đã sửa lỗi 9 USD/tháng cho 10 triệu mã thông báo = 0,90 USD/1 triệu chi phí hiệu quả!
1167
-
1168
- </details>
1169
-
1170
- <details>
1171
- <summary><b>🆓 Nhà cung cấp MIỄN PHÍ (Dự phòng khẩn cấp)</b></summary>
1172
-
1173
- ### iFlow (8 mẫu MIỄN PHÍ)
1174
-
1175
- ```bash
1176
- Dashboard → Connect iFlow
1177
- → iFlow OAuth login
1178
- → Unlimited usage
1179
-
1180
- Models:
1181
- if/kimi-k2-thinking
1182
- if/qwen3-coder-plus
1183
- if/glm-4.7
1184
- if/minimax-m2
1185
- if/deepseek-r1
1186
- ```
1187
-
1188
- ### Qwen (3 mẫu MIỄN PHÍ)
1189
-
1190
- ```bash
1191
- Dashboard → Connect Qwen
1192
- → Device code authorization
1193
- → Unlimited usage
1194
-
1195
- Models:
1196
- qw/qwen3-coder-plus
1197
- qw/qwen3-coder-flash
1198
- ```
1199
-
1200
- ### Kiro (Claude MIỄN PHÍ)
1201
-
1202
- ```bash
1203
- Dashboard → Connect Kiro
1204
- → AWS Builder ID or Google/GitHub
1205
- → Unlimited usage
1206
-
1207
- Models:
1208
- kr/claude-sonnet-4.5
1209
- kr/claude-haiku-4.5
1210
- ```
1211
-
1212
- </details>
1213
-
1214
- <details>
1215
- <summary><b>🎨 Tạo Combo</b></summary>
1216
-
1217
- ### Ví dụ 1: Tối đa hóa đăng ký → Sao lưu giá rẻ
1218
-
1219
- ```
1220
- Dashboard → Combos → Create New
1221
-
1222
- Name: premium-coding
1223
- Models:
1224
- 1. cc/claude-opus-4-6 (Subscription primary)
1225
- 2. glm/glm-4.7 (Cheap backup, $0.6/1M)
1226
- 3. minimax/MiniMax-M2.1 (Cheapest fallback, $0.20/1M)
1227
-
1228
- Use in CLI: premium-coding
1229
- ```
1230
-
1231
- ### Example 2: Free-Only (Zero Cost)
1232
-
1233
- ```
1234
- Name: free-combo
1235
- Models:
1236
- 1. gc/gemini-3-flash-preview (180K free/month)
1237
- 2. if/kimi-k2-thinking (unlimited)
1238
- 3. qw/qwen3-coder-plus (unlimited)
1239
-
1240
- Cost: $0 forever!
1241
- ```
1242
-
1243
- </details>
1244
-
1245
- <details>
1246
- <summary><b>🔧 Tích hợp CLI</b></summary>
1247
-
1248
- ### IDE con trỏ
1249
-
1250
- ```
1251
- Settings → Models → Advanced:
1252
- OpenAI API Base URL: http://localhost:20128/v1
1253
- OpenAI API Key: [from OmniRoute dashboard]
1254
- Model: cc/claude-opus-4-6
1255
- ```
1256
-
1257
- ### Mã Claude
1258
-
1259
- Sử dụng trang **Công cụ CLI** trong trang tổng quan để định cấu hình bằng một cú nhấp chuột hoặc chỉnh sửa `~/.claude/settings.json` theo cách thủ công.
1260
-
1261
- ### Codex CLI
1262
-
1263
- ```bash
1264
- export OPENAI_BASE_URL="http://localhost:20128"
1265
- export OPENAI_API_KEY="your-omniroute-api-key"
1266
-
1267
- codex "your prompt"
1268
- ```
1269
-
1270
- ### OpenClaw
1271
-
1272
- **Tùy chọn 1 — Trang tổng quan (được khuyến nghị):**
1273
-
1274
- ```
1275
- Dashboard → CLI Tools → OpenClaw → Select Model → Apply
1276
- ```
1277
-
1278
- **Tùy chọn 2 — Thủ công:** Chỉnh sửa `~/.openclaw/openclaw.json`:
1279
-
1280
- ```json
1281
- {
1282
- "models": {
1283
- "providers": {
1284
- "omniroute": {
1285
- "baseUrl": "http://127.0.0.1:20128/v1",
1286
- "apiKey": "sk_omniroute",
1287
- "api": "openai-completions"
1288
- }
1289
- }
1290
- }
1291
- }
1292
- ```
1293
-
1294
- > **Lưu ý:** OpenClaw chỉ hoạt động với OmniRoute cục bộ. Sử dụng `127.0.0.1` thay vì `localhost` để tránh các vấn đề về độ phân giải IPv6.
1295
-
1296
- ### Cline / Tiếp tục / RooCode
1297
-
1298
- ```
1299
- Settings → API Configuration:
1300
- Provider: OpenAI Compatible
1301
- Base URL: http://localhost:20128/v1
1302
- API Key: [from OmniRoute dashboard]
1303
- Model: if/kimi-k2-thinking
1304
- ```
1305
-
1306
- </details>
1307
-
1308
- ---
1309
-
1310
- ## 🐛 Khắc phục sự cố
1311
-
1312
- <details>
1313
- <summary><b>Nhấp để mở rộng hướng dẫn khắc phục sự cố</b></summary>
1314
-
1315
- **"Mô hình ngôn ngữ không cung cấp tin nhắn"**
1316
-
1317
- - Đã hết hạn ngạch nhà cung cấp → Kiểm tra trình theo dõi hạn ngạch bảng điều khiển
1318
- - Giải pháp: Sử dụng combo dự phòng hoặc chuyển sang tầng rẻ hơn
1319
-
1320
- **Giới hạn tỷ lệ**
1321
-
1322
- - Hết hạn ngạch đăng ký → Dự phòng sang GLM/MiniMax
1323
- - Thêm tổ hợp: `cc/claude-opus-4-6 → glm/glm-4.7 → if/kimi-k2-thinking`
1324
-
1325
- **Mã thông báo OAuth đã hết hạn**
1326
-
1327
- - Tự động làm mới bởi OmniRoute
1328
- - Nếu sự cố vẫn tiếp diễn: Bảng điều khiển → Nhà cung cấp → Kết nối lại
1329
-
1330
- **Chi phí cao**
1331
-
1332
- - Kiểm tra số liệu thống kê sử dụng trong Bảng điều khiển → Chi phí
1333
- - Chuyển mô hình chính sang GLM/MiniMax
1334
- - Sử dụng bậc miễn phí (Gemini CLI, iFlow) cho các tác vụ không quan trọng
1335
-
1336
- **Bảng điều khiển mở sai cổng**
1337
-
1338
- - Đặt `PORT=20128` và `NEXT_PUBLIC_BASE_URL=http://localhost:20128`
1339
-
1340
- **Lỗi đồng bộ hóa đám mây**
1341
-
1342
- - Xác minh `BASE_URL` trỏ tới phiên bản đang chạy của bạn
1343
- - Xác minh `CLOUD_URL` điểm tới điểm cuối đám mây dự kiến của bạn
1344
- - Giữ các giá trị `NEXT_PUBLIC_*` được căn chỉnh với các giá trị phía máy chủ
1345
-
1346
- **Đăng nhập lần đầu không hoạt động**
1347
-
1348
- - Kiểm tra `INITIAL_PASSWORD` trong `.env`
1349
- - Nếu không được đặt, mật khẩu dự phòng là `123456`
1350
-
1351
- **Không có nhật ký yêu cầu**
1352
-
1353
- - Đặt `ENABLE_REQUEST_LOGS=true` trong `.env`
1354
-
1355
- **Kiểm tra kết nối cho thấy "Không hợp lệ" đối với các nhà cung cấp tương thích với OpenAI**
1356
-
1357
- - Nhiều nhà cung cấp không hiển thị điểm cuối `/models`
1358
- - OmniRoute v1.0.6+ bao gồm xác thực dự phòng thông qua hoàn thành trò chuyện
1359
- - Đảm bảo URL cơ sở bao gồm hậu tố `/v1`
1360
-
1361
- ### 🔐 OAuth
1362
-
1363
- <a name="oauth-em-servidor-remoto"></a>
1364
-
1365
- > **⚠️ QUAN TRỌNG đối với người sử dụng OmniRoute trên VPS/Docker/servidor remoto**
1366
-
1367
- ### OAuth
1368
-
1369
- Os đã được chứng minh **AntiGravity** e **Gemini CLI** sử dụng **Google OAuth 2.0** để xác thực. O Google exige que a `redirect_uri` usada no fluxo OAuth seja **exatamente** một trong các URI trước khi lập danh sách trên Google Cloud Console để ứng dụng.
1370
-
1371
- Vì các thông tin xác thực OAuth không có OmniRoute estão cadastradas **apenas para `localhost`**. Bạn có thể truy cập OmniRoute bằng cách điều khiển lại máy chủ (ví dụ: `https://omniroute.meuservidor.com`), hoặc Google sẽ cung cấp thông tin xác thực với:
1372
-
1373
- ```
1374
- Error 400: redirect_uri_mismatch
1375
- ```
1376
-
1377
- ### Giải pháp: Định cấu hình thông tin đăng nhập OAuth
1378
-
1379
- Bạn nên chú ý **OAuth 2.0 Client ID** không có Google Cloud Console vì URI làm dịch vụ của bạn.
1380
-
1381
- #### Vượt qua một lần nữa
1382
-
1383
- **1. Truy cập vào Google Cloud Console**
1384
-
1385
- Abra: [https://console.cloud.google.com/apis/credentials](https://console.cloud.google.com/apis/credentials)
1386
-
1387
- **2. Hãy yêu cầu ID khách hàng OAuth 2.0 mới**
1388
-
1389
- - Nhấn vào **"+ Tạo thông tin xác thực"** → **"ID khách hàng OAuth"**
1390
- - Mẹo ứng dụng: **"Ứng dụng web"**
1391
- - Tên: escolha qualquer nome (ví dụ: `OmniRoute Remote`)
1392
-
1393
- **3. Adicione dưới dạng URI chuyển hướng được ủy quyền**
1394
-
1395
- Không có quảng cáo **"URI chuyển hướng được ủy quyền"**, khuyến cáo:
1396
-
1397
- ```
1398
- https://seu-servidor.com/callback
1399
- ```
1400
-
1401
- > Thay thế `seu-servidor.com` từ địa chỉ IP hoặc dịch vụ IP của bạn (bao gồm một cổng cần thiết, ví dụ: `http://45.33.32.156:20128/callback`).
1402
-
1403
- **4. Lưu và sao chép dưới dạng uy tín**
1404
-
1405
- Sau đó, Google đã đăng trên **ID khách hàng** và **Bí mật khách hàng**.
1406
-
1407
- **5. Định cấu hình theo các biến thể của môi trường**
1408
-
1409
- Không có `.env` (hoặc có nhiều biến thể môi trường xung quanh Docker):
1410
-
1411
- ```bash
1412
- # Para Antigravity:
1413
- ANTIGRAVITY_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1414
- ANTIGRAVITY_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1415
-
1416
- # Para Gemini CLI:
1417
- GEMINI_OAUTH_CLIENT_ID=seu-client-id.apps.googleusercontent.com
1418
- GEMINI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1419
- GEMINI_CLI_OAUTH_CLIENT_SECRET=GOCSPX-seu-secret
1420
- ```
1421
-
1422
- **6. Reinicie hoặc OmniRoute**
1423
-
1424
- ```bash
1425
- # Se usando npm:
1426
- npm run dev
1427
-
1428
- # Se usando Docker:
1429
- docker restart omniroute
1430
- ```
1431
-
1432
- **7. Lều kết nối mới lạ**
1433
-
1434
- Bảng điều khiển → Nhà cung cấp → Anti Gravity (hoặc Gemini CLI) → OAuth
1435
-
1436
- Google đã chuyển hướng điều chỉnh cho `https://seu-servidor.com/callback` và một chức năng xác thực.
1437
-
1438
- ---
1439
-
1440
- ### Thời gian giải quyết (sem configurar credenciais próprias)
1441
-
1442
- Nếu không có câu hỏi nào về thông tin xác thực trước đây, bạn có thể sử dụng thông tin **hướng dẫn sử dụng URL**:
1443
-
1444
- 1. O OmniRoute tìm kiếm URL tự động của Google
1445
- 2. Sau khi bạn tự động đăng ký, hoặc chuyển hướng Google sang `localhost` (bạn không thể điều chỉnh lại dịch vụ)
1446
- 3. **Sao chép một URL hoàn chỉnh** da cuối cùng của trình duyệt của bạn (mesmo que a página not carregue)
1447
- 4. URL này không có khả năng xuất hiện không có phương thức kết nối nào với OmniRoute
1448
- 5. Kết nối với nhau **"Kết nối"**
1449
-
1450
- > Chức năng giải pháp này có thể giúp tự động cấp quyền cho URL và có thể chuyển hướng độc lập đến mục tiêu hoặc không.
1451
-
1452
- </details>
1453
-
1454
- ---
1455
-
1456
- ## 🛠️
1457
-
1458
- - **Thời gian chạy**: Node.js 18–22 LTS (⚠️ Node.js 24+ **không được hỗ trợ** — `better-sqlite3` các tệp nhị phân gốc không tương thích)
1459
- - **Ngôn ngữ**: TypeScript 5.9 — **100% TypeScript** trên `src/` và `open-sse/` (v1.0.6)
1460
- - **Khung**: Next.js 16 + React 19 + Tailwind CSS 4
1461
- - **Cơ sở dữ liệu**: LowDB (JSON) + SQLite (trạng thái miền + nhật ký proxy)
1462
- - **Truyền phát**: Sự kiện do máy chủ gửi (SSE)
1463
- - **Xác thực**: OAuth 2.0 (PKCE) + JWT + Khóa API
1464
- - **Thử nghiệm**: Trình chạy thử nghiệm Node.js (hơn 368 bài kiểm tra đơn vị)
1465
- - **CI/CD**: GitHub Actions (tự động xuất bản npm + Docker Hub khi phát hành)
1466
- - **Trang web**: [omniroute.online](https://omniroute.online)
1467
- - **Gói**: [npmjs.com/package/omniroute](https://www.npmjs.com/package/omniroute)
1468
- - **Docker**: [hub.docker.com/r/diegosouzapw/omniroute](https://hub.docker.com/r/diegosouzapw/omniroute)
1469
- - **Khả năng phục hồi**: Ngắt mạch, lùi theo cấp số nhân, chống sét bầy đàn, giả mạo TLS
1470
-
1471
- ---
1472
-
1473
- ## 📖 Tài liệu
1474
-
1475
- | Tài liệu | Mô tả |
1476
- | -------------------------------------------- | --------------------------------------------------------- |
1477
- | [User Guide](docs/USER_GUIDE.md) | Nhà cung cấp, combo, tích hợp CLI, triển khai |
1478
- | [API Reference](docs/API_REFERENCE.md) | Tất cả các điểm cuối có ví dụ |
1479
- | [Troubleshooting](docs/TROUBLESHOOTING.md) | Các vấn đề thường gặp và giải pháp |
1480
- | [Architecture](docs/ARCHITECTURE.md) | Kiến trúc hệ thống và nội bộ |
1481
- | [Contributing](CONTRIBUTING.md) | Thiết lập và hướng dẫn phát triển |
1482
- | [OpenAPI Spec](docs/openapi.yaml) | Đặc tả OpenAPI 3.0 |
1483
- | [Security Policy](SECURITY.md) | Báo cáo lỗ hổng bảo mật và thực hành bảo mật |
1484
- | [VM Deployment](docs/VM_DEPLOYMENT_GUIDE.md) | Hướng dẫn đầy đủ: Thiết lập VM + nginx + Cloudflare |
1485
- | [Features Gallery](docs/FEATURES.md) | Tham quan bảng điều khiển trực quan với ảnh chụp màn hình |
1486
-
1487
- ### 📸 Xem trước bảng điều khiển
1488
-
1489
- <details>
1490
- <summary><b>Nhấp để xem ảnh chụp màn hình trang tổng quan</b></summary>
1491
-
1492
- | Trang | Ảnh chụp màn hình |
1493
- | ------------------- | ------------------------------------------------- |
1494
- | **Nhà cung cấp** | ![Providers](docs/screenshots/01-providers.png) |
1495
- | **Combo** | ![Combos](docs/screenshots/02-combos.png) |
1496
- | **Phân tích** | ![Analytics](docs/screenshots/03-analytics.png) |
1497
- | **Sức khỏe** | ![Health](docs/screenshots/04-health.png) |
1498
- | **Người dịch** | ![Translator](docs/screenshots/05-translator.png) |
1499
- | **Cài đặt** | ![Settings](docs/screenshots/06-settings.png) |
1500
- | **Công cụ CLI** | ![CLI Tools](docs/screenshots/07-cli-tools.png) |
1501
- | **Nhật ký sử dụng** | ![Usage](docs/screenshots/08-usage.png) |
1502
- | **Điểm cuối** | ![Endpoint](docs/screenshots/09-endpoint.png) |
1503
-
1504
- </details>
1505
-
1506
- ---
1507
-
1508
- ## 🗺️
1509
-
1510
- OmniRoute có **210+ tính năng được lên kế hoạch** qua nhiều giai đoạn phát triển. Dưới đây là các lĩnh vực chính:
1511
-
1512
- | Danh mục | Tính năng dự kiến ​​ | Điểm nổi bật |
1513
- | ------------------------------ | -------------------- | -------------------------------------------------------------------------------------------------------------- |
1514
- | 🧠 **Định tuyến & thông minh** | 25+ | Định tuyến có độ trễ thấp nhất, định tuyến dựa trên thẻ, ưu tiên hạn ngạch, chọn tài khoản P2C |
1515
- | 🔒 **Bảo mật & Tuân thủ** | 20+ | Tăng cường SSRF, che giấu thông tin xác thực, giới hạn tốc độ cho mỗi điểm cuối, phạm vi khóa quản lý |
1516
- | 📊 **Khả năng quan sát** | 15+ | Tích hợp OpenTelemetry, giám sát hạn ngạch thời gian thực, theo dõi chi phí trên mỗi mô hình |
1517
- | 🔄 **Tích hợp nhà cung cấp** | 20+ | Đăng ký mô hình động, thời gian hồi chiêu của nhà cung cấp, Codex nhiều tài khoản, phân tích hạn ngạch Copilot |
1518
- | ⚡ **Hiệu suất** | 15+ | Lớp bộ đệm kép, bộ đệm nhắc nhở, bộ đệm phản hồi, lưu giữ luồng, API hàng loạt |
1519
- | 🌐 **Hệ sinh thái** | 10+ | API WebSocket, cấu hình tải lại nóng, kho cấu hình phân tán, chế độ thương mại |
1520
-
1521
- ### 🔜 Sắp ra mắt
1522
-
1523
- - 🔗 **Tích hợp OpenCode** — Hỗ trợ của nhà cung cấp gốc cho IDE mã hóa OpenCode AI
1524
- - 🔗 **Tích hợp TRAE** — Hỗ trợ đầy đủ cho khung phát triển TRAE AI
1525
- - 📦 **Batch API** — Xử lý hàng loạt không đồng bộ cho các yêu cầu hàng loạt
1526
- - 🎯 **Định tuyến dựa trên thẻ** — Định tuyến các yêu cầu dựa trên thẻ và siêu dữ liệu tùy chỉnh
1527
- - 💰 **Chiến lược chi phí thấp nhất** — Tự động chọn nhà cung cấp có sẵn rẻ nhất
1528
-
1529
- > 📝 Thông số kỹ thuật đầy đủ tính năng có sẵn trong [link](docs/new-features/) (217 thông số kỹ thuật chi tiết)
1530
-
1531
- ---
1532
-
1533
- ## 👥 Người đóng góp
1534
-
1535
- [![Contributors](https://contrib.rocks/image?repo=diegosouzapw/OmniRoute&max=100&columns=20&anon=1)](https://github.com/diegosouzapw/OmniRoute/graphs/contributors)
1536
-
1537
- ### Cách đóng góp
1538
-
1539
- 1. Phân nhánh kho lưu trữ
1540
- 2. Tạo nhánh tính năng của bạn (`git checkout -b feature/amazing-feature`)
1541
- 3. Cam kết thay đổi của bạn (`git commit -m 'Add amazing feature'`)
1542
- 4. Đẩy vào nhánh (`git push origin feature/amazing-feature`)
1543
- 5. Mở yêu cầu kéo
1544
-
1545
- Xem [CONTRIBUTING.md](CONTRIBUTING.md) để biết hướng dẫn chi tiết.
1546
-
1547
- ### Phát hành phiên bản mới
1548
-
1549
- ```bash
1550
- # Create a release — npm publish happens automatically
1551
- gh release create v1.0.6 --title "v1.0.6" --generate-notes
1552
- ```
1553
-
1554
- ---
1555
-
1556
- ## 📊 Lịch sử ngôi sao
1557
-
1558
- <a href="https://star-history.com/#diegosouzapw/OmniRoute&Date">
1559
- <picture>
1560
- <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date&theme=dark" />
1561
- <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1562
- <img alt="Star History Chart" src="https://api.star-history.com/svg?repos=diegosouzapw/OmniRoute&type=Date" />
1563
- </picture>
1564
- </a>
1565
-
1566
- ---
1567
-
1568
- ## 🙏 Lời cảm ơn
1569
-
1570
- Đặc biệt cảm ơn **[9router](https://github.com/decolua/9router)** của **[decolua](https://github.com/decolua)** — dự án ban đầu đã truyền cảm hứng cho đợt phân nhánh này. OmniRoute được xây dựng dựa trên nền tảng đáng kinh ngạc đó với các tính năng bổ sung, API đa phương thức và viết lại TypeScript đầy đủ.
1571
-
1572
- Đặc biệt cảm ơn **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** — cách triển khai Go ban đầu đã truyền cảm hứng cho cổng JavaScript này.
1573
-
1574
- ---
1575
-
1576
- ## 📄 Giấy phép
1577
-
1578
- Giấy phép MIT - xem [LICENSE](LICENSE) để biết chi tiết.
1579
-
1580
- ---
1581
-
1582
- <div align="center">
1583
- <sub>Được xây dựng với ❤️ dành cho nhà phát triển viết mã 24/7</sub>
1584
- <br/>
1585
- <sub><a href="https://omniroute.online">omniroute.online</a></sub>
1586
- </div>