El problema
Los agentes de varios pasos que realizan búsquedas web acumulan grandes cargas útiles de contexto. Un agente de investigación que busca 5 veces genera entre 15 y 30 KB de resultados de búsqueda. Cuando se pasa al siguiente paso del agente, este contexto puede desbordar la ventana de contexto o eliminar un contexto anterior importante (historial de conversaciones, indicaciones del sistema, definiciones de herramientas). El agente comienza a perder de vista su tarea porque los resultados de la búsqueda desplazan las instrucciones de la tarea.
La solucion de Scavio
Cree un puente de contexto que comprima los resultados de búsqueda entre los pasos del agente mediante la serialización JSON estructurada. Después de cada paso de búsqueda, extraiga solo los campos que necesita el siguiente paso (títulos+enlaces para citar, fragmentos de razonamiento, precios para comparar) y descarte el resto. Almacene los resultados completos en un archivo JSON complementario para recuperarlos si se necesitan datos detallados más adelante.
Antes
Antes del puente de contexto, la ventana de contexto del agente de investigación se llenó después de 3 búsquedas. En el paso 5, el contexto de la conversación anterior se truncó y el agente olvidó las instrucciones de la tarea original.
Después
Después de implementar el puente, el contexto de búsqueda se comprime de ~5 KB por búsqueda a ~300 bytes de datos clave extraídos. El agente mantiene un conocimiento total de la tarea a través de más de 10 pasos de búsqueda, con los resultados completos disponibles en el almacenamiento lateral para su recuperación bajo demanda.
Para quien es
Desarrolladores de agentes que crean flujos de trabajo de investigación de varios pasos que alcanzan los límites de la ventana de contexto. Equipos que optimizan el rendimiento de los agentes al reducir el contexto irrelevante que pasa entre los pasos de razonamiento.
Beneficios clave
- Reducción del 90 % en el tamaño del contexto de búsqueda entre los pasos del agente
- El agente mantiene el conocimiento de las tareas en muchas iteraciones de búsqueda
- Los resultados completos se conservan en el almacenamiento del sidecar para una recuperación detallada
- Extracción configurable por paso: solo pase los campos que necesita el siguiente paso
- Funciona con cualquier marco de agente que admita llamadas a herramientas
Ejemplo en Python
import requests
import json
from pathlib import Path
API_KEY = "your_scavio_api_key"
def search_and_compress(query: str, platform: str = "google", extract_fields: list[str] = None) -> dict:
"""Search and return compressed results for agent context."""
if extract_fields is None:
extract_fields = ["title", "snippet", "link"]
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": platform, "query": query},
timeout=15,
)
res.raise_for_status()
data = res.json()
# Store full results in sidecar
sidecar_path = Path(f"/tmp/search_sidecar_{hash(query)}.json")
sidecar_path.write_text(json.dumps(data, indent=2))
# Compress for agent context
compressed = []
for r in data.get("organic", [])[:5]:
entry = {k: r.get(k, "") for k in extract_fields if k in r}
compressed.append(entry)
return {
"query": query,
"result_count": len(compressed),
"results": compressed,
"sidecar": str(sidecar_path),
}
def bridge_for_comparison(query_a: str, query_b: str) -> dict:
"""Search two queries, return only price/title for comparison step."""
a = search_and_compress(query_a, "amazon", ["title", "price"])
b = search_and_compress(query_b, "amazon", ["title", "price"])
return {"comparison": {"a": a, "b": b}}
result = search_and_compress("best search api 2026", "google", ["title", "link"])
print(f"Compressed: {len(json.dumps(result))} bytes vs ~5000 bytes full")
for r in result["results"]:
print(f" {r['title']}")Ejemplo en JavaScript
const API_KEY = "your_scavio_api_key";
import { writeFileSync } from "fs";
async function searchAndCompress(query, platform = "google", fields = ["title", "snippet", "link"]) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform, query }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
const data = await res.json();
// Store full results in sidecar
const sidecarPath = `/tmp/search_sidecar_${query.replace(/\s/g, "_")}.json`;
writeFileSync(sidecarPath, JSON.stringify(data, null, 2));
// Compress for context
const compressed = (data.organic ?? []).slice(0, 5).map((r) => {
const entry = {};
for (const f of fields) if (r[f] !== undefined) entry[f] = r[f];
return entry;
});
return { query, resultCount: compressed.length, results: compressed, sidecar: sidecarPath };
}
const result = await searchAndCompress("best search api 2026", "google", ["title", "link"]);
console.log(`Compressed: ${JSON.stringify(result).length} bytes`);
for (const r of result.results) console.log(` ${r.title}`);Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Amazon
Búsqueda de productos con precios, calificaciones y reseñas
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit