@jsonstudio/rcc 0.89.1189 → 0.89.1348

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 (337) hide show
  1. package/README.md +17 -0
  2. package/configsamples/config.json +426 -0
  3. package/configsamples/config.reference.json +58 -0
  4. package/configsamples/provider/crs/config.v1.json +46 -0
  5. package/configsamples/provider/glm/config.v1.json +81 -0
  6. package/configsamples/provider/glm-anthropic/config.v1.json +45 -0
  7. package/configsamples/provider/iflow/config.v1.json +74 -0
  8. package/configsamples/provider/kimi/config.v1.json +41 -0
  9. package/configsamples/provider/lmstudio/config.v1.json +101 -0
  10. package/configsamples/provider/mimo/config.v1.json +35 -0
  11. package/configsamples/provider/modelscope/config.v1.json +96 -0
  12. package/configsamples/provider/qwen/config.v1.json +38 -0
  13. package/configsamples/provider/tab/config.v1.json +50 -0
  14. package/configsamples/provider/tabglm/config.v1.json +49 -0
  15. package/dist/build-info.js +2 -2
  16. package/dist/cli/commands/code.js +12 -6
  17. package/dist/cli/commands/code.js.map +1 -1
  18. package/dist/cli/commands/config.d.ts +2 -1
  19. package/dist/cli/commands/config.js +74 -103
  20. package/dist/cli/commands/config.js.map +1 -1
  21. package/dist/cli/commands/examples.js +6 -6
  22. package/dist/cli/commands/examples.js.map +1 -1
  23. package/dist/cli/commands/init.d.ts +28 -0
  24. package/dist/cli/commands/init.js +91 -0
  25. package/dist/cli/commands/init.js.map +1 -0
  26. package/dist/cli/commands/port.js +10 -2
  27. package/dist/cli/commands/port.js.map +1 -1
  28. package/dist/cli/commands/restart.js +5 -2
  29. package/dist/cli/commands/restart.js.map +1 -1
  30. package/dist/cli/commands/start.js +25 -22
  31. package/dist/cli/commands/start.js.map +1 -1
  32. package/dist/cli/commands/status.js +1 -0
  33. package/dist/cli/commands/status.js.map +1 -1
  34. package/dist/cli/commands/stop.js +1 -0
  35. package/dist/cli/commands/stop.js.map +1 -1
  36. package/dist/cli/config/bundled-docs.d.ts +20 -0
  37. package/dist/cli/config/bundled-docs.js +91 -0
  38. package/dist/cli/config/bundled-docs.js.map +1 -0
  39. package/dist/cli/config/init-config.d.ts +36 -0
  40. package/dist/cli/config/init-config.js +180 -0
  41. package/dist/cli/config/init-config.js.map +1 -0
  42. package/dist/cli/config/init-provider-catalog.d.ts +8 -0
  43. package/dist/cli/config/init-provider-catalog.js +187 -0
  44. package/dist/cli/config/init-provider-catalog.js.map +1 -0
  45. package/dist/cli/register/init-command.d.ts +3 -0
  46. package/dist/cli/register/init-command.js +5 -0
  47. package/dist/cli/register/init-command.js.map +1 -0
  48. package/dist/cli.js +28 -3
  49. package/dist/cli.js.map +1 -1
  50. package/dist/client/gemini-cli/gemini-cli-protocol-client.js +1 -1
  51. package/dist/client/gemini-cli/gemini-cli-protocol-client.js.map +1 -1
  52. package/dist/config/risk-control-config.d.ts +94 -0
  53. package/dist/config/risk-control-config.js +196 -0
  54. package/dist/config/risk-control-config.js.map +1 -0
  55. package/dist/constants/index.d.ts +6 -0
  56. package/dist/constants/index.js +13 -0
  57. package/dist/constants/index.js.map +1 -1
  58. package/dist/docs/daemon-admin-ui.html +2113 -190
  59. package/dist/index.js +0 -1
  60. package/dist/index.js.map +1 -1
  61. package/dist/manager/modules/health/index.d.ts +1 -1
  62. package/dist/manager/modules/quota/antigravity-quota-manager.d.ts +70 -0
  63. package/dist/manager/modules/quota/antigravity-quota-manager.js +442 -0
  64. package/dist/manager/modules/quota/antigravity-quota-manager.js.map +1 -0
  65. package/dist/manager/modules/quota/index.d.ts +3 -127
  66. package/dist/manager/modules/quota/index.js +2 -1093
  67. package/dist/manager/modules/quota/index.js.map +1 -1
  68. package/dist/manager/modules/quota/provider-key-normalization.d.ts +3 -0
  69. package/dist/manager/modules/quota/provider-key-normalization.js +155 -0
  70. package/dist/manager/modules/quota/provider-key-normalization.js.map +1 -0
  71. package/dist/manager/modules/quota/provider-quota-daemon.cooldown.d.ts +9 -0
  72. package/dist/manager/modules/quota/provider-quota-daemon.cooldown.js +115 -0
  73. package/dist/manager/modules/quota/provider-quota-daemon.cooldown.js.map +1 -0
  74. package/dist/manager/modules/quota/provider-quota-daemon.d.ts +77 -0
  75. package/dist/manager/modules/quota/provider-quota-daemon.events.d.ts +12 -0
  76. package/dist/manager/modules/quota/provider-quota-daemon.events.js +237 -0
  77. package/dist/manager/modules/quota/provider-quota-daemon.events.js.map +1 -0
  78. package/dist/manager/modules/quota/provider-quota-daemon.js +404 -0
  79. package/dist/manager/modules/quota/provider-quota-daemon.js.map +1 -0
  80. package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.d.ts +11 -0
  81. package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.js +189 -0
  82. package/dist/manager/modules/quota/provider-quota-daemon.model-backoff.js.map +1 -0
  83. package/dist/manager/modules/quota/provider-quota-daemon.snapshot.d.ts +8 -0
  84. package/dist/manager/modules/quota/provider-quota-daemon.snapshot.js +96 -0
  85. package/dist/manager/modules/quota/provider-quota-daemon.snapshot.js.map +1 -0
  86. package/dist/manager/modules/quota/provider-quota-daemon.view.d.ts +19 -0
  87. package/dist/manager/modules/quota/provider-quota-daemon.view.js +37 -0
  88. package/dist/manager/modules/quota/provider-quota-daemon.view.js.map +1 -0
  89. package/dist/manager/modules/routing/index.d.ts +1 -0
  90. package/dist/manager/modules/routing/index.js +11 -25
  91. package/dist/manager/modules/routing/index.js.map +1 -1
  92. package/dist/manager/quota/provider-quota-center.d.ts +2 -0
  93. package/dist/manager/quota/provider-quota-center.js +80 -82
  94. package/dist/manager/quota/provider-quota-center.js.map +1 -1
  95. package/dist/modules/llmswitch/bridge.d.ts +16 -18
  96. package/dist/modules/llmswitch/bridge.js +314 -71
  97. package/dist/modules/llmswitch/bridge.js.map +1 -1
  98. package/dist/modules/llmswitch/core-loader.d.ts +4 -2
  99. package/dist/modules/llmswitch/core-loader.js +32 -20
  100. package/dist/modules/llmswitch/core-loader.js.map +1 -1
  101. package/dist/modules/pipeline/utils/colored-logger.js +3 -2
  102. package/dist/modules/pipeline/utils/colored-logger.js.map +1 -1
  103. package/dist/modules/pipeline/utils/debug-logger.js +1 -1
  104. package/dist/modules/pipeline/utils/debug-logger.js.map +1 -1
  105. package/dist/providers/auth/iflow-cookie-auth.js +0 -2
  106. package/dist/providers/auth/iflow-cookie-auth.js.map +1 -1
  107. package/dist/providers/auth/oauth-lifecycle.js +2 -23
  108. package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
  109. package/dist/providers/core/config/camoufox-launcher.js +35 -4
  110. package/dist/providers/core/config/camoufox-launcher.js.map +1 -1
  111. package/dist/providers/core/runtime/antigravity-quota-client.js +6 -3
  112. package/dist/providers/core/runtime/antigravity-quota-client.js.map +1 -1
  113. package/dist/providers/core/runtime/base-provider.d.ts +2 -2
  114. package/dist/providers/core/runtime/base-provider.js +74 -69
  115. package/dist/providers/core/runtime/base-provider.js.map +1 -1
  116. package/dist/providers/core/runtime/gemini-cli-http-provider.js +6 -4
  117. package/dist/providers/core/runtime/gemini-cli-http-provider.js.map +1 -1
  118. package/dist/providers/core/runtime/http-request-executor.js +2 -2
  119. package/dist/providers/core/runtime/http-request-executor.js.map +1 -1
  120. package/dist/providers/core/runtime/http-transport-provider.d.ts +14 -0
  121. package/dist/providers/core/runtime/http-transport-provider.js +111 -5
  122. package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
  123. package/dist/providers/core/runtime/provider-error-classifier.js +10 -0
  124. package/dist/providers/core/runtime/provider-error-classifier.js.map +1 -1
  125. package/dist/providers/core/runtime/provider-factory.js +7 -5
  126. package/dist/providers/core/runtime/provider-factory.js.map +1 -1
  127. package/dist/providers/core/runtime/provider-runtime-metadata.d.ts +6 -0
  128. package/dist/providers/core/runtime/provider-runtime-metadata.js.map +1 -1
  129. package/dist/providers/core/runtime/responses-provider.d.ts +1 -7
  130. package/dist/providers/core/runtime/responses-provider.js +12 -93
  131. package/dist/providers/core/runtime/responses-provider.js.map +1 -1
  132. package/dist/providers/core/strategies/oauth-auth-code-flow.js +12 -8
  133. package/dist/providers/core/strategies/oauth-auth-code-flow.js.map +1 -1
  134. package/dist/providers/core/utils/http-client.js +16 -3
  135. package/dist/providers/core/utils/http-client.js.map +1 -1
  136. package/dist/providers/core/utils/provider-error-logger.d.ts +1 -1
  137. package/dist/providers/core/utils/provider-error-reporter.d.ts +3 -1
  138. package/dist/providers/core/utils/provider-error-reporter.js +3 -0
  139. package/dist/providers/core/utils/provider-error-reporter.js.map +1 -1
  140. package/dist/providers/core/utils/snapshot-writer.js +1 -4
  141. package/dist/providers/core/utils/snapshot-writer.js.map +1 -1
  142. package/dist/providers/mock/mock-provider-runtime.js +57 -27
  143. package/dist/providers/mock/mock-provider-runtime.js.map +1 -1
  144. package/dist/scripts/camoufox/launch-auth.mjs +193 -58
  145. package/dist/server/handlers/handler-utils.js +3 -2
  146. package/dist/server/handlers/handler-utils.js.map +1 -1
  147. package/dist/server/runtime/http-server/daemon-admin/auth-handler.d.ts +2 -0
  148. package/dist/server/runtime/http-server/daemon-admin/auth-handler.js +103 -0
  149. package/dist/server/runtime/http-server/daemon-admin/auth-handler.js.map +1 -0
  150. package/dist/server/runtime/http-server/daemon-admin/auth-session.d.ts +5 -0
  151. package/dist/server/runtime/http-server/daemon-admin/auth-session.js +77 -0
  152. package/dist/server/runtime/http-server/daemon-admin/auth-session.js.map +1 -0
  153. package/dist/server/runtime/http-server/daemon-admin/auth-store.d.ts +18 -0
  154. package/dist/server/runtime/http-server/daemon-admin/auth-store.js +89 -0
  155. package/dist/server/runtime/http-server/daemon-admin/auth-store.js.map +1 -0
  156. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js +1 -2
  157. package/dist/server/runtime/http-server/daemon-admin/credentials-handler.js.map +1 -1
  158. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js +226 -24
  159. package/dist/server/runtime/http-server/daemon-admin/providers-handler.js.map +1 -1
  160. package/dist/server/runtime/http-server/daemon-admin/quota-handler.js +47 -8
  161. package/dist/server/runtime/http-server/daemon-admin/quota-handler.js.map +1 -1
  162. package/dist/server/runtime/http-server/daemon-admin/restart-handler.js +1 -1
  163. package/dist/server/runtime/http-server/daemon-admin/restart-handler.js.map +1 -1
  164. package/dist/server/runtime/http-server/daemon-admin/stats-handler.js +1 -1
  165. package/dist/server/runtime/http-server/daemon-admin/stats-handler.js.map +1 -1
  166. package/dist/server/runtime/http-server/daemon-admin/status-handler.js +68 -4
  167. package/dist/server/runtime/http-server/daemon-admin/status-handler.js.map +1 -1
  168. package/dist/server/runtime/http-server/daemon-admin-routes.d.ts +3 -4
  169. package/dist/server/runtime/http-server/daemon-admin-routes.js +9 -14
  170. package/dist/server/runtime/http-server/daemon-admin-routes.js.map +1 -1
  171. package/dist/server/runtime/http-server/executor-metadata.js +1 -1
  172. package/dist/server/runtime/http-server/executor-metadata.js.map +1 -1
  173. package/dist/server/runtime/http-server/executor-response.js +0 -16
  174. package/dist/server/runtime/http-server/executor-response.js.map +1 -1
  175. package/dist/server/runtime/http-server/hub-shadow-compare.d.ts +18 -0
  176. package/dist/server/runtime/http-server/hub-shadow-compare.js +256 -0
  177. package/dist/server/runtime/http-server/hub-shadow-compare.js.map +1 -0
  178. package/dist/server/runtime/http-server/index.d.ts +7 -2
  179. package/dist/server/runtime/http-server/index.js +287 -49
  180. package/dist/server/runtime/http-server/index.js.map +1 -1
  181. package/dist/server/runtime/http-server/middleware.js +19 -1
  182. package/dist/server/runtime/http-server/middleware.js.map +1 -1
  183. package/dist/server/runtime/http-server/request-executor.js +10 -19
  184. package/dist/server/runtime/http-server/request-executor.js.map +1 -1
  185. package/dist/server/runtime/http-server/routes.js +8 -2
  186. package/dist/server/runtime/http-server/routes.js.map +1 -1
  187. package/dist/server/runtime/http-server/session-dir.d.ts +2 -0
  188. package/dist/server/runtime/http-server/session-dir.js +59 -0
  189. package/dist/server/runtime/http-server/session-dir.js.map +1 -0
  190. package/dist/server/runtime/http-server/types.d.ts +0 -4
  191. package/dist/server/utils/utf8-chunk-buffer.js +6 -3
  192. package/dist/server/utils/utf8-chunk-buffer.js.map +1 -1
  193. package/dist/server/utils/warmup-storm-tracker.js +1 -1
  194. package/dist/server/utils/warmup-storm-tracker.js.map +1 -1
  195. package/dist/server-factory.d.ts +6 -28
  196. package/dist/server-factory.js +8 -93
  197. package/dist/server-factory.js.map +1 -1
  198. package/dist/token-daemon/index.js +2 -2
  199. package/dist/token-daemon/index.js.map +1 -1
  200. package/dist/token-daemon/provider-registry.js +0 -1
  201. package/dist/token-daemon/provider-registry.js.map +1 -1
  202. package/dist/token-daemon/server-utils.js +8 -9
  203. package/dist/token-daemon/server-utils.js.map +1 -1
  204. package/dist/token-daemon/token-utils.js +1 -1
  205. package/dist/token-daemon/token-utils.js.map +1 -1
  206. package/dist/tools/semantic-replay.js +2 -2
  207. package/dist/tools/semantic-replay.js.map +1 -1
  208. package/dist/tools/stats-request-events.d.ts +1 -1
  209. package/dist/tools/stats-usage.js +6 -3
  210. package/dist/tools/stats-usage.js.map +1 -1
  211. package/dist/utils/errorsamples.d.ts +5 -0
  212. package/dist/utils/errorsamples.js +27 -0
  213. package/dist/utils/errorsamples.js.map +1 -0
  214. package/dist/utils/llms-engine-shadow.d.ts +19 -0
  215. package/dist/utils/llms-engine-shadow.js +209 -0
  216. package/dist/utils/llms-engine-shadow.js.map +1 -0
  217. package/dist/utils/runtime-versions.d.ts +1 -0
  218. package/dist/utils/runtime-versions.js +39 -0
  219. package/dist/utils/runtime-versions.js.map +1 -0
  220. package/docs/ARCHITECTURE.md +402 -0
  221. package/docs/CODEX_AND_CLAUDE_CODE.md +69 -0
  222. package/docs/CONFIG_ARCHITECTURE.md +517 -0
  223. package/docs/ERROR_HANDLING_AUDIT.md +0 -0
  224. package/docs/GCLI2API_PARITY_GAPS.md +98 -0
  225. package/docs/INSTALLATION_AND_QUICKSTART.md +74 -0
  226. package/docs/INSTRUCTION_MARKUP.md +89 -0
  227. package/docs/MODULE_ENHANCEMENT_SYSTEM.md +666 -0
  228. package/docs/PORTS.md +36 -0
  229. package/docs/PROVIDERS_BUILTIN.md +111 -0
  230. package/docs/PROVIDER_TYPES.md +55 -0
  231. package/docs/SERVERTOOL_CLOCK_DESIGN.md +233 -0
  232. package/docs/USAGE_HANDLING_ANALYSIS.md +335 -0
  233. package/docs/USER_CONFIG_PARSER_CHANGES.md +175 -0
  234. package/docs/V3_INBOUND_OUTBOUND_DESIGN.md +86 -0
  235. package/docs/VIRTUAL_ROUTER_PRIORITY_AND_HEALTH.md +125 -0
  236. package/docs/anthropic-request-golden-samples.md +50 -0
  237. package/docs/ccr-alignment-enhancetool.md +105 -0
  238. package/docs/chat-glm-500-analysis.md +79 -0
  239. package/docs/chat-request-golden-samples.md +42 -0
  240. package/docs/chat-semantic-expansion-plan.md +82 -0
  241. package/docs/cli-command-inventory.md +76 -0
  242. package/docs/codex-samples-replay.md +50 -0
  243. package/docs/daemon-admin-api-design.md +350 -0
  244. package/docs/daemon-admin-module-structure.md +169 -0
  245. package/docs/daemon-admin-ui.html +3394 -0
  246. package/docs/debug-system-design.md +734 -0
  247. package/docs/debugging/gemini-sse-root-cause.md +52 -0
  248. package/docs/debugging/sse_encoding_failure_analysis.md +53 -0
  249. package/docs/dry-run/README.md +721 -0
  250. package/docs/error-handling-v2.md +92 -0
  251. package/docs/exec-command-guard-policy.example.v1.json +42 -0
  252. package/docs/fixes/gemini-protocol-mapping.md +57 -0
  253. package/docs/fixes/oauth-portal-timing-fix.md +202 -0
  254. package/docs/fixes/web-search-hop3-fix.md +265 -0
  255. package/docs/glm-api-reference.md +390 -0
  256. package/docs/glm-chat-completions.md +1779 -0
  257. package/docs/glm-history-inline-images.md +44 -0
  258. package/docs/golden-ci-library.md +66 -0
  259. package/docs/lmstudio-dry-run-summary.md +203 -0
  260. package/docs/lmstudio-tool-calling.md +214 -0
  261. package/docs/mapping-tables/anthropic-to-openai.json +290 -0
  262. package/docs/mapping-tables/iflow-to-openai.json +215 -0
  263. package/docs/mapping-tables/openai-passthrough.json +190 -0
  264. package/docs/mapping-tables/openai-to-iflow.json +227 -0
  265. package/docs/monitoring/Design.md +61 -0
  266. package/docs/multi-token-auth-guide.md +66 -0
  267. package/docs/oauth-authentication-guide.md +168 -0
  268. package/docs/oauth-iflow-implementation.md +153 -0
  269. package/docs/pipeline-routing-report.md +209 -0
  270. package/docs/plans/manager-daemon/PLAN.md +86 -0
  271. package/docs/plans/provider-config-v2-plan.md +176 -0
  272. package/docs/plans/provider-runtime-manager-plan.md +209 -0
  273. package/docs/plans/transparent-429-failover.md +89 -0
  274. package/docs/plans/unified-hub-framework-v1.md +245 -0
  275. package/docs/provider-config-v2-ui-design.md +181 -0
  276. package/docs/provider-quota-design.md +129 -0
  277. package/docs/providers/gemini-provider.md +62 -0
  278. package/docs/providers/lmstudio-v2-migration-report.md +102 -0
  279. package/docs/providers/provider-composite-design.md +142 -0
  280. package/docs/providers/provider-composite-testing.md +98 -0
  281. package/docs/providers/provider-type-only-migration.md +111 -0
  282. package/docs/rccx-wasm-migration.md +74 -0
  283. package/docs/refactoring/architecture-comparison-diagram.md +140 -0
  284. package/docs/refactoring/compatibility-v2-architecture-design.md +738 -0
  285. package/docs/refactoring/workflow-compatibility-refactoring-design.md +361 -0
  286. package/docs/reports/routing-classification-report.json +24 -0
  287. package/docs/reports/routing-classification-report.md +18 -0
  288. package/docs/reports/thinking-keywords-report.json +19 -0
  289. package/docs/responses/README.md +156 -0
  290. package/docs/responses-generic-provider.md +86 -0
  291. package/docs/responses-passthrough-provider-design.md +202 -0
  292. package/docs/routing-awrr-health-weighted-round-robin.md +179 -0
  293. package/docs/routing-instructions.md +393 -0
  294. package/docs/stop-message-auto.md +225 -0
  295. package/docs/streaming-flow.html +30 -0
  296. package/docs/streaming-flow.md +182 -0
  297. package/docs/token-daemon-preview.html +490 -0
  298. package/docs/token-refresh-daemon-plan.md +269 -0
  299. package/docs/transformation-tables/Gemini-FinishReason/345/256/214/346/225/264/350/275/254/346/215/242/350/241/250.json +233 -0
  300. package/docs/transformation-tables/README.md +225 -0
  301. package/docs/transformation-tables/claude-code-router-anthropic-to-gemini.json +283 -0
  302. package/docs/transformation-tables/claude-code-router-anthropic-to-openai.json +208 -0
  303. package/docs/transformation-tables/claude-code-router-openai-to-anthropic.json +261 -0
  304. package/docs/transformation-tables/claude-code-router-openai-to-gemini.json +208 -0
  305. package/docs/transformation-tables/claude-code-router-openai-to-lmstudio.json +182 -0
  306. package/docs/transformation-tables/claude-code-router-openai-to-ollama.json +250 -0
  307. package/docs/transformation-tables/claude-code-router-openai-to-textgenwebui.json +295 -0
  308. package/docs/transformation-tables/claude-code-router-provider-conversions.json +193 -0
  309. package/docs/transformation-tables//345/256/214/346/225/264/347/232/204/345/267/245/345/205/267/346/211/247/350/241/214/346/265/201/347/250/213/350/275/254/346/215/242/350/241/250.json +299 -0
  310. package/docs/transformation-tables//345/257/271/350/257/235/345/216/206/345/217/262/347/273/264/346/212/244/345/210/206/346/236/220.md +134 -0
  311. package/docs/transformation-tables//345/267/245/345/205/267/350/260/203/347/224/250/346/250/241/345/274/217/345/210/206/346/236/220.md +158 -0
  312. package/docs/transformation-tables//347/212/266/346/200/201/347/256/241/347/220/206/351/234/200/346/261/202/345/210/206/346/236/220.md +175 -0
  313. package/docs/transformation-tables//351/235/231/346/200/201/350/241/250vs/345/212/250/346/200/201/345/210/206/346/236/220.md +189 -0
  314. package/docs/transformation-tables//351/235/231/346/200/201/350/241/250/345/207/206/347/241/256/346/200/247/350/257/204/344/274/260.md +179 -0
  315. package/docs/transformation-tables//351/235/236/346/265/201/345/274/217/345/234/272/346/231/257/345/210/206/346/236/220.md +189 -0
  316. package/docs/v2-architecture/IMPLEMENTATION-ROADMAP.md +367 -0
  317. package/docs/v2-architecture/OPTIMIZED-DESIGN.md +827 -0
  318. package/docs/v2-architecture/PRERUN-CONNECTION-DESIGN.md +716 -0
  319. package/docs/v2-architecture/README.md +551 -0
  320. package/docs/verification/modelscope-verify.md +59 -0
  321. package/docs/web-search-service-design.md +322 -0
  322. package/package.json +12 -7
  323. package/scripts/camoufox/launch-auth.mjs +193 -58
  324. package/scripts/monitor-diff.mjs +126 -0
  325. package/scripts/pack-mode.mjs +19 -1
  326. package/scripts/pack-rcc.mjs +63 -0
  327. package/scripts/unified-hub-shadow-compare.mjs +33 -13
  328. package/scripts/verify-e2e-toolcall.mjs +115 -26
  329. package/dist/modules/llmswitch/pipeline-registry.d.ts +0 -57
  330. package/dist/modules/llmswitch/pipeline-registry.js +0 -229
  331. package/dist/modules/llmswitch/pipeline-registry.js.map +0 -1
  332. package/dist/server/RouteCodexServer.d.ts +0 -13
  333. package/dist/server/RouteCodexServer.js +0 -25
  334. package/dist/server/RouteCodexServer.js.map +0 -1
  335. package/dist/v2/conversion/hub/snapshot-recorder.d.ts +0 -12
  336. package/dist/v2/conversion/hub/snapshot-recorder.js +0 -22
  337. package/dist/v2/conversion/hub/snapshot-recorder.js.map +0 -1
