feat: MITM request modification — strip bloat from LLM API requests
Intercepts streamGenerateContent requests and trims: - System instruction: strips web_application_development, knowledge_discovery, persistent_context, skills sections (~18KB saved) - Content messages: strips empty user_rules, workflows boilerplate, conversation summaries (~4.5KB saved) - Tools: keeps 12 essential coding tools, strips 8 non-essential (browser_subagent, generate_image, search_web, etc. ~6KB saved) Total: ~55% reduction in request size while keeping identity, user info, and all coding-relevant tools intact. Only modifies 'agent' type requests, checkpoint requests pass through unmodified. Also: - Standalone mode is now the default (use --no-standalone to attach to existing LS) - Enable request modification by default - Add mold linker, sccache, nextest config (8 thread cap) - Add .cargo/config.toml and .config/nextest.toml
This commit is contained in:
10
src/main.rs
10
src/main.rs
@@ -46,9 +46,9 @@ struct Cli {
|
||||
#[arg(long, default_value_t = 8742)]
|
||||
mitm_port: u16,
|
||||
|
||||
/// Use a standalone LS (does not touch the real LS)
|
||||
/// Disable standalone LS — attach to the real running LS instead
|
||||
#[arg(long)]
|
||||
standalone: bool,
|
||||
no_standalone: bool,
|
||||
}
|
||||
|
||||
#[tokio::main]
|
||||
@@ -91,7 +91,7 @@ async fn main() {
|
||||
};
|
||||
|
||||
// ── Step 2: Backend discovery (or standalone LS spawn) ─────────────────────
|
||||
let standalone_ls = if cli.standalone {
|
||||
let standalone_ls = if !cli.no_standalone {
|
||||
// Standalone mode: discover main LS config, spawn our own
|
||||
let main_config = match standalone::discover_main_ls_config() {
|
||||
Ok(c) => c,
|
||||
@@ -182,7 +182,7 @@ async fn main() {
|
||||
let ca_pem = ca.ca_pem_path.display().to_string();
|
||||
let config = mitm::proxy::MitmConfig {
|
||||
port: cli.mitm_port,
|
||||
modify_requests: false,
|
||||
modify_requests: true,
|
||||
};
|
||||
match mitm::proxy::run(ca, mitm_store.clone(), config).await {
|
||||
Ok((port, handle)) => {
|
||||
@@ -228,7 +228,7 @@ async fn main() {
|
||||
|
||||
// Periodic backend refresh — keeps LS connection details fresh
|
||||
// (skip in standalone mode — the port is fixed and discover() would overwrite it)
|
||||
let is_standalone = cli.standalone;
|
||||
let is_standalone = !cli.no_standalone;
|
||||
let refresh_backend = Arc::clone(&state.backend);
|
||||
let refresh_handle = tokio::spawn(async move {
|
||||
if is_standalone {
|
||||
|
||||
Reference in New Issue
Block a user