From 0c687ae7a4bb9a46e1ca1f13007260a01d1e27bf Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Fri, 20 Mar 2026 14:38:32 -0400 Subject: [PATCH] agents: log oversized prompts to llm-logs/oversized/ for debugging When a prompt exceeds the size guard, dump it to a timestamped file with agent name, size, and seed node keys. Makes it easy to find which nodes are blowing up prompts. Co-Authored-By: Claude Opus 4.6 (1M context) --- poc-memory/src/agents/knowledge.rs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/poc-memory/src/agents/knowledge.rs b/poc-memory/src/agents/knowledge.rs index 03d3166..c77f7f2 100644 --- a/poc-memory/src/agents/knowledge.rs +++ b/poc-memory/src/agents/knowledge.rs @@ -143,6 +143,16 @@ fn run_one_agent_inner( // Rough estimate: 1 token ≈ 4 bytes. Reserve 16K tokens for output. let max_prompt_bytes = 800_000; // ~200K tokens, leaves room for output if agent_batch.prompt.len() > max_prompt_bytes { + // Log the oversized prompt for debugging + let oversize_dir = store::memory_dir().join("llm-logs").join("oversized"); + fs::create_dir_all(&oversize_dir).ok(); + let oversize_path = oversize_dir.join(format!("{}-{}.txt", + agent_name, store::compact_timestamp())); + let header = format!("=== OVERSIZED PROMPT ===\nagent: {}\nsize: {}KB (max {}KB)\nnodes: {:?}\n\n", + agent_name, prompt_kb, max_prompt_bytes / 1024, agent_batch.node_keys); + fs::write(&oversize_path, format!("{}{}", header, agent_batch.prompt)).ok(); + log(&format!("oversized prompt logged to {}", oversize_path.display())); + return Err(format!( "prompt too large: {}KB (max {}KB) — seed nodes may be oversized", prompt_kb, max_prompt_bytes / 1024,