Realizar una campaña de investigación sobre un corpus bloqueado
Un manifiesto, una instancia de SearXNG y un informe que rastrea cada afirmación hasta una página realmente recopilada. Dos campañas reales: lo que encontraron y los errores que cometieron antes de ser corregidos.
El caso en el que se juega el propio nombre de Dinoer: explorar un tema a través de fuentes públicas y entregar un informe donde cada afirmación tenga su origen en una página real almacenada —no en lo que un modelo delegado recuerda vagamente de su propio entrenamiento o, peor aún, de una búsqueda en vivo que nunca debió realizar.
Un listado territorial, construido desde cero
Un manifiesto real (no una característica fija): encuentra conciertos y eventos dentro de un radio de 30 km de una
ciudad específica, durante un período de diez días. Dieciséis consultas de búsqueda en SearXNG
identificaron trece dominios de referencia; campagne.py recopiló 43 páginas a través de ellos, y la extracción dirigida por fuente encontró 15 coincidencias positivas, que se eliminaron para obtener 11 eventos distintos en 9 comunas.
{"id_campagne": "spectacles-sud-finistere-2026-08-11-20",
"cibles": [
{"type": "query", "valeur": "concerts finistere sud ete"},
{"type": "table_reference", "valeur": "mairies du Finistere sud",
"cle_thematique": "mairies_finistere_sud"}
],
"delai_min_secondes": 4.5, "delai_max_secondes": 8.5}
Un error real apareció al ejecutar esto en producción, no durante la revisión. El retardo anti-bloqueo se aplicaba entre las solicitudes de páginas almacenadas, pero nunca entre las propias consultas a SearXNG. Una ráfaga de dieciséis consultas de descubrimiento en un corto período hizo que los propios motores “upstream” de la instancia de SearXNG la suspendieran. Se corrigió el mismo día, en cada punto de llamada de consulta, y se confirmó empíricamente antes de que se considerara finalizada la corrección.
Una verificación de reputación y la disciplina que la hace verificable
Una segunda campaña, con una forma de pregunta diferente: tres consultas abiertas sobre un tema específico, con 28 páginas conservadas en el nivel básico. El informe generado identificó correctamente un desacuerdo entre las fuentes sobre un punto fáctico, y excluyó correctamente un homónimo con el mismo apellido en lugar de fusionar ambos en una sola respuesta.
Verificado, no simplemente creído en su propio informe: una llamada directa al flujo completo de eventos JSON del modelo delegado — no al helper de resumen que solo devuelve el texto final — confirmó exactamente tres eventos para toda la ejecución (step_start, text, step_finish) y cero eventos tool_use. Nada salió del corpus durante la síntesis. Esa verificación fue precisamente la que detectó una fuga real la primera vez que se aplicó esta disciplina en otro lugar — véase El corpus es lo que al modelo delegado se le permite abandonar →.
¿Qué acertó una pregunta abierta que una pregunta estrecha no logró?
--extraire-cible "<demande>" acepta cualquier solicitud en lenguaje natural, no solo una búsqueda de hechos estricta. En la campaña de referencia, una pregunta abierta y descriptiva permitió que el modelo delegado juzgara por sí mismo si estaba leyendo un hecho aislado o un evento de varios días — 17 de 47 llamadas resultaron positivas, con contenido más rico que el producido por una formulación trouve/valeur/url más estrecha sobre el mismo corpus. La receta de extracción, completa →
Dónde termina este caso
El informe automático de fin de ejecución es un borrador provisional: concatenación en orden de archivo, truncado a 60.000 caracteres, sin clasificación a menos que el manifiesto proporcione sujet_synthese. ¿Cuánto cuesta eso, medido →
Y el propio descubrimiento tiene un límite real: SearXNG, sin autenticación, no alcanza lo que alcanza un motor de búsqueda comercial con soporte para cookies. En qué Dinoer no compite →