@@ -0,0 +1,734 @@
1
+ # RouteCodex 调试可视化系统设计文档
2
+
3
+ ## 1. 系统概述
4
+
5
+ ### 1.1 设计目标
6
+ 基于现有的RouteCodex基础设施,构建一个完整的调试和可视化系统,用于:
7
+ - 实时监控模块内部IO数据流
8
+ - 统一错误信息展示格式
9
+ - 提供Web界面可视化调试信息
10
+ - 支持渐进式模块增强
11
+
12
+ ### 1.2 核心设计原则
13
+ - **最小侵入性**:利用现有DebugEventBus和ErrorHandlingCenter,不重建基础设施
14
+ - **适配器模式**:通过ModuleDebugAdapter扩展现有模块,避免直接修改
15
+ - **渐进式增强**:支持一个模块一个模块地逐步改造
16
+ - **标准化格式**:统一所有模块的调试信息格式
17
+ - **实时可视化**:通过WebSocket提供实时数据流展示
18
+
19
+ ### 1.3 系统架构图
20
+ ```
21
+ ┌─────────────────────────────────────────────────────────────────┐
22
+ │ RouteCodex 调试可视化系统 │
23
+ ├─────────────────────────────────────────────────────────────────┤
24
+ │ │
25
+ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐│
26
+ │ │ HttpServer │ │ PipelineMgr │ │ Other Modules ││
27
+ │ │ (已集成) │ │ (待增强) │ │ (待增强) ││
28
+ │ └─────────┬───────┘ └─────────┬───────┘ └─────────┬───────┘│
29
+ │ │ │ │ │
30
+ │ ▼ ▼ ▼ │
31
+ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐│
32
+ │ │ModuleDebugAdapter│ │ModuleDebugAdapter│ │ModuleDebugAdapter││
33
+ │ │ (已实现) │ │ (待实现) │ │ (待实现) ││
34
+ │ └─────────┬───────┘ └─────────┬───────┘ └─────────┬───────┘│
35
+ │ │ │ │ │
36
+ │ └──────────┬───────────┘ │ │
37
+ │ │ │ │
38
+ │ ▼ ▼ │
39
+ │ ┌─────────────────────────────────────────────────────┐│
40
+ │ │ DebugEventBus (现有) ││
41
+ │ └─────────────────────┬───────────────────────────────┘│
42
+ │ │ │
43
+ │ ▼ │
44
+ │ ┌─────────────────────────────────────────────────────┐│
45
+ │ │ DebugAPIExtension ││
46
+ │ │ (API端点 & WebSocket) ││
47
+ │ └─────────────────────┬───────────────────────────────┘│
48
+ │ │ │
49
+ │ ▼ │
50
+ │ ┌─────────────────────────────────────────────────────┐│
51
+ │ │ Web 可视化界面 ││
52
+ │ │ (实时数据流 & 错误展示) ││
53
+ │ └─────────────────────────────────────────────────────┘│
54
+ │ │
55
+ └─────────────────────────────────────────────────────────────────┘
56
+ ```
57
+
58
+ ## 2. 技术架构设计
59
+
60
+ ### 2.1 核心组件
61
+
62
+ #### 2.1.1 EnhancedDebugEvent(扩展事件类型)
63
+ ```typescript
64
+ interface EnhancedDebugEvent extends DebugEvent {
65
+ // 扩展字段
66
+ moduleId: string;
67
+ operationId: string;
68
+ data: {
69
+ // 输入输出数据
70
+ input?: any;
71
+ output?: any;
72
+ // 错误信息
73
+ error?: {
74
+ message: string;
75
+ stack?: string;
76
+ context?: any;
77
+ };
78
+ // 性能指标
79
+ performance?: {
80
+ startTime: number;
81
+ endTime: number;
82
+ duration: number;
83
+ };
84
+ // 模块特定信息
85
+ moduleSpecific?: any;
86
+ };
87
+ }
88
+ ```
89
+
90
+ #### 2.1.2 ModuleDebugAdapter(模块调试适配器)
91
+ ```typescript
92
+ abstract class ModuleDebugAdapter {
93
+ protected moduleId: string;
94
+ protected debugEventBus: DebugEventBus;
95
+ protected enabled: boolean;
96
+
97
+ constructor(moduleId: string, enabled: boolean = true) {
98
+ this.moduleId = moduleId;
99
+ this.debugEventBus = DebugEventBus.getInstance();
100
+ this.enabled = enabled;
101
+ }
102
+
103
+ // 核心方法
104
+ abstract wrapModuleMethods(): void;
105
+ abstract getModuleStatus(): ModuleStatus;
106
+
107
+ // 统一事件发布
108
+ protected publishEvent(operationId: string, type: 'start' | 'end' | 'error', data: any): void {
109
+ if (!this.enabled) return;
110
+
111
+ const event: EnhancedDebugEvent = {
112
+ sessionId: generateSessionId(),
113
+ moduleId: this.moduleId,
114
+ operationId,
115
+ timestamp: Date.now(),
116
+ type,
117
+ position: type === 'start' ? 'start' : type === 'end' ? 'end' : 'middle',
118
+ data
119
+ };
120
+
121
+ this.debugEventBus.publish(event);
122
+ }
123
+
124
+ // 统一错误处理
125
+ protected handleError(error: Error, operationId: string, context?: any): void {
126
+ this.publishEvent(operationId, 'error', {
127
+ error: {
128
+ message: error.message,
129
+ stack: error.stack,
130
+ context
131
+ }
132
+ });
133
+ }
134
+ }
135
+ ```
136
+
137
+ #### 2.1.3 DebugAPIExtension(调试API扩展)
138
+ ```typescript
139
+ class DebugAPIExtension {
140
+ private app: Express;
141
+ private debugEventBus: DebugEventBus;
142
+ private wsServer: WebSocket.Server;
143
+ private clients: Set<WebSocket> = new Set();
144
+
145
+ constructor(app: Express, server: http.Server) {
146
+ this.app = app;
147
+ this.debugEventBus = DebugEventBus.getInstance();
148
+ this.wsServer = new WebSocket.Server({ server });
149
+ this.setupEventHandlers();
150
+ this.setupAPIRoutes();
151
+ }
152
+
153
+ // 设置事件订阅
154
+ private setupEventHandlers(): void {
155
+ this.debugEventBus.subscribe((event: EnhancedDebugEvent) => {
156
+ this.broadcastToClients(event);
157
+ });
158
+ }
159
+
160
+ // WebSocket广播
161
+ private broadcastToClients(event: EnhancedDebugEvent): void {
162
+ const message = JSON.stringify(event);
163
+ this.clients.forEach(client => {
164
+ if (client.readyState === WebSocket.OPEN) {
165
+ client.send(message);
166
+ }
167
+ });
168
+ }
169
+
170
+ // REST API端点
171
+ private setupAPIRoutes(): void {
172
+ // 获取模块状态
173
+ this.app.get('/api/debug/modules', async (req, res) => {
174
+ const modules = await this.getAllModuleStatuses();
175
+ res.json(modules);
176
+ });
177
+
178
+ // 获取事件历史
179
+ this.app.get('/api/debug/events', async (req, res) => {
180
+ const { moduleId, startTime, endTime } = req.query;
181
+ const events = await this.getEventHistory(moduleId as string, {
182
+ startTime: startTime ? Number(startTime) : undefined,
183
+ endTime: endTime ? Number(endTime) : undefined
184
+ });
185
+ res.json(events);
186
+ });
187
+
188
+ // 控制调试开关
189
+ this.app.post('/api/debug/modules/:moduleId/enable', (req, res) => {
190
+ const { moduleId } = req.params;
191
+ this.setModuleDebugEnabled(moduleId, true);
192
+ res.json({ success: true });
193
+ });
194
+
195
+ this.app.post('/api/debug/modules/:moduleId/disable', (req, res) => {
196
+ const { moduleId } = req.params;
197
+ this.setModuleDebugEnabled(moduleId, false);
198
+ res.json({ success: true });
199
+ });
200
+ }
201
+ }
202
+ ```
203
+
204
+ ### 2.2 模块增强模式
205
+
206
+ #### 2.2.1 HttpServer增强示例
207
+ ```typescript
208
+ class HttpServerDebugAdapter extends ModuleDebugAdapter {
209
+ constructor(private httpServer: HttpServer) {
210
+ super('http-server', true);
211
+ this.wrapModuleMethods();
212
+ }
213
+
214
+ wrapModuleMethods(): void {
215
+ const originalStart = this.httpServer.start.bind(this.httpServer);
216
+ const originalHandleRequest = this.httpServer.handleRequest.bind(this.httpServer);
217
+
218
+ // 包装start方法
219
+ this.httpServer.start = async () => {
220
+ this.publishEvent('server-start', 'start', { port: this.httpServer.port });
221
+
222
+ try {
223
+ const result = await originalStart();
224
+ this.publishEvent('server-start', 'end', {
225
+ success: true,
226
+ port: this.httpServer.port
227
+ });
228
+ return result;
229
+ } catch (error) {
230
+ this.handleError(error, 'server-start');
231
+ throw error;
232
+ }
233
+ };
234
+
235
+ // 包装请求处理方法
236
+ this.httpServer.handleRequest = async (req, res) => {
237
+ const requestId = generateRequestId();
238
+ this.publishEvent('request-start', 'start', {
239
+ requestId,
240
+ method: req.method,
241
+ url: req.url,
242
+ headers: req.headers
243
+ });
244
+
245
+ try {
246
+ const startTime = Date.now();
247
+ await originalHandleRequest(req, res);
248
+ const duration = Date.now() - startTime;
249
+
250
+ this.publishEvent('request-end', 'end', {
251
+ requestId,
252
+ duration,
253
+ statusCode: res.statusCode
254
+ });
255
+ } catch (error) {
256
+ this.handleError(error, 'request-handle', { requestId });
257
+ throw error;
258
+ }
259
+ };
260
+ }
261
+
262
+ getModuleStatus(): ModuleStatus {
263
+ return {
264
+ moduleId: this.moduleId,
265
+ enabled: this.enabled,
266
+ isActive: this.httpServer.isRunning(),
267
+ stats: {
268
+ requestsHandled: this.httpServer.getStats().requestCount,
269
+ averageResponseTime: this.httpServer.getStats().avgResponseTime
270
+ }
271
+ };
272
+ }
273
+ }
274
+ ```
275
+
276
+ #### 2.2.2 PipelineManager增强示例
277
+ ```typescript
278
+ class PipelineManagerDebugAdapter extends ModuleDebugAdapter {
279
+ constructor(private pipelineManager: PipelineManager) {
280
+ super('pipeline-manager', true);
281
+ this.wrapModuleMethods();
282
+ }
283
+
284
+ wrapModuleMethods(): void {
285
+ const originalProcessRequest = this.pipelineManager.processRequest.bind(this.pipelineManager);
286
+ const originalSelectPipeline = this.pipelineManager.selectPipeline.bind(this.pipelineManager);
287
+
288
+ // 包装请求处理方法
289
+ this.pipelineManager.processRequest = async (request: PipelineRequest) => {
290
+ this.publishEvent('pipeline-request-start', 'start', {
291
+ requestId: request.route.requestId,
292
+ providerId: request.route.providerId,
293
+ modelId: request.route.modelId
294
+ });
295
+
296
+ try {
297
+ const startTime = Date.now();
298
+ const response = await originalProcessRequest(request);
299
+ const duration = Date.now() - startTime;
300
+
301
+ this.publishEvent('pipeline-request-end', 'end', {
302
+ requestId: request.route.requestId,
303
+ duration,
304
+ pipelineId: response.metadata.pipelineId,
305
+ processingTime: response.metadata.processingTime
306
+ });
307
+
308
+ return response;
309
+ } catch (error) {
310
+ this.handleError(error, 'pipeline-request', {
311
+ requestId: request.route.requestId
312
+ });
313
+ throw error;
314
+ }
315
+ };
316
+
317
+ // 包装流水线选择方法
318
+ this.pipelineManager.selectPipeline = (routeRequest: RouteRequest) => {
319
+ this.publishEvent('pipeline-select', 'start', {
320
+ providerId: routeRequest.providerId,
321
+ modelId: routeRequest.modelId,
322
+ requestId: routeRequest.requestId
323
+ });
324
+
325
+ try {
326
+ const pipeline = originalSelectPipeline(routeRequest);
327
+ this.publishEvent('pipeline-select', 'end', {
328
+ pipelineId: pipeline.pipelineId,
329
+ success: true
330
+ });
331
+
332
+ return pipeline;
333
+ } catch (error) {
334
+ this.handleError(error, 'pipeline-select', {
335
+ providerId: routeRequest.providerId,
336
+ modelId: routeRequest.modelId
337
+ });
338
+ throw error;
339
+ }
340
+ };
341
+ }
342
+
343
+ getModuleStatus(): ModuleStatus {
344
+ return {
345
+ moduleId: this.moduleId,
346
+ enabled: this.enabled,
347
+ isActive: this.pipelineManager.getStatus().isInitialized,
348
+ stats: {
349
+ pipelineCount: this.pipelineManager.getStatus().pipelineCount,
350
+ requestsProcessed: this.pipelineManager.getStatus().statistics?.totalRequests || 0
351
+ }
352
+ };
353
+ }
354
+ }
355
+ ```
356
+
357
+ ### 2.3 数据格式标准化
358
+
359
+ #### 2.3.1 统一事件格式
360
+ ```typescript
361
+ interface StandardDebugEvent {
362
+ // 基础信息
363
+ sessionId: string;
364
+ moduleId: string;
365
+ operationId: string;
366
+ timestamp: number;
367
+ type: 'start' | 'end' | 'error' | 'data';
368
+ position: 'start' | 'middle' | 'end';
369
+
370
+ // 数据内容
371
+ data: {
372
+ // 输入输出数据
373
+ input?: any;
374
+ output?: any;
375
+
376
+ // 错误信息(仅error类型)
377
+ error?: {
378
+ message: string;
379
+ stack?: string;
380
+ code?: string;
381
+ context?: any;
382
+ };
383
+
384
+ // 性能指标
385
+ performance?: {
386
+ startTime: number;
387
+ endTime: number;
388
+ duration: number;
389
+ memoryUsage?: NodeJS.MemoryUsage;
390
+ };
391
+
392
+ // 模块特定信息
393
+ moduleSpecific?: any;
394
+
395
+ // 请求追踪
396
+ traceId?: string;
397
+ spanId?: string;
398
+ parentSpanId?: string;
399
+ };
400
+ }
401
+ ```
402
+
403
+ #### 2.3.2 模块状态格式
404
+ ```typescript
405
+ interface ModuleStatus {
406
+ moduleId: string;
407
+ enabled: boolean;
408
+ isActive: boolean;
409
+ lastActivity: number;
410
+ stats: {
411
+ [key: string]: any;
412
+ };
413
+ health: 'healthy' | 'warning' | 'error';
414
+ version?: string;
415
+ }
416
+ ```
417
+
418
+ ## 3. 实现计划
419
+
420
+ ### 3.1 第一阶段:基础设施(1-2天)
421
+ **目标**:建立调试系统的基础设施
422
+
423
+ #### 3.1.1 核心接口和类型定义
424
+ - 创建 `src/types/debug-extensions.ts` - 扩展类型定义
425
+ - 创建 `src/utils/debug-constants.ts` - 调试常量
426
+ - 创建 `src/utils/session-utils.ts` - 会话和追踪工具
427
+
428
+ #### 3.1.2 基础适配器类
429
+ - 创建 `src/debug/module-debug-adapter.ts` - 基础适配器类
430
+ - 创建 `src/debug/debug-api-extension.ts` - API扩展类
431
+ - 创建 `src/debug/debug-websocket-server.ts` - WebSocket服务器
432
+
433
+ #### 3.1.3 工具函数
434
+ - 创建 `src/utils/event-formatters.ts` - 事件格式化工具
435
+ - 创建 `src/utils/performance-tracker.ts` - 性能追踪工具
436
+ - 创建 `src/utils/error-context-builder.ts` - 错误上下文构建工具
437
+
438
+ ### 3.2 第二阶段:API和WebSocket(1-2天)
439
+ **目标**:实现API端点和WebSocket通信
440
+
441
+ #### 3.2.1 REST API端点
442
+ - 实现 `/api/debug/modules` - 获取模块状态
443
+ - 实现 `/api/debug/events` - 获取事件历史
444
+ - 实现 `/api/debug/modules/:moduleId/control` - 控制调试开关
445
+
446
+ #### 3.2.2 WebSocket服务
447
+ - 实现实时事件推送
448
+ - 实现客户端连接管理
449
+ - 实现消息广播机制
450
+
451
+ #### 3.2.3 事件存储
452
+ - 实现内存事件存储
453
+ - 实现事件查询接口
454
+ - 实现事件清理机制
455
+
456
+ ### 3.3 第三阶段:HttpServer集成(1天)
457
+ **目标**:完成HttpServer的调试集成作为示例
458
+
459
+ #### 3.3.1 HttpServer适配器
460
+ - 创建 `src/debug/adapters/http-server-adapter.ts`
461
+ - 包装HttpServer的关键方法
462
+ - 实现请求级别的调试追踪
463
+
464
+ #### 3.3.2 集成到主应用
465
+ - 修改HttpServer类以支持调试适配器
466
+ - 添加调试模式配置开关
467
+ - 实现条件性调试功能
468
+
469
+ ### 3.4 第四阶段:PipelineManager集成(1-2天)
470
+ **目标**:完成PipelineManager的调试集成
471
+
472
+ #### 3.4.1 PipelineManager适配器
473
+ - 创建 `src/debug/adapters/pipeline-manager-adapter.ts`
474
+ - 包装流水线处理方法
475
+ - 实现流水线级别的调试追踪
476
+
477
+ #### 3.4.2 模块级别集成
478
+ - 为每个流水线模块创建适配器
479
+ - 实现模块间的数据流追踪
480
+ - 集成错误处理和性能监控
481
+
482
+ ### 3.5 第五阶段:Web界面(2-3天)
483
+ **目标**:创建可视化Web界面
484
+
485
+ #### 3.5.1 前端框架搭建
486
+ - 使用React或Vue.js搭建前端项目
487
+ - 集成WebSocket客户端
488
+ - 实现基础布局和导航
489
+
490
+ #### 3.5.2 核心组件
491
+ - 实时事件流组件
492
+ - 模块状态监控组件
493
+ - 错误展示组件
494
+ - 性能图表组件
495
+
496
+ #### 3.5.3 交互功能
497
+ - 事件过滤和搜索
498
+ - 时间轴展示
499
+ - 错误详情查看
500
+ - 调试开关控制
501
+
502
+ ## 4. 技术实现细节
503
+
504
+ ### 4.1 目录结构
505
+ ```
506
+ src/
507
+ ├── debug/
508
+ │ ├── module-debug-adapter.ts # 基础适配器类
509
+ │ ├── debug-api-extension.ts # API扩展
510
+ │ ├── debug-websocket-server.ts # WebSocket服务器
511
+ │ └── adapters/ # 具体模块适配器
512
+ │ ├── http-server-adapter.ts # HttpServer适配器
513
+ │ ├── pipeline-manager-adapter.ts # PipelineManager适配器
514
+ │ └── ... # 其他模块适配器
515
+ ├── types/
516
+ │ ├── debug-extensions.ts # 扩展类型定义
517
+ │ └── debug-events.ts # 调试事件类型
518
+ ├── utils/
519
+ │ ├── debug-constants.ts # 调试常量
520
+ │ ├── session-utils.ts # 会话工具
521
+ │ ├── event-formatters.ts # 事件格式化
522
+ │ ├── performance-tracker.ts # 性能追踪
523
+ │ └── error-context-builder.ts # 错误上下文
524
+ └── web/
525
+ ├── public/ # 静态资源
526
+ └── src/ # 前端源码
527
+ ├── components/ # React组件
528
+ ├── hooks/ # 自定义hooks
529
+ ├── utils/ # 前端工具
530
+ └── pages/ # 页面组件
531
+ ```
532
+
533
+ ### 4.2 配置管理
534
+ ```typescript
535
+ interface DebugConfig {
536
+ // 全局开关
537
+ enabled: boolean;
538
+
539
+ // 模块级别配置
540
+ modules: {
541
+ [moduleId: string]: {
542
+ enabled: boolean;
543
+ level: 'basic' | 'detailed' | 'verbose';
544
+ events: string[];
545
+ };
546
+ };
547
+
548
+ // 事件存储配置
549
+ storage: {
550
+ type: 'memory' | 'file' | 'database';
551
+ maxEvents: number;
552
+ retentionPeriod: number; // 毫秒
553
+ };
554
+
555
+ // WebSocket配置
556
+ websocket: {
557
+ enabled: boolean;
558
+ port: number;
559
+ path: string;
560
+ };
561
+
562
+ // 性能追踪配置
563
+ performance: {
564
+ enabled: boolean;
565
+ samplingRate: number;
566
+ thresholds: {
567
+ warning: number;
568
+ error: number;
569
+ };
570
+ };
571
+ }
572
+ ```
573
+
574
+ ### 4.3 错误处理策略
575
+
576
+ #### 4.3.1 分层错误处理
577
+ 1. **模块层**:捕获模块内部错误,发布到DebugEventBus
578
+ 2. **适配器层**:包装模块方法,统一错误格式
579
+ 3. **API层**:处理API调用错误,返回标准错误响应
580
+ 4. **WebSocket层**:处理连接和消息错误,记录日志
581
+
582
+ #### 4.3.2 错误恢复机制
583
+ - 自动重连WebSocket连接
584
+ - 失败事件重试机制
585
+ - 降级模式(关闭调试功能)
586
+ - 内存泄漏防护
587
+
588
+ ### 4.4 性能优化
589
+
590
+ #### 4.4.1 事件处理优化
591
+ - 事件批处理减少系统调用
592
+ - 惰性初始化调试组件
593
+ - 条件性事件发布(根据配置级别)
594
+ - 内存事件循环缓冲区
595
+
596
+ #### 4.4.2 内存管理
597
+ - 事件历史大小限制
598
+ - 定期清理过期事件
599
+ - 对象池模式减少GC压力
600
+ - 弱引用管理客户端连接
601
+
602
+ ## 5. 测试策略
603
+
604
+ ### 5.1 单元测试
605
+ - 测试适配器方法包装功能
606
+ - 测试事件发布和格式化
607
+ - 测试API端点响应
608
+ - 测试WebSocket消息处理
609
+
610
+ ### 5.2 集成测试
611
+ - 测试完整的调试事件流
612
+ - 测试模块间数据追踪
613
+ - 测试错误处理链路
614
+ - 测试配置热更新
615
+
616
+ ### 5.3 性能测试
617
+ - 高并发事件处理测试
618
+ - 长时间运行稳定性测试
619
+ - 内存泄漏检测
620
+ - WebSocket连接压力测试
621
+
622
+ ## 6. 部署和运维
623
+
624
+ ### 6.1 部署配置
625
+ ```json
626
+ {
627
+ "debug": {
628
+ "enabled": true,
629
+ "modules": {
630
+ "http-server": {
631
+ "enabled": true,
632
+ "level": "detailed"
633
+ },
634
+ "pipeline-manager": {
635
+ "enabled": true,
636
+ "level": "verbose"
637
+ }
638
+ },
639
+ "storage": {
640
+ "type": "memory",
641
+ "maxEvents": 10000,
642
+ "retentionPeriod": 3600000
643
+ },
644
+ "websocket": {
645
+ "enabled": true,
646
+ "port": 8080
647
+ }
648
+ }
649
+ }
650
+ ```
651
+
652
+ ### 6.2 监控指标
653
+ - 事件处理速率
654
+ - WebSocket连接数
655
+ - 内存使用情况
656
+ - 错误率统计
657
+ - 响应时间分布
658
+
659
+ ### 6.3 日志管理
660
+ - 调试事件日志
661
+ - 系统错误日志
662
+ - 性能指标日志
663
+ - 配置变更日志
664
+
665
+ ## 7. 扩展性考虑
666
+
667
+ ### 7.1 模块扩展
668
+ - 支持第三方模块适配器
669
+ - 插件式调试功能
670
+ - 自定义事件类型
671
+ - 模块特定数据格式
672
+
673
+ ### 7.2 功能扩展
674
+ - 分布式追踪支持
675
+ - 性能分析工具
676
+ - 自动化测试集成
677
+ - 告警和通知系统
678
+
679
+ ### 7.3 集成扩展
680
+ - 外部监控系统集成
681
+ - 日志聚合平台集成
682
+ - APM工具集成
683
+ - CI/CD流程集成
684
+
685
+ ## 8. 风险评估和缓解
686
+
687
+ ### 8.1 技术风险
688
+ - **内存泄漏**:通过事件大小限制和定期清理缓解
689
+ - **性能影响**:通过条件性调试和批处理缓解
690
+ - **系统复杂性**:通过模块化设计和清晰接口缓解
691
+
692
+ ### 8.2 运维风险
693
+ - **配置错误**:通过配置验证和默认值缓解
694
+ - **依赖冲突**:通过版本锁定和兼容性测试缓解
695
+ - **监控盲点**:通过全面监控和告警缓解
696
+
697
+ ## 9. 成功标准
698
+
699
+ ### 9.1 功能标准
700
+ - ✅ 所有模块的IO数据流可监控
701
+ - ✅ 错误信息统一格式展示
702
+ - ✅ 实时Web界面可视化
703
+ - ✅ 渐进式模块增强支持
704
+
705
+ ### 9.2 性能标准
706
+ - ✅ 调试功能关闭时零性能影响
707
+ - ✅ 调试功能开启时<5%性能开销
708
+ - ✅ 支持1000+并发WebSocket连接
709
+ - ✅ 事件处理延迟<10ms
710
+
711
+ ### 9.3 可用性标准
712
+ - ✅ 99.9%系统可用性
713
+ - ✅ 1分钟内故障检测
714
+ - ✅ 5分钟内故障恢复
715
+ - ✅ 完整的监控和告警
716
+
717
+ ## 10. 总结
718
+
719
+ 本设计文档提供了一个完整的RouteCodex调试可视化系统方案,基于现有基础设施,采用最小侵入性的适配器模式,支持渐进式模块增强。系统将提供:
720
+
721
+ 1. **统一的调试信息格式**:所有模块使用标准化的调试事件格式
722
+ 2. **实时可视化界面**:通过WebSocket提供实时数据流展示
723
+ 3. **渐进式增强**:可以一个模块一个模块地逐步集成
724
+ 4. **最小性能影响**:通过条件性调试和优化设计降低性能开销
725
+ 5. **高度可扩展**:支持第三方模块和自定义功能扩展
726
+
727
+ 该方案将显著提升RouteCodex系统的可观测性和调试效率,为系统维护和问题排查提供强有力的工具支持。
728
+
729
+ ---
730
+
731
+ **文档版本**:v1.0
732
+ **创建时间**:2025-01-17
733
+ **预计完成时间**:7-10天
734
+ **技术栈**:TypeScript, Express, WebSocket, React