Lab Notes
Architecture

Flujo de datos

Los datos que se mueven por el lab: qué cruza cada frontera, en qué formato y con qué garantías.

Propósito

Esta página documenta el flujo de datos a través de la arquitectura del lab. Complementa la Vista general del sistema y la Arquitectura del sistema con detalles concretos sobre los datos que cruzan cada frontera, en qué formato y con qué garantías.

Fronteras y datos

El lab tiene 8 capas (ver Arquitectura del sistema → El modelo de 8 capas). Los datos cruzan las fronteras entre estas capas. Cada cruce tiene un formato, una dirección y un conjunto de garantías.

FronteraDirecciónFormatoGarantía
User ↔ CoordinatorAmbasLenguaje naturalBest effort
Coordinator ↔ AgentAbajoRequest (JSON)At-most-once
Agent ↔ CoordinatorArribaResponse (JSON)At-least-once
Agent ↔ FrameworkAbajoMethod callSíncrona
Framework ↔ ToolAbajoFunction callSíncrona
Tool ↔ AdapterAbajoFunction callSíncrona
Adapter ↔ ExternalAbajoHTTP/HTTPSPor adaptador
Coordinator ↔ StateAmbasFile I/OAtomic write
Framework ↔ StateAmbasFile I/OAtomic write

Las garantías se documentan en detalle más abajo.

User ↔ Coordinator

El usuario se comunica con el Coordinator en lenguaje natural. El Coordinator parsea la petición, resuelve el intent y devuelve una respuesta en lenguaje natural.

AspectoDetalle
FormatoLenguaje natural (texto UTF-8).
DirecciónAmbas.
CodificaciónUTF-8.
Límite tamañoNinguno aplicado (el Coordinator trunca entradas muy largas).
GarantíaBest effort. El Coordinator puede malinterpretar peticiones ambiguas.
LoggingEl Coordinator loguea cada petición y respuesta.

El Coordinator puede devolver artefactos (rutas de ficheros, imágenes, etc.) junto con la respuesta en lenguaje natural.

Coordinator ↔ Agent

El Coordinator dispatcha una petición a un agente a través de su interfaz pública. El formato es JSON.

AspectoDetalle
FormatoJSON.
DirecciónAbajo (request) y arriba (response).
CodificaciónUTF-8.
Límite tamaño1 MB por mensaje (configurable).
GarantíaAt-most-once (el Coordinator no reintenta).
Timeout60s (configurable por agente).
LoggingEl Coordinator loguea la petición y la respuesta.

El esquema de request es:

{
  "request_id": "string",
  "agent": "string",
  "task": "string",
  "params": "object",
  "context": "object"
}

El esquema de response es:

{
  "request_id": "string",
  "status": "ok | failed | partial",
  "result": "object",
  "error": "string | null",
  "duration_ms": "integer"
}

Agent ↔ Framework

El agente invoca el framework a través de method calls. Las llamadas son síncronas.

AspectoDetalle
FormatoMethod call en proceso.
DirecciónAbajo.
CodificaciónObjetos Python nativos.
Límite tamañoSin límite duro (los artefactos grandes se escriben a disco).
GarantíaSíncrona; el agente espera el resultado del framework.
LoggingEl framework loguea cada llamada.

La API pública del Research Framework está documentada en Research Framework → Source layout.

Framework ↔ Tool

El framework invoca herramientas a través de function calls. Las llamadas son síncronas y devuelven resultados tipados.

AspectoDetalle
FormatoFunction call con argumentos tipados.
DirecciónAbajo.
CodificaciónObjetos Python nativos.
Límite tamañoSin límite duro.
GarantíaSíncrona; el framework espera el resultado de la herramienta.
LoggingLa herramienta loguea cada invocación.

El contrato de herramienta está documentado en Capa de Tooling.

Tool ↔ Adapter

Una herramienta que necesita hablar con un servicio externo invoca un adaptador. El adaptador traduce la petición genérica de la herramienta al formato específico del proveedor.

AspectoDetalle
FormatoFunction call con argumentos tipados.
DirecciónAbajo.
CodificaciónObjetos Python nativos.
Límite tamañoSin límite duro.
GarantíaSíncrona; la herramienta espera el resultado del adaptador.
LoggingEl adaptador loguea cada llamada en el request journal.

El contrato de adaptador está documentado en External Providers → Adapter contract.

Adapter ↔ External

El adaptador habla con el servicio externo a través de HTTP o HTTPS. El formato y las garantías dependen del proveedor.

AspectoDetalle
FormatoHTTP / HTTPS.
DirecciónAbajo.
CodificaciónJSON (la mayoría de proveedores) o form-encoded.
Límite tamañoPor proveedor (típicamente 1-10 MB por request).
GarantíaPor adaptador (el adaptador gestiona los reintentos).
Timeout30s por request (configurable por adaptador).
LoggingEl adaptador loguea cada llamada en el request journal.

El request journal está documentado en External Providers → Request journal.

Coordinator ↔ State

El Coordinator lee y escribe la capa de estado. La capa de estado incluye MEMORY.md, los logs diarios, el session state y los skill artifacts.

AspectoDetalle
FormatoMarkdown (para MEMORY.md y logs diarios) o JSON (para session state y skill artifacts).
DirecciónAmbas.
CodificaciónUTF-8.
Límite tamaño1 MB por fichero (el Coordinator parte ficheros más grandes).
GarantíaAtomic write (el Coordinator escribe a un fichero temp y renombra).
LoggingEl Coordinator loguea cada lectura y cada escritura.

La capa de estado está documentada en Memoria y contexto.

Framework ↔ State

El framework lee y escribe la capa de estado para los artefactos de investigación. Los artefactos son ficheros JSON validados por esquemas de Pydantic.

AspectoDetalle
FormatoJSON (validado por esquemas de Pydantic).
DirecciónAmbas.
CodificaciónUTF-8.
Límite tamañoSin límite duro.
GarantíaAtomic write; validación en lectura y escritura.
LoggingEl framework loguea cada lectura y cada escritura.

Los esquemas de artefactos están documentados en Artifacts y el Diccionario de datos.

Flujo de datos end-to-end

El flujo de datos end-to-end para una petición de investigación es:

Loading diagram…
Flujo de investigación end-to-end — cada cruce de datos es auditable.

El flujo muestra cada cruce de datos. Cada cruce es auditable.

Persistencia de datos

El lab persiste datos en las siguientes ubicaciones:

DatoUbicaciónFormato
Memoria de largo plazo{workspace-root}/MEMORY.mdMarkdown
Logs diarios{workspace-root}/memory/YYYY-MM-DD.mdMarkdown
Session state{workspace-root}/sessions/<id>/session.jsonJSON
Skill artifacts{workspace-root}/skills/...Markdown
Research artifacts{research-root}/runs/<mission_id>/*JSON
Request journal{framework-root}/runtime/request_journal.jsonlJSONL
Token pool state{framework-root}/runtime/token_pool_state.jsonJSON
Mission state{research-root}/runs/<mission_id>/phase.jsonJSON
Audit reports{workspace-root}/security/audits/...Markdown

La política de retención está documentada en Mission Lifecycle → Retention and archival.

Ver también

On this page