mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-25 13:45:03 +08:00
2513687184
Implement request classification, tool result merging, compact detection, deterministic request IDs, and warmup downgrade for Copilot proxy. The root cause was x-initiator being hardcoded to "user", making Copilot count every API request (including tool callbacks and agent continuations) as a separate premium interaction. The optimizer dynamically classifies requests as "user" or "agent" based on message content analysis. Closes #1813
57 lines
1.6 KiB
Rust
57 lines
1.6 KiB
Rust
//! 代理服务器模块
|
|
//!
|
|
//! 提供本地HTTP代理服务,支持多Provider故障转移和请求透传
|
|
|
|
pub mod body_filter;
|
|
pub mod cache_injector;
|
|
pub mod circuit_breaker;
|
|
pub mod copilot_optimizer;
|
|
pub mod error;
|
|
pub mod error_mapper;
|
|
pub(crate) mod failover_switch;
|
|
mod forwarder;
|
|
pub mod handler_config;
|
|
pub mod handler_context;
|
|
mod handlers;
|
|
mod health;
|
|
pub mod http_client;
|
|
pub mod hyper_client;
|
|
pub mod log_codes;
|
|
pub mod model_mapper;
|
|
pub mod provider_router;
|
|
pub mod providers;
|
|
pub mod response_handler;
|
|
pub mod response_processor;
|
|
pub(crate) mod server;
|
|
pub mod session;
|
|
pub(crate) mod sse;
|
|
pub(crate) mod switch_lock;
|
|
pub mod thinking_budget_rectifier;
|
|
pub mod thinking_optimizer;
|
|
pub mod thinking_rectifier;
|
|
pub(crate) mod types;
|
|
pub mod usage;
|
|
|
|
// 公开导出给外部使用(commands, services等模块需要)
|
|
#[allow(unused_imports)]
|
|
pub use circuit_breaker::{
|
|
CircuitBreaker, CircuitBreakerConfig, CircuitBreakerStats, CircuitState,
|
|
};
|
|
#[allow(unused_imports)]
|
|
pub use error::ProxyError;
|
|
#[allow(unused_imports)]
|
|
pub use provider_router::ProviderRouter;
|
|
#[allow(unused_imports)]
|
|
pub use response_handler::{NonStreamHandler, ResponseType, StreamHandler};
|
|
#[allow(unused_imports)]
|
|
pub use session::{
|
|
extract_session_id, ClientFormat, ProxySession, SessionIdResult, SessionIdSource,
|
|
};
|
|
#[allow(unused_imports)]
|
|
pub use types::{ProxyConfig, ProxyServerInfo, ProxyStatus};
|
|
|
|
// 内部模块间共享(供子模块使用)
|
|
// 注意:这个导出用于模块内部,编译器可能警告未使用但实际被子模块使用
|
|
#[allow(unused_imports)]
|
|
pub(crate) use types::*;
|