From b4027460701616f50da0ec50eaa1c1dd609a3fd3 Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Sun, 22 Mar 2026 12:33:06 -0400 Subject: [PATCH] dedup nodes across seed neighborhoods in prompt building Track which nodes have already been included and skip duplicates. High-degree seed nodes with overlapping neighborhoods were pulling the same big nodes dozens of times, inflating prompts to 878KB. Co-Authored-By: Claude Opus 4.6 (1M context) --- poc-memory/src/agents/defs.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/poc-memory/src/agents/defs.rs b/poc-memory/src/agents/defs.rs index 069bd89..1979a77 100644 --- a/poc-memory/src/agents/defs.rs +++ b/poc-memory/src/agents/defs.rs @@ -268,9 +268,12 @@ fn resolve( "siblings" | "neighborhood" => { let mut out = String::new(); let mut all_keys: Vec = Vec::new(); + let mut included_nodes: std::collections::HashSet = std::collections::HashSet::new(); const MAX_NEIGHBORS: usize = 25; for key in keys { + if included_nodes.contains(key) { continue; } + included_nodes.insert(key.clone()); let Some(node) = store.nodes.get(key.as_str()) else { continue }; let neighbors = graph.neighbors(key); @@ -325,6 +328,8 @@ fn resolve( let mut budget_exceeded = false; for (nbr, strength, _score) in &included { + if included_nodes.contains(nbr) { continue; } + included_nodes.insert(nbr.clone()); if let Some(n) = store.nodes.get(nbr.as_str()) { if budget_exceeded || out.len() > NEIGHBORHOOD_BUDGET { // Header-only: key + first non-empty line