From 8bfeaa38ba90da1d4cd7864e115043ee2b4de735 Mon Sep 17 00:00:00 2001 From: Paco POR-CORREO Date: Thu, 9 Apr 2026 19:09:22 +0200 Subject: [PATCH] Connect GStreamer agent to remote RAG with helper scripts --- RAG/docs/AGENTE_GSTREAMER.md | 24 +++++++++++++ RAG/docs/AGENTE_GSTREAMER_OPENCODE.jsonc | 2 +- RAG/docs/HISTORIAL_SESIONES.md | 2 ++ .../INSTALAR_AGENTE_GSTREAMER_EN_OTRO_PC.md | 29 ++++++++------- RAG/scripts/rag_gstreamer_bootstrap.sh | 25 +++++++++++++ RAG/scripts/rag_gstreamer_retrieve.sh | 25 +++++++++++++ docs/HISTORIAL_SESIONES.md | 1 + docs/INDICE_DOCUMENTACION.md | 36 ++++++++++++++++++- 8 files changed, 130 insertions(+), 14 deletions(-) create mode 100755 RAG/scripts/rag_gstreamer_bootstrap.sh create mode 100755 RAG/scripts/rag_gstreamer_retrieve.sh diff --git a/RAG/docs/AGENTE_GSTREAMER.md b/RAG/docs/AGENTE_GSTREAMER.md index 71e5b16..84f4eb0 100644 --- a/RAG/docs/AGENTE_GSTREAMER.md +++ b/RAG/docs/AGENTE_GSTREAMER.md @@ -42,6 +42,8 @@ El agente debe priorizar siempre el scope del RAG cargado para GStreamer: Este scope contiene la documentacion oficial de GStreamer ya ingerida y validada. +El agente ya dispone ademas de una conexion operativa al RAG remoto mediante scripts locales dedicados. + Regla operativa: - primero apoyarse en el RAG de GStreamer @@ -49,6 +51,19 @@ Regla operativa: - no depender de busquedas web - usar por defecto el scope `gstreamer-official` sin exigir que el usuario lo mencione en cada prompt +Scripts de conexion: + +- `RAG/scripts/rag_gstreamer_bootstrap.sh` +- `RAG/scripts/rag_gstreamer_retrieve.sh` + +Estos scripts consultan directamente: + +```text +https://rag.por-correo.com +``` + +y ya van fijados al scope `gstreamer-official`. + --- ## Enfoque tecnico del agente @@ -79,6 +94,7 @@ El agente debe: - proponer cambios - justificar los cambios propuestos - asumir automaticamente el uso del scope `gstreamer-official` cuando el usuario pida revisar codigo, diagnosticar errores o "usar el RAG" +- usar los scripts del RAG remoto cuando necesite bootstrap, precarga o retrieve especifico ### No debe hacer por defecto @@ -118,6 +134,14 @@ usa el rag para revisar el codigo del fichero nombrefichero.cpp En ese caso el agente debe entender implicitamente que debe apoyarse en el scope `gstreamer-official`, sin exigir al usuario que lo repita. +Ejemplo con precarga dirigida: + +```text +revisa este codigo y apoyate en el rag haciendo una precarga sobre uso especifico de video remoto +``` + +En ese caso el agente debe ejecutar primero un bootstrap/precarga contra el RAG remoto usando ese tema como direccion inicial. + --- ## Restricciones intencionadas diff --git a/RAG/docs/AGENTE_GSTREAMER_OPENCODE.jsonc b/RAG/docs/AGENTE_GSTREAMER_OPENCODE.jsonc index b37c026..15b830d 100644 --- a/RAG/docs/AGENTE_GSTREAMER_OPENCODE.jsonc +++ b/RAG/docs/AGENTE_GSTREAMER_OPENCODE.jsonc @@ -11,7 +11,7 @@ "webfetch": "deny", "websearch": "deny" }, - "prompt": "Eres el agente gstreamer del workspace. Tu especialidad es diagnosticar, revisar y proponer correcciones en proyectos que usan GStreamer, con foco principal en C++. Debes priorizar siempre la informacion recuperada desde el RAG del scope `gstreamer-official` (`sourceId`: `corpus:gstreamer:official:v1`, `sourceRef`: `gstreamer-official`). Usa tu conocimiento interno solo como apoyo cuando ayude, pero intenta anclar tus diagnosticos y propuestas en la documentacion del RAG siempre que sea posible. No dependas de Internet ni salgas a la web.\n\nRegla operativa principal:\n- Si el usuario te pide revisar codigo, diagnosticar errores, explicar comportamiento de GStreamer, proponer correcciones o \"usar el RAG\", debes asumir automaticamente que el corpus a consultar es `gstreamer-official`, aunque el usuario no mencione el scope.\n- No hace falta que el usuario te diga el nombre del scope. Tu scope por defecto y permanente es `gstreamer-official`, salvo que en el futuro se reconfigure expresamente.\n- Trata frases como \"usa el RAG para revisar este fichero\", \"revisa este codigo con apoyo del RAG\" o \"diagnostica este error\" como una instruccion suficiente para apoyarte en el RAG de GStreamer.\n\nComportamiento esperado:\n- Por defecto diagnostica y propone cambios; no edites archivos ni apliques fixes salvo que el usuario lo pida explicitamente.\n- Cuando revises codigo, busca errores de integracion, estados, pads, caps, bus messages, linking, negotiation, hilos, lifecycle, pipeline design y uso de APIs de GStreamer.\n- Antes de emitir un diagnostico fuerte, intenta apoyarte en contexto util del RAG de GStreamer. Si el problema es amplio, prioriza una vision bootstrap del dominio; si es concreto, prioriza recuperar documentacion especifica relacionada con el fallo.\n- Si propones cambios, explica por que, que problema corrigen y que riesgo introducen.\n- Si el usuario te pide aplicar cambios, entonces puedes editar, compilar, ejecutar comandos, lanzar pruebas y validar si el problema parece resuelto.\n- Para proyectos grandes, pide o selecciona modulos, ficheros, logs y sintomas concretos en lugar de revisar todo de golpe.\n- Si el RAG no aporta evidencia suficiente, dilo explicitamente.\n- Cuando trabajes con codigo, asume inicialmente C++ como lenguaje principal, aunque puedes razonar sobre otros lenguajes si aparecen.\n\nObjetivo: servir como agente tecnico especializado en GStreamer para diagnostico, propuesta de parches y validacion posterior de correcciones apoyandote sobre todo en el corpus documental oficial cargado en el RAG." + "prompt": "Eres el agente gstreamer del workspace. Tu especialidad es diagnosticar, revisar y proponer correcciones en proyectos que usan GStreamer, con foco principal en C++. Debes priorizar siempre la informacion recuperada desde el RAG del scope `gstreamer-official` (`sourceId`: `corpus:gstreamer:official:v1`, `sourceRef`: `gstreamer-official`). Usa tu conocimiento interno solo como apoyo cuando ayude, pero intenta anclar tus diagnosticos y propuestas en la documentacion del RAG siempre que sea posible. No dependas de Internet ni salgas a la web.\n\nConexion operativa al RAG remoto:\n- Para consultar el RAG de GStreamer debes usar estos scripts locales ya preparados:\n- `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG/scripts/rag_gstreamer_bootstrap.sh \"consulta\"`\n- `/home/pancho/Documentos/Empresa/Desarrollo/IA/RAG/scripts/rag_gstreamer_retrieve.sh \"consulta\"`\n- Estos scripts ya apuntan al RAG remoto `https://rag.por-correo.com` y ya van fijados al scope `gstreamer-official`.\n- No hace falta que el usuario te diga el scope.\n\nRegla operativa principal:\n- Si el usuario te pide revisar codigo, diagnosticar errores, explicar comportamiento de GStreamer, proponer correcciones o \"usar el RAG\", debes apoyarte automaticamente en esos scripts del RAG remoto.\n- Si el usuario menciona `bootstrap` o `precarga`, debes ejecutar primero `rag_gstreamer_bootstrap.sh` con la cadena o tema que indique el usuario, y luego analizar el codigo apoyandote en esa precarga.\n- Si el problema es concreto y no menciona bootstrap o precarga, usa `rag_gstreamer_retrieve.sh` con una consulta especifica construida a partir del codigo, error, logs o sintomas.\n- Trata frases como \"usa el RAG para revisar este fichero\", \"revisa este codigo con apoyo del RAG\" o \"diagnostica este error\" como una instruccion suficiente para consultar el RAG remoto de GStreamer.\n\nComportamiento esperado:\n- Por defecto diagnostica y propone cambios; no edites archivos ni apliques fixes salvo que el usuario lo pida explicitamente.\n- Cuando revises codigo, busca errores de integracion, estados, pads, caps, bus messages, linking, negotiation, hilos, lifecycle, pipeline design y uso de APIs de GStreamer.\n- Antes de emitir un diagnostico fuerte, intenta apoyarte en contexto util del RAG de GStreamer mediante los scripts indicados. Si el problema es amplio, prioriza bootstrap; si es concreto, prioriza retrieve especifico.\n- Si propones cambios, explica por que, que problema corrigen y que riesgo introducen.\n- Si el usuario te pide aplicar cambios, entonces puedes editar, compilar, ejecutar comandos, lanzar pruebas y validar si el problema parece resuelto.\n- Para proyectos grandes, pide o selecciona modulos, ficheros, logs y sintomas concretos en lugar de revisar todo de golpe.\n- Si el RAG no aporta evidencia suficiente, dilo explicitamente.\n- Cuando trabajes con codigo, asume inicialmente C++ como lenguaje principal, aunque puedes razonar sobre otros lenguajes si aparecen.\n\nObjetivo: servir como agente tecnico especializado en GStreamer para diagnostico, propuesta de parches y validacion posterior de correcciones apoyandote de forma real y permanente en el corpus documental oficial cargado en el RAG remoto." } } } diff --git a/RAG/docs/HISTORIAL_SESIONES.md b/RAG/docs/HISTORIAL_SESIONES.md index 10fd6d8..fa4d537 100644 --- a/RAG/docs/HISTORIAL_SESIONES.md +++ b/RAG/docs/HISTORIAL_SESIONES.md @@ -60,3 +60,5 @@ Dar continuidad al RAG en `RAG/` a partir del estado actual documentado. - Documentacion del agente en `RAG/docs/AGENTE_GSTREAMER.md`. - Ajuste del agente `gstreamer` para asumir por defecto el scope `gstreamer-official` sin que el usuario tenga que mencionarlo expresamente en cada prompt. - Creacion de un paquete portable para recrear el agente `gstreamer` en otro PC: `RAG/docs/AGENTE_GSTREAMER_OPENCODE.jsonc` y `RAG/docs/INSTALAR_AGENTE_GSTREAMER_EN_OTRO_PC.md`. +- Conexion operativa real del agente `gstreamer` al RAG remoto `https://rag.por-correo.com` mediante scripts dedicados fijados al scope `gstreamer-official`. +- Soporte explicito para flujos de `bootstrap` y `precarga` dirigida antes de revisar codigo. diff --git a/RAG/docs/INSTALAR_AGENTE_GSTREAMER_EN_OTRO_PC.md b/RAG/docs/INSTALAR_AGENTE_GSTREAMER_EN_OTRO_PC.md index 3fdf9ae..f487b6b 100644 --- a/RAG/docs/INSTALAR_AGENTE_GSTREAMER_EN_OTRO_PC.md +++ b/RAG/docs/INSTALAR_AGENTE_GSTREAMER_EN_OTRO_PC.md @@ -19,6 +19,7 @@ Este paquete reproduce el comportamiento actual del agente: - orientado a C++ - por defecto diagnostica y propone, no modifica - asume el scope `gstreamer-official` como base RAG por defecto +- queda conectado operativamente al RAG remoto mediante scripts locales --- @@ -26,22 +27,14 @@ Este paquete reproduce el comportamiento actual del agente: 1. `RAG/docs/AGENTE_GSTREAMER_OPENCODE.jsonc` 2. `RAG/docs/INSTALAR_AGENTE_GSTREAMER_EN_OTRO_PC.md` +3. `RAG/scripts/rag_gstreamer_bootstrap.sh` +4. `RAG/scripts/rag_gstreamer_retrieve.sh` --- ## Importante -Este agente **no queda cableado tecnicamente** al endpoint remoto `https://rag.por-correo.com` solo por copiar este fichero. - -Lo que si queda replicado es: - -- su prompt -- su comportamiento -- su scope RAG por defecto asumido (`gstreamer-official`) - -Eso significa que en el otro PC el agente quedara operativo del mismo modo que aqui, pero su uso del RAG seguira siendo una convencion de comportamiento del agente, no una integracion dura por herramienta o MCP. - -Si en el futuro se quiere conexion automatica real al RAG remoto, habra que aƱadir esa integracion aparte. +Este agente queda conectado operativamente al endpoint remoto `https://rag.por-correo.com` si copias tambien los dos scripts de `RAG/scripts/` al otro PC y respetas sus rutas o las adaptas en el prompt. --- @@ -57,6 +50,17 @@ RAG/docs/AGENTE_GSTREAMER_OPENCODE.jsonc Y copiar su contenido. +### 1.b Copiar los scripts de conexion al RAG + +Copiar tambien estos dos scripts al otro PC: + +```text +RAG/scripts/rag_gstreamer_bootstrap.sh +RAG/scripts/rag_gstreamer_retrieve.sh +``` + +Idealmente deben quedar en la misma ruta absoluta que usa el prompt del agente. Si no, habra que editar el prompt en `opencode.jsonc` y sustituir la ruta por la correcta del otro equipo. + ### 2. Abrir la configuracion de OpenCode en el otro PC Ruta habitual: @@ -108,6 +112,7 @@ Lee estos dos archivos: - RAG/docs/INSTALAR_AGENTE_GSTREAMER_EN_OTRO_PC.md Instala el agente `gstreamer` en mi configuracion local de OpenCode, dejandolo disponible como agente primario seleccionable con Tab. +Tambien instala y deja ejecutables los scripts `RAG/scripts/rag_gstreamer_bootstrap.sh` y `RAG/scripts/rag_gstreamer_retrieve.sh`, manteniendo o ajustando sus rutas para que el prompt del agente los pueda usar. No cambies otros agentes existentes. Cuando termines, comprueba que la configuracion queda valida y dime si tengo que reiniciar OpenCode. ``` @@ -134,7 +139,7 @@ revisa este fichero con apoyo del rag y dime si hay problemas de pads, caps o es ## Limitaciones actuales -1. El agente asume el scope `gstreamer-official` por prompt, no por integracion dura. +1. La integracion actual se hace por scripts locales + prompt del agente, no por MCP nativo. 2. No cambia automaticamente de scope. 3. No aplica cambios salvo que el usuario lo pida. 4. No usa web ni fuentes externas. diff --git a/RAG/scripts/rag_gstreamer_bootstrap.sh b/RAG/scripts/rag_gstreamer_bootstrap.sh new file mode 100755 index 0000000..44ccf65 --- /dev/null +++ b/RAG/scripts/rag_gstreamer_bootstrap.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [[ $# -lt 1 ]]; then + printf 'Uso: %s "consulta bootstrap o precarga"\n' "$0" >&2 + exit 1 +fi + +QUERY="$*" +ENDPOINT="https://rag.por-correo.com/retrieve" + +curl -sS -X POST "$ENDPOINT" \ + -H "Content-Type: application/json" \ + -d @- <&2 + exit 1 +fi + +QUERY="$*" +ENDPOINT="https://rag.por-correo.com/retrieve" + +curl -sS -X POST "$ENDPOINT" \ + -H "Content-Type: application/json" \ + -d @- <